Owo7ICBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIFZQOCBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCjsKOyAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSBhbmQgcGF0ZW50CjsgIGdyYW50IHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQo7ICB0cmVlLiBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMKOyAgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCjsKCgogICAgRVhQT1JUICB8dnA4X2RlcXVhbnRfZGNfaWRjdF92NnwKICAgIDsgQVJNCiAgICA7IFJFUVVJUkU4CiAgICA7IFBSRVNFUlZFOAoKICAgIEFSRUEgICAgfC50ZXh0fCwgQ09ERSwgUkVBRE9OTFkgIDsgbmFtZSB0aGlzIGJsb2NrIG9mIGNvZGUKO3ZvaWQgdnA4X2RlcXVhbnRfZGNfaWRjdF92NihzaG9ydCAqaW5wdXQsIHNob3J0ICpkcSwgc2hvcnQgKm91dHB1dCwgaW50IHBpdGNoLGludCBEYykKfHZwOF9kZXF1YW50X2RjX2lkY3RfdjZ8IFBST0MKICAgIHN0bWRiICAgc3AhLCB7cjQtcjExLCBscn0KCiAgICBsZHIgICAgIHI2LCBbc3AsICMzNl0gICAgICAgICAgIDtsb2FkIERjCgogICAgbGRyICAgICByNCwgW3IwXSAgICAgICAgICAgICAgICA7aW5wdXQKICAgIGxkciAgICAgcjUsIFtyMV0sICM0ICAgICAgICAgICAgO2RxCgogICAgc3ViICAgICBzcCwgc3AsICM0CiAgICBzdHIgICAgIHIwLCBbc3BdCgogICAgc211bHR0ICByNywgcjQsIHI1CgogICAgbGRyICAgICByNCwgW3IwLCAjNF0gICAgICAgICAgICA7aW5wdXQKICAgIGxkciAgICAgcjUsIFtyMV0sICM0ICAgICAgICAgICAgO2RxCgogICAgc3RyaCAgICByNiwgW3IwXSwgIzIKICAgIHN0cmggICAgcjcsIFtyMF0sICMyCgogICAgc211bGJiICByNiwgcjQsIHI1CiAgICBzbXVsdHQgIHI3LCByNCwgcjUKCiAgICBsZHIgICAgIHI0LCBbcjAsICM0XSAgICAgICAgICAgIDtpbnB1dAogICAgbGRyICAgICByNSwgW3IxXSwgIzQgICAgICAgICAgICA7ZHEKCiAgICBzdHJoICAgIHI2LCBbcjBdLCAjMgogICAgc3RyaCAgICByNywgW3IwXSwgIzIKCiAgICBtb3YgICAgIHIxMiwgIzMKCmRlcXVhbnRfZGNfaWRjdF9sb29wCiAgICBzbXVsYmIgIHI2LCByNCwgcjUKICAgIHNtdWx0dCAgcjcsIHI0LCByNQoKICAgIGxkciAgICAgcjQsIFtyMCwgIzRdICAgICAgICAgICAgO2lucHV0CiAgICBsZHIgICAgIHI1LCBbcjFdLCAjNCAgICAgICAgICAgIDtkcQoKICAgIHN0cmggICAgcjYsIFtyMF0sICMyCiAgICBzdHJoICAgIHI3LCBbcjBdLCAjMgoKICAgIHNtdWxiYiAgcjYsIHI0LCByNQogICAgc211bHR0ICByNywgcjQsIHI1CgogICAgc3VicyAgICByMTIsIHIxMiwgIzEKCiAgICBsZHJuZSAgIHI0LCBbcjAsICM0XQogICAgbGRybmUgICByNSwgW3IxXSwgIzQKCiAgICBzdHJoICAgIHI2LCBbcjBdLCAjMgogICAgc3RyaCAgICByNywgW3IwXSwgIzIKCiAgICBibmUgICAgIGRlcXVhbnRfZGNfaWRjdF9sb29wCgogICAgc3ViICAgICByMCwgcjAsICMzMgogICAgbW92ICAgICByMSwgcjIKICAgIG1vdiAgICAgcjIsIHIzCgo7IHNob3J0X2lkY3Q0eDRsbG1fdjZfZHVhbAoKICAgIG1vdiByMywgIzB4MDAwMDRFMDAgOyAgICAgICAgICAgICAgICAgICBjb3MKICAgIG9yciByMywgcjMsICMweDAwMDAwMDdCIDsgY29zcGk4c3FydDJtaW51czEKICAgIG1vdiByNCwgIzB4MDAwMDhBMDAgOyAgICAgICAgICAgICAgICAgICAgICAgc2luCiAgICBvcnIgcjQsIHI0LCAjMHgwMDAwMDA4QyA7IHNpbnBpOHNxcnQyCiAgICBtb3YgcjUsICMweDIgICAgOyBpPTIgICAgICAgICAgICAgICAgICAgICAgICAgICBpCmxvb3AxX2R1YWxfMTEKICAgIGxkciByNiwgW3IwLCAjKDQqMildICAgIDsgaTUgfCBpNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1fDQKICAgIGxkciByMTIsIFtyMCwgIygxMioyKV0gIDsgaTEzIHwgaTEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxM3wxMgogICAgbGRyIHIxNCwgW3IwLCAjKDgqMildICAgOyBpOSB8IGk4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOXw4CgogICAgc211bHd0ICByOSwgcjMsIHI2ICA7IChpcFs1XSAqIGNvc3BpOHNxcnQybWludXMxKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWMKICAgIHNtdWx3YiAgcjcsIHIzLCByNiAgOyAoaXBbNF0gKiBjb3NwaThzcXJ0Mm1pbnVzMSkgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0YwogICAgc211bHd0ICByMTAsIHI0LCByNiA7IChpcFs1XSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNXMKICAgIHNtdWx3YiAgcjgsIHI0LCByNiAgOyAoaXBbNF0gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0cwogICAgcGtoYnQgICByNywgcjcsIHI5LCBsc2wgIzE2IDsgNWMgfCA0YwogICAgc211bHd0ICByMTEsIHIzLCByMTIgICAgOyAoaXBbMTNdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzYwogICAgcGtoYnQgICByOCwgcjgsIHIxMCwgbHNsICMxNiAgICA7IDVzIHwgNHMKICAgIHVhZGQxNiAgcjYsIHI2LCByNyAgOyA1Yys1IHwgNGMrNAogICAgc211bHd0ICByNywgcjQsIHIxMiA7IChpcFsxM10gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTNzCiAgICBzbXVsd2IgIHI5LCByMywgcjEyIDsgKGlwWzEyXSAqIGNvc3BpOHNxcnQybWludXMxKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTJjCiAgICBzbXVsd2IgIHIxMCwgcjQsIHIxMiAgICA7IChpcFsxMl0gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTJzCiAgICBzdWJzICAgIHI1LCByNSwgIzB4MSAgICA7IGktLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICBwa2hidCAgIHI5LCByOSwgcjExLCBsc2wgIzE2ICAgIDsgMTNjIHwgMTJjCiAgICBsZHIgcjExLCBbcjBdLCAjMHg0IDsgaTEgfCBpMCAgICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDF8MAogICAgcGtoYnQgICByMTAsIHIxMCwgcjcsIGxzbCAjMTYgICA7IDEzcyB8IDEycwogICAgdWFkZDE2ICByNywgcjEyLCByOSA7IDEzYysxMyB8IDEyYysxMgogICAgdXN1YjE2ICByNywgcjgsIHI3ICA7IGMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjCiAgICB1YWRkMTYgIHI2LCByNiwgcjEwIDsgZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZAogICAgdWFkZDE2ICByMTAsIHIxMSwgcjE0ICAgOyBhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYQogICAgdXN1YjE2ICByOCwgcjExLCByMTQgICAgOyBiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIKICAgIHVhZGQxNiAgcjksIHIxMCwgcjYgOyBhK2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYStkCiAgICB1c3ViMTYgIHIxMCwgcjEwLCByNiAgICA7IGEtZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS1kCiAgICB1YWRkMTYgIHI2LCByOCwgcjcgIDsgYitjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIrYwogICAgdXN1YjE2ICByNywgcjgsIHI3ICA7IGItYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYi1jCiAgICBzdHIgcjYsIFtyMSwgcjJdICAgIDsgbzUgfCBvNAogICAgYWRkIHI2LCByMiwgcjIgIDsgcGl0Y2ggKiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMgogICAgc3RyIHI3LCBbcjEsIHI2XSAgICA7IG85IHwgbzgKICAgIGFkZCByNiwgIHI2LCByMiA7IHBpdGNoICogMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDMKICAgIHN0ciByMTAsIFtyMSwgcjZdICAgOyBvMTMgfCBvMTIKICAgIHN0ciByOSwgW3IxXSwgIzB4NCAgOyBvMSB8IG8wICAgICAgICAgICArKwogICAgYm5lIGxvb3AxX2R1YWxfMTEgICA7CiAgICBtb3YgcjUsICMweDIgICAgOyBpPTIgICAgICAgICAgICAgICAgICAgICAgICAgICBpCiAgICBzdWIgcjAsIHIxLCAjOCAgOyByZXNldCBpbnB1dC9vdXRwdXQgICAgICAgIGkvbwpsb29wMl9kdWFsXzIyCiAgICBsZHIgcjYsIFtyMCwgcjJdICAgIDsgaTUgfCBpNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1fDQKICAgIGxkciByMSwgW3IwXSAgICA7IGkxIHwgaTAgICAgICAgICAgIDF8MAogICAgbGRyIHIxMiwgW3IwLCAjMHg0XSA7IGkzIHwgaTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgM3wyCiAgICBhZGQgcjE0LCByMiwgIzB4NCAgIDsgcGl0Y2ggKyAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHArMgogICAgbGRyIHIxNCwgW3IwLCByMTRdICA7IGk3IHwgaTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3fDYKICAgIHNtdWx3dCAgcjksIHIzLCByNiAgOyAoaXBbNV0gKiBjb3NwaThzcXJ0Mm1pbnVzMSkgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjCiAgICBzbXVsd3QgIHI3LCByMywgcjEgIDsgKGlwWzFdICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMWMKICAgIHNtdWx3dCAgcjEwLCByNCwgcjYgOyAoaXBbNV0gKiBzaW5waThzcXJ0MikgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVzCiAgICBzbXVsd3QgIHI4LCByNCwgcjEgIDsgKGlwWzFdICogc2lucGk4c3FydDIpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXMKICAgIHBraGJ0ICAgcjExLCByNiwgcjEsIGxzbCAjMTYgICAgOyBpMCB8IGk0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHw0CiAgICBwa2hidCAgIHI3LCByOSwgcjcsIGxzbCAjMTYgOyAxYyB8IDVjCiAgICBwa2hidCAgIHI4LCByMTAsIHI4LCBsc2wgIzE2ICAgIDsgMXMgfCA1cyA9IHRlbXAxIKkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGMxCiAgICBwa2h0YiAgIHIxLCByMSwgcjYsIGFzciAjMTYgOyBpMSB8IGk1ICAgICAgICAgICAxfDUKICAgIHVhZGQxNiAgcjEsIHI3LCByMSAgOyAxYysxIHwgNWMrNSA9IHRlbXAyIChkKSAgICAgICAgICAgdGQyCiAgICBwa2hidCAgIHI5LCByMTQsIHIxMiwgbHNsICMxNiAgIDsgaTIgfCBpNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyfDYKICAgIHVhZGQxNiAgcjEwLCByMTEsIHI5ICAgIDsgYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEKICAgIHVzdWIxNiAgcjksIHIxMSwgcjkgOyBiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiCiAgICBwa2h0YiAgIHI2LCByMTIsIHIxNCwgYXNyICMxNiAgIDsgaTMgfCBpNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzfDcKICAgIHN1YnMgICAgcjUsIHI1LCAjMHgxICAgIDsgaS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KICAgIHNtdWx3dCAgcjcsIHIzLCByNiAgOyAoaXBbM10gKiBjb3NwaThzcXJ0Mm1pbnVzMSkgPj4gMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzYwogICAgc211bHd0ICByMTEsIHI0LCByNiA7IChpcFszXSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDNzCiAgICBzbXVsd2IgIHIxMiwgcjMsIHI2IDsgKGlwWzddICogY29zcGk4c3FydDJtaW51czEpID4+IDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3YwogICAgc211bHdiICByMTQsIHI0LCByNiA7IChpcFs3XSAqIHNpbnBpOHNxcnQyKSA+PiAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDdzCgogICAgcGtoYnQgICByNywgcjEyLCByNywgbHNsICMxNiAgICA7IDNjIHwgN2MKICAgIHBraGJ0ICAgcjExLCByMTQsIHIxMSwgbHNsICMxNiAgOyAzcyB8IDdzID0gdGVtcDEgKGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxCiAgICB1YWRkMTYgIHI2LCByNywgcjYgIDsgM2MrMyB8IDdjKzcgPSB0ZW1wMiAgKGMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGMyCiAgICB1c3ViMTYgIHIxMiwgcjgsIHI2IDsgYyAobzEgfCBvNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYwogICAgdWFkZDE2ICByNiwgcjExLCByMSA7IGQgKG8zIHwgbzcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQKICAgIHVhZGQxNiAgcjcsIHIxMCwgcjYgOyBhK2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGErZAogICAgbW92IHI4LCAjMHg0ICAgIDsgc2V0IHVwIDQncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0CiAgICBvcnIgcjgsIHI4LCAjMHg0MDAwMCAgICA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNHw0CiAgICB1c3ViMTYgIHI2LCByMTAsIHI2IDsgYS1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtZAogICAgdWFkZDE2ICByNiwgcjYsIHI4ICA7IGEtZCs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzfDcKICAgIHVhZGQxNiAgcjcsIHI3LCByOCAgOyBhK2QrNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB8NAogICAgdWFkZDE2ICByMTAsIHI5LCByMTIgICAgOyBiK2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIrYwogICAgdXN1YjE2ICByMSwgcjksIHIxMiA7IGItYyAgICAgICAgICAgYi1jCiAgICB1YWRkMTYgIHIxMCwgcjEwLCByOCAgICA7IGIrYys0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXw1CiAgICB1YWRkMTYgIHIxLCByMSwgcjggIDsgYi1jKzQgICAgICAgICAyfDYKICAgIG1vdiByOCwgcjEwLCBhc3IgIzE5ICAgIDsgbzEgPj4gMwogICAgc3RyaCAgICByOCwgW3IwLCAjMl0gICAgOyBvMQogICAgbW92IHI4LCByMSwgYXNyICMxOSA7IG8yID4+IDMKICAgIHN0cmggICAgcjgsIFtyMCwgIzRdICAgIDsgbzIKICAgIG1vdiByOCwgcjYsIGFzciAjMTkgOyBvMyA+PiAzCiAgICBzdHJoICAgIHI4LCBbcjAsICM2XSAgICA7IG8zCiAgICBtb3YgcjgsIHI3LCBhc3IgIzE5IDsgbzAgPj4gMwogICAgc3RyaCAgICByOCwgW3IwXSwgcjIgICAgOyBvMCAgICAgICAgK3AKICAgIHN4dGggICAgcjEwLCByMTAgICAgOwogICAgbW92IHI4LCByMTAsIGFzciAjMyA7IG81ID4+IDMKICAgIHN0cmggICAgcjgsIFtyMCwgIzJdICAgIDsgbzUKICAgIHN4dGggICAgcjEsIHIxICA7CiAgICBtb3YgcjgsIHIxLCBhc3IgIzMgIDsgbzYgPj4gMwogICAgc3RyaCAgICByOCwgW3IwLCAjNF0gICAgOyBvNgogICAgc3h0aCAgICByNiwgcjYgIDsKICAgIG1vdiByOCwgcjYsIGFzciAjMyAgOyBvNyA+PiAzCiAgICBzdHJoICAgIHI4LCBbcjAsICM2XSAgICA7IG83CiAgICBzeHRoICAgIHI3LCByNyAgOwogICAgbW92IHI4LCByNywgYXNyICMzICA7IG80ID4+IDMKICAgIHN0cmggICAgcjgsIFtyMF0sIHIyICAgIDsgbzQgICAgICAgICtwCjs7Ozs7ICAgc3VicyAgICByNSwgcjUsICMweDEgICAgOyBpLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogICAgYm5lIGxvb3AyX2R1YWxfMjIgICA7CgoKO3ZweF9tZW1zZXQKICAgIGxkciAgICAgcjAsIFtzcF0KICAgIGFkZCAgICAgc3AsIHNwLCAjNAoKICAgIG1vdiAgICAgcjEyLCAjMAogICAgc3RyICAgICByMTIsIFtyMF0KICAgIHN0ciAgICAgcjEyLCBbcjAsICM0XQogICAgc3RyICAgICByMTIsIFtyMCwgIzhdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjMTJdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjMTZdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjMjBdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjMjRdCiAgICBzdHIgICAgIHIxMiwgW3IwLCAjMjhdCgogICAgbGRtaWEgICBzcCEsIHtyNCAtIHIxMSwgcGN9IDsgcmVwbGFjZSB2YXJzLCByZXR1cm4gICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZQoKICAgIEVORFAgICAgO3x2cDhfZGVxdWFudF9kY19pZGN0X3Y2OHwKCiAgICBFTkQK