Owo7ICBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIFZQOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCjsKOyAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSBhbmQgcGF0ZW50CjsgIGdyYW50IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQo7ICB0cmVlLiBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMKOyAgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCjsKCgogICAgRVhQT1JUICB8dnA4X2RlcXVhbnRfaWRjdF92NnwKICAgIDsgQVJNCiAgICA7IFJFUVVJUkU4CiAgICA7IFBSRVNFUlZFOAoKICAgIEFSRUEgICAgfC50ZXh0fCwgQ09ERSwgUkVBRE9OTFkgIDsgbmFtZSB0aGlzIGJsb2NrIG9mIGNvZGUKO3ZvaWQgdnA4X2RlcXVhbnRfaWRjdF92NihzaG9ydCAqaW5wdXQsIHNob3J0ICpkcSwgc2hvcnQgKm91dHB1dCwgaW50IHBpdGNoKQp8dnA4X2RlcXVhbnRfaWRjdF92NnwgUFJPQwogICAgc3RtZGIgICBzcCEsIHtyNC1yMTEsIGxyfQoKICAgIGxkciAgICAgcjQsIFtyMF0gICAgICAgICAgICA7aW5wdXQKICAgIGxkciAgICAgcjUsIFtyMV0sICM0ICAgICAgICAgICAgO2RxCgogICAgc3ViICAgICBzcCwgc3AsICM0CiAgICBzdHIgICAgIHIwLCBbc3BdCgogICAgbW92ICAgICByMTIsICM0CgpkZXF1YW50X2lkY3RfbG9vcAogICAgc211bGJiICByNiwgcjQsIHI1CiAgICBzbXVsdHQgIHI3LCByNCwgcjUKCiAgICBsZHIgICAgIHI0LCBbcjAsICM0XSAgICAgICAgICAgIDtpbnB1dAogICAgbGRyICAgICByNSwgW3IxXSwgIzQgICAgICAgIDtkcQoKICAgIHN0cmggICAgcjYsIFtyMF0sICMyCiAgICBzdHJoICAgIHI3LCBbcjBdLCAjMgoKICAgIHNtdWxiYiAgcjYsIHI0LCByNQogICAgc211bHR0ICByNywgcjQsIHI1CgogICAgc3VicyAgICByMTIsIHIxMiwgIzEKCiAgICBsZHJuZSAgIHI0LCBbcjAsICM0XQogICAgbGRybmUgICByNSwgW3IxXSwgIzQKCiAgICBzdHJoICAgIHI2LCBbcjBdLCAjMgogICAgc3RyaCAgICByNywgW3IwXSwgIzIKCiAgICBibmUgICAgIGRlcXVhbnRfaWRjdF9sb29wCgogICAgc3ViICAgICByMCwgcjAsICMzMgogICAgbW92ICAgICByMSwgcjIKICAgIG1vdiAgICAgcjIsIHIzCgo7IHNob3J0X2lkY3Q0eDRsbG1fdjZfZHVhbAoKICAgIG1vdiByMywgIzB4MDAwMDRFMDAgOyAgICAgICAgICAgICAgICAgICBjb3MKICAgIG9yciByMywgcjMsICMweDAwMDAwMDdCIDsgY29zcGk4c3FydDJtaW51czEKICAgIG1vdiByNCwgIzB4MDAwMDhBMDAgOyAgICAgICAgICAgICAgICAgICAgICAgc2luCiAgICBvcnIgcjQsIHI0LCAjMHgwMDAwMDA4QyA7IHNpbnBpOHNxcnQyCiAgICBtb3YgcjUsICMweDIgICAgOyBpPTIgICAgICAgICAgICAgICAgICAgICAgICAgICBpCmxvb3AxX2R1YWxfMQogICAgbGRyIHI2LCBbcjAsICMoNCoyKV0gICAgOyBpNSB8IGk0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDV8NAogICAgbGRyIHIxMiwgW3IwLCAjKDEyKjIpXSAgOyBpMTMgfCBpMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzfDEyCiAgICBsZHIgcjE0LCBbcjAsICMoOCoyKV0gICA7IGk5IHwgaTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5fDgKCiAgICBzbXVsd3QgIHI5LCByMywgcjYgIDsgKGlwWzVdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1YwogICAgc211bHdiICByNywgcjMsIHI2ICA7IChpcFs0XSAqIGNvc3BpOHNxcnQybWludXMxKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRjCiAgICBzbXVsd3QgIHIxMCwgcjQsIHI2IDsgKGlwWzVdICogc2lucGk4c3FydDIpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1cwogICAgc211bHdiICByOCwgcjQsIHI2ICA7IChpcFs0XSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRzCiAgICBwa2hidCAgIHI3LCByNywgcjksIGxzbCAjMTYgOyA1YyB8IDRjCiAgICBzbXVsd3QgIHIxMSwgcjMsIHIxMiAgICA7IChpcFsxM10gKiBjb3NwaThzcXJ0Mm1pbnVzMSkgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTNjCiAgICBwa2hidCAgIHI4LCByOCwgcjEwLCBsc2wgIzE2ICAgIDsgNXMgfCA0cwogICAgdWFkZDE2ICByNiwgcjYsIHI3ICA7IDVjKzUgfCA0Yys0CiAgICBzbXVsd3QgIHI3LCByNCwgcjEyIDsgKGlwWzEzXSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxM3MKICAgIHNtdWx3YiAgcjksIHIzLCByMTIgOyAoaXBbMTJdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMmMKICAgIHNtdWx3YiAgcjEwLCByNCwgcjEyICAgIDsgKGlwWzEyXSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMnMKICAgIHN1YnMgICAgcjUsIHI1LCAjMHgxICAgIDsgaS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KICAgIHBraGJ0ICAgcjksIHI5LCByMTEsIGxzbCAjMTYgICAgOyAxM2MgfCAxMmMKICAgIGxkciByMTEsIFtyMF0sICMweDQgOyBpMSB8IGkwICAgICAgICsrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXwwCiAgICBwa2hidCAgIHIxMCwgcjEwLCByNywgbHNsICMxNiAgIDsgMTNzIHwgMTJzCiAgICB1YWRkMTYgIHI3LCByMTIsIHI5IDsgMTNjKzEzIHwgMTJjKzEyCiAgICB1c3ViMTYgIHI3LCByOCwgcjcgIDsgYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMKICAgIHVhZGQxNiAgcjYsIHI2LCByMTAgOyBkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkCiAgICB1YWRkMTYgIHIxMCwgcjExLCByMTQgICA7IGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhCiAgICB1c3ViMTYgIHI4LCByMTEsIHIxNCAgICA7IGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYgogICAgdWFkZDE2ICByOSwgcjEwLCByNiA7IGErZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhK2QKICAgIHVzdWIxNiAgcjEwLCByMTAsIHI2ICAgIDsgYS1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLWQKICAgIHVhZGQxNiAgcjYsIHI4LCByNyAgOyBiK2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYitjCiAgICB1c3ViMTYgIHI3LCByOCwgcjcgIDsgYi1jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiLWMKICAgIHN0ciByNiwgW3IxLCByMl0gICAgOyBvNSB8IG80CiAgICBhZGQgcjYsIHIyLCByMiAgOyBwaXRjaCAqIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyCiAgICBzdHIgcjcsIFtyMSwgcjZdICAgIDsgbzkgfCBvOAogICAgYWRkIHI2LCAgcjYsIHIyIDsgcGl0Y2ggKiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMwogICAgc3RyIHIxMCwgW3IxLCByNl0gICA7IG8xMyB8IG8xMgogICAgc3RyIHI5LCBbcjFdLCAjMHg0ICA7IG8xIHwgbzAgICAgICAgICAgICsrCiAgICBibmUgbG9vcDFfZHVhbF8xICAgIDsKICAgIG1vdiByNSwgIzB4MiAgICA7IGk9MiAgICAgICAgICAgICAgICAgICAgICAgICAgIGkKICAgIHN1YiByMCwgcjEsICM4ICA7IHJlc2V0IGlucHV0L291dHB1dCAgICAgICAgaS9vCmxvb3AyX2R1YWxfMgogICAgbGRyIHI2LCBbcjAsIHIyXSAgICA7IGk1IHwgaTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNXw0CiAgICBsZHIgcjEsIFtyMF0gICAgOyBpMSB8IGkwICAgICAgICAgICAxfDAKICAgIGxkciByMTIsIFtyMCwgIzB4NF0gOyBpMyB8IGkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDN8MgogICAgYWRkIHIxNCwgcjIsICMweDQgICA7IHBpdGNoICsgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKzIKICAgIGxkciByMTQsIFtyMCwgcjE0XSAgOyBpNyB8IGk2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgN3w2CiAgICBzbXVsd3QgIHI5LCByMywgcjYgIDsgKGlwWzVdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1YwogICAgc211bHd0ICByNywgcjMsIHIxICA7IChpcFsxXSAqIGNvc3BpOHNxcnQybWludXMxKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFjCiAgICBzbXVsd3QgIHIxMCwgcjQsIHI2IDsgKGlwWzVdICogc2lucGk4c3FydDIpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1cwogICAgc211bHd0ICByOCwgcjQsIHIxICA7IChpcFsxXSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFzCiAgICBwa2hidCAgIHIxMSwgcjYsIHIxLCBsc2wgIzE2ICAgIDsgaTAgfCBpNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB8NAogICAgcGtoYnQgICByNywgcjksIHI3LCBsc2wgIzE2IDsgMWMgfCA1YwogICAgcGtoYnQgICByOCwgcjEwLCByOCwgbHNsICMxNiAgICA7IDFzIHwgNXMgPSB0ZW1wMSCpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjMQogICAgcGtodGIgICByMSwgcjEsIHI2LCBhc3IgIzE2IDsgaTEgfCBpNSAgICAgICAgICAgMXw1CiAgICB1YWRkMTYgIHIxLCByNywgcjEgIDsgMWMrMSB8IDVjKzUgPSB0ZW1wMiAoZCkgICAgICAgICAgIHRkMgogICAgcGtoYnQgICByOSwgcjE0LCByMTIsIGxzbCAjMTYgICA7IGkyIHwgaTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMnw2CiAgICB1YWRkMTYgIHIxMCwgcjExLCByOSAgICA7IGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhCiAgICB1c3ViMTYgIHI5LCByMTEsIHI5IDsgYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYgogICAgcGtodGIgICByNiwgcjEyLCByMTQsIGFzciAjMTYgICA7IGkzIHwgaTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM3w3CiAgICBzdWJzICAgIHI1LCByNSwgIzB4MSAgICA7IGktLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICBzbXVsd3QgIHI3LCByMywgcjYgIDsgKGlwWzNdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM2MKICAgIHNtdWx3dCAgcjExLCByNCwgcjYgOyAoaXBbM10gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzcwogICAgc211bHdiICByMTIsIHIzLCByNiA7IChpcFs3XSAqIGNvc3BpOHNxcnQybWludXMxKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgN2MKICAgIHNtdWx3YiAgcjE0LCByNCwgcjYgOyAoaXBbN10gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3cwoKICAgIHBraGJ0ICAgcjcsIHIxMiwgcjcsIGxzbCAjMTYgICAgOyAzYyB8IDdjCiAgICBwa2hidCAgIHIxMSwgcjE0LCByMTEsIGxzbCAjMTYgIDsgM3MgfCA3cyA9IHRlbXAxIChkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMQogICAgdWFkZDE2ICByNiwgcjcsIHI2ICA7IDNjKzMgfCA3Yys3ID0gdGVtcDIgIChjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjMgogICAgdXN1YjE2ICByMTIsIHI4LCByNiA7IGMgKG8xIHwgbzUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMKICAgIHVhZGQxNiAgcjYsIHIxMSwgcjEgOyBkIChvMyB8IG83KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkCiAgICB1YWRkMTYgIHI3LCByMTAsIHI2IDsgYStkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhK2QKICAgIG1vdiByOCwgIzB4NCAgICA7IHNldCB1cCA0J3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAogICAgb3JyIHI4LCByOCwgIzB4NDAwMDAgICAgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDR8NAogICAgdXN1YjE2ICByNiwgcjEwLCByNiA7IGEtZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLWQKICAgIHVhZGQxNiAgcjYsIHI2LCByOCAgOyBhLWQrNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM3w3CiAgICB1YWRkMTYgIHI3LCByNywgcjggIDsgYStkKzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwfDQKICAgIHVhZGQxNiAgcjEwLCByOSwgcjEyICAgIDsgYitjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiK2MKICAgIHVzdWIxNiAgcjEsIHI5LCByMTIgOyBiLWMgICAgICAgICAgIGItYwogICAgdWFkZDE2ICByMTAsIHIxMCwgcjggICAgOyBiK2MrNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDF8NQogICAgdWFkZDE2ICByMSwgcjEsIHI4ICA7IGItYys0ICAgICAgICAgMnw2CiAgICBtb3YgcjgsIHIxMCwgYXNyICMxOSAgICA7IG8xID4+IDMKICAgIHN0cmggICAgcjgsIFtyMCwgIzJdICAgIDsgbzEKICAgIG1vdiByOCwgcjEsIGFzciAjMTkgOyBvMiA+PiAzCiAgICBzdHJoICAgIHI4LCBbcjAsICM0XSAgICA7IG8yCiAgICBtb3YgcjgsIHI2LCBhc3IgIzE5IDsgbzMgPj4gMwogICAgc3RyaCAgICByOCwgW3IwLCAjNl0gICAgOyBvMwogICAgbW92IHI4LCByNywgYXNyICMxOSA7IG8wID4+IDMKICAgIHN0cmggICAgcjgsIFtyMF0sIHIyICAgIDsgbzAgICAgICAgICtwCiAgICBzeHRoICAgIHIxMCwgcjEwICAgIDsKICAgIG1vdiByOCwgcjEwLCBhc3IgIzMgOyBvNSA+PiAzCiAgICBzdHJoICAgIHI4LCBbcjAsICMyXSAgICA7IG81CiAgICBzeHRoICAgIHIxLCByMSAgOwogICAgbW92IHI4LCByMSwgYXNyICMzICA7IG82ID4+IDMKICAgIHN0cmggICAgcjgsIFtyMCwgIzRdICAgIDsgbzYKICAgIHN4dGggICAgcjYsIHI2ICA7CiAgICBtb3YgcjgsIHI2LCBhc3IgIzMgIDsgbzcgPj4gMwogICAgc3RyaCAgICByOCwgW3IwLCAjNl0gICAgOyBvNwogICAgc3h0aCAgICByNywgcjcgIDsKICAgIG1vdiByOCwgcjcsIGFzciAjMyAgOyBvNCA+PiAzCiAgICBzdHJoICAgIHI4LCBbcjBdLCByMiAgICA7IG80ICAgICAgICArcAo7Ozs7OyAgIHN1YnMgICAgcjUsIHI1LCAjMHgxICAgIDsgaS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KICAgIGJuZSBsb29wMl9kdWFsXzIgICAgOwogICAgICAgICAgICA7Cgo7dnB4X21lbXNldAogICAgbGRyICAgICByMCwgW3NwXQogICAgYWRkICAgICBzcCwgc3AsICM0CgogICAgbW92ICAgICByMTIsICMwCiAgICBzdHIgICAgIHIxMiwgW3IwXQogICAgc3RyICAgICByMTIsIFtyMCwgIzRdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjOF0KICAgIHN0ciAgICAgcjEyLCBbcjAsICMxMl0KICAgIHN0ciAgICAgcjEyLCBbcjAsICMxNl0KICAgIHN0ciAgICAgcjEyLCBbcjAsICMyMF0KICAgIHN0ciAgICAgcjEyLCBbcjAsICMyNF0KICAgIHN0ciAgICAgcjEyLCBbcjAsICMyOF0KCiAgICBsZG1pYSAgIHNwISwge3I0IC0gcjExLCBwY30gOyByZXBsYWNlIHZhcnMsIHJldHVybiAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlCgogICAgRU5EUCAgICA7fHZwOF9kZXF1YW50X2lkY3RfdjZ8CgogICAgRU5ECg==