gASVAQABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwibW9kdWxlLWV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlY5RhjAdjbGFzc2VzlF2UjAVuYW1lc5RdlIwIZHVwbmFtZXOUXZSMCGJhY2tyZWZzlF2UjAVpc21vZJSIdYwHdGFnbmFtZZRoCYwGc291cmNllIxjL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMvaW5kZXgucnN0lIwEbGluZZRLAYwGcGFyZW50lGgDjAlfZG9jdW1lbnSUaAN1YowPc3BoaW54LmFkZG5vZGVzlIwFaW5kZXiUk5QpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZQojARwYWlylIwjbW9kdWxlOyBldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29u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lIwEc3BlY5Rq1gUAAHVoHGrKBQAAaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfTmggaoIGAAB1YmraBQAAKYGUfZQoaAVYvQUAAAoKCgphcHBseV9mb3JrCgpUcmFuc2Zvcm1zIHRoZSBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyBoYXJkIGZvcmsgKG9sZCkgaW50byB0aGUgYmxvY2sKCmdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMKCk9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2YKCnN0YXRlX3RyYW5zaXRpb24KCkF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4uCgp2YWxpZGF0ZV9oZWFkZXIKClZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLgoKZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdwoKR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrCgp2YWxpZGF0ZV9wcm9vZl9vZl93b3JrCgpWYWxpZGF0ZXMgdGhlIFByb29mIG9mIFdvcmsgY29uc3RyYWludHMuCgphcHBseV9ib2R5CgpFeGVjdXRlcyBhIGJsb2NrLgoKdmFsaWRhdGVfb21tZXJzCgpWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLgoKcGF5X3Jld2FyZHMKClBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLgoKcHJvY2Vzc190cmFuc2FjdGlvbgoKRXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LgoKdmFsaWRhdGVfdHJhbnNhY3Rpb24KClZlcmlmaWVzIGEgdHJhbnNhY3Rpb24uCgpjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QKCkNhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLgoKcmVjb3Zlcl9zZW5kZXIKCkV4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24uCgpzaWduaW5nX2hhc2hfcHJlMTU1CgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiBhIGxlZ2FjeSAocHJlIEVJUCAxNTUpIHNpZ25hdHVyZS4KCnNpZ25pbmdfaGFzaF8xNTUKCkNvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIGEgRUlQIDE1NSBzaWduYXR1cmUuCgpzaWduaW5nX2hhc2hfMjkzMAoKQ29tcHV0ZSB0aGUgaGFzaCBvZiBhIHRyYW5zYWN0aW9uIHVzZWQgaW4gYSBFSVAgMjkzMCBzaWduYXR1cmUuCgpzaWduaW5nX2hhc2hfMTU1OQoKQ29tcHV0ZSB0aGUgaGFzaCBvZiBhIHRyYW5zYWN0aW9uIHVzZWQgaW4gYSBFSVAgMTU1OSBzaWduYXR1cmUuCgpjb21wdXRlX2hlYWRlcl9oYXNoCgpDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGJsb2NrIGhlYWRlci4KCmNoZWNrX2dhc19saW1pdAoKVmFsaWRhdGVzIHRoZSBnYXMgbGltaXQgZm9yIGEgYmxvY2suCgpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eQoKQ29tcHV0ZXMgZGlmZmljdWx0eSBvZiBhIGJsb2NrIHVzaW5nIGl0cyBoZWFkZXIgYW5kIHBhcmVudCBoZWFkZXIulGgHXZRq4AUAACmBlH2UKGgFaAZoB12UauUFAAApgZR9lChoBWgGaAddlChq6gUAACmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIY29sd2lkdGiUSwp1aBxq6QUAAGgdTmgfTmggaqUGAAB1YmrqBQAAKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVd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YXRlX3RyYW5zaXRpb26UhZSBlH2UKGgFaAZoIGqEBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqIgYAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoVBgAAaB1OaB9OaCBqgQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwsZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLnN0YXRlX3RyYW5zaXRpb26UjAhyZWZ0aXRsZZSMLGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy5zdGF0ZV90cmFuc2l0aW9ulHVoHGhtaB1OaB9OaCBqfQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqegcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggancHAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDVBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLpRoB12UaD+MNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBqrgcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqqwcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggancHAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagQGAABoHU5oH05oIGq8BgAAdWJqBQYAACmBlH2UKGgFaAZoB12UKGoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEQ6b2JqOmB2YWxpZGF0ZV9oZWFkZXIgPGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy52YWxpZGF0ZV9oZWFkZXI+YJRoB12UaG4pgZR9lChoBWgGaAddlGoWBgAAKYGUfZQoaAVq0QcAAGgHXZRoP4wPdmFsaWRhdGVfaGVhZGVylIWUgZR9lChoBWgGaCBq1gcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoaiIGAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqFQYAAGgdTmgfTmggatMHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMK2V0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy52YWxpZGF0ZV9oZWFkZXKUjAhyZWZ0aXRsZZSMK2V0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy52YWxpZGF0ZV9oZWFkZXKUdWgcaG1oHU5oH05oIGrPBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFoIGrMBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoJBgAAaB1OaB9OaCBqyQcAAHViagoGAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMGFZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLpRoB12UaD+MGFZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLpSFlIGUfZQoaAVoBmggagAIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx0L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggav0HAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagkGAABoHU5oH05oIGrJBwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoEBgAAaB1OaB9OaCBqvAYAAHViagUGAAApgZR9lChoBWgGaAddlChqCgYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxeOm9iajpgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyA8ZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3c+YJRoB12UaG4pgZR9lChoBWgGaAddlGoWBgAAKYGUfZQoaAVqIwgAAGgHXZRoP4wcZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5SFlIGUfZQoaAVoBmggaigIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoiBgAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGolCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDhldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5SMCHJlZnRpdGxllIw4ZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUdWgcaG1oHU5oH05oIGohCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFoIGoeCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12U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ZXJzIDxldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMudmFsaWRhdGVfb21tZXJzPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqFgYAACmBlH2UKGgFahkJAABoB12UaD+MD3ZhbGlkYXRlX29tbWVyc5SFlIGUfZQoaAVoBmggah4JAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoiBgAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGobCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCtldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMudmFsaWRhdGVfb21tZXJzlIwIcmVmdGl0bGWUjCtldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMudmFsaWRhdGVfb21tZXJzlHVoHGhtaB1OaB9OaCBqFwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqFAkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggahEJAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjCxWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLpRoB12UaD+MLFZhbGlkYXRlcyB0aGUgb21tZXJzIG1lbnRpb25lZCBpbiB0aGUgYmxvY2sulIWUgZR9lChoBWgGaCBqSAkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqRQkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggahEJAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagQGAABoHU5oH05oIGq8BgAAdWJqBQYAACmBlH2UKGgFaAZoB12UKGoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDw6b2JqOmBwYXlfcmV3YXJkcyA8ZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLnBheV9yZXdhcmRzPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqFgYAACmBlH2UKGgFamsJAABoB12UaD+MC3BheV9yZXdhcmRzlIWUgZR9lChoBWgGaCBqcAkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoaiIGAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqFQYAAGgdTmgfTmggam0JAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMJ2V0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy5wYXlfcmV3YXJkc5SMCHJlZnRpdGxllIwnZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLnBheV9yZXdhcmRzlHVoHGhtaB1OaB9OaCBqaQkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqZgkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggamMJAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDxQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy6UaAddlGg/jDxQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy6UhZSBlH2UKGgFaAZoIGqaCQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFoIGqXCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoJBgAAaB1OaB9OaCBqYwkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqBAYAAGgdTmgfTmggarwGAAB1YmoFBgAAKYGUfZQoaAVoBmgHXZQoagoGAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMTDpvYmo6YHByb2Nlc3NfdHJhbnNhY3Rpb24gPGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy5wcm9jZXNzX3RyYW5zYWN0aW9uPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqFgYAACmBlH2UKGgFar0JAABoB12UaD+ME3Byb2Nlc3NfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGrCCQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqIgYAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoVBgAAaB1OaB9OaCBqvwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwvZXRoZXJldW0uYXJyb3dfZ2xhY2llci5zcGVjLnByb2Nlc3NfdHJhbnNhY3Rpb26UjAhyZWZ0aXRsZZSML2V0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy5wcm9jZXNzX3RyYW5zYWN0aW9ulHVoHGhtaB1OaB9OaCBquwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBquAkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggarUJAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDdFeGVjdXRlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQulGgHXZRoP4w3RXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LpSFlIGUfZQoaAVoBmggauwJAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx0L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggaukJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagkGAABoHU5oH05oIGq1CQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoEBgAAaB1OaB9OaCBqvAYAAHViagUGAAApgZR9lChoBWgGaAddlChqCgYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxOOm9iajpgdmFsaWRhdGVfdHJhbnNhY3Rpb24gPGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbj5glGgHXZRobimBlH2UKGgFaAZoB12UahYGAAApgZR9lChoBWoPCgAAaAddlGg/jBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggahQKAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoiBgAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGoRCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDBldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMudmFsaWRhdGVfdHJhbnNhY3Rpb26UjAhyZWZ0aXRsZZSMMGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbpR1aBxobWgdTmgfTmggag0KAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx0L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggagoKAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagkGAABoHU5oH05oIGoHCgAAdWJqCgYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwXVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi6UaAddlGg/jBdWZXJpZmllcyBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggaj4KAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx0L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggajsKAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagkGAABoHU5oH05oIGoHCgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoEBgAAaB1OaB9OaCBqvAYAAHViagUGAAApgZR9lChoBWgGaAddlChqCgYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxWOm9iajpgY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0IDxldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqFgYAACmBlH2UKGgFamEKAABoB12UaD+MGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSFlIGUfZQoaAVoBmggamYKAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGoiBgAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGpjCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDRldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lIwIcmVmdGl0bGWUjDRldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0lHVoHGhtaB1OaB9OaCBqXwoAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqXAoAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggalkKAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UaAddlGg/jD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGqQCgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFo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cmVmaWSUjCtldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2hlY2tfZ2FzX2xpbWl0lIwIcmVmdGl0bGWUjCtldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2hlY2tfZ2FzX2xpbWl0lHVoHGhtaB1OaB9OaCBqnQwAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NTg6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqmgwAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqCQYAAGgdTmgfTmggapcMAAB1YmoKBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjCRWYWxpZGF0ZXMgdGhlIGdhcyBsaW1pdCBmb3IgYSBibG9jay6UaAddlGg/jCRWYWxpZGF0ZXMgdGhlIGdhcyBsaW1pdCBmb3IgYSBibG9jay6UhZSBlH2UKGgFaAZoIGrODAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFoIGrLDAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoJBgAAaB1OaB9OaCBqlwwAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqBAYAAGgdTmgfTmggarwGAAB1YmoFBgAAKYGUfZQoaAVoBmgHXZQoagoGAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMWjpvYmo6YGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5IDxldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHk+YJRoB12UaG4p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dF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpRoB12UaD9Y3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpSFlIGUfZQoaAVoBmggakQaAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUaqAFAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqbREAAEsBc4wHbGluZW5vc5SJdWgcalURAABoHWgeaB9NLAFoIGrYGAAAdWJlaA59lChoEF2UaugCAABhaBNdlGgVXZSMGWdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXOUYWgXXZRoGV2UdWgcaDNoHWgeaB9NFgFoIGrgEAAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBBzdGF0ZV90cmFuc2l0aW9ulGgHXZRoP4wQc3RhdGVfdHJhbnNpdGlvbpSFlIGUfZQoaAVoBmggamUaAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NMQFoIGpiGgAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqYhoAAHViahIRAAApgZR9lChoBWgGaAddlChqFxEAACmBlH2UKGgFjB5zdGF0ZV90cmFuc2l0aW9uKGNoYWluLCBibG9jaymUaAddlChqHREAACmBlH2UKGgFjBBzdGF0ZV90cmFuc2l0aW9ulGgHXZRoP4wQc3RhdGVfdHJhbnNpdGlvbpSFlIGUfZQoaAVoBmggaoUaAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGooEQAAaikRAABqKhEAAGorEQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcahwRAABoHWgeaB9OaCBqgRoAAHVial4XAAApgZR9lChoBYwMY2hhaW4sIGJsb2NrlGgHXZQoamQXAAApgZR9lChoBYwFY2hhaW6UaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wFY2hhaW6UhZSBlH2UKGgFaAZoIGqcGgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGpzFwAAYWgVXZRoF12UaBldlHVoHGrgFAAAaB1OaB9OaCBqmBoAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGpjFwAAaB1OaB9OaCBqlBoAAHViamQXAAApgZR9lChoBYwFYmxvY2uUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wFYmxvY2uUhZSBlH2UKGgFaAZoIGq0GgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGpzFwAAYWgVXZRoF12UaBldlHVoHGrgFAAAaB1OaB9OaCBqsBoAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGpjFwAAaB1OaB9OaCBqlBoAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGpdFwAAaB1oHmgfTmggaoEaAAB1YmVoDn2UKGgQXZSMLGV0aGVyZXVtLmFycm93X2dsYWNpZXIuc3BlYy5zdGF0ZV90cmFuc2l0aW9ulGFoE12UKGozEQAAajQRAACMAnB5lGo2EQAAajcRAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUajwRAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqhxoAAHVoHGoWEQAAaB1oHmgfTTQBaCBqfhoAAHViakARAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjDVBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLpRoB12UaD+MNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBq3RoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH003AWggatoaAAB1YmhpKYGUfZQoaAVYMQEAAEFsbCBwYXJ0cyBvZiB0aGUgYmxvY2sncyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2NrJ3MgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulGgHXZRoP1g1AQAAQWxsIHBhcnRzIG9mIHRoZSBibG9ja+KAmXMgY29udGVudHMgbmVlZCB0byBiZSB2ZXJpZmllZCBiZWZvcmUgYmVpbmcgYWRkZWQKdG8gdGhlIGNoYWluLiBCbG9ja3MgYXJlIHZlcmlmaWVkIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZQpibG9jayBtYWtlIGxvZ2ljYWwgc2Vuc2Ugd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHBhcmVudCBibG9jay4gVGhlCmluZm9ybWF0aW9uIGluIHRoZSBibG9ja+KAmXMgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulIWUgZR9lChoBWgGaCBq6xoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1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dGltZXN0YW1wLAogICAgICAgIGJsb2NrLmhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBibG9jay5vbW1lcnMsCiAgICAgICAgY2hhaW4uY2hhaW5faWQsCiAgICApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1OgogICAgICAgICMgUmVhbCBjbGllbnRzIGhhdmUgdG8gc3RvcmUgbW9yZSBibG9ja3MgdG8gZGVhbCB3aXRoIHJlb3JncywgYnV0IHRoZQogICAgICAgICMgcHJvdG9jb2wgb25seSByZXF1aXJlcyB0aGUgbGFzdCAyNTUKICAgICAgICBjaGFpbi5ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCpRoB12UaD9Y6QQAAGRlZiBzdGF0ZV90cmFuc2l0aW9uKGNoYWluOiBCbG9ja0NoYWluLCBibG9jazogQmxvY2spIC0+IE5vbmU6CiAgICBwYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWy0xXS5oZWFkZXIKICAgIHZhbGlkYXRlX2hlYWRlcihibG9jay5oZWFkZXIsIHBhcmVudF9oZWFkZXIpCiAgICB2YWxpZGF0ZV9vbW1lcnMoYmxvY2sub21tZXJzLCBibG9jay5oZWFkZXIsIGNoYWluKQogICAgKAogICAgICAgIGdhc191c2VkLAogICAgICAgIHRyYW5zYWN0aW9uc19yb290LAogICAgICAgIHJlY2VpcHRfcm9vdCwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKSA9IGFwcGx5X2JvZHkoCiAgICAgICAgY2hhaW4uc3RhdGUsCiAgICAgICAgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbiksCiAgICAgICAgYmxvY2suaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGJsb2NrLmhlYWRlci5udW1iZXIsCiAgICAgICAgYmxvY2suaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgYmxvY2suaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBibG9jay5oZWFkZXIudGltZXN0YW1wLAogICAgICAgIGJsb2NrLmhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBibG9jay5vbW1lcnMsCiAgICAgICAgY2hhaW4uY2hhaW5faWQsCiAgICApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1Ogog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RVRfRk9SS19CTE9DSzoKICAgICAgICBwYXJlbnRfZ2FzX2xpbWl0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQgKiBFTEFTVElDSVRZX01VTFRJUExJRVIKICAgICAgICBwYXJlbnRfZ2FzX3RhcmdldCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0CiAgICBlbHNlOgogICAgICAgIHBhcmVudF9nYXNfbGltaXQgPSBwYXJlbnRfaGVhZGVyLmdhc19saW1pdAogICAgICAgIHBhcmVudF9nYXNfdGFyZ2V0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQgLy8gRUxBU1RJQ0lUWV9NVUxUSVBMSUVSCiAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgPSBwYXJlbnRfaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMKCiAgICBwYXJlbnRfZ2FzX3VzZWQgPSBwYXJlbnRfaGVhZGVyLmdhc191c2VkCgogICAgZW5zdXJlKGhlYWRlci5nYXNfdXNlZCA8PSBoZWFkZXIuZ2FzX2xpbWl0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKCiAgICAjIGNoZWNrIGlmIHRoZSBiYXNlIGZlZSBpcyBjb3JyZWN0CiAgICBpZiBoZWFkZXIubnVtYmVyID09IE1BSU5ORVRfRk9SS19CTE9DSzoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gSU5JVElBTF9CQVNFX0ZFRQogICAgZWxpZiBwYXJlbnRfZ2FzX3VzZWQgPT0gcGFyZW50X2dhc190YXJnZXQ6CiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzCiAgICBlbGlmIHBhcmVudF9nYXNfdXNlZCA+IHBhcmVudF9nYXNfdGFyZ2V0OgogICAgICAgIGdhc191c2VkX2RlbHRhID0gcGFyZW50X2dhc191c2VkIC0gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgcGFyZW50X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAqIGdhc191c2VkX2RlbHRhCiAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfZmVlX2dhc19kZWx0YSAvLyBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhID0gbWF4KAogICAgICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSAvLyBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SLAogICAgICAgICAgICAxLAogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKyBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQogICAgZWxzZToKICAgICAgICBnYXNfdXNlZF9kZWx0YSA9IHBhcmVudF9nYXNfdGFyZ2V0IC0gcGFyZW50X2dhc191c2VkCgogICAgICAgIHBhcmVudF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKiBnYXNfdXNlZF9kZWx0YQogICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2ZlZV9nYXNfZGVsdGEgLy8gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgYmFzZV9mZWVfcGVyX2dhc19kZWx0YSA9ICgKICAgICAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgLy8gQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUgogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQoKICAgIGVuc3VyZShleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID09IGhlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2spCgogICAgcGFyZW50X2hhc19vbW1lcnMgPSBwYXJlbnRfaGVhZGVyLm9tbWVyc19oYXNoICE9IEVNUFRZX09NTUVSX0hBU0gKICAgIGVuc3VyZShoZWFkZXIudGltZXN0YW1wID4gcGFyZW50X2hlYWRlci50aW1lc3RhbXAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubnVtYmVyID09IHBhcmVudF9oZWFkZXIubnVtYmVyICsgMSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGxlbihoZWFkZXIuZXh0cmFfZGF0YSkgPD0gMzIsIEludmFsaWRCbG9jaykKCiAgICBibG9ja19kaWZmaWN1bHR5ID0gY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBwYXJlbnRfaGFzX29tbWVycywKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlGgHXZRoP1gtCgAAZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaWYgaGVhZGVyLm51bWJlciA9PSBNQUlOTkVUX0ZPUktfQkxPQ0s6CiAgICAgICAgcGFyZW50X2dhc19saW1pdCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0ICogRUxBU1RJQ0lUWV9NVUxUSVBMSUVSCiAgICAgICAgcGFyZW50X2dhc190YXJnZXQgPSBwYXJlbnRfaGVhZGVyLmdhc19saW1pdAogICAgZWxzZToKICAgICAgICBwYXJlbnRfZ2FzX2xpbWl0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQKICAgICAgICBwYXJlbnRfZ2FzX3RhcmdldCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0IC8vIEVMQVNUSUNJVFlfTVVMVElQTElFUgogICAgICAgIHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzID0gcGFyZW50X2hlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzCgogICAgcGFyZW50X2dhc191c2VkID0gcGFyZW50X2hlYWRlci5nYXNfdXNlZAoKICAgIGVuc3VyZShoZWFkZXIuZ2FzX3VzZWQgPD0gaGVhZGVyLmdhc19saW1pdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIGNoZWNrX2dhc19saW1pdChoZWFkZXIuZ2FzX2xpbWl0LCBwYXJlbnRfZ2FzX2xpbWl0KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCgogICAgIyBjaGVjayBpZiB0aGUgYmFzZSBmZWUgaXMgY29ycmVjdAogICAgaWYgaGVhZGVyLm51bWJlciA9PSBNQUlOTkVUX0ZPUktfQkxPQ0s6CiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9IElOSVRJQUxfQkFTRV9GRUUKICAgIGVsaWYgcGFyZW50X2dhc191c2VkID09IHBhcmVudF9nYXNfdGFyZ2V0OgogICAgICAgIGV4cGVjdGVkX2Jhc2VfZmVlX3Blcl9nYXMgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcwogICAgZWxpZiBwYXJlbnRfZ2FzX3VzZWQgPiBwYXJlbnRfZ2FzX3RhcmdldDoKICAgICAgICBnYXNfdXNlZF9kZWx0YSA9IHBhcmVudF9nYXNfdXNlZCAtIHBhcmVudF9nYXNfdGFyZ2V0CgogICAgICAgIHBhcmVudF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKiBnYXNfdXNlZF9kZWx0YQogICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2ZlZV9nYXNfZGVsdGEgLy8gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgYmFzZV9mZWVfcGVyX2dhc19kZWx0YSA9IG1heCgKICAgICAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgLy8gQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUiwKICAgICAgICAgICAgMSwKICAgICAgICApCgogICAgICAgIGV4cGVjdGVkX2Jhc2VfZmVlX3Blcl9nYXMgPSAoCiAgICAgICAgICAgIHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzICsgYmFzZV9mZWVfcGVyX2dhc19kZWx0YQogICAgICAgICkKICAgIGVsc2U6CiAgICAgICAgZ2FzX3VzZWRfZGVsdGEgPSBwYXJlbnRfZ2FzX3RhcmdldCAtIHBhcmVudF9nYXNfdXNlZAoKICAgICAgICBwYXJlbnRfZmVlX2dhc19kZWx0YSA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzICogZ2FzX3VzZWRfZGVsdGEKICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSA9IHBhcmVudF9mZWVfZ2FzX2RlbHRhIC8vIHBhcmVudF9nYXNfdGFyZ2V0CgogICAgICAgIGJhc2VfZmVlX3Blcl9nYXNfZGVsdGEgPSAoCiAgICAgICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhIC8vIEJBU0VfRkVFX01BWF9DSEFOR0VfREVOT01JTkFUT1IKICAgICAgICApCgogICAgICAgIGV4cGVjdGVkX2Jhc2VfZmVlX3Blcl9nYXMgPSAoCiAgICAgICAgICAgIHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzIC0gYmFzZV9mZWVfcGVyX2dhc19kZWx0YQogICAgICAgICkKCiAgICBlbnN1cmUoZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9PSBoZWFkZXIuYmFzZV9mZWVfcGVyX2dhcywgSW52YWxpZEJsb2NrKQoKICAgIHBhcmVudF9oYXNfb21tZXJzID0gcGFyZW50X2hlYWRlci5vbW1lcnNfaGFzaCAhPSBFTVBUWV9PTU1FUl9IQVNICiAgICBlbnN1cmUoaGVhZGVyLnRpbWVzdGFtcCA+IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm51bWJlciA9PSBwYXJlbnRfaGVhZGVyLm51bWJlciArIDEsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShsZW4oaGVhZGVyLmV4dHJhX2RhdGEpIDw9IDMyLCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfZGlmZmljdWx0eSA9IGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgcGFyZW50X2hhc19vbW1lcnMsCiAgICApCiAgICBlbnN1cmUoaGVhZGVyLmRpZmZpY3VsdHkgPT0gYmxvY2tfZGlmZmljdWx0eSwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX3BhcmVudF9oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocGFyZW50X2hlYWRlcikpCiAgICBlbnN1cmUoaGVhZGVyLnBhcmVudF9oYXNoID09IGJsb2NrX3BhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXIpCpSFlIGUfZQoaAVoBmggaggdAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUaqAFAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqbREAAEsBc4wHbGluZW5vc5SJdWgcalURAABoHWgeaB9NZAFoIGrKGwAAdWJlaA59lChoEF2U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aA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrmFwAAaB1OaB9OaCBq+x0AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq4RcAAGgdTmgfTmggaoYdAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaj8RAABoHWgeaB9OaCBqQh0AAHViZWgOfZQoaBBdlGgTXZQoan8dAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqfx0AAIwHb2JqdHlwZZRqwB4AAIwIZGVzY3R5cGWUasAeAACMB25vaW5kZXiUiXVoHGoREQAAaB1OaB9OaCBqJh0AAHVialYRAAApgZR9lChoBVgkAgAAZGVmIGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyOiBIZWFkZXIpIC0+IEhhc2gzMjoKICAgIGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cyA9IFsKICAgICAgICBoZWFkZXIucGFyZW50X2hhc2gsCiAgICAgICAgaGVhZGVyLm9tbWVyc19oYXNoLAogICAgICAgIGhlYWRlci5jb2luYmFzZSwKICAgICAgICBoZWFkZXIuc3RhdGVfcm9vdCwKICAgICAgICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIGhlYWRlci5leHRyYV9kYXRhLAogICAgICAgIGhlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzLAogICAgXQoKICAgIHJldHVybiBybHAucmxwX2hhc2goaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzKQqUaAddlGg/WCQCAABkZWYgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXI6IEhlYWRlcikgLT4gSGFzaDMyOgogICAgaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzID0gWwogICAgICAgIGhlYWRlci5wYXJlbnRfaGFzaCwKICAgICAgICBoZWFkZXIub21tZXJzX2hhc2gsCiAgICAgICAgaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGhlYWRlci5zdGF0ZV9yb290LAogICAgICAgIGhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICBoZWFkZXIucmVjZWlwdF9yb290LAogICAgICAgIGhlYWRlci5ibG9vbSwKICAgICAgICBoZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgaGVhZGVyLmdhc191c2VkLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgaGVhZGVyLmV4dHJhX2RhdGEsCiAgICAgICAgaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMsCiAgICBdCgogICAgcmV0dXJuIHJscC5ybHBfaGFzaChoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMpCpSFlIGUfZQoaAVoBmggasgeAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFQvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9hcnJvd19nbGFjaWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUaqAFAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqbREAAEsBc4wHbGluZW5vc5SJdWgcalURAABoHWgeaB9NggFoIGomHQAAdWJlaA59lChoEF2Uak4DAABhaBNdlGgVXZSMHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUYWgXXZRoGV2UdWgcaDNoHWgeaB9NaQFoIGrgEAAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBZ2YWxpZGF0ZV9wcm9vZl9vZl93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ZGVyLm5vbmNlLCBjYWNoZSwgZGF0YXNldF9zaXplKGhlYWRlci5udW1iZXIpCiAgICApCgogICAgZW5zdXJlKG1peF9kaWdlc3QgPT0gaGVhZGVyLm1peF9kaWdlc3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBVaW50LmZyb21fYmVfYnl0ZXMocmVzdWx0KSA8PSAoVTI1Nl9DRUlMX1ZBTFVFIC8vIGhlYWRlci5kaWZmaWN1bHR5KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCpRoB12UaD9YNgIAAGRlZiB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlIWUgZR9lChoBWgGaCBq9B8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqoAUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGptEQAASwFzjAdsaW5lbm9zlIl1aBxqVREAAGgdaB5oH02aAWggauYeAAB1YmVoDn2UKGgQXZRqcAMAAGFoE12UaBVdlIwWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5RhaBddlGgZXZR1aBxoM2gdaB5oH02HAWggauAQAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMCmFwcGx5X2JvZHmUaAddlGg/jAphcHBseV9ib2R5lIWUgZR9lChoBWgGaCBqFSAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH02fAWggahIgAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGoSIAAAdWJqEhEAACmBlH2UKGgFaAZoB12UKGoXEQAAKYGUfZQoaAWMmGFwcGx5X2JvZHkoc3RhdGUsIGJsb2NrX2hhc2hlcywgY29pbmJhc2UsIGJsb2NrX251bWJlciwgYmFzZV9mZWVfcGVyX2dhcywgYmxvY2tfZ2FzX2xpbWl0LCBibG9ja190aW1lLCBibG9ja19kaWZmaWN1bHR5LCB0cmFuc2FjdGlvbnMsIG9tbWVycywgY2hhaW5faWQplGgHXZQoah0RAAApgZR9lChoBYwKYXBwbHlfYm9keZRoB12UaD+MCmFwcGx5X2JvZHmUhZSBlH2UKGgFaAZoIGo1IAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqKBEAAGopEQAAaioRAABqKxEAAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGocEQAAaB1oHmgfTmggajEgAAB1YmpeFwAAKYGUfZQoaAWMjHN0YXRlLCBibG9ja19oYXNoZXMsIGNvaW5iYXNlLCBibG9ja19udW1iZXIsIGJhc2VfZmVlX3Blcl9nYXMsIGJsb2NrX2dhc19saW1pdCwgYmxvY2tfdGltZSwgYmxvY2tfZGlmZmljdWx0eSwgdHJhbnNhY3Rpb25zLCBvbW1lcnMsIGNoYWluX2lklGgHXZQoamQXAAApgZR9lChoBYwFc3RhdGWUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wFc3RhdGWUhZSBlH2UKGgFaAZoIGpMIAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGpzFwAAYWgVXZRoF12UaBldlHVoHGrgFAAAaB1OaB9OaCBqSCAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGpjFwAAaB1OaB9OaCBqRCAAAHViamQXAAApgZR9lChoBYwMYmxvY2tfaGFzaGVzlGgHXZRq4RQAACmBlH2UKGgFaAZoB12UaD+MDGJsb2NrX2hhc2hlc5SFlIGUfZQoaAVoBmggamQgAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UanMXAABhaBVdlGgXXZRoGV2UdWgcauAUAABoHU5oH05oIGpgIAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcamMXAABoHU5oH05oIGpEIAAAdWJqZBcAACmBlH2UKGgFjAhjb2luYmFzZZRoB12UauEUAAApgZR9lChoBWgGaAddlGg/jAhjb2luYmFzZZSFlIGUfZQoaAVoBmgganwgAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UanMXAABhaBVdlGgXXZRoGV2UdWgcauAUAABoHU5oH05oIGp4IAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcamMXAABoHU5oH05oIGpEIAAAdWJqZBcAACmBlH2UKGgFjAxibG9ja19udW1iZXKUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wMYmxvY2tfbnVtYmVylIWUgZR9lChoBWgGaCBqlCAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqcxcAAGFoFV2UaBddlGgZXZR1aBxq4BQAAGgdTmgfTmggapAgAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqYxcAAGgdTmgfTmggakQgAAB1YmpkFwAAKYGUfZQoaAWMEGJhc2VfZmVlX3Blcl9nYXOUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wQYmFzZV9mZWVfcGVyX2dhc5SFlIGUfZQoaAVoBmggaqwgAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UanMXAABhaBVdlGgXXZRoGV2UdWgcauAUAABoHU5oH05oIGqoIAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcamMXAABoHU5oH05oIGpEIAAAdWJqZBcAACmBlH2UKGgFjA9ibG9ja19nYXNfbGltaXSUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wPYmxvY2tfZ2FzX2xpbWl0lIWUgZR9lChoBWgGaCBqxCAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqcxcAAGFoFV2UaBddlGgZXZR1aBxq4BQAAGgdTmgfTmggasAgAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqYxcAAGgdTmgfTmggakQgAAB1YmpkFwAAKYGUfZQoaAWMCmJsb2NrX3RpbWWUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wKYmxvY2tfdGltZZSFlIGUfZQoaAVoBmggatwgAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UanMXAABhaBVdlGgXXZRoGV2UdWgcauAUAABoHU5oH05oIGrYIAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcamMXAABoHU5oH05oIGpEIAAAdWJqZBcAACmBlH2UKGgFjBBibG9ja19kaWZmaWN1bHR5lGgHXZRq4RQAACmBlH2UKGgFaAZoB12UaD+MEGJsb2NrX2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGr0IAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGpzFwAAYWgVXZRoF12UaBldlHVoHGrgFAAAaB1OaB9OaCBq8CAAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqoAUAAHVoHGpjFwAAaB1OaB9OaCBqRCAAAHViamQXAAApgZR9lChoBYwMdHJhbnNhY3Rpb25zlGgHXZRq4RQAACmBlH2UKGgFaAZoB12UaD+MDHRyYW5zYWN0aW9uc5SFlIGUfZQoaAVoBmggagwhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UanMXAABhaBVdlGgXXZRoGV2UdWgcauAUAABoHU5oH05oIGoIIQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcamMXAABoHU5oH05oIGpEIAAAdWJqZBcAACmBlH2UKGgFjAZvbW1lcnOUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wGb21tZXJzlIWUgZR9lChoBWgGaCBqJCEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqcxcAAGFoFV2UaBddlGgZXZR1aBxq4BQAAGgdTmgfTmggaiAhAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqYxcAAGgdTmgfTmggakQgAAB1YmpkFwAAKYGUfZQoaAWMCGNoYWluX2lklGgHXZRq4RQAACmBlH2UKGgFaAZoB12UaD+MCGNoYWluX2lklIWUgZR9lChoBWgGaCBqPCEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqcxcAAGFoFV2UaBddlGgZXZR1aBxq4BQAAGgdTmgfTmggajghAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqYxcAAGgdTmgfTmggakQgAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqXRcAAGgdaB5oH05oIGoxIAAAdWJlaA59lChoEF2UjCZldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuYXBwbHlfYm9keZRhaBNdlChqMxEAAGo0EQAAjAJweZRqNhEAAGo3EQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGo8EQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUajcgAAB1aBxqFhEAAGgdaB5oH02iAWggai4gAAB1YmpAEQAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwRRXhlY3V0ZXMgYSBibG9jay6UaAddlGg/jBFFeGVjdXRlcyBhIGJsb2NrLpSFlIGUfZQoaAVoBmggamUhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NpQFoIGpiIQAAdWJoaSmBlH2UKGgFWHoBAABNYW55IG9mIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGFyZSBzdG9yZWQgaW4gZGF0YSBzdHJ1Y3R1cmVzIGNhbGxlZAp0cmllcy4gVGhlcmUgaXMgYSB0cmFuc2FjdGlvbnMgdHJpZSB3aGljaCBpcyBzaW1pbGFyIHRvIGEgbGVkZ2VyIG9mIHRoZQp0cmFuc2FjdGlvbnMgc3RvcmVkIGluIHRoZSBjdXJyZW50IGJsb2NrLiBUaGVyZSBpcyBhbHNvIGEgcmVjZWlwdHMgdHJpZQp3aGljaCBzdG9yZXMgdGhlIHJlc3VsdHMgb2YgZXhlY3V0aW5nIGEgdHJhbnNhY3Rpb24sIGxpa2UgdGhlIHBvc3Qgc3RhdGUKYW5kIGdhcyB1c2VkLiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGV4ZWN1dGVzIHRoZSBibG9jayB0aGF0IGlzIHRvIGJlCmFkZGVkIHRvIHRoZSBjaGFpbi6UaAddlGg/WHoBAABNYW55IG9mIHRoZSBjb250ZW50cyBvZiBhIGJsb2NrIGFyZSBzdG9yZWQgaW4gZGF0YSBzdHJ1Y3R1cmVzIGNhbGxlZAp0cmllcy4gVGhlcmUgaXMgYSB0cmFuc2FjdGlvbnMgdHJpZSB3aGljaCBpcyBzaW1pbGFyIHRvIGEgbGVkZ2VyIG9mIHRoZQp0cmFuc2FjdGlvbnMgc3RvcmVkIGluIHRoZSBjdXJyZW50IGJsb2NrLiBUaGVyZSBpcyBhbHNvIGEgcmVjZWlwdHMgdHJpZQp3aGljaCBzdG9yZXMgdGhlIHJlc3VsdHMgb2YgZXhlY3V0aW5nIGEgdHJhbnNhY3Rpb24sIGxpa2UgdGhlIHBvc3Qgc3RhdGUKYW5kIGdhcyB1c2VkLiBUaGlzIGZ1bmN0aW9u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aCBqEiAAAHVialYRAAApgZR9lChoBVh0CwAAZGVmIGFwcGx5X2JvZHkoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19oYXNoZXM6IExpc3RbSGFzaDMyXSwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmFzZV9mZWVfcGVyX2dhczogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICBibG9ja19kaWZmaWN1bHR5OiBVaW50LAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtVbmlvbltMZWdhY3lUcmFuc2FjdGlvbiwgQnl0ZXNdLCAuLi5dLAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sCiAgICBjaGFpbl9pZDogVWludDY0LAopIC0+IFR1cGxlW1VpbnQsIFJvb3QsIFJvb3QsIEJsb29tLCBTdGF0ZV06CiAgICBnYXNfYXZhaWxhYmxlID0gYmxvY2tfZ2FzX2xpbWl0CiAgICB0cmFuc2FjdGlvbnNfdHJpZTogVHJpZVsKICAgICAgICBCeXRlcywgT3B0aW9uYWxbVW5pb25bQnl0ZXMsIExlZ2FjeVRyYW5zYWN0aW9uXV0KICAgIF0gPSBUcmllKHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZSkKICAgIHJlY2VpcHRzX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1VuaW9uW0J5dGVzLCBSZWNlaXB0XV1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIGJsb2NrX2xvZ3M6IFR1cGxlW0xvZywgLi4uXSA9ICgpCgogICAgZm9yIGksIHR4IGluIGVudW1lcmF0ZShtYXAoZGVjb2RlX3RyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbnMpKToKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgdHJhbnNhY3Rpb25zX3RyaWUsIHJscC5lbmNvZGUoVWludChpKSksIGVuY29kZV90cmFuc2FjdGlvbih0eCkKICAgICAgICApCgogICAgICAgIGVuc3VyZSh0eC5nYXMgPD0gZ2FzX2F2YWlsYWJsZSwgSW52YWxpZEJsb2NrKQogICAgICAgIHNlbmRlcl9hZGRyZXNzID0gcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQsIHR4KQoKICAgICAgICBpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgICAgIGVuc3VyZSgKICAgICAgICAgICAgICAgIHR4Lm1heF9mZWVfcGVyX2dhcyA+PSB0eC5tYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jawogICAgICAgICAgICApCgogICAgICAgICAgICBwcmlvcml0eV9mZWVfcGVyX2dhcyA9IG1pbigKICAgICAgICAgICAgICAgIHR4Lm1heF9wcmlvcml0eV9mZWVfcGVyX2dhcywKICAgICAgICAgICAgICAgIHR4Lm1heF9mZWVfcGVyX2dhcyAtIGJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgICkKICAgICAgICAgICAgZWZmZWN0aXZlX2dhc19wcmljZSA9IHByaW9yaXR5X2ZlZV9wZXJfZ2FzICsgYmFzZV9mZWVfcGVyX2dhcwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuc3VyZSh0eC5nYXNfcHJpY2UgPj0gYmFzZV9mZWVfcGVyX2dhcywgSW52YWxpZEJsb2NrKQogICAgICAgICAgICBlZmZlY3RpdmVfZ2FzX3ByaWNlID0gdHguZ2FzX3ByaWNlCgogICAgICAgIGVudiA9IHZtLkVudmlyb25tZW50KAogICAgICAgICAgICBjYWxsZXI9c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIG9yaWdpbj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgYmxvY2tfaGFzaGVzPWJsb2NrX2hhc2hlcywKICAgICAgICAgICAgY29pbmJhc2U9Y29pbmJhc2UsCiAgICAgICAgICAgIG51bWJlcj1ibG9ja19udW1iZXIsCiAgICAgICAgICAgIGdhc19saW1pdD1ibG9ja19nYXNfbGltaXQsCiAgICAgICAgICAgIGJhc2VfZmVlX3Blcl9nYXM9YmFzZV9mZWVfcGVyX2dhcywKICAgICAgICAgICAgZ2FzX3ByaWNlPWVmZmVjdGl2ZV9nYXNfcHJpY2UsCiAgICAgICAgICAgIHRpbWU9YmxvY2tfdGltZSwKICAgICAgICAgICAgZGlmZmljdWx0eT1ibG9ja19kaWZmaWN1bHR5LAogICAgICAgICAgICBzdGF0ZT1zdGF0ZSwKICAgICAgICAgICAgY2hhaW5faWQ9Y2hhaW5faWQsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncywgaGFzX2VycmVkID0gcHJvY2Vzc190cmFuc2FjdGlvbihlbnYsIHR4KQogICAgICAgIGdhc19hdmFpbGFibGUgLT0gZ2FzX3VzZWQKCiAgICAgICAgcmVjZWlwdDogVW5pb25bQnl0ZXMsIFJlY2VpcHRdID0gUmVjZWlwdCgKICAgICAgICAgICAgc3VjY2VlZGVkPW5vdCBoYXNfZXJyZWQsCiAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgKQoKICAgICAgICBpZiBpc2luc3RhbmNlKHR4LCBBY2Nlc3NMaXN0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAxIiArIHJscC5lbmNvZGUocmVjZWlwdCkKICAgICAgICBpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgICAgIHJlY2VpcHQgPSBiIlx4MDIiICsgcmxwLmVuY29kZShyZWNlaXB0KQoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgcmVjZWlwdCwKICAgICAgICApCgogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpRoB12UaD9YdAsAAGRlZiBhcHBseV9ib2R5KAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfaGFzaGVzOiBMaXN0W0hhc2gzMl0sCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJhc2VfZmVlX3Blcl9nYXM6IFVpbnQsCiAgICBibG9ja19nYXNfbGltaXQ6IFVpbnQsCiAgICBibG9ja190aW1lOiBVMjU2LAogICAgYmxvY2tfZGlmZmljdWx0eTogVWludCwKICAgIHRyYW5zYWN0aW9uczogVHVwbGVbVW5pb25bTGVnYWN5VHJhbnNhY3Rpb24sIEJ5dGVzXSwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAogICAgY2hhaW5faWQ6IFVpbnQ2NCwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbCiAgICAgICAgQnl0ZXMsIE9wdGlvbmFsW1VuaW9uW0J5dGVzLCBMZWdhY3lUcmFuc2FjdGlvbl1dCiAgICBdID0gVHJpZShzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUpCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtVbmlvbltCeXRlcywgUmVjZWlwdF1dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUobWFwKGRlY29kZV90cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25zKSk6CiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCBlbmNvZGVfdHJhbnNhY3Rpb24odHgpCiAgICAgICAgKQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgPj0gdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQoKICAgICAgICAgICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBtaW4oCiAgICAgICAgICAgICAgICB0eC5tYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICApCiAgICAgICAgICAgIGVmZmVjdGl2ZV9nYXNfcHJpY2UgPSBwcmlvcml0eV9mZWVfcGVyX2dhcyArIGJhc2VfZmVlX3Blcl9nYXMKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnN1cmUodHguZ2FzX3ByaWNlID49IGJhc2VfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jaykKICAgICAgICAgICAgZWZmZWN0aXZlX2dhc19wcmljZSA9IHR4Lmdhc19wcmljZQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzPWJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgIGdhc19wcmljZT1lZmZlY3RpdmVfZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgICAgIGNoYWluX2lkPWNoYWluX2lkLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MsIGhhc19lcnJlZCA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHJlY2VpcHQ6IFVuaW9uW0J5dGVzLCBSZWNlaXB0XSA9IFJlY2VpcHQoCiAgICAgICAgICAgIHN1Y2NlZWRlZD1ub3QgaGFzX2VycmVkLAogICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICAgICAgcmVjZWlwdCA9IGIiXHgwMSIgKyBybHAuZW5jb2RlKHJlY2VpcHQpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAyIiArIHJscC5lbmNvZGUocmVjZWlwdCkKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIHJlY2VpcHQsCiAgICAgICAgKQoKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAgICBwYXlfcmV3YXJkcyhzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzKQoKICAgIGdhc19yZW1haW5pbmcgPSBibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlCgogICAgYmxvY2tfbG9nc19ibG9vbSA9IGxvZ3NfYmxvb20oYmxvY2tfbG9ncykKCiAgICByZXR1cm4gKAogICAgICAgIGdhc19yZW1haW5pbmcsCiAgICAgICAgcm9vdCh0cmFuc2FjdGlvbnNfdHJpZSksCiAgICAgICAgcm9vdChyZWNlaXB0c190cmllKSwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKQqUhZSBlH2UKGgFaAZoIGrFJAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxUL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vYXJyb3dfZ2xhY2llci9zcGVjLnB5lIwJeG1sOnNwYWNllGqgBQAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uam0RAABLAXOMB2xpbmVub3OUiXVoHGpVEQAAaB1oHmgfTcYBaCBqEiAAAHViZWgOfZQoaBBdlGqSAwAAYWgTXZRoFV2UjAphcHBseV9ib2R5lGFoF12UaBldlHVoHGgzaB1oHmgfTZ8BaCBq4BAAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwPdmFsaWRhdGVfb21tZXJzlGgHXZRoP4wPdmFsaWRh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ICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwgYmxvY2tfaGVhZGVyOiBIZWFkZXIsIGNoYWluOiBCbG9ja0NoYWluCikgLT4gTm9uZToKICAgIGJsb2NrX2hhc2ggPSBybHAucmxwX2hhc2goYmxvY2tfaGVhZGVyKQoKICAgIGVuc3VyZShybHAucmxwX2hhc2gob21tZXJzKSA9PSBibG9ja19oZWFkZXIub21tZXJzX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGg/WAEJAABkZWYgdmFsaWRhdGVfb21tZXJzKAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sIGJsb2NrX2hlYWRlcjogSGVhZGVyLCBjaGFpbjogQmxvY2tDaGFpbgopIC0+IE5vbmU6CiAgICBibG9ja19oYXNoID0gcmxwLnJscF9oYXNoKGJsb2NrX2hlYWRlcikKCiAgICBlbnN1cmUocmxwLnJscF9oYXNoKG9tbWVycykgPT0gYmxvY2tfaGVhZGVyLm9tbWVyc19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgbGVuKG9tbWVycykgPT0gMDoKICAgICAgICAjIE5vdGhpbmcgdG8gdmFsaWRhdGUKICAgICAgICByZXR1cm4KCiAgICAjIENoZWNrIHRoYXQgZWFjaCBvbW1lciBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgaGVhZGVyCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyLm51bWJlciA8IGJsb2NrX2hlYWRlci5udW1iZXIsIEludmFsaWRCbG9jaykKICAgICAgICBvbW1lcl9wYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWwogICAgICAgICAgICAtKGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIpIC0gMQogICAgICAgIF0uaGVhZGVyCiAgICAgICAgdmFsaWRhdGVfaGVhZGVyKG9tbWVyLCBvbW1lcl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywg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IGF0IHRoZSBzYW1lIHRpbWUuIEFsdGhvdWdoIG5vdCBhbGwgYmxvY2tzCnRoYXQgYXJlIG1pbmVkIGFyZSBhZGRlZCB0byB0aGUgY2Fub25pY2FsIGNoYWluLCBtaW5lcnMgYXJlIHN0aWxsIHBhaWQgYQpyZXdhcmQgZm9yIHRoZWlyIGVmZm9ydHMuIFRoaXMgcmV3YXJkIGlzIGNhbGxlZCBhbiBvbW1lciByZXdhcmQgYW5kIGlzCmNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIG9tbWVyIGJsb2NrIHRoYXQgdGhleQptaW5lZC6UaAddlChoP4xSVGhlIG1pbmVyIG9mIHRoZSBjYW5vbmljYWwgYmxvY2sgaXMgcmV3YXJkZWQgd2l0aCB0aGUgcHJlZGV0ZXJtaW5lZApibG9jayByZXdhcmQsIJSFlIGUfZQoaAVoBmggajInAABoIWgDaB1oRGgfSwB1YmoWBgAAKYGUfZQoaAWMEGBgQkxPQ0tfUkVXQVJEYGCUaAddlGg/jAxCTE9DS19SRVdBUkSUhZSBlH2UKGgFaAZoIGo6JwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoVBgAAaB1OaB9OaCBqMicAAHViaD9YMwIAACwgcGx1cyBhIHZhcmlhYmxlIGF3YXJkIGJhc2VkIG9mZiBvZiB0aGUKbnVtYmVyIG9mIG9tbWVyIGJsb2NrcyB0aGF0IHdlcmUgbWluZWQgYXJvdW5kIHRoZSBzYW1lIHRpbWUsIGFuZCBpbmNsdWRlZAppbiB0aGUgY2Fub25pY2FsIGJsb2Nr4oCZcyBoZWFkZXIuIEFuIG9tbWVyIGJsb2NrIGlzIGEgYmxvY2sgdGhhdCB3YXNu4oCZdAphZGRlZCB0byB0aGUgY2Fub25pY2FsIGJsb2NrY2hhaW4gYmVjYXVzZSBpdCB3YXNu4oCZdCB2YWxpZGF0ZWQgYXMgZmFzdCBhcwp0aGUgYWNjZXB0ZWQgYmxvY2sgYnV0IHdhcyBtaW5lZCBhdCB0aGUgc2FtZSB0aW1lLiBBbHRob3VnaCBub3QgYWxsIGJsb2Nrcwp0aGF0IGFyZSBtaW5lZCBhcmUgYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBjaGFpbiwgbWluZXJzIGFyZSBzdGlsbCBwYWlkIGEKcmV3YXJkIGZvciB0aGVpciBlZmZvcnRzLiBUaGlzIHJld2FyZCBpcyBjYWxsZWQgYW4gb21tZXIgcmV3YXJkIGFuZCBpcwpjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbW1lciBibG9jayB0aGF0IHRoZXkKbWluZWQulIWUgZR9lChoBWgGaCBqMicAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03wAWggaiEnAAB1YmriFwAAKYGUfZQoaAVoBmgHXZRq5xcAACmBlH2UKGgFaAZoB12UKGrsFwAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/jApQYXJhbWV0ZXJzlIWUgZR9lChoBWgGaCBqWCcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6xcAAGgdaB5oH0sAaCBqVScAAHViavwXAAApgZR9lChoBWgGaAddlGhfKYGUfZQoaAVoBmgHXZQoaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMH3N0YXRlIC0tIEN1cnJlbnQgYWNjb3VudCBzdGF0ZS6UaAddlChqBRgAACmBlH2UKGgFjAVzdGF0ZZRoB12UaD+MBXN0YXRllIWUgZR9lChoBWgGaCBqcycAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqPBEAAIwIcHk6Y2xhc3OUTnVoHGoEGAAAaB1OaB9OaCBqbycAAHViaD+MGyDigJMgQ3VycmVudCBhY2NvdW50IHN0YXRlLpSFlIGUfZQoaAVoBmggam8nAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpsJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqaScAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMN2Jsb2NrX251bWJlciAtLSBQb3NpdGlvbiBvZiB0aGUgYmxvY2sgd2l0aGluIHRoZSBjaGFpbi6UaAddlChqBRgAACmBlH2UKGgFjAxibG9ja19udW1iZXKUaAddlGg/jAxibG9ja19udW1iZXKUhZSBlH2UKGgFaAZoIGqbJwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGo8EQAAjAhweTpjbGFzc5ROdWgcagQYAABoHU5oH05oIGqXJwAAdWJoP4wsIOKAkyBQb3NpdGlvbiBvZiB0aGUgYmxvY2sgd2l0aGluIHRoZSBjaGFpbi6UhZSBlH2UKGgFaAZoIGqXJwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqlCcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggamknAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFBjb2luYmFzZSAtLSBBZGRyZXNzIG9mIGFjY291bnQgd2hpY2ggcmVjZWl2ZXMgYmxvY2sgcmV3YXJkIGFuZCB0cmFuc2FjdGlvbiBmZWVzLpRoB12UKGoFGAAAKYGUfZQoaAWMCGNvaW5iYXNllGgHXZRoP4wIY29pbmJhc2WUhZSBlH2UKGgFaAZoIGrDJwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGo8EQAAjAhweTpjbGFzc5ROdWgcagQYAABoHU5oH05oIGq/JwAAdWJoP4xJIOKAkyBBZGRyZXNzIG9mIGFjY291bnQgd2hpY2ggcmVjZWl2ZXMgYmxvY2sgcmV3YXJkIGFuZCB0cmFuc2FjdGlvbiBmZWVzLpSFlIGUfZQoaAVoBmggar8nAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGq8JwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqaScAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMOG9tbWVycyAtLSBMaXN0IG9mIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGN1cnJlbnQgYmxvY2sulGgHXZQoagUYAAApgZR9lChoBYwGb21tZXJzlGgHXZRoP4wGb21tZXJzlIWUgZR9lChoBWgGaCBq6ycAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqPBEAAIwIcHk6Y2xhc3OUTnVoHGoEGAAAaB1OaB9OaCBq5ycAAHViaD+MMyDigJMgTGlzdCBvZiBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBjdXJyZW50IGJsb2NrLpSFlIGUfZQoaAVoBmggaucnAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrkJwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqaScAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoXmgdTmgfTmggamYnAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavsXAABoHU5oH05oIGpVJwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrmFwAAaB1OaB9OaCBqUicAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq4RcAAGgdTmgfTmggaiEnAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaj8RAABoHWgeaB9OaCBqlSYAAHViZWgOfZQoaBBdlGgTXZQoahonAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqGicAAIwHb2JqdHlwZZRqLSgAAIwIZGVzY3R5cGWUai0oAACMB25vaW5kZXiUiXVoHGoREQAAaB1OaB9OaCBqeSYAAHVialYRAAApgZR9lChoBVj+AQAAZGVmIHBheV9yZXdhcmRzKAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgY29pbmJhc2U6IEFkZHJlc3MsCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKKSAtPiBOb25lOgogICAgbWluZXJfcmV3YXJkID0gQkxPQ0tfUkVXQVJEICsgKGxlbihvbW1lcnMpICogKEJMT0NLX1JFV0FSRCAvLyAzMikpCiAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIGNvaW5iYXNlLCBtaW5lcl9yZXdhcmQpCgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gVTI1NihibG9ja19udW1iZXIgLSBvbW1lci5udW1iZXIpCiAgICAgICAgb21tZXJfbWluZXJfcmV3YXJkID0gKCg4IC0gb21tZXJfYWdlKSAqIEJMT0NLX1JFV0FSRCkgLy8gOAogICAgICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgb21tZXIuY29pbmJhc2UsIG9tbWVyX21pbmVyX3Jld2FyZCkKlGgHXZRoP1j+AQAAZGVmIHBheV9yZXdhcmRzKAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgY29pbmJhc2U6IEFkZHJlc3MsCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKKSAtPiBOb25lOgogICAgbWluZXJfcmV3YXJkID0gQkxPQ0tfUkVXQVJEICsgKGxlbihvbW1lcnMpICogKEJMT0NLX1JFV0FSRCAvLyAzMikpCiAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIGNvaW5iYXNlLCBtaW5lcl9yZXdhcmQpCgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gVTI1NihibG9ja19udW1iZXIgLSBvbW1lci5udW1iZXIpCiAgICAgICAgb21tZXJfbWluZXJfcmV3YXJkID0gKCg4IC0gb21tZXJfYWdlKSAqIEJMT0NLX1JFV0FSRCkgLy8gOAogICAgICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgb21tZXIuY29p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bnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVyJ3MgYWNjb3VudCBhZnRlciBjYWxjdWxhdGluZyB0aGUgZ2FzIGZlZSBhbmQKcmVmdW5kcyB0aGVtIHRoZSBwcm9wZXIgYW1vdW50IGFmdGVyIGV4ZWN1dGlvbi4gQ2FsbGluZyBjb250cmFjdHMsCmRlcGxveWluZyBjb2RlLCBhbmQgaW5jcmVtZW50aW5nIG5vbmNlcyBhcmUgYWxsIGV4YW1wbGVzIG9mIGFjdGlvbnMgdGhhdApoYXBwZW4gd2l0aGluIHRoaXMgZnVuY3Rpb24gb3IgZnJvbSBhIGNhbGwgbWFkZSB3aXRoaW4gdGhpcyBmdW5jdGlvbi6UaAddlGg/WF0BAABUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgYWN0aW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSBhIHRyYW5zYWN0aW9uLgpJdCBkZWNyZW1lbnRzIHRoZSBzZW5kZXLigJlzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulIWUgZR9lChoBWgGaCBq3CgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH00QAmggassoAAB1YmhpKYGUfZQoaAWMUkFjY291bnRzIHRoYXQgYXJlIG1hcmtlZCBmb3IgZGVsZXRpb24gYXJlIHByb2Nlc3NlZCBhbmQgZGVzdHJveWVkIGFmdGVyCmV4ZWN1dGlvbi6UaAddlGg/jFJBY2NvdW50cyB0aGF0IGFyZSBtYXJrZWQgZm9yIGRlbGV0aW9uIGFy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cGVyX2dhcwogICAgZWxzZToKICAgICAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCgogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50Lm5vbmNlID09IHR4Lm5vbmNlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuYmFsYW5jZSA+PSBnYXNfZmVlICsgdHgudmFsdWUsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5jb2RlID09IGJ5dGVhcnJheSgpLCBJbnZhbGlkQmxvY2spCgogICAgZWZmZWN0aXZlX2dhc19mZWUgPSB0eC5nYXMgKiBlbnYuZ2FzX3ByaWNlCgogICAgZ2FzID0gdHguZ2FzIC0gY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KQogICAgaW5jcmVtZW50X25vbmNlKGVudi5zdGF0ZSwgc2VuZGVyKQoKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUgPSBzZW5kZXJfYWNjb3VudC5iYWxhbmNlIC0gZWZmZWN0aXZlX2dhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzID0gc2V0KCkKICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cyA9IHNldCgpCiAgICBpZiBpc2luc3RhbmNlKHR4LCAoQWNjZXNzTGlzdFRyYW5zYWN0aW9uLCBGZWVNYXJrZXRUcmFuc2FjdGlvbikpOgogICAgICAgIGZvciAoYWRkcmVzcywga2V5cykgaW4gdHguYWNjZXNzX2xpc3Q6CiAgICAgICAgICAgIHByZWFjY2Vzc2VkX2FkZHJlc3Nlcy5hZGQoYWRkcmVzcykKICAgICAgICAgICAgZm9yIGtleSBpbiBrZXlzOgogICAgICAgICAgICAgICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzLmFkZCgoYWRkcmVzcywga2V5KSkKCiAgICBtZXNzYWdlID0gcHJlcGFyZV9tZXNzYWdlKAogICAgICAgIHNlbmRlciwKICAgICAgICB0eC50bywKICAgICAgICB0eC52YWx1ZSwKICAgICAgICB0eC5kYXRhLAogICAgICAgIGdhcywKICAgICAgICBlbnYsCiAgICAgICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzPWZyb3plbnNldChwcmVhY2Nlc3NlZF9hZGRyZXNzZXMpLAogICAgICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cz1mcm96ZW5zZXQocHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzKSwKICAgICkKCiAgICBvdXRwdXQgPSBwcm9jZXNzX21lc3NhZ2VfY2FsbChtZXNzYWdlLCBlbnYpCgogICAgZ2FzX3VzZWQgPSB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQKICAgIGdhc19yZWZ1bmQgPSBtaW4oZ2FzX3VzZWQgLy8gNSwgb3V0cHV0LnJlZnVuZF9jb3VudGVyKQogICAgZ2FzX3JlZnVuZF9hbW91bnQgPSAob3V0cHV0Lmdhc19sZWZ0ICsgZ2FzX3JlZnVuZCkgKiBlbnYuZ2FzX3ByaWNlCgogICAgIyBGb3Igbm9uLTE1NTkgdHJhbnNhY3Rpb25zIGVudi5nYXNfcHJpY2UgPT0gdHguZ2FzX3ByaWNlCiAgICBwcmlvcml0eV9mZWVfcGVyX2dhcyA9IGVudi5nYXNfcHJpY2UgLSBlbnYuYmFzZV9mZWVfcGVyX2dhcwogICAgdHJhbnNhY3Rpb25fZmVlID0gKAogICAgICAgIHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQKICAgICkgKiBwcmlvcml0eV9mZWVfcGVyX2dhcwoKICAgIHRvdGFsX2dhc191c2VkID0gZ2FzX3VzZWQgLSBnYXNfcmVmdW5kCgogICAgIyByZWZ1bmQgZ2FzCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpLmJhbGFuY2UgKyBnYXNfcmVmdW5kX2Ftb3VudAogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kKQoKICAgICMgdHJhbnNmZXIgbWluZXIgZmVlcwogICAgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKS5iYWxhbmNlICsgdHJhbnNhY3Rpb25fZmVlCiAgICApCiAgICBpZiBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgIT0gMDoKICAgICAgICBzZXRfYWNjb3VudF9iYWxhbmNlKAogICAgICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICAgICAgKQogICAgZWxpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQuYWNjb3VudHNfdG9fZGVsZXRlOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LnRvdWNoZWRfYWNjb3VudHM6CiAgICAgICAgaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgYWRkcmVzcyk6CiAgICAgICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgcmV0dXJuIHRvdGFsX2dhc191c2VkLCBvdXRwdXQubG9ncywgb3V0cHV0Lmhhc19lcnJlZAqUaAddlGg/WCULAABkZWYgcHJvY2Vzc190cmFuc2FjdGlvbigKICAgIGVudjogdm0uRW52aXJvbm1lbnQsIHR4OiBUcmFuc2FjdGlvbgopIC0+IFR1cGxlW1UyNTYsIFR1cGxlW0xvZywgLi4uXSwgYm9vbF06CiAgICBlbnN1cmUodmFsaWRhdGVfdHJhbnNhY3Rpb24odHgpLCBJbnZhbGlkQmxvY2spCgogICAgc2VuZGVyID0gZW52Lm9yaWdpbgogICAgc2VuZGVyX2FjY291bnQgPSBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikKCiAgICBpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgZ2FzX2ZlZSA9IHR4LmdhcyAqIHR4Lm1heF9mZWVfcGVyX2dhcwogICAgZWxzZToKICAgICAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCgogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50Lm5vbmNlID09IHR4Lm5vbmNlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuYmFsYW5jZSA+PSBnYXNfZmVlICsgdHgudmFsdWUsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5jb2RlID09IGJ5dGVhcnJheSgpLCBJbnZhbGlkQmxvY2spCgogICAgZWZmZWN0aXZlX2dhc19mZWUgPSB0eC5nYXMgKiBlbnYuZ2FzX3ByaWNlCgogICAgZ2FzID0gdHguZ2FzIC0gY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KQogICAgaW5jcmVtZW50X25vbmNlKGVudi5zdGF0ZSwgc2VuZGVyKQoKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUgPSBzZW5kZXJfYWNjb3VudC5iYWxhbmNlIC0gZWZmZWN0aXZlX2dhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzID0gc2V0KCkKICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cyA9IHNldCgpCiAgICBpZiBpc2luc3RhbmNlKHR4LCAoQWNjZXNzTGlzdFRyYW5zYWN0aW9uLCBGZWVNYXJrZXRUcmFuc2FjdGlvbikpOgogICAgICAgIGZvciAoYWRkcmVzcywga2V5cykgaW4gdHguYWNjZXNzX2xpc3Q6CiAgICAgICAgICAgIHByZWFjY2Vzc2VkX2FkZHJlc3Nlcy5hZGQoYWRkcmVzcykKICAgICAgICAgICAgZm9yIGtleSBpbiBrZXlzOgogICAgICAgICAgICAgICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzLmFkZCgoYWRkcmVzcywga2V5KSkKCiAgICBtZXNzYWdlID0gcHJlcGFyZV9tZXNzYWdlKAogICAgICAgIHNlbmRlciwKICAgICAgICB0eC50bywKICAgICAgICB0eC52YWx1ZSwKICAgICAgICB0eC5kYXRhLAogICAgICAgIGdhcywKICAgICAgICBlbnYsCiAgICAgICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzPWZyb3plbnNldChwcmVhY2Nlc3NlZF9hZGRyZXNzZXMpLAogICAgICAgIHByZWFjY2Vzc2VkX3N0b3JhZ2Vfa2V5cz1mcm96ZW5zZXQocHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzKSwKICAgICkKCiAgICBvdXRwdXQgPSBwcm9jZXNzX21lc3NhZ2VfY2FsbChtZXNzYWdlLCBlbnYpCgogICAgZ2FzX3VzZWQgPSB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQKICAgIGdhc19yZWZ1bmQgPSBtaW4oZ2FzX3VzZWQgLy8gNSwgb3V0cHV0LnJlZnVuZF9jb3VudGVyKQogICAgZ2FzX3JlZnVuZF9hbW91bnQgPSAob3V0cHV0Lmdhc19sZWZ0ICsgZ2FzX3JlZnVuZCkgKiBlbnYuZ2FzX3ByaWNlCgogICAgIyBGb3Igbm9uLTE1NTkgdHJhbnNhY3Rpb25zIGVudi5nYXNfcHJpY2UgPT0gdHguZ2FzX3ByaWNlCiAgICBwcmlvcml0eV9mZWVfcGVyX2dhcyA9IGVudi5nYXNfcHJpY2UgLSBlbnYuYmFzZV9mZWVfcGVyX2dhcwogICAgdHJhbnNhY3Rpb25fZmVlID0gKAogICAgICAgIHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQKICAgICkgKiBwcmlvcml0eV9mZWVfcGVyX2dhcwoKICAgIHRvdGFsX2dhc191c2VkID0gZ2FzX3VzZWQgLSBnYXNfcmVmdW5kCgogICAgIyByZWZ1bmQgZ2FzCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpLmJhbGFuY2UgKyBnYXNfcmVmdW5kX2Ftb3VudAogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kKQoKICAgICMgdHJhbnNmZXIgbWluZXIgZmVlcwogICAgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKS5iYWxhbmNlICsgdHJhbnNhY3Rpb25fZmVlCiAgICApCiAgICBpZiBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgIT0gMDoKICAgICAgICBzZXRfYWNjb3VudF9iYWxhbmNlKAogICAgICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICAgICAgKQogICAgZWxpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQuYWNjb3VudHNfdG9fZGVsZXRlOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LnRvdWNoZWRfYWNjb3VudHM6CiAgICAgICAgaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgYWRkcmVzcyk6CiAgICAgICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgcmV0dXJuIHRvdGFsX2dhc191c2VkLCBvdXRwdXQubG9ncywgb3V0cHV0Lmhhc19lcnJlZAqU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SgJoIGo4LAAAdWJqQBEAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMP0NhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLpRoB12UaD+MP0NhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLpSFlIGUfZQoaAVoBmggan8sAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NTQJoIGp8LAAAdWJoaSmBlH2UKGgFWBECAABUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBoYXMKYmVndW4uIEZ1bmN0aW9ucy9vcGVyYXRpb25zIGluIHRoZSBFVk0gY29zdCBtb25leSB0byBleGVjdXRlIHNvIHRoaXMKaW50cmluc2ljIGNvc3QgaXMgZm9yIHRoZSBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwYWlkIGZvciBhcyBwYXJ0IG9mCnRoZSB0cmFuc2FjdGlvbi4gRGF0YSB0cmFuc2ZlciwgZm9yIGV4YW1wbGUsIGlzIHBhcnQgb2YgdGhpcyBpbnRyaW5zaWMKY29zdC4gSXQgY29zdHMgZXRoZXIgdG8gc2VuZCBkYXRhIG92ZXIgdGhlIHdpcmUgYW5kIHRoYXQgZXRoZXIgaXMKYWNjb3VudGVkIGZvciBpbiB0aGUgaW50cmluc2ljIGNvc3QgY2FsY3VsYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiBUaGlzCmludHJpbnNpYyBjb3N0IG11c3QgYmUgY2FsY3VsYXRlZCBhbmQgcGFpZCBmb3IgYmVmb3JlIGV4ZWN1dGlvbiBpbiBvcmRlcgpmb3IgYWxsIG9wZXJhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQulGgHXZRoP1gRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaGFzCmJlZ3VuLiBGdW5jdGlv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ICs9IFRYX0RBVEFfQ09TVF9QRVJfTk9OX1pFUk8KCiAgICBpZiB0eC50byA9PSBCeXRlczAoYiIiKToKICAgICAgICBjcmVhdGVfY29zdCA9IFRYX0NSRUFURV9DT1NUCiAgICBlbHNlOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gMAoKICAgIGFjY2Vzc19saXN0X2Nvc3QgPSAwCiAgICBpZiBpc2luc3RhbmNlKHR4LCAoQWNjZXNzTGlzdFRyYW5zYWN0aW9uLCBGZWVNYXJrZXRUcmFuc2FjdGlvbikpOgogICAgICAgIGZvciAoX2FkZHJlc3MsIGtleXMpIGluIHR4LmFjY2Vzc19saXN0OgogICAgICAgICAgICBhY2Nlc3NfbGlzdF9jb3N0ICs9IFRYX0FDQ0VTU19MSVNUX0FERFJFU1NfQ09TVAogICAgICAgICAgICBhY2Nlc3NfbGlzdF9jb3N0ICs9IGxlbihrZXlzKSAqIFRYX0FDQ0VTU19MSVNUX1NUT1JBR0VfS0VZX0NPU1QKCiAgICByZXR1cm4gVWludChUWF9CQVNFX0NPU1QgKyBkYXRhX2Nvc3QgKyBjcmVhdGVfY29zdCArIGFjY2Vzc19saXN0X2Nvc3QpCpRoB12UaD9YsgIAAGRlZiBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHg6IFRyYW5zYWN0aW9uKSAtPiBVaW50OgogICAgZGF0YV9jb3N0ID0gMAoKICAgIGZvciBieXRlIGluIHR4LmRhdGE6CiAgICAgICAgaWYgYnl0ZSA9PSAwOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9aRVJPCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfTk9OX1pFUk8KCiAgICBpZiB0eC50byA9PSBCeXRlczAoYiIiKToKICAgICAgICBjcmVhdGVfY29zdCA9IFRYX0NSRUFURV9DT1NUCiAgICBlbHNlOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gMAoKICAgIGFjY2Vzc19saXN0X2Nvc3QgPSAwCiAgICBpZiBpc2luc3RhbmNlKHR4LCAoQWNjZXNzTGlzdFRyYW5zYWN0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ZWNvdmVyKAogICAgICAgICAgICAgICAgciwgcywgdiAtIDM1IC0gY2hhaW5faWQgKiAyLCBzaWduaW5nX2hhc2hfMTU1KHR4KQogICAgICAgICAgICApCiAgICBlbGlmIGlzaW5zdGFuY2UodHgsIEFjY2Vzc0xpc3RUcmFuc2FjdGlvbik6CiAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKHIsIHMsIHYsIHNpZ25pbmdfaGFzaF8yOTMwKHR4KSkKICAgIGVsaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgIHB1YmxpY19rZXkgPSBzZWNwMjU2azFfcmVjb3ZlcihyLCBzLCB2LCBzaWduaW5nX2hhc2hfMTU1OSh0eCkpCgogICAgcmV0dXJuIEFkZHJlc3Moa2VjY2FrMjU2KHB1YmxpY19rZXkpWzEyOjMyXSkKlGgHXZRoP1iiAwAAZGVmIHJlY292ZXJfc2VuZGVyKGNoYWluX2lkOiBVaW50NjQsIHR4OiBUcmFuc2FjdGlvbikgLT4gQWRkcmVzczoKICAgIHYsIHIsIHMgPSB0eC52LCB0eC5yLCB0eC5zCgogICAgZW5zdXJlKDAgPCByIGFuZCByIDwgU0VDUDI1NksxTiwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKDAgPCBzIGFuZCBzIDw9IFNFQ1AyNTZLMU4gLy8gMiwgSW52YWxpZEJsb2NrKQoKICAgIGlmIGlzaW5zdGFuY2UodHgsIExlZ2FjeVRyYW5zYWN0aW9uKToKICAgICAgICBpZiB2ID09IDI3IG9yIHYgPT0gMjg6CiAgICAgICAgICAgIHB1YmxpY19rZXkgPSBzZWNwMjU2azFfcmVjb3ZlcigKICAgICAgICAgICAgICAgIHIsIHMsIHYgLSAyNywgc2lnbmluZ19oYXNoX3ByZTE1NSh0eCkKICAgICAgICAgICAgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVuc3VyZSgKICAgICAgICAgICAgICAgIHYgPT0gMzUgKyBjaGFpbl9pZCAqIDIgb3IgdiA9PSAzNiArIGNoYWluX2lkICogMiwgSW52YWxpZEJsb2NrCiAgICAgICAg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aBxq5hcAAGgdTmgfTmggaukvAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauEXAABoHU5oH05oIGrYLwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo/EQAAaB1oHmgfTmggapQvAAB1YmVoDn2UKGgQXZRoE12UKGrRLwAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UatEvAACMB29ianR5cGWUaq4wAACMCGRlc2N0eXBllGquMAAAjAdub2luZGV4lIl1aBxqEREAAGgdTmgfTmggangvAAB1YmpWEQAAKYGUfZQoaAVYKgEAAGRlZiBzaWduaW5nX2hhc2hfcHJlMTU1KHR4OiBMZWdhY3lUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUaAddlGg/WCoBAABkZWYgc2lnbmluZ19oYXNoX3ByZTE1NSh0eDogTGVnYWN5VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBqtjAAAGghaANoHWhEaB9L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ICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgVWludCgxKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUaAddlGg/WHIBAABkZWYgc2lnbmluZ19oYXNoXzE1NSh0eDogTGVnYWN5VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgICAgIFVpbnQoMSksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBqEjIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqoAUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGptEQAASwFzjAdsaW5lbm9zlIl1aBxqVREAAGgdaB5oH02mAmggatQwAAB1YmVoDn2UKGgQXZRqogQAAGFoE12UaBVdlIwQc2lnbmluZ19oYXNoXzE1NZRhaBddlGgZXZR1aBxoM2gdaB5oH02WAmggauAQAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWM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YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavsXAABoHU5oH05oIGofMwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrmFwAAaB1OaB9OaCBqoTIAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq4RcAAGgdTmgfTmggapAyAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaj8RAABoHWgeaB9OaCBqTDIAAHViZWgOfZQoaBBdlGgTXZQoaokyAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqiTIAAIwHb2JqdHlwZZRqZjMAAIwIZGVzY3R5cGWUamYzAACMB25vaW5kZXiUiXVoHGoREQAAaB1OaB9OaCBqMDIAAHVialYRAAApgZR9lChoBVh7AQAAZGVmIHNpZ25pbmdfaGFzaF8yOTMwKHR4OiBBY2Nlc3NMaXN0VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgYiJceDAxIgogICAgICAgICsgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHguY2hhaW5faWQsCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgdHguYWNjZXNzX2xpc3QsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaD9YewEAAGRlZiBzaWduaW5nX2hhc2hfMjkzMCh0eDogQWNjZXNzTGlzdFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIGIiXHgwMSIKICAgICAgICArIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4LmNoYWluX2lkLAogICAgICAg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AHVialYRAAApgZR9lChoBVitAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTU5KHR4OiBGZWVNYXJrZXRUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBiIlx4MDIiCiAgICAgICAgKyBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5jaGFpbl9pZCwKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1itAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTU5KHR4OiBGZWVNYXJrZXRUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBiIlx4MDIiCiAgICAgICAgKyBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5jaGFpbl9pZCwKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBqyjQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqoAUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGptEQAASwFzjAdsaW5lbm9zlIl1aBxqVREAAGgdaB5oH03QAmggaowzAAB1YmVoDn2UKGgQXZRq5gQAAGFoE12UaBVdlIwRc2lnbmluZ19oYXNoXzE1NTmUYWgXXZRoGV2UdWgcaDNoHWgeaB9NwAJoIGrgEAAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggaus0AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9N1QJoIGroNAAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBq6DQAAHViahIRAAApgZR9lChoBWgGaAddlChqFxEAACmBlH2UKGgFjBtjb21wdXRlX2hlYWRlcl9oYXNoKGhlYWRlcimUaAddlChqHREAACmBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggags1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGooEQAAaikRAABqKhEAAGorEQAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqgBQAAdWgcahwRAABoHWgeaB9OaCBqBzUAAHVial4XAAApgZR9lChoBYwGaGVhZGVylGgHXZRqZBcAACmBlH2UKGgFjAZoZWFkZXKUaAddlGrhFAAAKYGUfZQoaAVoBmgHXZRoP4wGaGVhZGVylIWUgZR9lChoBWgGaCBqIjUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqcxcAAGFoFV2UaBddlGgZXZR1aBxq4BQAAGgdTmgfTmggah41AAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqYxcAAGgdTmgfTmggaho1AAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqAFAAB1aBxqXRcAAGgdaB5oH05oIGoHNQAAdWJlaA59lChoEF2UjC9ldGhlcmV1bS5hcnJvd19nbGFjaWVyLnNwZWMuY29tcHV0ZV9oZWFkZXJfaGFzaJRhaBNdlChqMxEAAGo0EQAAjAJweZRqNhEAAGo3EQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGo8EQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUag01AAB1aBxqFhEAAGgdaB5oH03YAmggagQ1AAB1YmpAEQAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwkQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIulGgHXZRoP4wkQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIulIWUgZR9lChoBWgGaCBqSzUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03bAmggakg1AAB1YmhpKYGUfZQoaAWMjVRoZSBoZWFkZXIgaGFzaCBvZiBhIGJsb2NrIGlzIHRoZSBjYW5vbmljYWwgaGFzaCB0aGF0IGlzIHVzZWQgdG8gcmVmZXIKdG8gYSBzcGVjaWZpYyBibG9jayBhbmQgY29tcGxldGVseSBkaXN0aW5ndWlzaGVzIGEgYmxvY2sgZnJvbSBhbm90aGVyLpRoB12UaD+MjVRoZSBoZWFkZXIgaGFzaCBvZiBhIGJsb2NrIGlzIHRoZSBjYW5vbmljYWwgaGFzaCB0aGF0IGlzIHVzZWQgdG8gcmVmZXIKdG8gYSBzcGVjaWZpYyBibG9jayBhbmQgY29tcGxldGVseSBkaXN0aW5ndWlzaGVzIGEgYmxvY2sgZnJvbSBhbm90aGVyLpSFlIGUfZQoaAVoBmggalk1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9N3QJoIGpINQAAdWJoaSmBlH2UKGgFWDABAABgYGtlY2NhazI1NmBgIGlzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhIDI1NiBiaXQgaGFzaCBvZiBhbnkgaW5wdXQuCkl0IGFsc28gdGFrZXMgaW4gYW55IG51bWJlciBvZiBieXRlcyBhcyBhbiBpbnB1dCBhbmQgcHJvZHVjZXMgYSBzaW5nbGUKaGFzaCBmb3IgdGhlbS4gQSBoYXNoIGlzIGEgY29tcGxldGVseSB1bmlxdWUgb3V0cHV0IGZvciBhIHNpbmdsZSBpbnB1dC4KU28gYW4gaW5wdXQgY29ycmVzcG9uZHMgdG8gb25lIHVuaXF1ZSBoYXNoIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKdGhlIGlucHV0IGV4YWN0bHkulGgHXZQoahYGAAApgZR9lChoBYwNYGBrZWNjYWsyNTZgYJRoB12UaD+MCWtlY2NhazI1NpSFlIGUfZQoaAVoBmggams1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGpnNQAAdWJoP1gjAQAAIGlzIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBhIDI1NiBiaXQgaGFzaCBvZiBhbnkgaW5wdXQuCkl0IGFsc28gdGFrZXMgaW4gYW55IG51bWJlciBvZiBieXRlcyBhcyBhbiBpbnB1dCBhbmQgcHJvZHVjZXMgYSBzaW5nbGUKaGFzaCBmb3IgdGhlbS4gQSBoYXNoIGlzIGEgY29tcGxldGVseSB1bmlxdWUgb3V0cHV0IGZvciBhIHNpbmdsZSBpbnB1dC4KU28gYW4gaW5wdXQgY29ycmVzcG9uZHMgdG8gb25lIHVuaXF1ZSBoYXNoIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKdGhlIGlucHV0IGV4YWN0bHkulIWUgZR9lChoBWgGaCBqZzUAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03gAmggakg1AAB1YmhpKYGUfZQoaAVYKAIAAFByaW9yIHRvIHVzaW5nIHRoZSBgYGtlY2NhazI1NmBgIGhhc2ggZnVuY3Rpb24sIHRoZSBoZWFkZXIgbXVzdCBiZQplbmNvZGVkIHVzaW5nIHRoZSBSZWN1cnNpdmUtTGVuZ3RoIFByZWZpeC4gU2VlIDpyZWY6YHJscGAuClJMUCBlbmNvZGluZyB0aGUgaGVhZGVyIGNvbnZlcnRzIGl0IGludG8gYSBzcGFjZS1lZmZpY2llbnQgZm9ybWF0IHRoYXQKYWxsb3dzIGZvciBlYXN5IHRyYW5zZmVyIG9mIGRhdGEgYmV0d2VlbiBub2Rlcy4gVGhlIHB1cnBvc2Ugb2YgUkxQIGlzIHRvCmVuY29kZSBhcmJpdHJhcmlseSBuZXN0ZWQgYXJyYXlzIG9mIGJpbmFyeSBkYXRhLCBhbmQgUkxQIGlzIHRoZSBwcmltYXJ5CmVuY29kaW5nIG1ldGhvZCB1c2VkIHRvIHNlcmlhbGl6ZSBvYmplY3RzIGluIEV0aGVyZXVtJ3MgZXhlY3V0aW9uIGxheWVyLgpUaGUgb25seSBwdXJwb3NlIG9mIFJMUCBpcyB0byBlbmNvZGUgc3RydWN0dXJlOyBlbmNvZGluZyBzcGVjaWZpYyBkYXRhCnR5cGVzIChlLmcuIHN0cmluZ3MsIGZsb2F0cykgaXMgbGVmdCB1cCB0byBoaWdoZXItb3JkZXIgcHJvdG9jb2xzLpRoB12UKGg/jBNQcmlvciB0byB1c2luZyB0aGUglIWUgZR9lChoBWgGaCBqgzUAAGghaANoHWhEaB9LAHViahYGAAApgZR9lChoBYwNYGBrZWNjYWsyNTZgYJRoB12UaD+MCWtlY2NhazI1NpSFlIGUfZQoaAVoBmggaos1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahUGAABoHU5oH05oIGqDNQAAdWJoP4xSIGhhc2ggZnVuY3Rpb24sIHRoZSBoZWFkZXIgbXVzdCBiZQplbmNvZGVkIHVzaW5nIHRoZSBSZWN1cnNpdmUtTGVuZ3RoIFByZWZpeC4gU2VlIJSFlIGUfZQoaAVoBmggaoM1AABoIWgDaB1oRGgfSwB1YmhuKYGUfZQoaAVoBmgHXZRq4RQA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X2xpbWl0KGdhc19saW1pdDogVWludCwgcGFyZW50X2dhc19saW1pdDogVWludCkgLT4gYm9vbDoKICAgIG1heF9hZGp1c3RtZW50X2RlbHRhID0gcGFyZW50X2dhc19saW1pdCAvLyBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IKICAgIGlmIGdhc19saW1pdCA+PSBwYXJlbnRfZ2FzX2xpbWl0ICsgbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKlIWUgZR9lChoBWgGaCBqtzgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqoAUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGptEQAASwFzjAdsaW5lbm9zlIl1aBxqVREAAGgdaB5oH00YA2ggaq02AAB1YmVoDn2UKGgQXZRqKgUAAGFoE12UaBVdlIwPY2hlY2tfZ2FzX2xpbWl0lGFoF12UaBldlHVoHGgzaB1oHmgfTfwCaCBq4BAAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwaY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUaAddlGg/jBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZSFlIGUfZQoaAVoBmggatg4AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NHQNoIGrVOAAAdWJoJCmBlH2UKGgFaAZo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YWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSgKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF90aW1lc3RhbXA6IFUyNTYsCiAgICBwYXJlbnRfZGlmZmljdWx0eTogVWludCwKICAgIHBhcmVudF9oYXNfb21tZXJzOiBib29sLAopIC0+IFVpbnQ6CiAgICBvZmZzZXQgPSAoCiAgICAgICAgaW50KHBhcmVudF9kaWZmaWN1bHR5KQogICAgICAgIC8vIDIwNDgKICAgICAgICAqIG1heCgKICAgICAgICAgICAgKDIgaWYgcGFyZW50X2hhc19vbW1lcnMgZWxzZSAxKQogICAgICAgICAgICAtIGludChibG9ja190aW1lc3RhbXAgLSBwYXJlbnRfdGltZXN0YW1wKSAvLyA5LAogICAgICAgICAgICAtOTksCiAgICAgICAgKQogICAgKQogICAgZGlmZmljdWx0eSA9IGludChwYXJlbnRfZGlmZmljdWx0eSkgKyBvZmZzZXQKICAgICMgSGlzdG9yaWNhbCBOb3RlOiBUaGUgZGlmZmljdWx0eSBib21iIHdhcyBub3QgcHJlc2VudCBpbiBFdGhlcmV1bSBhdCB0aGUKICAgICMgc3RhcnQgb2YgRnJvbnRpZXIsIGJ1dCB3YXMgYWRkZWQgc2hvcnRseSBhZnRlciBsYXVuY2guIEhvd2V2ZXIgc2luY2UgdGhlCiAgICAjIGJvbWIgaGFzIG5vIGVmZmVjdCBwcmlvciB0byBibG9jayAyMDAwMDAgd2UgcHJldGVuZCBpdCBleGlzdGVkIGZyb20KICAgICMgZ2VuZXNpcy4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9nby1ldGhlcmV1bS9wdWxsLzE1ODgKICAgIG51bV9ib21iX3BlcmlvZHMgPSAoKGludChibG9ja19udW1iZXIpIC0gQk9NQl9ERUxBWV9CTE9DS1MpIC8vIDEwMDAwMCkgLSAyCiAgICBpZiBudW1fYm9tYl9wZXJpb2RzID49IDA6CiAgICAgICAgZGlmZmljdWx0eSArPSAyKipudW1fYm9tYl9wZXJpb2RzCgogICAgIyBTb21lIGNsaWVudHMgcmFpc2UgdGhlIGRpZmZpY3VsdHkgdG8gYE1JTklNVU1fRElGRklDVUxUWWAgcHJpb3IgdG8gYWRkaW5nCiAgICAjIHRoZSBib21iLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYXR0ZXIgYmVjYXVzZSB0aGUgZGlmZmljdWx0eSBpcyBhbHdheXMgbXVjaAogICAgIyBncmVhdGVyIHRoYW4gYE1JTklNVU1fRElGRklDVUxUWWAgb24gTWFpbm5ldC4KICAgIHJldHVybiBVaW50KG1heChkaWZmaWN1bHR5LCBNSU5JTVVNX0RJRkZJQ1VMVFkpKQqUaAddlGg/WI0EAABkZWYgY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBibG9ja190aW1lc3RhbXA6IFUyNTYsCiAgICBwYXJlbnRfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X2RpZmZpY3VsdHk6IFVpbnQsCiAgICBwYXJlbnRfaGFzX29tbWVyczogYm9vbCwKKSAtPiBVaW50OgogICAgb2Zmc2V0ID0gKAogICAgICAgIGludChwYXJlbnRfZGlmZmljdWx0eSkKICAgICAgICAvLyAyMDQ4CiAgICAgICAgKiBtYXgoCiAgICAgICAgICAgICgyIGlmIHBhcmVudF9oYXNfb21tZXJzIGVsc2UgMSkKICAgICAgICAgICAgLSBpbnQoYmxvY2tfdGltZXN0YW1wIC0gcGFyZW50X3RpbWVzdGFtcCkgLy8gOSwKICAgICAgICAgICAgLTk5LAogICAgICAgICkKICAgICkKICAgIGRpZmZpY3VsdHkgPSBpbnQocGFyZW50X2RpZmZpY3VsdHkpICsgb2Zmc2V0CiAgICAjIEhpc3RvcmljYWwgTm90ZTogVGhlIGRpZmZpY3VsdHkgYm9tYiB3YXMgbm90IHByZXNlbnQgaW4gRXRoZXJldW0gYXQgdGhlCiAgICAjIHN0YXJ0IG9mIEZyb250aWVyLCBidXQgd2FzIGFkZGVkIHNob3J0bHkgYWZ0ZXIgbGF1bmNoLiBIb3dldmVyIHNpbmNlIHRoZQogICAgIyBib21iIGhhcyBubyBlZmZlY3QgcHJpb3IgdG8gYmxvY2sgMjAwMDAwIHdlIHByZXRlbmQgaXQgZXhpc3RlZCBmcm9tCiAgICAjIGdlbmVzaXMuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vZ28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKChpbnQoYmxvY2tfbnVtYmVyKSAtIEJPTUJfREVMQVlfQkxPQ0tTKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNlIHRoZSBkaWZmaWN1bHR5IHRvIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIHByaW9yIHRvIGFkZGluZwogICAgIyB0aGUgYm9tYi4gVGhpcyBidWcgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgdGhlIGRpZmZpY3VsdHkgaXMgYWx3YXlzIG11Y2gKICAgICMgZ3JlYXRlciB0aGFuIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIG9uIE1haW5uZXQuCiAgICByZXR1cm4gVWludChtYXgoZGlmZmljdWx0eSwgTUlOSU1VTV9ESUZGSUNVTFRZKSkKlIWUgZR9lChoBWgGaCBqrTsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Fycm93X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqoAUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGptEQAASwFzjAdsaW5lbm9zlIl1aBxqVREAAGgdaB5oH01CA2ggatU4AAB1YmVoDn2UKGgQXZRqTAUAAGFoE12UaBVdlIwaY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUYWgXXZRoGV2UdWgcaDNoHWgeaB9NHQNoIGrgEAAAaCFoA3ViZWgOfZQoaBBdlGoxAQAAYWgTXZRoFV2UjA5tb2R1bGUgZGV0YWlsc5RhaBddlGgZXZR1aBxoM2gdaB5oH0tNaCBoNWghaAN1YmVoDn2UKGgQXZSMFmV0aGVyZXVtLXNwZWNpZmljYXRpb26UYWgTXZRoFV2UjBZldGhlcmV1bSBzcGVjaWZpY2F0aW9ulGFoF12UaBldlHVoHGgzaB1oHmgfSwRoIGgDaCFoA3ViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZRoRHVoHGgBjA5jdXJyZW50X3NvdXJjZZRoRIwMY3VycmVudF9saW5llEsAjAhzZXR0aW5nc5SMEWRvY3V0aWxzLmZyb250ZW5klIwGVmFsdWVzlJOUKYGUfZQojAxyZXBvcnRfbGV2ZWyUSwKMCmhhbHRfbGV2ZWyUSwSMEWV4aXRfc3RhdHVzX2xldmVslEsFjAVkZWJ1Z5ROjA53YXJuaW5nX3N0cmVhbZROjAl0cmFjZWJhY2uUTowPb3V0cHV0X2VuY29kaW5nlIwFdXRmLTiUjB1vdXRwdXRfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEXhtbGNoYXJyZWZyZXBsYWNllIwOZXJyb3JfZW5jb2RpbmeUjAV1dGYtOJSMHGVycm9yX2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBBiYWNrc2xhc2hyZXBsYWNllIwTcmVjb3JkX2RlcGVuZGVuY2llc5SMDmRvY3V0aWxzLnV0aWxzlIwORGVwZW5kZW5jeUxpc3SUk5QpgZR9lCiMBGxpc3SUXZSMBGZpbGWUTnVijAZjb25maWeUTowNZHVtcF9zZXR0aW5nc5ROjA5kdW1wX2ludGVybmFsc5ROjA9kdW1wX3RyYW5zZm9ybXOUTowPZHVtcF9wc2V1ZG9feG1slE6MEGV4cG9zZV9pbnRlcm5hbHOUTowOc3RyaWN0X3Zpc2l0b3KUTowPX2Rpc2FibGVfY29uZmlnlE6MB19zb3VyY2WUTowMX2Rlc3RpbmF0aW9ulIw4ZG9jL2RpZmZzL2Fycm93X2dsYWNpZXJfZ3JheV9nbGFjaWVyL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqCQYAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqKDwAAGopPAAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwFYXJyb3eUjAdnbGFjaWVylIwEZ3JheZSMB2dsYWNpZXKUZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=