gASVBQABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwebW9kdWxlLWV0aGVyZXVtLmhvbWVzdGVhZC5zcGVjlGGMB2NsYXNzZXOUXZSMBW5hbWVzlF2UjAhkdXBuYW1lc5RdlIwIYmFja3JlZnOUXZSMBWlzbW9klIh1jAd0YWduYW1llGgJjAZzb3VyY2WUjF8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjL2luZGV4LnJzdJSMBGxpbmWUSwGMBnBhcmVudJRoA4wJX2RvY3VtZW50lGgDdWKMD3NwaGlueC5hZGRub2Rlc5SMBWluZGV4lJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UKIwEcGFpcpSMH21vZHVsZTsgZXRoZXJldW0uaG9tZXN0ZWFkLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgKKYGUfZQoaAWMDS4uIF9kYW8tZm9yazqUaAddlGgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UjAVyZWZpZJSMCGRhby1mb3JrlHVoHGgJaB2MXi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZGFvX2Zvcmsvc3BlYy9pbmRleC5yc3SUaB9LA2ggaANoIWgDdWJoAIwHc2VjdGlvbpSTlCmBlH2UKGgFaAZoB12UKGgAjAV0aXRsZZSTlCmBlH2UKGgFjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulGgHXZRoAIwEVGV4dJSTlIwWRXRoZXJldW0gU3BlY2lmaWNhdGlvbpSFlIGUfZQoaAVoBmggaEhoIWgDaB2MXC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1z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aGVzCgpPYnRhaW4gdGhlIGxpc3Qgb2YgaGFzaGVzIG9mIHRoZSBwcmV2aW91cyAyNTYgYmxvY2tzIGluIG9yZGVyIG9mCgpzdGF0ZV90cmFuc2l0aW9uCgpBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLgoKdmFsaWRhdGVfaGVhZGVyCgpWZXJpZmllcyBhIGJsb2NrIGhlYWRlci4KCmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3cKCkdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29yawoKdmFsaWRhdGVfcHJvb2Zfb2Zfd29yawoKVmFsaWRhdGVzIHRoZSBQcm9vZiBvZiBXb3JrIGNvbnN0cmFpbnRzLgoKYXBwbHlfYm9keQoKRXhlY3V0ZXMgYSBibG9jay4KCnZhbGlkYXRlX29tbWVycwoKVmFsaWRhdGVzIHRoZSBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBibG9jay4KCnBheV9yZXdhcmRzCgpQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy4KCnByb2Nlc3NfdHJhbnNhY3Rpb24KCkV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC4KCnZhbGlkYXRlX3RyYW5zYWN0aW9uCgpWZXJpZmllcyBhIHRyYW5zYWN0aW9uLgoKY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0CgpDYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC4KCnJlY292ZXJfc2VuZGVyCgpFeHRyYWN0cyB0aGUgc2VuZGVyIGFkZHJlc3MgZnJvbSBhIHRyYW5zYWN0aW9uLgoKc2lnbmluZ19oYXNoCgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiB0aGUgc2lnbmF0dXJlLgoKY29tcHV0ZV9oZWFkZXJfaGFzaAoKQ29t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Y2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpRoB12UaE1Y3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpSFlIGUfZQo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ZGVkCnRvIHRoZSBjaGFpbi4gQmxvY2tzIGFyZSB2ZXJpZmllZCBieSBlbnN1cmluZyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUKYmxvY2sgbWFrZSBsb2dpY2FsIHNlbnNlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgYmxvY2suIFRoZQppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sncyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UaAddlGhNWDUBAABBbGwgcGFydHMgb2YgdGhlIGJsb2Nr4oCZcyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2Nr4oCZcyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UhZSBlH2UKGgFaAZoIGpwFQAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1oHmgfS+toIGpfFQAAdWJodymBlH2UKGgFjPxUbyBpbXBsZW1lbnQgRXRoZXJldW0sIGluIHRoZW9yeSBjbGllbnRzIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHN0b3JlIHRoZQptb3N0IHJlY2VudCAyNTUgYmxvY2tzIG9mIHRoZSBjaGFpbiBzaW5jZSBhcyBmYXIgYXMgZXhlY3V0aW9uIGlzCmNvbmNlcm5lZCwgb25seSB0aG9zZSBibG9ja3MgYXJlIGFjY2Vzc2VkLiBQcmFjdGljYWxseSwgaG93ZXZlciwgY2xpZW50cwpzaG91bGQgc3RvcmUgbW9yZSBibG9ja3MgdG8gaGFuZGxlIHJlb3Jn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c2N0eXBllGopFgAAjAdub2luZGV4lIl1aBxqiQ0AAGgdTmgfTmggaucUAAB1YmrODQAAKYGUfZQoaAVYqgQAAGRlZiBzdGF0ZV90cmFuc2l0aW9uKGNoYWluOiBCbG9ja0NoYWluLCBibG9jazogQmxvY2spIC0+IE5vbmU6CiAgICBwYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWy0xXS5oZWFkZXIKICAgIHZhbGlkYXRlX2hlYWRlcihibG9jay5oZWFkZXIsIHBhcmVudF9oZWFkZXIpCiAgICB2YWxpZGF0ZV9vbW1lcnMoYmxvY2sub21tZXJzLCBibG9jay5oZWFkZXIsIGNoYWluKQogICAgKAogICAgICAgIGdhc191c2VkLAogICAgICAgIHRyYW5zYWN0aW9uc19yb290LAogICAgICAgIHJlY2VpcHRfcm9vdCwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKSA9IGFwcGx5X2JvZHkoCiAgICAgICAgY2hhaW4uc3RhdGUsCiAgICAgICAgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbiksCiAgICAgICAgYmxvY2suaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGJsb2NrLmhlYWRlci5udW1iZXIsCiAgICAgICAgYmxvY2suaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBibG9jay5oZWFkZXIudGltZXN0YW1wLAogICAgICAgIGJsb2NrLmhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBibG9jay5vbW1lcnMsCiAgICApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1OgogICAgICAgICMgUmVhbCBjbGllbnRzIGhhdmUgdG8gc3RvcmUgbW9yZSBibG9ja3MgdG8gZGVhbCB3aXRoIHJlb3JncywgYnV0IHRoZQogICAgICAgICMgcHJvdG9jb2wgb25seSByZXF1aXJlcyB0aGUgbGFzdCAyNTUKICAgICAgICBjaGFpbi5ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCpRoB12UaE1YqgQAAGRlZiBzdGF0ZV90cmFuc2l0aW9uKGNoYWluOiBCbG9ja0NoYWluLCBibG9jazogQmxvY2spIC0+IE5vbmU6CiAgICBwYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWy0xXS5oZWFkZXIKICAgIHZhbGlkYXRlX2hlYWRlcihibG9jay5oZWFkZXIsIHBhcmVudF9oZWFkZXIpCiAgICB2YWxpZGF0ZV9vbW1lcnMoYmxvY2sub21tZXJzLCBibG9jay5oZWFkZXIsIGNoYWluKQogICAgKAogICAgICAgIGdhc191c2VkLAogICAgICAgIHRyYW5zYWN0aW9uc19yb290LAogICAgICAgIHJlY2VpcHRfcm9vdCwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKSA9IGFwcGx5X2JvZHkoCiAgICAgICAgY2hhaW4uc3RhdGUsCiAgICAgICAgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbiksCiAgICAgICAgYmxvY2suaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGJsb2NrLmhlYWRlci5udW1iZXIsCiAgICAgICAgYmxvY2suaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBibG9jay5oZWFkZXIudGltZXN0YW1wLAogICAgICAgIGJsb2NrLmhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBibG9jay5vbW1lcnMsCiAgICApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1OgogICAgICAgICMgUmVhbCBjbGllbnRzIGhhdmUgdG8gc3RvcmUgbW9yZSBibG9ja3MgdG8gZGVhbCB3aXRoIHJlb3JncywgYnV0IHRoZQogICAgICAgICMgcHJvdG9jb2wgb25seSByZXF1aXJlcyB0aGUgbGFzdCAyNTUKICAgICAgICBjaGFpbi5ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCpSFlIGUfZQoaAVoBmggajEWAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFAvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ob21lc3RlYWQvc3BlYy5weZSMCXhtbDpzcGFjZZRqngQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrlDQAASwFzjAdsaW5lbm9zlIl1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bWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLmRpZmZpY3VsdHksCiAgICApCiAgICBlbnN1cmUoaGVhZGVyLmRpZmZpY3VsdHkgPT0gYmxvY2tfZGlmZmljdWx0eSwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX3BhcmVudF9oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocGFyZW50X2hlYWRlcikpCiAgICBlbnN1cmUoaGVhZGVyLnBhcmVudF9oYXNoID09IGJsb2NrX3BhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXIpCpRoB12UKGhNWOMCAABkZWYgdmFsaWRhdGVfaGVhZGVyKGhlYWRlcjogSGVhZGVyLCBwYXJlbnRfaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBlbnN1cmUoaGVhZGVyLnRpbWVzdGFtcCA+IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm51bWJlciA9PSBwYXJlbnRfaGVhZGVyLm51bWJlciArIDEsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBjaGVja19nYXNfbGltaXQoaGVhZGVyLmdhc19saW1pdCwgcGFyZW50X2hlYWRlci5nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKICAgIGVuc3VyZShsZW4oaGVhZGVyLmV4dHJhX2RhdGEpIDw9IDMyLCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfZGlmZmljdWx0eSA9IGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLmRpZmZpY3VsdHksCiAgICApCiAgICBlbnN1cmUoaGVhZGVyLmRpZmZpY3VsdHkgPT0gYmxvY2tfZGlmZmljdWx0eSwgSW52YWxpZEJsb2NrKQoKICAg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aBxqtw0AAGgdaB5oH05oIGrZFwAAdWJlaA59lChoEF2UaBNdlChqFhgAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGoWGAAAjAdvYmp0eXBllGpXGQAAjAhkZXNjdHlwZZRqVxkAAIwHbm9pbmRleJSJdWgcaokNAABoHU5oH05oIGq9FwAAdWJqzg0AACmBlH2UKGgFWAMCAABkZWYgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXI6IEhlYWRlcikgLT4gSGFzaDMyOgogICAgaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzID0gWwogICAgICAgIGhlYWRlci5wYXJlbnRfaGFzaCwKICAgICAgICBoZWFkZXIub21tZXJzX2hhc2gsCiAgICAgICAgaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGhlYWRlci5zdGF0ZV9yb290LAogICAgICAgIGhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICBoZWFkZXIucmVjZWlwdF9yb290LAogICAgICAgIGhlYWRlci5ibG9vbSwKICAgICAgICBoZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgaGVhZGVyLmdhc191c2VkLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgaGVhZGVyLmV4dHJhX2RhdGEsCiAgICBdCgogICAgcmV0dXJuIHJscC5ybHBfaGFzaChoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMpCpRoB12UaE1YAwIAAGRlZiBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcjogSGVhZGVyKSAtPiBIYXNoMzI6CiAgICBoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMgPSBbCiAgICAgICAgaGVhZGVyLnBhcmVudF9oYXNoLAogICAgICAgIGhlYWRlci5vbW1lcnNfaGFzaCwKICAgICAgICBoZWFkZXIuY29pbmJhc2UsCiAgICAgICAgaGVhZGVyLnN0YXRlX3Jvb3Qs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KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCpRoB12UaE1YNgIAAGRlZiB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlIWUgZR9lChoBWgGaCBqixoAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTUwBaCBqfRkAAHViZWgOfZQoaBBdlGrUAgAAYWgTXZRoFV2UjBZ2YWxp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cmFuc2FjdGlvbnMpOgogICAgICAgIHRyaWVfc2V0KHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCB0eCkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSByZWNvdmVyX3NlbmRlcih0eCkKCiAgICAgICAgZW52ID0gdm0uRW52aXJvbm1lbnQoCiAgICAgICAgICAgIGNhbGxlcj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgb3JpZ2luPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBibG9ja19oYXNoZXM9YmxvY2tfaGFzaGVzLAogICAgICAgICAgICBjb2luYmFzZT1jb2luYmFzZSwKICAgICAgICAgICAgbnVtYmVyPWJsb2NrX251bWJlciwKICAgICAgICAgICAgZ2FzX2xpbWl0PWJsb2NrX2dhc19saW1pdCwKICAgICAgICAgICAgZ2FzX3ByaWNlPXR4Lmdhc19wcmljZSwKICAgICAgICAgICAgdGltZT1ibG9ja190aW1lLAogICAgICAgICAgICBkaWZmaWN1bHR5PWJsb2NrX2RpZmZpY3VsdHksCiAgICAgICAgICAgIHN0YXRlPXN0YXRlLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MgPSBwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgpCiAgICAgICAgZ2FzX2F2YWlsYWJsZSAtPSBnYXNfdXNlZAoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgUmVjZWlwdCgKICAgICAgICAgICAgICAgIHBvc3Rfc3RhdGU9c3RhdGVfcm9vdChzdGF0ZSksCiAgICAgICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgICAgIGJsb29tPWxvZ3NfYmxvb20obG9ncyksCiAgICAgICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgICAgICksCiAgICAgICAgKQogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpRoB12UaE1YcAcAAGRlZiBhcHBseV9ib2R5KAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfaGFzaGVzOiBMaXN0W0hhc2gzMl0sCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICBibG9ja19kaWZmaWN1bHR5OiBVaW50LAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtUcmFuc2FjdGlvbiwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IFR1cGxlW1VpbnQsIFJvb3QsIFJvb3QsIEJsb29tLCBTdGF0ZV06CiAgICBnYXNfYXZhaWxhYmxlID0gYmxvY2tfZ2FzX2xpbWl0CiAgICB0cmFuc2FjdGlvbnNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbVHJhbnNhY3Rpb25dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtSZWNlaXB0XV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgYmxvY2tfbG9nczogVHVwbGVbTG9nLCAuLi5dID0gKCkKCiAgICBmb3IgaSwgdHggaW4gZW51bWVyYXRlKHRyYW5zYWN0aW9ucyk6CiAgICAgICAgdHJpZV9zZXQodHJhbnNhY3Rpb25zX3RyaWUsIHJscC5lbmNvZGUoVWludChpKSksIHR4KQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKHR4KQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBnYXNfcHJpY2U9dHguZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncyA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHRyaWVfc2V0KAogICAgICAgICAgICByZWNlaXB0c190cmllLAogICAgICAgICAgICBybHAuZW5jb2RlKFVpbnQoaSkpLAogICAgICAgICAgICBSZWNlaXB0KAogICAgICAgICAgICAgICAgcG9zdF9zdGF0ZT1zdGF0ZV9yb290KHN0YXRlKSwKICAgICAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgICAgIGxvZ3M9bG9ncywKICAgICAgICAgICAgKSwKICAgICAgICApCiAgICAgICAgYmxvY2tfbG9ncyArPSBsb2dzCgogICAgcGF5X3Jld2FyZHMoc3RhdGUsIGJsb2NrX251bWJlciwgY29pbmJhc2UsIG9tbWVycykKCiAgICBnYXNfcmVtYWluaW5nID0gYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZQoKICAgIGJsb2NrX2xvZ3NfYmxvb20gPSBsb2dzX2Jsb29tKGJsb2NrX2xvZ3MpCgogICAgcmV0dXJuICgKICAgICAgICBnYXNfcmVtYWluaW5nLAogICAgICAgIHJvb3QodHJhbnNhY3Rpb25zX3RyaWUpLAogICAgICAgIHJvb3QocmVjZWlwdHNfdHJpZSksCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkKlIWUgZR9lChoBWgGaCBq3B4AAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTXYBaCBqqRoAAHViZWgOfZQoaBBdlGr2AgAAYWgTXZRoFV2UjAphcHBseV9ib2R5lGFoF12UaBldlHVoHGhBaB1oHmgfTVEBaCBqWA0AAGghaAN1YmhCKYGUfZQoaAVoBmgHXZQoaEcpgZR9lChoBYwPdmFsaWRhdGVfb21tZXJzlGgHXZRoTYwPdmFsaWRhdGVfb21t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ZGVyLCAuLi5dLCBibG9ja19oZWFkZXI6IEhlYWRlciwgY2hhaW46IEJsb2NrQ2hhaW4KKSAtPiBOb25lOgogICAgYmxvY2tfaGFzaCA9IHJscC5ybHBfaGFzaChibG9ja19oZWFkZXIpCgogICAgZW5zdXJlKHJscC5ybHBfaGFzaChvbW1lcnMpID09IGJsb2NrX2hlYWRlci5vbW1lcnNfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgIGlmIGxlbihvbW1lcnMpID09IDA6CiAgICAgICAgIyBOb3RoaW5nIHRvIHZhbGlkYXRlCiAgICAgICAgcmV0dXJuCgogICAgIyBDaGVjayB0aGF0IGVhY2ggb21tZXIgc2F0aXNmaWVzIHRoZSBjb25zdHJhaW50cyBvZiBhIGhlYWRlcgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lci5udW1iZXIgPCBibG9ja19oZWFkZXIubnVtYmVyLCBJbnZhbGlkQmxvY2spCiAgICAgICAgb21tZXJfcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1sKICAgICAgICAgICAgLShibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyKSAtIDEKICAgICAgICBdLmhlYWRlcgogICAgICAgIHZhbGlkYXRlX2hlYWRlcihvbW1lciwgb21tZXJfcGFyZW50X2hlYWRlcikKCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgY2FuIGJlIG9ubHkgYXQgbW9zdCAyIG9tbWVycyBmb3IgYSBibG9jay4KICAgIGVuc3VyZShsZW4ob21tZXJzKSA8PSAyLCBJbnZhbGlkQmxvY2spCgogICAgb21tZXJzX2hhc2hlcyA9IFtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBvbW1lcnNdCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZXMgaW4gdGhlIG9tbWVycyBvZiBjdXJyZW50IGJsb2NrCiAgICBlbnN1cmUobGVuKG9tbWVyc19oYXNoZXMpID09IGxlbihzZXQob21tZXJzX2hhc2hlcykpLCBJbnZhbGlkQmxvY2spCgogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLShNQVhfT01NRVJfREVQVEggKyAxKSA6XQogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMgPSB7CiAgICAgICAgcmxwLnJscF9oYXNoKGJsb2NrLmhlYWRlcikgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzCiAgICB9CiAgICByZWNlbnRfb21tZXJzX2hhc2hlczogU2V0W0hhc2gzMl0gPSBzZXQoKQogICAgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzOgogICAgICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzID0gcmVjZW50X29tbWVyc19oYXNoZXMudW5pb24oCiAgICAgICAgICAgIHtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBibG9jay5vbW1lcnN9CiAgICAgICAgKQoKICAgIGZvciBvbW1lcl9pbmRleCwgb21tZXIgaW4gZW51bWVyYXRlKG9tbWVycyk6CiAgICAgICAgb21tZXJfaGFzaCA9IG9tbWVyc19oYXNoZXNbb21tZXJfaW5kZXhdCiAgICAgICAgIyBUaGUgY3VycmVudCBibG9jayBzaG91bGRuJ3QgYmUgdGhlIG9tbWVyCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggIT0gYmxvY2tfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHJlY2VudCBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgdW5jbGVzIG1lbnRpb25lZCBpbiB0aGUgcmVjZW50CiAgICAgICAgIyBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9vbW1lcnNfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4gRm9yIGV4YW1wbGUsIGFuIGFnZSBvZgogICAgICAgICMgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgb21tZXIgaXMgYSBzaWJsaW5nIG9mIHByZXZpb3VzIGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lcl9hZ2UgPD0gTUFYX09NTUVSX0RFUFRILCBJbnZhbGlkQmxvY2spCgogICAgICAgIGVuc3VyZSgKICAgICAgICAgICAgb21tZXIucGFyZW50X2hhc2ggaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jawogICAgICAgICkKICAgICAgICBlbnN1cmUob21tZXIucGFyZW50X2hhc2ggIT0gYmxvY2tfaGVhZGVyLnBhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCpRoB12UaE1YAQkAAGRlZiB2YWxpZGF0ZV9vbW1lcnMoCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwgYmxvY2tfaGVhZGVyOiBIZWFkZXIsIGNoYWluOiBCbG9ja0NoYWluCikgLT4gTm9uZToKICAgIGJsb2NrX2hhc2ggPSBybHAucmxwX2hhc2goYmxvY2tfaGVhZGVyKQoKICAgIGVuc3VyZShybHAucmxwX2hhc2gob21tZXJzKSA9PSBibG9ja19oZWFkZXIub21tZXJzX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUhZSBlH2UKGgFaAZoIGpyIAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxQL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vaG9tZXN0ZWFkL3NwZWMucHmUjAl4bWw6c3BhY2WUap4EAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRq5Q0AAEsBc4wHbGluZW5vc5SJdWgcas0NAABoHWgeaB9NkwFoIGr6HgAAdWJlaA59lChoEF2UahgDAABhaBNdlGgVXZSMD3ZhbGlkYXRlX29tbWVyc5RhaBddlGgZXZR1aBxoQWgdaB5oH017AWggalgNAABoIWgDdWJoQimBlH2UKGgFaAZoB12UKGhHKYGUfZQoaAWMC3BheV9yZXdhcmRzlGgHXZRoTYwLcGF5X3Jld2FyZHOUhZSBlH2UKGgFaAZoIGqTIAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhGaB1oHmgfTZgBaCBqkCAAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggapAgAAB1YmqKDQAAKYGUfZQoaAVoBmgHXZQoao8NAAApgZR9lChoBYwycGF5X3Jld2FyZHMoc3RhdGUsIGJsb2NrX251bWJlciwgY29pbmJhc2UsIG9tbWVycymUaAddlChqlQ0AACmBlH2UKGgFjAtwYXlfcmV3YXJkc5RoB12UaE2MC3BheV9yZXdhcmRzlIWUgZR9lChoBWgGaCBqsyAAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZQoaqANAABqoQ0AAGqiDQAAaqMNAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqlA0AAGgdaB5oH05oIGqvIAAAdWJqhhEAACmBlH2UKGgFjCVzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzlGgHXZQoaowRAAApgZR9lChoBYwFc3RhdGWUaAddlGo6EAAAKYGUfZQoaAVoBmgHXZRoTYwFc3RhdGWUhZSBlH2UKGgFaAZoIGrKIAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGqbEQAAYWgVXZRoF12UaBldlHVoHGo5EAAAaB1OaB9OaCBqxiAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqngQAAHVoHGqLEQAAaB1OaB9OaCBqwiAAAHViaowRAAApgZR9lChoBYwMYmxvY2tfbnVtYmVylGgHXZRqOhAAACmBlH2UKGgFaAZoB12UaE2MDGJsb2NrX251bWJlcpSFlIGUfZQoaAVoBmggauIgAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UapsRAABhaBVdlGgXXZRoGV2UdWgcajkQAABoHU5oH05oIGreIAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcaosRAABoHU5oH05oIGrCIAAAdWJqjBEAACmBlH2UKGgFjAhjb2luYmFzZZRoB12UajoQAAApgZR9lChoBWgGaAddlGhNjAhjb2luYmFzZZSFlIGUfZQoaAVoBmggavogAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UapsRAABhaBVdlGgXXZRoGV2UdWgcajkQAABoHU5oH05oIGr2IAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcaosRAABoHU5oH05oIGrCIAAAdWJqjBEAACmBlH2UKGgFjAZvbW1lcnOUaAddlGo6EAAAKYGUfZQoaAVoBmgHXZRoTYwGb21tZXJzlIWUgZR9lChoBWgGaCBqEiEAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRqmxEAAGFoFV2UaBddlGgZXZR1aBxqORAAAGgdTmgfTmggag4hAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqixEAAGgdTmgfTmggasIgAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqhREAAGgdaB5oH05oIGqvIAAAdWJlaA59lChoEF2UjCNldGhlcmV1bS5ob21lc3RlYWQuc3BlYy5wYXlfcmV3YXJkc5RhaBNdlChqqw0AAGqsDQAAjAJweZRqrg0AAGqvDQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGq0DQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUarUgAAB1aBxqjg0AAGgdaB5oH02bAWggaqwgAAB1Ymq4DQAAKYGUfZQoaAVoBmgHXZQoaHcpgZR9lChoBYw8UGF5IHJld2FyZHMgdG8gdGhlIGJsb2NrIG1pbmVyIGFzIHdlbGwgYXMgdGhlIG9tbWVycyBtaW5lcnMulGgHXZRoTYw8UGF5IHJld2FyZHMgdG8gdGhlIGJsb2NrIG1pbmVyIGFzIHdlbGwgYXMgdGhlIG9tbWVycyBtaW5lcnMulIWUgZR9lChoBWgGaCBqOyEAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodmgdaB5oH02eAWggajghAAB1Ymh3KYGUfZQoaAVYjwIAAFRoZSBtaW5lciBvZiB0aGUgY2Fub25pY2FsIGJsb2NrIGlzIHJld2FyZGVkIHdpdGggdGhlIHByZWRldGVybWluZWQKYmxvY2sgcmV3YXJkLCBgYEJMT0NLX1JFV0FSRGBgLCBwbHVzIGEgdmFyaWFibGUgYXdhcmQgYmFzZWQgb2ZmIG9mIHRoZQpudW1iZXIgb2Ygb21tZXIgYmxvY2tzIHRoYXQgd2VyZSBtaW5lZCBhcm91bmQgdGhlIHNhbWUgdGltZSwgYW5kIGluY2x1ZGVkCmluIHRoZSBjYW5vbmljYWwgYmxvY2sncyBoZWFkZXIuIEFuIG9tbWVyIGJsb2NrIGlzIGEgYmxvY2sgdGhhdCB3YXNuJ3QKYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBibG9ja2NoYWluIGJlY2F1c2UgaXQgd2Fzbid0IHZhbGlkYXRlZCBhcyBmYXN0IGFzCnRoZSBhY2NlcHRlZCBibG9jayBidXQgd2FzIG1pbmVkIGF0IHRoZSBzYW1lIHRpbWUuIEFsdGhvdWdoIG5vdCBhbGwgYmxvY2tzCnRoYXQgYXJlIG1pbmVkIGFyZSBhZGRlZCB0byB0aGUgY2Fub25pY2FsIGNoYWluLCBtaW5lcnMgYXJlIHN0aWxsIHBhaWQgYQpyZXdhcmQgZm9yIHRoZWlyIGVmZm9ydHMuIFRoaXMgcmV3YXJkIGlzIGNhbGxlZCBhbiBvbW1lciByZXdhcmQgYW5kIGlzCmNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIG9tbWVyIGJsb2NrIHRoYXQgdGhleQptaW5lZC6UaAddlChoTYxSVGhlIG1pbmVyIG9mIHRoZSBjYW5vbmljYWwgYmxvY2sgaXMgcmV3YXJkZWQgd2l0aCB0aGUgcHJlZGV0ZXJtaW5lZApibG9jayByZXdhcmQsIJSFlIGUfZQoaAVoBmggakkhAABoIWgDaB1oUmgfSwB1YmoUBQAAKYGUfZQoaAWMEGBgQkxPQ0tfUkVXQVJEYGCUaAddlGhNjAxCTE9DS19SRVdBUkSUhZSBlH2UKGgFaAZoIGpRIQAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoTBQAAaB1OaB9OaCBqSSEAAHViaE1YMwIAACwgcGx1cyBhIHZhcmlhYmxlIGF3YXJkIGJhc2VkIG9mZiBvZiB0aGUKbnVtYmVyIG9mIG9tbWVyIGJsb2NrcyB0aGF0IHdlcmUgbWluZWQgYXJvdW5kIHRoZSBzYW1lIHRpbWUsIGFuZCBpbmNsdWRlZAppbiB0aGUgY2Fub25pY2FsIGJsb2Nr4oCZcyBoZWFkZXIuIEFuIG9tbWVyIGJsb2NrIGlzIGEgYmxvY2sgdGhhdCB3YXNu4oCZdAphZGRlZCB0byB0aGUgY2Fub25pY2FsIGJsb2NrY2hhaW4gYmVjYXVzZSBpdCB3YXNu4oCZdCB2YWxpZGF0ZWQgYXMgZmFzdCBhcwp0aGUgYWNjZXB0ZWQgYmxvY2sgYnV0IHdhcyBtaW5lZCBhdCB0aGUgc2FtZSB0aW1lLiBBbHRob3VnaCBub3QgYWxsIGJsb2Nrcwp0aGF0IGFyZSBtaW5lZCBhcmUgYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBjaGFpbiwgbWluZXJz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ZXJfcmV3YXJkID0gQkxPQ0tfUkVXQVJEICsgKGxlbihvbW1lcnMpICogKEJMT0NLX1JFV0FSRCAvLyAzMikpCiAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIGNvaW5iYXNlLCBtaW5lcl9yZXdhcmQpCgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gVTI1NihibG9ja19udW1iZXIgLSBvbW1lci5udW1iZXIpCiAgICAgICAgb21tZXJfbWluZXJfcmV3YXJkID0gKCg4IC0gb21tZXJfYWdlKSAqIEJMT0NLX1JFV0FSRCkgLy8gOAogICAgICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgb21tZXIuY29pbmJhc2UsIG9tbWVyX21pbmVyX3Jld2FyZCkKlGgHXZRoTVj+AQAAZGVmIHBheV9yZXdhcmRzKAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgY29pbmJhc2U6IEFkZHJlc3MsCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKKSAtPiBOb25lOgogICAgbWluZXJfcmV3YXJkID0gQkxPQ0tfUkVXQVJEICsgKGxlbihvbW1lcnMpICogKEJMT0NLX1JFV0FSRCAvLyAzMikpCiAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIGNvaW5iYXNlLCBtaW5lcl9yZXdhcmQpCgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gVTI1NihibG9ja19udW1iZXIgLSBvbW1lci5udW1iZXIpCiAgICAgICAgb21tZXJfbWluZXJfcmV3YXJkID0gKCg4IC0gb21tZXJfYWdlKSAqIEJMT0NLX1JFV0FSRCkgLy8gOAogICAgICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgb21tZXIuY29pbmJhc2UsIG9tbWVyX21pbmVyX3Jld2FyZCkK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Ckl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcidzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulGgHXZRoTVhdAQAAVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGFjdGlvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVy4oCZcyBhY2NvdW50IGFmdGVyIGNhbGN1bGF0aW5nIHRoZSBnYXMgZmVlIGFuZApyZWZ1bmRzIHRoZW0gdGhlIHByb3BlciBhbW91bnQgYWZ0ZXIgZXhlY3V0aW9uLiBDYWxsaW5nIGNvbnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcgbm9uY2VzIGFyZSBhbGwgZXhhbXBsZXMgb2YgYWN0aW9ucyB0aGF0CmhhcHBlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbiBvciBmcm9tIGEgY2FsbCBtYWRlIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLpSFlIGUfZQoaAVoBmggavMiAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHWgeaB9NwAFoIGriIgAAdWJodymBlH2UKGgFjFJBY2NvdW50cyB0aGF0IGFyZSBtYXJrZWQgZm9yIGRlbGV0aW9uIGFyZSBwcm9jZXNzZWQgYW5kIGRlc3Ryb3llZCBhZnRlcgpleGVjdXRpb24ulGgHXZRoTYxSQWNjb3VudHMgdGhhdCBhcmUgbWFya2VkIGZvciBkZWxldGlvbiBhcmUgcHJvY2Vzc2VkIGFuZCBkZXN0cm95ZWQgYWZ0ZXIKZXhl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bmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlGgHXZRoTVjABgAAZGVmIHByb2Nlc3NfdHJhbnNhY3Rpb24oCiAgICBlbnY6IHZtLkVudmlyb25tZW50LCB0eDogVHJhbnNhY3Rpb24KKSAtPiBUdXBsZVtVMjU2LCBUdXBsZVtMb2csIC4uLl1dOgogICAgZW5zdXJlKHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KSwgSW52YWxpZEJsb2NrKQoKICAgIHNlbmRlciA9IGVudi5vcmlnaW4KICAgIHNlbmRlcl9hY2NvdW50ID0gZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlIWUgZR9lChoBWgGaCBqRCQAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTdIBaCBqaiIAAHViZWgOfZQoaBBdlGpcAwAAYWgTXZRoFV2UjBNwcm9jZXNzX3RyYW5zYWN0aW9ulGFoF12UaBldlHVoHGhBaB1oHmgfTbgBaCBqWA0AAGghaAN1YmhCKYGUfZQoaAVoBmgHXZQoaEcpgZR9lChoBYwUdmFsaWRhdGVfdHJhbnNhY3Rpb26UaAddlGhNjBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggamUkAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaEZo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cmFuc2FjdGlvbi4gRGF0YSB0cmFuc2ZlciwgZm9yIGV4YW1wbGUsIGlzIHBhcnQgb2YgdGhpcyBpbnRyaW5zaWMKY29zdC4gSXQgY29zdHMgZXRoZXIgdG8gc2VuZCBkYXRhIG92ZXIgdGhlIHdpcmUgYW5kIHRoYXQgZXRoZXIgaXMKYWNjb3VudGVkIGZvciBpbiB0aGUgaW50cmluc2ljIGNvc3QgY2FsY3VsYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiBUaGlzCmludHJpbnNpYyBjb3N0IG11c3QgYmUgY2FsY3VsYXRlZCBhbmQgcGFpZCBmb3IgYmVmb3JlIGV4ZWN1dGlvbiBpbiBvcmRlcgpmb3IgYWxsIG9wZXJhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQulGgHXZRoTVgRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaGFzCmJlZ3VuLiBGdW5jdGlvbnMvb3BlcmF0aW9ucyBpbiB0aGUgRVZNIGNvc3QgbW9uZXkgdG8gZXhlY3V0ZSBzbyB0aGlzCmludHJpbnNpYyBjb3N0IGlzIGZvciB0aGUgb3BlcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcGFpZCBmb3IgYXMgcGFydCBvZgp0aGUgdHJhbnNhY3Rpb24uIERhdGEgdHJhbnNmZXIsIGZvciBleGFtcGxlLCBpcyBwYXJ0IG9mIHRoaXMgaW50cmluc2ljCmNvc3QuIEl0IGNvc3RzIGV0aGVyIHRvIHNlbmQgZGF0YSBvdmVyIHRoZSB3aXJlIGFuZCB0aGF0IGV0aGVyIGlzCmFjY291bnRlZCBmb3IgaW4gdGhlIGludHJpbnNpYyBjb3N0IGNhbGN1bGF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gVGhpcwppbnRyaW5zaWMgY29zdCBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHBhaWQgZm9yIGJlZm9yZSBleGVjdXRpb24gaW4gb3JkZXIKZm9yIGFsbCBvcGVyYXRpb25zIHRvIGJlIGltcGxlbWVudGVkLpSFlIGUfZQoaAVoBmggaqQmAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHWgeaB9N/wFoIGqTJgAAdWJqVRIAACmBlH2UKGgFaAZoB12UKGpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaE2MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGq4JgAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGq1JgAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwzdHggLS0gVHJhbnNhY3Rpb24gdG8gY29tcHV0ZSB0aGUgaW50cmluc2ljIGNvc3Qgb2YulGgHXZQoangSAAApgZR9lChoBYwCdHiUaAddlGhNjAJ0eJSFlIGUfZQoaAVoBmggas0mAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUarQNAACMCHB5OmNsYXNzlE51aBxqdxIAAGgdTmgfTmggaskmAAB1YmhNjDIg4oCTIFRyYW5zYWN0aW9uIHRvIGNvbXB1dGUgdGhlIGludHJpbnNpYyBjb3N0IG9mLpSFlIGUfZQoaAVoBmggaskmAABoIWgDaB1oUmgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHU5oH05oIGrGJgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpuEgAAaB1OaB9OaCBqtSYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWRIAAGgdTmgfTmggarImAAB1YmpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaE2MB1JldHVybnOUhZSBlH2UKGgFaAZoIGr3JgAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGr0JgAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwydmVyaWZpZWQgLS0gVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbi6UaAddlChquRIAACmBlH2UKGgFjAwqKnZlcmlmaWVkKiqUaAddlGhNjAh2ZXJpZmllZJSFlIGUfZQoaAVoBmggagwnAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcargSAABoHU5oH05oIGoIJwAAdWJoTYwrIOKAkyBUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggaggnAABoIWgDaB1oUmgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHU5oH05oIGoFJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpuEgAAaB1OaB9OaCBq9CYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWRIAAGgdTmgfTmggarImAAB1YmpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwLUmV0dXJuIHR5cGWUaAddlGhNjAtSZXR1cm4gdHlwZZSFlIGUfZQoaAVoBmggajMnAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal4SAABoHWgeaB9LAGggajAnAAB1YmpvEgAAKYGUfZQoaAVoBmgHXZRodymBlH2UKGgFjBhldGhlcmV1bS5iYXNlX3R5cGVzLlVpbnSUaAddlGr9BQAAKYGUfZQoaAWMGmBldGhlcmV1bS5iYXNlX3R5cGVzLlVpbnRglGgHXZRoTYwYZXRoZXJldW0uYmFzZV90eXBlcy5VaW50lIWUgZR9lChoBWgGaCBqSCcAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq/AUAAGgdTmgfTmggakQnAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHU5oH05oIGpBJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpuEgAAaB1OaB9OaCBqMCcAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWRIAAGgdTmgfTmggarImAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalQSAABoHU5oH05oIGqTJgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGq3DQAAaB1oHmgfTmggak8mAAB1YmVoDn2UKGgQXZRoE12UKGqMJgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UaowmAACMB29ianR5cGWUancnAACMCGRlc2N0eXBllGp3JwAAjAdub2luZGV4lIl1aBxqiQ0AAGgdTmgfTmggajMmAAB1YmrODQAAKYGUfZQoaAVYhwEAAGRlZiBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHg6IFRyYW5zYWN0aW9uKSAtPiBVaW50OgogICAgZGF0YV9jb3N0ID0gMAoKICAgIGZvciBieXRlIGluIHR4LmRhdGE6CiAgICAgICAgaWYgYnl0ZSA9PSAwOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9aRVJPCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfTk9OX1pFUk8KCiAgICBpZiB0eC50byA9PSBCeXRlczAoYiIiKToKICAgICAgICBjcmVhdGVfY29zdCA9IFRYX0NSRUFURV9DT1NUCiAgICBlbHNlOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gMAoKICAgIHJldHVybiBVaW50KFRYX0JBU0VfQ09TVCArIGRhdGFfY29zdCArIGNyZWF0ZV9jb3N0KQqUaAddlGhNWIcBAABkZWYgY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4OiBUcmFuc2FjdGlvbikgLT4gVWludDoKICAgIGRhdGFfY29zdCA9IDAKCiAgICBmb3IgYnl0ZSBpbiB0eC5kYXRhOgogICAgICAgIGlmIGJ5dGUgPT0gMDoKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfWkVSTwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX05PTl9aRVJPCgogICAgaWYgdHgudG8gPT0gQnl0ZXMwKGIiIik6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSBUWF9DUkVBVEVfQ09TVAogICAgZWxzZToKICAgICAgICBjcmVhdGVfY29zdCA9IDAKCiAgICByZXR1cm4gVWludChUWF9CQVNFX0NPU1QgKyBkYXRhX2Nvc3QgKyBjcmVhdGVfY29zdCkKlIWUgZR9lChoBWgGaCBqfycAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTRACaCBqMyYAAHViZWgOfZQoaBBdlGqgAwAAYWgTXZRoFV2UjBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUYWgXXZRoGV2UdWgcaEFoHWgeaB9N9wFoIGpYDQAAaCFoA3ViaEIpgZR9lChoBWgGaAddlChoRymBlH2UKGgFjA5yZWNvdmVyX3NlbmRlcpRoB12UaE2MDnJlY292ZXJfc2VuZGVylIWUgZR9lChoBWgGaCBqoCcAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoRmgdaB5oH00VAmggap0nAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGqdJwAAdWJqig0AACmBlH2UKGgFaAZoB12UKGqPDQAAKYGUfZQoaAWMEnJlY292ZXJfc2VuZGVyKHR4KZRoB12UKGqVDQAAKYGUfZQoaAWMDnJlY292ZXJfc2VuZGVylGgHXZRoTYwOcmVjb3Zlcl9zZW5kZXKUhZSBlH2UKGgFaAZoIGrAJwAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlChqoA0AAGqhDQAAaqINAABqow0AAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqngQAAHVoHGqUDQAAaB1oHmgfTmggarwnAAB1YmqGEQAAKYGUfZQoaAWMAnR4lGgHXZRqjBEAACmBlH2UKGgFjAJ0eJRoB12UajoQAAApgZR9lChoBWgGaAddlGhNjAJ0eJSFlIGUfZQoaAVoBmggatcnAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UapsRAABhaBVdlGgXXZRoGV2UdWgcajkQAABoHU5oH05oIGrTJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcaosRAABoHU5oH05oIGrPJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcaoURAABoHWgeaB9OaCBqvCcAAHViZWgOfZQoaBBdlIwmZXRoZXJldW0uaG9tZXN0ZWFkLnNwZWMucmVjb3Zlcl9zZW5kZXKUYWgTXZQoaqsNAABqrA0AAIwCcHmUaq4NAABqrw0AAGVoFV2UaBddlGgZXZSMBm1vZHVsZZRqtA0AAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGrCJwAAdWgcao4NAABoHWgeaB9NGAJoIGq5JwAAdWJquA0AACmBlH2UKGgFaAZoB12UKGh3KYGUfZQoaAWML0V4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24ulGgHXZRoTYwvRXh0cmFjdHMgdGhlIHNlbmRlciBhZGRyZXNzIGZyb20gYSB0cmFuc2FjdGlvbi6UhZSBlH2UKGgFaAZoIGoAKAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1oHmgfTRsCaCBq/ScAAHViaHcpgZR9lChoBVhnAQAAVGhlIHYsIHIsIGFuZCBzIHZhbHVlcyBhcmUgdGhlIHRocmVlIHBhcnRzIHRoYXQgbWFrZSB1cCB0aGUgc2lnbmF0dXJlCm9mIGEgdHJhbnNhY3Rpb24uIEluIG9yZGVyIHRvIHJlY292ZXIgdGhlIHNlbmRlciBvZiBhIHRyYW5zYWN0aW9uIHRoZSB0d28KY29tcG9uZW50cyBuZWVkZWQgYXJlIHRoZSBzaWduYXR1cmUgKGBgdmBgLCBgYHJgYCwgYW5kIGBgc2BgKSBhbmQgdGhlCnNpZ25pbmcgaGFzaCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSBzZW5kZXIncyBwdWJsaWMga2V5IGNhbiBiZSBvYnRhaW5lZAp3aXRoIHRoZXNlIHR3byB2YWx1ZXMgYW5kIHRoZXJlZm9yZSB0aGUgc2VuZGVyIGFkZHJlc3MgY2FuIGJlIHJldHJpZXZlZC6UaAddlChoTYy1VGhlIHYsIHIsIGFuZCBzIHZhbHVlcyBhcmUgdGhlIHRocmVlIHBhcnRzIHRoYXQgbWFrZSB1cCB0aGUgc2lnbmF0dXJlCm9mIGEgdHJhbnNhY3Rpb24uIEluIG9yZGVyIHRvIHJlY292ZXIgdGhlIHNlbmRlciBvZiBhIHRyYW5zYWN0aW9uIHRoZSB0d28KY29tcG9uZW50cyBuZWVkZWQgYXJlIHRoZSBzaWduYXR1cmUgKJSFlIGUfZQoaAVoBmggag4oAABoIWgDaB1oUmgfSwB1YmoUBQAAKYGUfZQoaAWMBWBgdmBglGgHXZRoTYwBdpSFlIGUfZQoaAVoBmggahYoAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMFAABoHU5oH05oIGoOKAAAdWJoTYwCLCCUhZSBlH2UKGgFaAZoIGoOKAAAaCFoA2gdaFJoH0sAdWJqFAUAACmBlH2UKGgFjAVgYHJgYJRoB12UaE2MAXKUhZSBlH2UKGgFaAZoIGooKAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoTBQAAaB1OaB9OaCBqDigAAHViaE2MBiwgYW5kIJSFlIGUfZQoaAVoBmggag4oAABoIWgDaB1oUmgfSwB1YmoUBQAAKYGUfZQoaAWMBWBgc2BglGgHXZRoTYwBc5SFlIGUfZQoaAVoBmggajooAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMFAABoHU5oH05oIGoOKAAAdWJoTYydKSBhbmQgdGhlCnNpZ25pbmcgaGFzaCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSBzZW5kZXLigJlzIHB1YmxpYyBrZXkgY2FuIGJlIG9idGFpbmVkCndpdGggdGhlc2UgdHdvIHZhbHVlcyBhbmQgdGhlcmVmb3JlIHRoZSBzZW5kZXIgYWRkcmVzcyBjYW4gYmUgcmV0cmlldmVkLpSFlIGUfZQoaAVoBmggag4oAABoIWgDaB1oUmgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHWgeaB9NHQJoIGr9JwAAdWJqVRIAACmBlH2UKGgFaAZoB12UKGpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaE2MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGpYKAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGpVKAAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwedHggLS0gVHJhbnNhY3Rpb24gb2YgaW50ZXJlc3QulGgHXZQoangSAAApgZR9lChoBYwCdHiUaAddlGhNjAJ0eJSFlIGUfZQoaAVoBmggam0oAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUarQNAACMCHB5OmNsYXNzlE51aBxqdxIAAGgdTmgfTmggamkoAAB1YmhNjB0g4oCTIFRyYW5zYWN0aW9uIG9mIGludGVyZXN0LpSFlIGUfZQoaAVoBmggamkoAABoIWgDaB1oUmgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHU5oH05oIGpmKAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpuEgAAaB1OaB9OaCBqVSgAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWRIAAGgdTmgfTmggalIoAAB1YmpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaE2MB1JldHVybnOUhZSBlH2UKGgFaAZoIGqXKAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGqUKAAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYxBc2VuZGVyIC0tIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRoYXQgc2lnbmVkIHRoZSB0cmFuc2FjdGlvbi6UaAddlChquRIAACmBlH2UKGgFjAoqKnNlbmRlcioqlGgHXZRoTYwGc2VuZGVylIWUgZR9lChoBWgGaCBqrCgAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxquBIAAGgdTmgfTmggaqgoAAB1YmhNjDwg4oCTIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRoYXQgc2lnbmVkIHRoZSB0cmFuc2FjdGlvbi6UhZSBlH2UKGgFaAZoIGqoKAAAaCFoA2gdaFJoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1OaB9OaCBqpSgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbhIAAGgdTmgfTmggapQoAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalkSAABoHU5oH05oIGpSKAAAdWJqWhIAACmBlH2UKGgFaAZoB12UKGpfEgAAKYGUfZQoaAWMC1JldHVybiB0eXBllGgHXZRoTYwLUmV0dXJuIHR5cGWUhZSBlH2UKGgFaAZoIGrTKAAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGrQKAAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwaZXRoZXJldW0uZXRoX3R5cGVzLkFkZHJlc3OUaAddlGr9BQAAKYGUfZQoaAWMHGBldGhlcmV1bS5ldGhfdHlwZXMuQWRkcmVzc2CUaAddlGhNjBpldGhlcmV1bS5ldGhfdHlwZXMuQWRkcmVzc5SFlIGUfZQoaAVoBmggaugoAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavwFAABoHU5oH05oIGrkKAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1OaB9OaCBq4SgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbhIAAGgdTmgfTmggatAoAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalkSAABoHU5oH05oIGpSKAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpUEgAAaB1OaB9OaCBq/ScAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqtw0AAGgdaB5oH05oIGq5JwAAdWJlaA59lChoEF2UaBNdlChq9icAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGr2JwAAjAdvYmp0eXBllGoXKQAAjAhkZXNjdHlwZZRqFykAAIwHbm9pbmRleJSJdWgcaokNAABoHU5oH05oIGqdJwAAdWJqzg0AACmBlH2UKGgFWJMBAABkZWYgcmVjb3Zlcl9zZW5kZXIodHg6IFRyYW5zYWN0aW9uKSAtPiBBZGRyZXNzOgogICAgdiwgciwgcyA9IHR4LnYsIHR4LnIsIHR4LnMKCiAgICAjICBpZiB2ID4gMjg6CiAgICAjICAgICAgdiA9IHYgLSAoY2hhaW5faWQqMis4KQoKICAgIGVuc3VyZSh2ID09IDI3IG9yIHYgPT0gMjgsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgwIDwgciBhbmQgciA8IFNFQ1AyNTZLMU4sIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgwIDwgcyBhbmQgcyA8PSBTRUNQMjU2SzFOIC8vIDIsIEludmFsaWRCbG9jaykKCiAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIociwgcywgdiAtIDI3LCBzaWduaW5nX2hhc2godHgpKQogICAgcmV0dXJuIEFkZHJlc3Moa2VjY2FrMjU2KHB1YmxpY19rZXkpWzEyOjMyXSkKlGgHXZRoTViTAQAAZGVmIHJlY292ZXJfc2VuZGVyKHR4OiBUcmFuc2FjdGlvbikgLT4gQWRkcmVzczoKICAgIHYsIHIsIHMgPSB0eC52LCB0eC5yLCB0eC5zCgogICAgIyAgaWYgdiA+IDI4OgogICAgIyAgICAgIHYgPSB2IC0gKGNoYWluX2lkKjIrOCkKCiAgICBlbnN1cmUodiA9PSAyNyBvciB2ID09IDI4LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHIgYW5kIHIgPCBTRUNQMjU2SzFOLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHMgYW5kIHMgPD0gU0VDUDI1NksxTiAvLyAyLCBJbnZhbGlkQmxvY2spCgogICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKHIsIHMsIHYgLSAyNywgc2lnbmluZ19oYXNoKHR4KSkKICAgIHJldHVybiBBZGRyZXNzKGtlY2NhazI1NihwdWJsaWNfa2V5KVsxMjozMl0pCpSFlIGUfZQoaAVoBmggah8pAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFAvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ob21lc3RlYWQvc3BlYy5weZSMCXhtbDpzcGFjZZRqngQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrlDQAASwFzjAdsaW5lbm9zlIl1aBxqzQ0AAGgdaB5oH00rAmggap0nAAB1YmVoDn2UKGgQXZRqwgMAAGFoE12UaBVdlIwOcmVjb3Zlcl9zZW5kZXKUYWgXXZRoGV2UdWgcaEFoHWgeaB9NFQJoIGpYDQAAaCFoA3ViaEIpgZR9lChoBWgGaAddlChoRymBlH2UKGgFjAxzaWduaW5nX2hhc2iUaAddlGhNjAxzaWduaW5nX2hhc2iUhZSBlH2UKGgFaAZoIGpAKQAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhGaB1oHmgfTTACaCBqPSkAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggaj0pAAB1YmqKDQAAKYGUfZQoaAVoBmgHXZQoao8NAAApgZR9lChoBYwQc2lnbmluZ19oYXNoKHR4KZRoB12UKGqVDQAAKYGUfZQoaAWMDHNpZ25pbmdfaGFzaJRoB12UaE2MDHNpZ25pbmdfaGFzaJSFlIGUfZQoaAVoBmggamApAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UKGqgDQAAaqENAABqog0AAGqjDQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcapQNAABoHWgeaB9OaCBqXCkAAHViaoYRAAApgZR9lChoBYwCdHiUaAddlGqMEQAAKYGUfZQoaAWMAnR4lGgHXZRqOhAAACmBlH2UKGgFaAZoB12UaE2MAnR4lIWUgZR9lChoBWgGaCBqdykAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRqmxEAAGFoFV2UaBddlGgZXZR1aBxqORAAAGgdTmgfTmgganMpAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqixEAAGgdTmgfTmggam8pAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqhREAAGgdaB5oH05oIGpcKQAAdWJlaA59lChoEF2UjCRldGhlcmV1bS5ob21lc3RlYWQuc3BlYy5zaWduaW5nX2hhc2iUYWgTXZQoaqsNAABqrA0AAIwCcHmUaq4NAABqrw0AAGVoFV2UaBddlGgZXZSMBm1vZHVsZZRqtA0AAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGpiKQAAdWgcao4NAABoHWgeaB9NMwJoIGpZKQAAdWJquA0AACmBlH2UKGgFaAZoB12UKGh3KYGUfZQoaAWMOENvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIHRoZSBzaWduYXR1cmUulGgHXZRoTYw4Q29tcHV0ZSB0aGUgaGFzaCBvZiBhIHRyYW5zYWN0aW9uIHVzZWQgaW4gdGhlIHNpZ25hdHVyZS6UhZSBlH2UKGgFaAZoIGqgKQAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1oHmgfTTYCaCBqnSkAAHViaHcpgZR9lChoBYzWVGhlIHZhbHVlcyB0aGF0IGFyZSB1c2VkIHRvIGNvbXB1dGUgdGhlIHNpZ25pbmcgaGFzaCBzZXQgdGhlIHJ1bGVzIGZvciBhCnRyYW5zYWN0aW9uLiBGb3IgZXhhbXBsZSwgc2lnbmluZyBvdmVyIHRoZSBnYXMgc2V0cyBhIGxpbWl0IGZvciB0aGUKYW1vdW50IG9mIG1vbmV5IHRoYXQgaXMgYWxsb3dlZCB0byBiZSBwdWxsZWQgb3V0IG9mIHRoZSBzZW5kZXIncyBhY2NvdW50LpRoB12UaE2M2FRoZSB2YWx1ZXMgdGhhdCBhcmUgdXNlZCB0byBjb21wdXRlIHRoZSBzaWduaW5nIGhhc2ggc2V0IHRoZSBydWxlcyBmb3IgYQp0cmFuc2FjdGlvbi4gRm9yIGV4YW1wbGUsIHNpZ25pbmcgb3ZlciB0aGUgZ2FzIHNldHMgYSBsaW1pdCBmb3IgdGhlCmFtb3VudCBvZiBtb25leSB0aGF0IGlzIGFsbG93ZWQgdG8gYmUgcHVsbGVkIG91dCBvZiB0aGUgc2VuZGVy4oCZcyBhY2NvdW50LpSFlIGUfZQoaAVoBmggaq4pAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHWgeaB9NOAJoIGqdKQAAdWJqVRIAACmBlH2UKGgFaAZoB12UKGpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwKUGFyYW1ldGVyc5RoB12UaE2MClBhcmFtZXRlcnOUhZSBlH2UKGgFaAZoIGrCKQAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGq/KQAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwedHggLS0gVHJhbnNhY3Rpb24gb2YgaW50ZXJlc3QulGgHXZQoangSAAApgZR9lChoBYwCdHiUaAddlGhNjAJ0eJSFlIGUfZQoaAVoBmggatcpAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUarQNAACMCHB5OmNsYXNzlE51aBxqdxIAAGgdTmgfTmggatMpAAB1YmhNjB0g4oCTIFRyYW5zYWN0aW9uIG9mIGludGVyZXN0LpSFlIGUfZQoaAVoBmggatMpAABoIWgDaB1oUmgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaHZoHU5oH05oIGrQKQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpuEgAAaB1OaB9OaCBqvykAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWRIAAGgdTmgfTmggarwpAAB1YmpaEgAAKYGUfZQoaAVoBmgHXZQoal8SAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaE2MB1JldHVybnOUhZSBlH2UKGgFaAZoIGoBKgAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpeEgAAaB1oHmgfSwBoIGr+KQAAdWJqbxIAACmBlH2UKGgFaAZoB12UaHcpgZR9lChoBYwgaGFzaCAtLSBIYXNoIG9mIHRoZSB0cmFuc2FjdGlvbi6UaAddlChquRIAACmBlH2UKGgFjAgqKmhhc2gqKpRoB12UaE2MBGhhc2iUhZSBlH2UKGgFaAZoIGoWKgAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGq4EgAAaB1OaB9OaCBqEioAAHViaE2MHSDigJMgSGFzaCBvZiB0aGUgdHJhbnNhY3Rpb24ulIWUgZR9lChoBWgGaCBqEioAAGghaANoHWhSaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodmgdTmgfTmggag8qAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam4SAABoHU5oH05oIGr+KQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpZEgAAaB1OaB9OaCBqvCkAAHVialoSAAApgZR9lChoBWgGaAddlChqXxIAACmBlH2UKGgFjAtSZXR1cm4gdHlwZZRoB12UaE2MC1JldHVybiB0eXBllIWUgZR9lChoBWgGaCBqPSoAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXhIAAGgdaB5oH0sAaCBqOioAAHViam8SAAApgZR9lChoBWgGaAddlGh3KYGUfZQoaAWMGWV0aGVyZXVtLmV0aF90eXBlcy5IYXNoMzKUaAddlGr9BQAAKYGUfZQoaAWMG2BldGhlcmV1bS5ldGhfdHlwZXMuSGFzaDMyYJRoB12UaE2MGWV0aGVyZXVtLmV0aF90eXBlcy5IYXNoMzKUhZSBlH2UKGgFaAZoIGpSKgAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr8BQAAaB1OaB9OaCBqTioAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodmgdTmgfTmggaksqAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam4SAABoHU5oH05oIGo6KgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpZEgAAaB1OaB9OaCBqvCkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqVBIAAGgdTmgfTmggap0pAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcarcNAABoHWgeaB9OaCBqWSkAAHViZWgOfZQoaBBdlGgTXZQoapYpAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqlikAAIwHb2JqdHlwZZRqgSoAAIwIZGVzY3R5cGWUaoEqAACMB25vaW5kZXiUiXVoHGqJDQAAaB1OaB9OaCBqPSkAAHVias4NAAApgZR9lChoBVgdAQAAZGVmIHNpZ25pbmdfaGFzaCh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoTVgdAQAAZGVmIHNpZ25pbmdfaGFzaCh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBqiSoAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTUQCaCBqPSkAAHViZWgOfZQoaBBdlGrkAwAAYWgTXZRoFV2UjAxzaWduaW5nX2hhc2iUYWgXXZRoGV2UdWgcaEFoHWgeaB9NMAJoIGpYDQAAaCFoA3ViaEIpgZR9lChoBWgGaAddlChoRymBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoTYwTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggaqoqAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaEZoHWgeaB9NSQJoIGqnKgAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqpyoAAHViaooNAAApgZR9lChoBWgGaAddlChqjw0AACmBlH2UKGgFjBtjb21wdXRlX2hlYWRlcl9oYXNoKGhlYWRlcimUaAddlChqlQ0AACmBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoTYwTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggasoqAABoIWgDaB1oUmgfSwB1YmFoDn2UKGgQXZRoE12UKGqgDQAAaqENAABqog0AAGqjDQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqeBAAAdWgcapQNAABoHWgeaB9OaCBqxioAAHViaoYRAAApgZR9lChoBYwGaGVhZGVylGgHXZRqjBEAACmBlH2UKGgFjAZoZWFkZXKUaAddlGo6EAAAKYGUfZQoaAVoBmgHXZRoTYwGaGVhZGVylIWUgZR9lChoBWgGaCBq4SoAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRqmxEAAGFoFV2UaBddlGgZXZR1aBxqORAAAGgdTmgfTmggat0qAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqixEAAGgdTmgfTmggatkqAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUap4EAAB1aBxqhREAAGgdaB5oH05oIGrGKgAAdWJlaA59lChoEF2UjCtldGhlcmV1bS5ob21lc3RlYWQuc3BlYy5jb21wdXRlX2hlYWRlcl9oYXNolGFoE12UKGqrDQAAaqwNAACMAnB5lGquDQAAaq8NAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUarQNAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqzCoAAHVoHGqODQAAaB1oHmgfTUwCaCBqwyoAAHViargNAAApgZR9lChoBWgGaAddlChodymBlH2UKGgFjCRDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGJsb2NrIGhlYWRlci6UaAddlGhNjCRDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGJsb2NrIGhlYWRlci6UhZSBlH2UKGgFaAZoIGoKKwAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1oHmgfTU8CaCBqBysAAHViaHcpgZR9lChoBYyNVGhlIGhlYWRlciBoYXNoIG9mIGEgYmxvY2sgaXMgdGhlIGNhbm9uaWNhbCBoYXNoIHRoYXQgaXMgdXNlZCB0byByZWZlcgp0byBhIHNwZWNpZmljIGJsb2NrIGFuZCBjb21wbGV0ZWx5IGRpc3Rpbmd1aXNoZXMgYSBibG9jayBmcm9tIGFub3RoZXIulGgHXZRoTYyNVGhlIGhlYWRlciBoYXNoIG9mIGEgYmxvY2sgaXMgdGhlIGNhbm9uaWNhbCBoYXNoIHRoYXQgaXMgdXNlZCB0byByZWZlcgp0byBhIHNwZWNpZmljIGJsb2NrIGFuZCBjb21wbGV0ZWx5IGRpc3Rpbmd1aXNoZXMgYSBibG9jayBmcm9tIGFub3RoZXIulIWUgZR9lChoBWgGaCBqGCsAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodmgdaB5oH01RAmggagcrAAB1Ymh3KYGUfZQoaAVYMAEAAGBga2VjY2FrMjU2YGAgaXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGEgMjU2IGJpdCBoYXNoIG9mIGFueSBpbnB1dC4KSXQgYWxzbyB0YWtlcyBpbiBhbnkgbnVtYmVyIG9mIGJ5dGVzIGFzIGFuIGlucHV0IGFuZCBwcm9kdWNlcyBhIHNpbmdsZQpoYXNoIGZvciB0aGVtLiBBIGhhc2ggaXMgYSBjb21wbGV0ZWx5IHVuaXF1ZSBvdXRwdXQgZm9yIGEgc2luZ2xlIGlucHV0LgpTbyBhbiBpbnB1dCBjb3JyZXNwb25kcyB0byBvbmUgdW5pcXVlIGhhc2ggdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeQp0aGUgaW5wdXQgZXhhY3RseS6UaAddlChqFAUAACmBlH2UKGgFjA1gYGtlY2NhazI1NmBglGgHXZRoTYwJa2VjY2FrMjU2lIWUgZR9lChoBWgGaCBqKisAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqEwUAAGgdTmgfTmggaiYrAAB1YmhNWCMBAAAgaXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGEgMjU2IGJpdCBoYXNoIG9mIGFueSBpbnB1dC4KSXQgYWxzbyB0YWtlcyBpbiBhbnkgbnVtYmVyIG9mIGJ5dGVzIGFzIGFuIGlucHV0IGFuZCBwcm9kdWNlcyBhIHNpbmdsZQpoYXNoIGZvciB0aGVtLiBBIGhhc2ggaXMgYSBjb21wbGV0ZWx5IHVuaXF1ZSBvdXRwdXQgZm9yIGEgc2luZ2xlIGlucHV0LgpTbyBhbiBpbnB1dCBjb3JyZXNwb25kcyB0byBvbmUgdW5pcXVlIGhhc2ggdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeQp0aGUgaW5wdXQgZXhhY3RseS6UhZSBlH2UKGgFaAZoIGomKwAAaCFoA2gdaFJoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGh2aB1oHmgfTVQCaCBqBysAAHViaHcpgZR9lChoBVgoAgAAUHJpb3IgdG8gdXNpbmcgdGhlIGBga2VjY2FrMjU2YGAgaGFzaCBmdW5jdGlvbiwgdGhlIGhlYWRlciBtdXN0IGJlCmVuY29kZWQgdXNpbmcgdGhlIFJlY3Vyc2l2ZS1MZW5ndGggUHJlZml4LiBTZWUgOnJlZjpgcmxwYC4KUkxQIGVuY29kaW5nIHRoZSBoZWFkZXIgY29udmVydHMgaXQgaW50byBhIHNwYWNlLWVmZmljaWVudCBmb3JtYXQgdGhhdAphbGxvd3MgZm9yIGVhc3kgdHJhbnNmZXIgb2YgZGF0YSBiZXR3ZWVuIG5vZGVzLiBUaGUgcHVycG9zZSBvZiBSTFAgaXMgdG8KZW5jb2RlIGFyYml0cmFyaWx5IG5lc3RlZCBhcnJheXMgb2YgYmluYXJ5IGRhdGEsIGFuZCBSTFAgaXMgdGhlIHByaW1hcnkKZW5jb2RpbmcgbWV0aG9kIHVzZWQgdG8gc2VyaWFsaXplIG9iamVjdHMgaW4gRXRoZXJldW0ncyBleGVjdXRpb24gbGF5ZXIuClRoZSBvbmx5IHB1cnBvc2Ugb2YgUkxQIGlzIHRvIGVuY29kZSBzdHJ1Y3R1cmU7IGVuY29kaW5nIHNwZWNpZmljIGRhdGEKdHlwZXMgKGUuZy4gc3RyaW5ncywgZmxvYXRzKSBpcyBsZWZ0IHVwIHRvIGhpZ2hlci1vcmRlciBwcm90b2NvbHMulGgHXZQoaE2ME1ByaW9yIHRvIHVzaW5nIHRoZSCUhZSBlH2UKGgFaAZoIGpCKwAAaCFoA2gdaFJoH0sAdWJqFAUAACmBlH2UKGgFjA1gYGtlY2NhazI1NmBglGgHXZRoTYwJa2VjY2FrMjU2lIWUgZR9lChoBWgGaCBqSisAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqEwUAAGgdTmgfTmggakIrAAB1YmhNjFIgaGFzaCBmdW5jdGlvbiwgdGhlIGhlYWRlciBtdXN0IGJlCmVuY29kZWQgdXNpbmcgdGhlIFJlY3Vyc2l2ZS1MZW5ndGggUHJlZml4LiBTZWUglIWUgZR9lChoBWgGaCBqQisAAGghaANoHWhSaB9LAHViaHwpgZR9lChoBWgGaAddlGo6EAAAKYGUfZQoaAWMJlJlY3Vyc2l2ZSBMZW5ndGggUHJlZml4IChSTFApIEVuY29kaW5nlGgHXZRoTYwmUmVjdXJzaXZlIExlbmd0aCBQcmVmaXggKFJMUCkgRW5jb2RpbmeUhZSBlH2UKGgFaAZoIGpfKwAAaCFoA2gdaFJoH0sAdWJhaA59lChoEF2UaBNdlChq/xEAAIwHc3RkLXJlZpRlaBVdlGgXXZRoGV2UdWgcajkQAABoHU5oH05oIGpcKwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwGcmVmdXJplIwaLi4vLi4vcmxwL2luZGV4LnBpY2tsZSNybHCUdWgcaHtoHU5oH05oIGpCKwAAdWJoTViuAQAALgpSTFAgZW5jb2RpbmcgdGhlIGhlYWRlciBjb252ZXJ0cyBpdCBpbnRvIGEgc3BhY2UtZWZmaWNpZW50IGZvcm1hdCB0aGF0CmFsbG93cyBmb3IgZWFzeSB0cmFuc2ZlciBvZiBkYXRhIGJldHdlZW4gbm9kZXMuIFRoZSBwdXJwb3NlIG9mIFJMUCBpcyB0bwplbmNvZGUgYXJiaXRyYXJpbHkgbmVzdGVkIGFycmF5cyBvZiBiaW5hcnkgZGF0YSwgYW5kIFJMUCBpcyB0aGUgcHJpbWFyeQplbmNvZGluZyBtZXRob2QgdXNlZCB0byBzZXJpYWxpemUgb2JqZWN0cyBpbiBFdGhlcmV1beKAmXMgZXhlY3V0aW9uIGxheWVyLgpUaGUgb25seSBwdXJwb3NlIG9mIFJMUCBpcyB0byBlbmNvZGUgc3RydWN0dXJlOyBlbmNvZGluZyBzcGVjaWZpYyBkYXRhCnR5cGVzIChlLmcuIHN0cmluZ3MsIGZsb2F0cykgaXMgbGVmdCB1cCB0byBoaWdoZXItb3JkZXIgcHJvdG9j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bnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUaAddlGhNWIEBAABkZWYgY2hlY2tfZ2FzX2xpbWl0KGdhc19saW1pdDogVWludCwgcGFyZW50X2dhc19saW1pdDogVWludCkgLT4gYm9vbDoKICAgIG1heF9hZGp1c3RtZW50X2RlbHRhID0gcGFyZW50X2dhc19saW1pdCAvLyBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IKICAgIGlmIGdhc19saW1pdCA+PSBwYXJlbnRfZ2FzX2xpbWl0ICsgbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKlIWUgZR9lChoBWgGaCBqdi4AAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTYwCaCBqbCwAAHViZWgOfZQoaBBdlGooBAAAYWgTXZRoFV2UjA9jaGVja19nYXNfbGltaXSUYWgXXZRoGV2UdWgcaEFoHWgeaB9NcAJoIGpYDQAAaCFoA3ViaEIpgZR9lChoBWgGaAddlChoRymBlH2UKGgFjBpj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XZQoaHcpgZR9lChoBYxCQ29tcHV0ZXMgZGlmZmljdWx0eSBvZiBhIGJsb2NrIHVzaW5nIGl0cyBoZWFkZXIgYW5kIHBhcmVudCBoZWFkZXIulGgHXZRoTYxCQ29tcHV0ZXMgZGlmZmljdWx0eSBvZiBhIGJsb2NrIHVzaW5nIGl0cyBoZWFkZXIgYW5kIHBhcmVudCBoZWFkZXIulIWUgZR9lChoBWgGaCBqPy8AAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxodmgdaB5oH02XAmggajwvAAB1Ymh3KYGUfZQoaAVYgwIAAFRoZSBkaWZmaWN1bHR5IGlzIGRldGVybWluZWQgYnkgdGhlIHRpbWUgdGhlIGJsb2NrIHdhcyBjcmVhdGVkIGFmdGVyIGl0cwpwYXJlbnQuIFRoZSBgYG9mZnNldGBgIGlzIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHBhcmVudCBibG9jaydzIGRpZmZpY3VsdHksCmBgcGFyZW50X2RpZmZpY3VsdHlgYCwgYW5kIHRoZSB0aW1lc3RhbXAgYmV0d2VlbiBibG9ja3MuIFRoaXMgb2Zmc2V0IGlzCnRoZW4gYWRkZWQgdG8gdGhlIHBhcmVudCBkaWZmaWN1bHR5IGFuZCBpcyBzdG9yZWQgYXMgdGhlIGBgZGlmZmljdWx0eWBgCnZhcmlhYmxlLiBJZiB0aGUgdGltZSBiZXR3ZWVuIHRoZSBibG9jayBhbmQgaXRzIHBhcmVudCBpcyB0b28gc2hvcnQsIHRoZQpvZmZzZXQgd2lsbCByZXN1bHQgaW4gYSBwb3NpdGl2ZSBudW1iZXIgdGh1cyBtYWtpbmcgdGhlIHN1bSBvZgpgYHBhcmVudF9kaWZmaWN1bHR5YGAgYW5kIGBgb2Zmc2V0YGAgdG8gYmUgYSBncmVhdGVyIHZhbHVlIGluIG9yZGVyIHRvCmF2b2lkIG1hc3MgZm9ya2luZy4gQnV0LCBpZiB0aGUgdGltZSBpcyBsb25nIGVub3VnaCwgdGhlbiB0aGUgb2Zmc2V0CnJlc3VsdHMgaW4gYSBuZWdhdGl2ZSB2YWx1ZSBtYWtpbmcgdGhlIGJsb2NrIGxlc3MgZGlmZmljdWx0IHRoYW4KaXRzIHBhcmVudC6UaAdd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IGl0IGV4aXN0ZWQgZnJvbQogICAgIyBnZW5lc2lzLgogICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2dvLWV0aGVyZXVtL3B1bGwvMTU4OAogICAgbnVtX2JvbWJfcGVyaW9kcyA9IChpbnQoYmxvY2tfbnVtYmVyKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNlIHRoZSBkaWZmaWN1bHR5IHRvIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIHByaW9yIHRvIGFkZGluZwogICAgIyB0aGUgYm9tYi4gVGhpcyBidWcgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgdGhlIGRpZmZpY3VsdHkgaXMgYWx3YXlzIG11Y2gKICAgICMgZ3JlYXRlciB0aGFuIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIG9uIE1haW5uZXQuCiAgICByZXR1cm4gVWludChtYXgoZGlmZmljdWx0eSwgTUlOSU1VTV9ESUZGSUNVTFRZKSkKlGgHXZRoTVgOBAAAZGVmIGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF9kaWZmaWN1bHR5OiBVaW50LAopIC0+IFVpbnQ6CiAgICBvZmZzZXQgPSAoCiAgICAgICAgaW50KHBhcmVudF9kaWZmaWN1bHR5KQogICAgICAgIC8vIDIwNDgKICAgICAgICAqIG1heCgxIC0gaW50KGJsb2NrX3RpbWVzdGFtcCAtIHBhcmVudF90aW1lc3RhbXApIC8vIDEwLCAtOTkpCiAgICApCiAgICBkaWZmaWN1bHR5ID0gaW50KHBhcmVudF9kaWZmaWN1bHR5KSArIG9mZnNldAogICAgIyBIaXN0b3JpY2FsIE5vdGU6IFRoZSBkaWZmaWN1bHR5IGJvbWIgd2FzIG5vdCBwcmVzZW50IGluIEV0aGVyZXVtIGF0IHRoZQogICAgIyBzdGFydCBvZiBGcm9udGllciwgYnV0IHdhcyBhZGRlZCBzaG9ydGx5IGFmdGVyIGxhdW5jaC4gSG93ZXZlciBzaW5jZSB0aGUKICAgICMgYm9tYiBoYXMgbm8gZWZmZWN0IHByaW9yIHRvIGJsb2NrIDIwMDAwMCB3ZSBwcmV0ZW5kIGl0IGV4aXN0ZWQgZnJvbQogICAgIyBnZW5lc2lzLgogICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2dvLWV0aGVyZXVtL3B1bGwvMTU4OAogICAgbnVtX2JvbWJfcGVyaW9kcyA9IChpbnQoYmxvY2tfbnVtYmVyKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNlIHRoZSBkaWZmaWN1bHR5IHRvIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIHByaW9yIHRvIGFkZGluZwogICAgIyB0aGUgYm9tYi4gVGhpcyBidWcgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgdGhlIGRpZmZpY3VsdHkgaXMgYWx3YXlzIG11Y2gKICAgICMgZ3JlYXRlciB0aGFuIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIG9uIE1haW5uZXQuCiAgICByZXR1cm4gVWludChtYXgoZGlmZmljdWx0eSwgTUlOSU1VTV9ESUZGSUNVTFRZKSkKlIWUgZR9lChoBWgGaCBqLDEAAGghaANoHWhSaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2hvbWVzdGVhZC9zcGVjLnB5lIwJeG1sOnNwYWNllGqeBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UauUNAABLAXOMB2xpbmVub3OUiXVoHGrNDQAAaB1oHmgfTbUCaCBqlC4AAHViZWgOfZQoaBBdlGpKBAAAYWgTXZRoFV2UjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRhaBddlGgZXZR1aBxoQWgdaB5oH02RAmggalgNAABoIWgDdWJlaA59lChoEF2Uaj8BAABhaBNdlGgVXZSMDm1vZHVsZSBkZXRhaWxzlGFoF12UaBldlHVoHGhBaB1oHmgfS0VoIGhDaCFoA3ViZWgOfZQoaBBdlIwWZXRoZXJldW0tc3BlY2lmaWNhdGlvbpRhaBNdlGgVXZSMFmV0aGVyZXVtIHNwZWNpZmljYXRpb26UYWgXXZRoGV2UdWgcaEFoHWgeaB9LBGggaANoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhSdWgcaAGMDmN1cnJlbnRfc291cmNllGhSjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjDBkb2MvZGlmZnMvaG9tZXN0ZWFkX2Rhb19mb3JrL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaEZOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqBwUAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqpzEAAGqoMQAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwJaG9tZXN0ZWFklIwDZGFvlIwEZm9ya5RldWKMCHJlcG9ydGVylE6MEGluZGlyZWN0X3RhcmdldHOUXZSMEXN1YnN0aXR1dGlvbl9kZWZzlH2UjBJzdWJzdGl0dXRpb25fbmFtZXOUfZSMCHJlZm5hbWVzlH2UjAZyZWZpZHOUfZSMB25hbWVpZHOUfZSMCW5hbWV0eXBlc5R9lGgQfZSMDWZvb3Rub3RlX3JlZnOUfZSMDWNpdGF0aW9uX3JlZnOUfZSMDWF1dG9mb290bm90ZXOUXZSMEWF1dG9mb290bm90ZV9yZWZzlF2UjBBzeW1ib2xfZm9vdG5vdGVzlF2UjBRzeW1ib2xfZm9vdG5vdGVfcmVmc5RdlIwJZm9vdG5vdGVzlF2UjAljaXRhdGlvbnOUXZSMEmF1dG9mb290bm90ZV9zdGFydJRLAYwVc3ltYm9sX2Zvb3Rub3RlX3N0YXJ0lEsAjAppZF9jb3VudGVylIwLY29sbGVjdGlvbnOUjAdDb3VudGVylJOUfZSFlFKUjA5wYXJzZV9tZXNzYWdlc5RdlIwSdHJhbnNmb3JtX21lc3NhZ2VzlF2UjAt0cmFuc2Zvcm1lcpROjAtpbmNsdWRlX2xvZ5RdlIwKZGVjb3JhdGlvbpROaCFoA3ViLg==