gASVAAABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIw7bW9kdWxlLWV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnSUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMfC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjDxtb2R1bGU7IGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnSUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMOUV0aGVyZXVtIFZpcnR1YWwgTWFjaGluZSAoRVZNKSBFbnZpcm9ubWVudGFsIEluc3RydWN0aW9uc5RoB12UaACMBFRleHSUk5SMOUV0aGVyZXVtIFZpcnR1YWwgTWFjaGluZSAoRVZNKSBFbnZpcm9ubWVudGFsIEluc3RydWN0aW9uc5SFlIGUfZQoaAVoBmggaDpoIWgDaB2MXC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS8g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aDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAlGdW5jdGlvbnOUaAddlGg/jAlGdW5jdGlvbnOUhZSBlH2UKGgFaAZoIGpaAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSxdoIGpXAwAAaCFoA3ViaCKMEHRhYnVsYXJfY29sX3NwZWOUk5QpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBHNwZWOUjBBcWHsxfXsyfVxYezF9ezJ9lHVoHGpoAwAAaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sAaCBqVwMAAGghaAN1YowWc3BoaW54LmV4dC5hdXRvc3VtbWFyeZSMEWF1dG9zdW1tYXJ5X3RhYmxllJOUKYGUfZQoaAVYtgMAAAoKCgphZGRyZXNzCgpQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGFjY291bnQgdG8gdGhlIHN0YWNrLgoKYmFsYW5jZQoKUHVzaGVzIHRoZSBiYWxhbmNlIG9mIHRoZSBnaXZlbiBhY2NvdW50IG9udG8gdGhlIHN0YWNrLgoKb3JpZ2luCgpQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIG9yaWdpbmFsIHRyYW5zYWN0aW9uIHNlbmRlciB0byB0aGUgc3RhY2suCgpjYWxsZXIKClB1c2hlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY2FsbGVyIG9udG8gdGhlIHN0YWNrLgoKY2FsbHZhbHVlCgpQdXNoIHRoZSB2YWx1ZSAoaW4gd2VpKSBzZW50IHdpdGggdGhlIGNhbGwgb250byB0aGUgc3RhY2suCgpjYWxsZGF0YWxvYWQKClB1c2ggYSB3b3JkICgzMiBieXRlcykgb2YgdGhlIGlucHV0IGRhdGEgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50CgpjYWxsZGF0YXNpemUKClB1c2ggdGhlIHNpemUgb2YgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLgoKY2FsbGRhdGFjb3B5CgpDb3B5IGEgcG9ydGlvbiBvZiB0aGUgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS4KCmNvZGVzaXplCgpQdXNoIHRoZSBzaXplIG9mIGNvZGUgcnVubmluZyBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLgoKY29kZWNvcHkKCkNvcHkgYSBwb3J0aW9uIG9mIHRoZSBjb2RlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgdG8gbWVtb3J5LgoKZ2FzcHJpY2UKClB1c2ggdGhlIGdhcyBwcmljZSB1c2VkIGluIGN1cnJlbnQgZW52aXJvbm1lbnQgb250byB0aGUgc3RhY2suCgpleHRjb2Rlc2l6ZQoKUHVzaCB0aGUgY29kZSBzaXplIG9mIGEgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay4KCmV4dGNvZGVjb3B5CgpDb3B5IGEgcG9ydGlvbiBvZiBhbiBhY2NvdW50J3MgY29kZSB0byBtZW1vcnkulGgHXZRoAIwFdGFibGWUk5QpgZR9lChoBWgGaAddlGgAjAZ0Z3JvdXCUk5QpgZR9lChoBWgGaAddlChoAIwHY29sc3BlY5STlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIY29sd2lkdGiUSwp1aBxqhwMAAGgdaERoH0sAaCBqhAMAAGghaAN1YmqIAwAAKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhjb2x3aWR0aJRLWnVoHGqHAwAAaB1oRGgfSwBoIGqEAwAAaCFoA3ViaACMBXRib2R5lJOUKYGUfZQoaAVoBmgHXZQoaACMA3Jvd5STlCmBlH2UKGgFaAZoB12UKGgAjAVlbnRyeZSTlCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxNOm9iajpgYWRkcmVzcyA8ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5hZGRyZXNzPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRoAIwHbGl0ZXJhbJSTlCmBlH2UKGgFaq4DAABoB12UaD+MB2FkZHJlc3OUhZSBlH2UKGgFaAZoIGq1AwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlCiMBHhyZWaUjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGqwAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmFkZHJlc3OUjAhyZWZ0aXRsZZSMPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuYWRkcmVzc5R1aBxobWgdTmgfTmggaqwDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGqpAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqnAwAAaB1OaB9OaCBqpAMAAHViaqgDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQVB1c2hlcyB0aGUgYWRkcmVzcyBvZiB0aGUgY3VycmVudCBleGVjdXRpbmcgYWNjb3VudCB0byB0aGUgc3RhY2sulGgHXZRoP4xBUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBhY2NvdW50IHRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGrgAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq3QMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggaqQDAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjE06b2JqOmBiYWxhbmNlIDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmJhbGFuY2U+YJRoB12UaG4pgZR9lChoBWgGaAddlGq0AwAAKYGUfZQoaAVqAwQAAGgHXZRoP4wHYmFsYW5jZZSFlIGUfZQoaAVoBmggaggEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGoFBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmJhbGFuY2WUjAhyZWZ0aXRsZZSMPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuYmFsYW5jZZR1aBxobWgdTmgfTmggagEEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGr+AwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqnAwAAaB1OaB9OaCBq+wMAAHViaqgDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMN1B1c2hlcyB0aGUgYmFsYW5jZSBvZiB0aGUgZ2l2ZW4gYWNjb3VudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDdQdXNoZXMgdGhlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGFjY291bnQgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqMgQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjI0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQzOjxhdXRvc3VtbWFyeT6UaB9LAWggai8EAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGr7AwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqiAwAAaB1oRGgfSwBoIGqfAwAAaCFoA3ViaqMDAAApgZR9lChoBWgGaAddlChqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxLOm9iajpgb3JpZ2luIDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50Lm9yaWdpbj5glGgHXZRobimBlH2UKGgFaAZoB12UarQDAAApgZR9lChoBWpVBAAAaAddlGg/jAZvcmlnaW6UhZSBlH2UKGgFaAZoIGpaBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqvwMAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGqzAwAAaB1OaB9OaCBqVwQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw7ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5vcmlnaW6UjAhyZWZ0aXRsZZSMO2V0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQub3JpZ2lulHVoHGhtaB1OaB9OaCBqUwQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjI0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQzOjxhdXRvc3VtbWFyeT6UaB9LAWggalAEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGpNBAAAdWJqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxDUHVzaGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFuc2FjdGlvbiBzZW5kZXIgdG8gdGhlIHN0YWNrLpRoB12UaD+MQ1B1c2hlcyB0aGUgYWRkcmVzcyBvZiB0aGUgb3JpZ2luYWwgdHJhbnNhY3Rpb24gc2VuZGVyIHRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGqEBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqgQQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggak0EAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEs6b2JqOmBjYWxsZXIgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGVyPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqtAMAACmBlH2UKGgFaqcEAABoB12UaD+MBmNhbGxlcpSFlIGUfZQoaAVoBmggaqwEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGqpBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDtldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxlcpSMCHJlZnRpdGxllIw7ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZXKUdWgcaG1oHU5oH05oIGqlBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqogQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggap8EAAB1YmqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDBQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhbGxlciBvbnRvIHRoZSBzdGFjay6UaAddlGg/jDBQdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNhbGxlciBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGrWBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq0wQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggap8EAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFE6b2JqOmBjYWxsdmFsdWUgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbHZhbHVlPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqtAMAACmBlH2UKGgFavkEAABoB12UaD+MCWNhbGx2YWx1ZZSFlIGUfZQoaAVoBmggav4EAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGr7BAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjD5ldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGx2YWx1ZZSMCHJlZnRpdGxllIw+ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsdmFsdWWUdWgcaG1oHU5oH05oIGr3BAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq9AQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggavEEAAB1YmqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDpQdXNoIHRoZSB2YWx1ZSAoaW4gd2VpKSBzZW50IHdpdGggdGhlIGNhbGwgb250byB0aGUgc3RhY2sulGgHXZRoP4w6UHVzaCB0aGUgdmFsdWUgKGluIHdlaSkgc2VudCB3aXRoIHRoZSBjYWxsIG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggaigFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGolBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqnAwAAaB1OaB9OaCBq8QQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqogMAAGgdaERoH0sAaCBqnwMAAGghaAN1YmqjAwAAKYGUfZQoaAVoBmgHXZQoaqgDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMVzpvYmo6YGNhbGxkYXRhbG9hZCA8ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZGF0YWxvYWQ+YJRoB12UaG4pgZR9lChoBWgGaAddlGq0AwAAKYGUfZQoaAVqSwUAAGgHXZRoP4wMY2FsbGRhdGFsb2FklIWUgZR9lChoBWgGaCBqUAUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoar8DAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqswMAAGgdTmgfTmggak0FAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMQWV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGRhdGFsb2FklIwIcmVmdGl0bGWUjEFldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhbG9hZJR1aBxobWgdTmgfTmggakkFAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGpGBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqnAwAAaB1OaB9OaCBqQwUAAHViaqgDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQVB1c2ggYSB3b3JkICgzMiBieXRlcykgb2YgdGhlIGlucHV0IGRhdGEgYmVsb25naW5nIHRvIHRoZSBjdXJyZW50lGgHXZRoP4xBUHVzaCBhIHdvcmQgKDMyIGJ5dGVzKSBvZiB0aGUgaW5wdXQgZGF0YSBiZWxvbmdpbmcgdG8gdGhlIGN1cnJlbnSUhZSBlH2UKGgFaAZoIGp6BQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqdwUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggakMFAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFc6b2JqOmBjYWxsZGF0YXNpemUgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGRhdGFzaXplPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqtAMAACmBlH2UKGgFap0FAABoB12UaD+MDGNhbGxkYXRhc2l6ZZSFlIGUfZQoaAVoBmggaqIFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGqfBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjEFldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhc2l6ZZSMCHJlZnRpdGxllIxBZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZGF0YXNpemWUdWgcaG1oHU5oH05oIGqbBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqmAUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggapUFAAB1YmqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEJQdXNoIHRoZSBzaXplIG9mIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jEJQdXNoIHRoZSBzaXplIG9mIGlucHV0IGRhdGEgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UhZSBlH2UKGgFaAZoIGrMBQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqyQUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggapUFAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFc6b2JqOmBjYWxsZGF0YWNvcHkgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuY2FsbGRhdGFjb3B5PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqtAMAACmBlH2UKGgFau8FAABoB12UaD+MDGNhbGxkYXRhY29weZSFlIGUfZQoaAVoBmggavQFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGrxBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjEFldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNhbGxkYXRhY29weZSMCHJlZnRpdGxllIxBZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jYWxsZGF0YWNvcHmUdWgcaG1oHU5oH05oIGrtBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq6gUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggaucFAAB1YmqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEJDb3B5IGEgcG9ydGlvbiBvZiB0aGUgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS6UaAddlGg/jEJDb3B5IGEgcG9ydGlvbiBvZiB0aGUgaW5wdXQgZGF0YSBpbiBjdXJyZW50IGVudmlyb25tZW50IHRvIG1lbW9yeS6UhZSBlH2UKGgFaAZoIGoeBgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqGwYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggaucFAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqIDAABoHWhEaB9LAGggap8DAABoIWgDdWJqowMAACmBlH2UKGgFaAZoB12UKGqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjE86b2JqOmBjb2Rlc2l6ZSA8ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5jb2Rlc2l6ZT5glGgHXZRobimBlH2UKGgFaAZoB12UarQDAAApgZR9lChoBWpBBgAAaAddlGg/jAhjb2Rlc2l6ZZSFlIGUfZQoaAVoBmggakYGAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGq/AwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGpDBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjD1ldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNvZGVzaXpllIwIcmVmdGl0bGWUjD1ldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmNvZGVzaXpllHVoHGhtaB1OaB9OaCBqPwYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjI0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQzOjxhdXRvc3VtbWFyeT6UaB9LAWggajwGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGo5BgAAdWJqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxEUHVzaCB0aGUgc2l6ZSBvZiBjb2RlIHJ1bm5pbmcgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jERQdXNoIHRoZSBzaXplIG9mIGNvZGUgcnVubmluZyBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmgganAGAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2lu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aW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50Lmdhc3ByaWNllHVoHGhtaB1OaB9OaCBq4wYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjI0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQzOjxhdXRvc3VtbWFyeT6UaB9LAWggauAGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGrdBgAAdWJqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw+UHVzaCB0aGUgZ2FzIHByaWNlIHVzZWQgaW4gY3VycmVudCBlbnZpcm9ubWVudCBvbnRvIHRoZSBzdGFjay6UaAddlGg/jD5QdXNoIHRoZSBnYXMgcHJpY2UgdXNlZCBpbiBjdXJyZW50IGVudmlyb25tZW50IG9udG8gdGhlIHN0YWNrLpSFlIGUfZQoaAVoBmggahQHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGoRBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqnAwAAaB1OaB9OaCBq3QYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqogMAAGgdaERoH0sAaCBqnwMAAGghaAN1YmqjAwAAKYGUfZQoaAVoBmgHXZQoaqgDAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMVTpvYmo6YGV4dGNvZGVzaXplIDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LmV4dGNvZGVzaXplPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqtAMAACmBlH2UKGgFajcHAABoB12UaD+MC2V4dGNvZGVzaXpllIWUgZR9lChoBWgGaCBqPAcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoar8DAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqswMAAGgdTmgfTmggajkHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMQGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZXh0Y29kZXNpemWUjAhyZWZ0aXRsZZSMQGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZXh0Y29kZXNpemWUdWgcaG1oHU5oH05oIGo1BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MjS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC9pbmRleC5yc3Q6NDM6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqMgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqpwMAAGgdTmgfTmggai8HAAB1YmqoAwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDVQdXNoIHRoZSBjb2RlIHNpemUgb2YgYSBnaXZlbiBhY2NvdW50IG9udG8gdGhlIHN0YWNrLpRoB12UaD+MNVB1c2ggdGhlIGNvZGUgc2l6ZSBvZiBhIGdpdmVuIGFjY291bnQgb250byB0aGUgc3RhY2sulIWUgZR9lChoBWgGaCBqZgcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjI0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQzOjxhdXRvc3VtbWFyeT6UaB9LAWggamMHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGovBwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqiAwAAaB1oRGgfSwBoIGqfAwAAaCFoA3ViaqMDAAApgZR9lChoBWgGaAddlChqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxVOm9iajpgZXh0Y29kZWNvcHkgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi52bS5pbnN0cnVjdGlvbnMuZW52aXJvbm1lbnQuZXh0Y29kZWNvcHk+YJRoB12UaG4pgZR9lChoBWgGaAddlGq0AwAAKYGUfZQoaAVqiQcAAGgHXZRoP4wLZXh0Y29kZWNvcHmUhZSBlH2UKGgFaAZoIGqOBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqvwMAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGqzAwAAaB1OaB9OaCBqiwcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIxAZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2RlY29weZSMCHJlZnRpdGxllIxAZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnZtLmluc3RydWN0aW9ucy5lbnZpcm9ubWVudC5leHRjb2RlY29weZR1aBxobWgdTmgfTmggaocHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYyNL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdDo0Mzo8YXV0b3N1bW1hcnk+lGgfSwFoIGqEBwAA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eZSFlIGUfZQoaAVoBmggajMIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrpBwAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcarMDAABoHU5oH05oIGowCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjD1ldGhlcmV1bS5ieXphbnRpdW0udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LnJldHVybmRhdGFjb3B5lIwIcmVmdGl0bGWUjD1ldGhlcmV1bS5ieXphbnRpdW0udm0uaW5zdHJ1Y3Rpb25zLmVudmlyb25tZW50LnJldHVybmRhdGFjb3B5lHVoHGhtaB1OaB9OaCBqLAgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIcvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2J5emFudGl1bS92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ1OjxhdXRvc3VtbWFyeT6UaB9LAWggaikIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaqcDAABoHU5oH05oIGomCAAAdWJqqAMAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw2Q29waWVzIGRhdGEgZnJvbSB0aGUgcmV0dXJuIGRhdGEgYnVmZmVyIGNvZGUgdG8gbWVtb3J5lGgHXZRoP4w2Q29waWVzIGRhdGEgZnJvbSB0aGUgcmV0dXJuIGRhdGEgYnVmZmVyIGNvZGUgdG8gbWVtb3J5lIWUgZR9lChoBWgGaCBqXQgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjIcvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2J5emFudGl1bS92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucnN0OjQ1OjxhdXRvc3VtbWFyeT6UaB9LAWgg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aB9OaCBqKwkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqKQkAAGgdaB5oH05oIGrRCAAAdWJlaA59lChoEF2UaBNdlChqHwkAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGofCQAAjAdvYmp0eXBllGqXCQAAjAhkZXNjdHlwZZRqlwkAAIwHbm9pbmRleJSJdWgcas8IAABoHU5oH05oIGqzCAAAdWJoAIwNbGl0ZXJhbF9ibG9ja5STlCmBlH2UKGgFjNlkZWYgYWRkcmVzcyhldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIHBhc3MKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19CQVNFKQoKICAgICMgT1BFUkFUSU9OCiAgICBwdXNoKGV2bS5zdGFjaywgVTI1Ni5mcm9tX2JlX2J5dGVzKGV2bS5tZXNzYWdlLmN1cnJlbnRfdGFyZ2V0KSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlGgHXZRoP4zZZGVmIGFkZHJlc3MoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBwYXNzCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfQkFTRSkKCiAgICAjIE9QRVJBVElPTgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYuZnJvbV9iZV9ieXRlcyhldm0ubWVzc2FnZS5jdXJyZW50X3RhcmdldCkpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpSFlIGUfZQoaAVoBmggaqEJAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjG0vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50LnB5lIwJeG1sOnNwYWNllGo+AwAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdz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ZGVmIGNhbGxkYXRhbG9hZChldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIHN0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19WRVJZX0xPVykKCiAgICAjIE9QRVJBVElPTgogICAgdmFsdWUgPSBidWZmZXJfcmVhZChldm0ubWVzc2FnZS5kYXRhLCBzdGFydF9pbmRleCwgVTI1NigzMikpCgogICAgcHVzaChldm0uc3RhY2ssIFUyNTYuZnJvbV9iZV9ieXRlcyh2YWx1ZSkpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD9YJwEAAGRlZiBjYWxsZGF0YWxvYWQoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBzdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfVkVSWV9MT1cpCgogICAgIyBPUEVSQVRJT04KICAgIHZhbHVlID0gYnVmZmVyX3JlYWQoZXZtLm1lc3NhZ2UuZGF0YSwgc3RhcnRfaW5kZXgsIFUyNTYoMzIpKQoKICAgIHB1c2goZXZtLnN0YWNrLCBVMjU2LmZyb21fYmVfYnl0ZXModmFsdWUpKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUhZSBlH2UKGgFaAZoIGoqDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxtL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC5weZSMCXhtbDpzcGFjZZRqPgMAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGq3CQAASwFzjAdsaW5lbm9zlIl1aBxqnwkAAGgdaB5oH0uZaCBqYA0AAHViZWgOfZQoaBBd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ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIHZhbHVlID0gYnVmZmVyX3JlYWQoZXZtLm1lc3NhZ2UuZGF0YSwgZGF0YV9zdGFydF9pbmRleCwgc2l6ZSkKICAgIG1lbW9yeV93cml0ZShldm0ubWVtb3J5LCBtZW1vcnlfc3RhcnRfaW5kZXgsIHZhbHVlKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlGg/WIICAABkZWYgY2FsbGRhdGFjb3B5KGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgbWVtb3J5X3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIGRhdGFfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgc2l6ZSA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIHdvcmRzID0gY2VpbDMyKFVpbnQoc2l6ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIHZhbHVl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AIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGpnEQAAjAdvYmp0eXBllGreEQAAjAhkZXNjdHlwZZRq3hEAAIwHbm9pbmRleJSJdWgcas8IAABoHU5oH05oIGoOEQAAdWJqoAkAACmBlH2UKGgFWHYCAABkZWYgY29kZWNvcHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBtZW1vcnlfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgY29kZV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBzaXplID0gcG9wKGV2bS5zdGFjaykKCiAgICAjIEdBUwogICAgd29yZHMgPSBjZWlsMzIoVWludChzaXplKSkgLy8gMzIKICAgIGNvcHlfZ2FzX2Nvc3QgPSBHQVNfQ09QWSAqIHdvcmRzCiAgICBleHRlbmRfbWVtb3J5ID0gY2FsY3VsYXRlX2dhc19leHRlbmRfbWVtb3J5KAogICAgICAgIGV2bS5tZW1vcnksIFsobWVtb3J5X3N0YXJ0X2luZGV4LCBzaXplKV0KICAgICkKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfVkVSWV9MT1cgKyBjb3B5X2dhc19jb3N0ICsgZXh0ZW5kX21lbW9yeS5jb3N0KQoKICAgICMgT1BFUkFUSU9OCiAgICBldm0ubWVtb3J5ICs9IGIiXHgwMCIgKiBleHRlbmRfbWVtb3J5LmV4cGFuZF9ieQogICAgdmFsdWUgPSBidWZmZXJfcmVhZChldm0uY29kZSwgY29kZV9zdGFydF9pbmRleCwgc2l6ZSkKICAgIG1lbW9yeV93cml0ZShldm0ubWVtb3J5LCBtZW1vcnlfc3RhcnRfaW5kZXgsIHZhbHVlKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlGg/WHYCAABkZWYgY29kZWNvcHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBtZW1vcnlfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgY29kZV9zdGFydF9pbmRleCA9IHBvcChldm0uc3RhY2spCiAgICBzaXplID0gcG9wKGV2bS5zdGFjaykKCiAgICAjIEdBUwogICAgd29yZHMgPSBjZWlsMzIoVWludChzaXplKSkgLy8gMzIKICAgIGNvcHlfZ2FzX2Nvc3QgPSBHQVNfQ09QWSAqIHdvcmRzCiAgICBleHRlbmRfbWVtb3J5ID0gY2FsY3VsYXRlX2dhc19leHRlbmRfbWVtb3J5KAogICAgICAgIGV2bS5tZW1vcnksIFsobWVtb3J5X3N0YXJ0X2luZGV4LCBzaXplKV0KICAgICkKICAgIGNoYXJnZV9nYXMoZXZtLCBHQVNfVkVSWV9MT1cgKyBjb3B5X2dhc19jb3N0ICsgZXh0ZW5kX21lbW9yeS5jb3N0KQoKICAgICMgT1BFUkFUSU9OCiAgICBldm0ubWVtb3J5ICs9IGIiXHgwMCIgKiBleHRlbmRfbWVtb3J5LmV4cGFuZF9ieQogICAgdmFsdWUgPSBidWZmZXJfcmVhZChldm0uY29kZSwgY29kZV9zdGFydF9pbmRleCwgc2l6ZSkKICAgIG1lbW9yeV93cml0ZShldm0ubWVtb3J5LCBtZW1vcnlfc3RhcnRfaW5kZXgsIHZhbHVlKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUhZSBlH2UKGgFaAZoIGrmEQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxtL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3ZtL2luc3RydWN0aW9ucy9lbnZpcm9ubWVudC5weZSMCXhtbDpzcGFjZZRqPgMAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGq3CQAASwFzjAdsaW5lbm9zlIl1aBxqnwkAAGgdaB5oH0vnaCBqDhEAAHViZWgOfZQoaBBdlGo+AgAAYWgTXZRoFV2UjAhjb2RlY29weZRhaBddlGgZXZR1aBxoM2gdaB5oH0vXaCBqoggAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwIZ2FzcHJpY2WUaAddlGg/jAhn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aBxqKQkAAGgdaB5oH05oIGoIEwAAdWJlaA59lChoEF2UaBNdlChqRRMAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGpFEwAAjAdvYmp0eXBllGquEwAAjAhkZXNjdHlwZZRqrhMAAIwHbm9pbmRleJSJdWgcas8IAABoHU5oH05oIGrsEgAAdWJqoAkAACmBlH2UKGgFWGsBAABkZWYgZXh0Y29kZXNpemUoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19FWFRFUk5BTCkKCiAgICAjIE9QRVJBVElPTgogICAgIyBOb24tZXhpc3RlbnQgYWNjb3VudHMgZGVmYXVsdCB0byBFTVBUWV9BQ0NPVU5ULCB3aGljaCBoYXMgZW1wdHkgY29kZS4KICAgIGNvZGVzaXplID0gVTI1NihsZW4oZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuY29kZSkpCgogICAgcHVzaChldm0uc3RhY2ssIGNvZGVzaXplKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0gMQqUaAddlGg/WGsBAABkZWYgZXh0Y29kZXNpemUoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBhZGRyZXNzID0gdG9fYWRkcmVzcyhwb3AoZXZtLnN0YWNrKSkKCiAgICAjIEdBUwogICAgY2hhcmdlX2dhcyhldm0sIEdBU19FWFRFUk5BTCkKCiAgICAjIE9QRVJBVElPTgogICAgIyBOb24tZXhpc3RlbnQgYWNjb3VudHMgZGVmYXVsdCB0byBFTVBUWV9BQ0NPVU5ULCB3aGljaCBoYXMgZW1wdHkgY29kZS4KICAgIGNvZGVzaXplID0gVTI1NihsZW4oZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuY29kZSkpCgogICAgcHVzaChldm0uc3RhY2ssIGNvZGVzaXplKQoKICAgICMgUFJPR1JBTSBDT1VOVEVSCiAgICBldm0ucGMgKz0g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cnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19FWFRFUk5BTCArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICBjb2RlID0gZ2V0X2FjY291bnQoZXZtLmVudi5zdGF0ZSwgYWRkcmVzcykuY29kZQogICAgdmFsdWUgPSBidWZmZXJfcmVhZChjb2RlLCBjb2RlX3N0YXJ0X2luZGV4LCBzaXplKQogICAgbWVtb3J5X3dyaXRlKGV2bS5tZW1vcnksIG1lbW9yeV9zdGFydF9pbmRleCwgdmFsdWUpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpRoB12UaD9Y0gIAAGRlZiBleHRjb2RlY29weShldm06IEV2bSkgLT4gTm9uZToKICAgICMgU1RBQ0sKICAgIGFkZHJlc3MgPSB0b19hZGRyZXNzKHBvcChldm0uc3RhY2spKQogICAgbWVtb3J5X3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIGNvZGVfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgc2l6ZSA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIHdvcmRzID0gY2VpbDMyKFVpbnQoc2l6ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX0VYVEVSTkFMICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIGNvZGUgPSBnZXRfYWNjb3VudChldm0uZW52LnN0YXRlLCBhZGRyZXNzKS5jb2RlCiAgICB2YWx1ZSA9IGJ1ZmZlcl9yZWFkKGNvZGUsIGNvZGVfc3RhcnRfaW5kZXgsIHNpemUpCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlIWUgZR9lChoBWgGaCBqnhQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMbS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQucHmUjAl4bWw6c3BhY2WUaj4DAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqtwkAAEsBc4wHbGluZW5vc5SJdWgcap8JAABoHWgeaB9NHQFoIGrUEwAAdWJlaA59lChoEF2UaqQCAABhaBNdlGgVXZSMC2V4dGNvZGVjb3B5lGFoF12UaBldlHVoHGgzaB1oHmgfTRABaCBqoggAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwOcmV0dXJuZGF0YXNpemWUaAddlGg/jA5yZXR1cm5kYXRhc2l6ZZSFlIGUfZQoaAVoBmggar8UAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHYx2L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9ieXphbnRpdW0vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50L2luZGV4LnJzdJRoH00kAWggarwUAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05o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aCBqDBYAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqKQkAAGgdas0UAABoH05oIGrIFQAAdWJlaA59lChoEF2UaBNdlChqBRYAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGoFFgAAjAdvYmp0eXBllGpuFgAAjAhkZXNjdHlwZZRqbhYAAIwHbm9pbmRleJSJdWgcas8IAABoHU5oH05oIGqsFQAAdWJqoAkAACmBlH2UKGgFWD0DAABkZWYgcmV0dXJuZGF0YWNvcHkoZXZtOiBFdm0pIC0+IE5vbmU6CiAgICAjIFNUQUNLCiAgICBtZW1vcnlfc3RhcnRfaW5kZXggPSBwb3AoZXZtLnN0YWNrKQogICAgcmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24gPSBwb3AoZXZtLnN0YWNrKQogICAgc2l6ZSA9IHBvcChldm0uc3RhY2spCgogICAgIyBHQVMKICAgIHdvcmRzID0gY2VpbDMyKFVpbnQoc2l6ZSkpIC8vIDMyCiAgICBjb3B5X2dhc19jb3N0ID0gR0FTX1JFVFVSTl9EQVRBX0NPUFkgKiB3b3JkcwogICAgZXh0ZW5kX21lbW9yeSA9IGNhbGN1bGF0ZV9nYXNfZXh0ZW5kX21lbW9yeSgKICAgICAgICBldm0ubWVtb3J5LCBbKG1lbW9yeV9zdGFydF9pbmRleCwgc2l6ZSldCiAgICApCiAgICBjaGFyZ2VfZ2FzKGV2bSwgR0FTX1ZFUllfTE9XICsgY29weV9nYXNfY29zdCArIGV4dGVuZF9tZW1vcnkuY29zdCkKCiAgICAjIE9QRVJBVElPTgogICAgZW5zdXJlKAogICAgICAgIFVpbnQocmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24pICsgVWludChzaXplKSA8PSBsZW4oZXZtLnJldHVybl9kYXRhKSwKICAgICAgICBPdXRPZkJvdW5kc1JlYWQsCiAgICApCgogICAgZXZtLm1lbW9yeSArPSBiIlx4MDAiICogZXh0ZW5kX21lbW9yeS5leHBhbmRfYnkKICAgIHZhbHVlID0gZXZtLnJldHVybl9kYXRhWwogICAgICAgIHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uIDogcmV0dXJuX2RhdGFfc3RhcnRfcG9zaXRpb24gKyBzaXplCiAgICBdCiAgICBtZW1vcnlfd3JpdGUoZXZtLm1lbW9yeSwgbWVtb3J5X3N0YXJ0X2luZGV4LCB2YWx1ZSkKCiAgICAjIFBST0dSQU0gQ09VTlRFUgogICAgZXZtLnBjICs9IDEKlGgHXZRoP1g9AwAAZGVmIHJldHVybmRhdGFjb3B5KGV2bTogRXZtKSAtPiBOb25lOgogICAgIyBTVEFDSwogICAgbWVtb3J5X3N0YXJ0X2luZGV4ID0gcG9wKGV2bS5zdGFjaykKICAgIHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uID0gcG9wKGV2bS5zdGFjaykKICAgIHNpemUgPSBwb3AoZXZtLnN0YWNrKQoKICAgICMgR0FTCiAgICB3b3JkcyA9IGNlaWwzMihVaW50KHNpemUpKSAvLyAzMgogICAgY29weV9nYXNfY29zdCA9IEdBU19SRVRVUk5fREFUQV9DT1BZICogd29yZHMKICAgIGV4dGVuZF9tZW1vcnkgPSBjYWxjdWxhdGVfZ2FzX2V4dGVuZF9tZW1vcnkoCiAgICAgICAgZXZtLm1lbW9yeSwgWyhtZW1vcnlfc3RhcnRfaW5kZXgsIHNpemUpXQogICAgKQogICAgY2hhcmdlX2dhcyhldm0sIEdBU19WRVJZX0xPVyArIGNvcHlfZ2FzX2Nvc3QgKyBleHRlbmRfbWVtb3J5LmNvc3QpCgogICAgIyBPUEVSQVRJT04KICAgIGVuc3VyZSgKICAgICAgICBVaW50KHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uKSArIFVpbnQoc2l6ZSkgPD0gbGVuKGV2bS5yZXR1cm5fZGF0YSksCiAgICAgICAgT3V0T2ZCb3VuZHNSZWFkLAogICAgKQoKICAgIGV2bS5tZW1vcnkgKz0gYiJceDAwIiAqIGV4dGVuZF9tZW1vcnkuZXhwYW5kX2J5CiAgICB2YWx1ZSA9IGV2bS5yZXR1cm5fZGF0YVsKICAgICAgICByZXR1cm5fZGF0YV9zdGFydF9wb3NpdGlvbiA6IHJldHVybl9kYXRhX3N0YXJ0X3Bvc2l0aW9uICsgc2l6ZQogICAgXQogICAgbWVtb3J5X3dyaXRlKGV2bS5tZW1vcnksIG1lbW9yeV9zdGFydF9pbmRleCwgdmFsdWUpCgogICAgIyBQUk9HUkFNIENPVU5URVIKICAgIGV2bS5wYyArPSAxCpSFlIGUfZQoaAVoBmgganYWAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjGcvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ieXphbnRpdW0vdm0vaW5zdHJ1Y3Rpb25zL2Vudmlyb25tZW50LnB5lIwJeG1sOnNwYWNllGo+AwAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UaqIVAABLAXOMB2xpbmVub3OUiXVoHGqfCQAAaB1qzRQAAGgfTUMBaCBqrBUAAHViZWgOfZQoaBBdlGrpAgAAYWgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlIwOcmV0dXJuZGF0YWNvcHmUYWgXXZRoGV2UdWgcaDNoHWrNFAAAaB9NNgFoIGqiCAAAaCFoA3ViZWgOfZQoaBBdlGjtYWgTXZRoFV2UjA5tb2R1bGUgZGV0YWlsc5RhaBddlGgZXZR1aBxoM2gdaB5oH0staCBoNWghaAN1YmVoDn2UKGgQXZSMN2V0aGVyZXVtLXZpcnR1YWwtbWFjaGluZS1ldm0tZW52aXJvbm1lbnRhbC1pbnN0cnVjdGlvbnOUYWgTXZRoFV2UjDlldGhlcmV1bSB2aXJ0dWFsIG1hY2hpbmUgKGV2bSkgZW52aXJvbm1lbnRhbCBpbnN0cnVjdGlvbnOUYWgXXZRoGV2UdWgcaDNoHWgeaB9LBGggaANoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhEdWgcaAGMDmN1cnJlbnRfc291cmNllGhEjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjE5kb2MvZGlmZnMvc3B1cmlvdXNfZHJhZ29uX2J5emFudGl1bS92bS9pbnN0cnVjdGlvbnMvZW52aXJvbm1lbnQvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqpwMAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5Rq8hYAAGrzFgAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwIc3B1cmlvdXOUjAZkcmFnb26UjAlieXphbnRpdW2UZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=