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AAAAYboDAABBIHdyYXBwZXIgYXJvdW5kIGEgc291cmNlIGRpcmVjdG9yeSB0byBiZSBidWlsdCB3aXRoIGEgUEVQIDUxNyBiYWNrZW5kLgoKICAgIDpwYXJhbSBzb3VyY2VfZGlyOiBUaGUgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeSwgY29udGFpbmluZwogICAgICAgIHB5cHJvamVjdC50b21sLgogICAgOnBhcmFtIGJ1aWxkX2JhY2tlbmQ6IFRoZSBidWlsZCBiYWNrZW5kIHNwZWMsIGFzIHBlciBQRVAgNTE3LCBmcm9tCiAgICAgICAgcHlwcm9qZWN0LnRvbWwuCiAgICA6cGFyYW0gYmFja2VuZF9wYXRoOiBUaGUgYmFja2VuZCBwYXRoLCBhcyBwZXIgUEVQIDUxNywgZnJvbSBweXByb2plY3QudG9tbC4KICAgIDpwYXJhbSBydW5uZXI6IEEgY2FsbGFibGUgdGhhdCBpbnZva2VzIHRoZSB3cmFwcGVyIHN1YnByb2Nlc3MuCiAgICA6cGFyYW0gcHl0aG9uX2V4ZWN1dGFibGU6IFRoZSBQeXRob24gZXhlY3V0YWJsZSB1c2VkIHRvIGludm9rZSB0aGUgYmFja2VuZAoKICAgIFRoZSAncnVubmVyJywgaWYgcHJvdmlkZWQsIG11c3QgZXhwZWN0IHRoZSBmb2xsb3dpbmc6CgogICAgLSBjbWQ6IGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvCiAgICAgIGV4ZWN1dGUsIGFzIHdvdWxkIGJlIHBhc3NlZCB0byBlLmcuICdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnLgogICAgLSBjd2Q6IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdGhhdCBtdXN0IGJlCiAgICAgIHVzZWQgZm9yIHRoZSBzdWJwcm9jZXNzLiBDb3JyZXNwb25kcyB0byB0aGUgcHJvdmlkZWQgc291cmNlX2Rpci4KICAgIC0gZXh0cmFfZW52aXJvbjogYSBkaWN0IG1hcHBpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgdG8gdmFsdWVzCiAgICAgIHdoaWNoIG11c3QgYmUgc2V0IGZvciB0aGUgc3VicHJvY2VzcyBleGVjdXRpb24uCiAgICBOYwYAAAAAAAAAAAAAAAYAAAADAAAAAwAAAHNSAAAAfARkAGsIcgx0AH0EdAF8AYMBiABfAnwCiABfA3wDcjKHAGYBZAFkAoQIfANEAIMBfQN8A4gAXwR8BIgAXwV8BXNIdAZqB30FfAWIAF8IZABTACkDTmMBAAAAAAAAAAAAAAACAAAABQAAABMAAABzGAAAAGcAfABdEH0BdACIAGoBfAGDApECcQRTAHIcAAAAKQJySgAAANoKc291cmNlX2RpcikC2gIuMNoBcKkBciUAAAByHAAAAHIdAAAA2go8bGlzdGNvbXA+iQAAAHMEAAAABgECAHotUGVwNTE3SG9va0NhbGxlci5fX2luaXRfXy48bG9jYWxzPi48bGlzdGNvbXA+KQlyDgAAAHIDAAAAcksAAADaDWJ1aWxkX2JhY2tlbmRyLgAAANoSX3N1YnByb2Nlc3NfcnVubmVy2gNzeXPaCmV4ZWN1dGFibGXaEXB5dGhvbl9leGVjdXRhYmxlKQZyJQAAAHJLAAAAclAAAAByLgAAANoGcnVubmVyclQAAAByHAAAAHJOAAAAch0AAAByJgAAAHsAAABzGgAAAAAICAEEAgoBBgEEAQoBAv8GAwYBBgEEAQYBehlQZXA1MTdIb29rQ2FsbGVyLl9faW5pdF9fYwIAAAAAAAAAAAAAAAMAAAAIAAAAYwAAAHMkAAAAfABqAH0CfAF8AF8AegpkAVYAAQBXADUAfAJ8AF8AWABkAVMAKQJ6XEEgY29udGV4dCBtYW5hZ2VyIGZvciB0ZW1wb3JhcmlseSBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IHN1YnByb2Nlc3MKICAgICAgICBydW5uZXIuCiAgICAgICAgTikBclEAAAApA3IlAAAAclUAAADaBHByZXZyHAAAAHIcAAAAch0AAADaEXN1YnByb2Nlc3NfcnVubmVykgAAAHMKAAAAAAUGAQYBAgEKAnoiUGVwNTE3SG9va0NhbGxlci5zdWJwcm9jZXNzX3J1bm5lcmMBAAAAAAAAAAAAAAABAAAABAAAAEMAAABzDAAAAHwAoABkAWkAoQJTACkCej5SZXR1cm4gdGhlIGxpc3Qgb2Ygb3B0aW9uYWwgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBiYWNrZW5kLtoTX3N1cHBvcnRlZF9mZWF0dXJlc6kB2gpfY2FsbF9ob29rck4AAAByHAAAAHIcAAAAch0AAAByWAAAAJ4AAABzAgAAAAACeiRQZXA1MTdIb29rQ2FsbGVyLl9zdXBwb3J0ZWRfZmVhdHVyZXNjAgAAAAAAAAAAAAAAAgAAAAUAAABDAAAAcxAAAAB8AKAAZAFkAnwBaQGhAlMAKQNhSQEAAElkZW50aWZ5IHBhY2thZ2VzIHJlcXVpcmVkIGZvciBidWlsZGluZyBhIHdoZWVsCgogICAgICAgIFJldHVybnMgYSBsaXN0IG9mIGRlcGVuZGVuY3kgc3BlY2lmaWNhdGlvbnMsIGUuZy46OgoKICAgICAgICAgICAgWyJ3aGVlbCA+PSAwLjI1IiwgInNldHVwdG9vbHMiXQoKICAgICAgICBUaGlzIGRvZXMgbm90IGluY2x1ZGUgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBpbiBweXByb2plY3QudG9tbC4KICAgICAgICBJdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgZXF1aXZhbGVudGx5IG5hbWVkIGhvb2sgaW4gYQogICAgICAgIHN1YnByb2Nlc3MuCiAgICAgICAg2hxnZXRfcmVxdWlyZXNfZm9yX2J1aWxkX3doZWVs2g9jb25maWdfc2V0dGluZ3NyWQAAAKkCciUAAAByXAAAAHIcAAAAchwAAAByHQAAAHJbAAAAogAAAHMIAAAAAAsGAQIAAv96LVBlcDUxN0hvb2tDYWxsZXIuZ2V0X3JlcXVpcmVzX2Zvcl9idWlsZF93aGVlbFRjBAAAAAAAAAAAAAAABAAAAAcAAABDAAAAcxgAAAB8AKAAZAF0AXwBgwF8AnwDZAKcA6ECUwApA2F1AQAAUHJlcGFyZSBhIGBgKi5kaXN0LWluZm9gYCBmb2xkZXIgd2l0aCBtZXRhZGF0YSBmb3IgdGhpcyBwcm9qZWN0LgoKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuZXdseSBjcmVhdGVkIGZvbGRlci4KCiAgICAgICAgSWYgdGhlIGJ1aWxkIGJhY2tlbmQgZGVmaW5lcyBhIGhvb2sgd2l0aCB0aGlzIG5hbWUsIGl0IHdpbGwgYmUgY2FsbGVkCiAgICAgICAgaW4gYSBzdWJwcm9jZXNzLiBJZiBub3QsIHRoZSBiYWNrZW5kIHdpbGwgYmUgYXNrZWQgdG8gYnVpbGQgYSB3aGVlbCwKICAgICAgICBhbmQgdGhlIGRpc3QtaW5mbyBleHRyYWN0ZWQgZnJvbSB0aGF0ICh1bmxlc3MgX2FsbG93X2ZhbGxiYWNrIGlzCiAgICAgICAgRmFsc2UpLgogICAgICAgINogcHJlcGFyZV9tZXRhZGF0YV9mb3JfYnVpbGRfd2hlZWypA9oSbWV0YWRhdGFfZGlyZWN0b3J5clwAAADaD19hbGxvd19mYWxsYmFja6kCcloAAAByAwAAAKkEciUAAAByYAAAAHJcAAAAcmEAAAByHAAAAHIcAAAAch0AAAByXgAAALEAAABzCgAAAAAMBgEGAQIBAv16MVBlcDUxN0hvb2tDYWxsZXIucHJlcGFyZV9tZXRhZGF0YV9mb3JfYnVpbGRfd2hlZWxjBAAAAAAAAAAAAAAABAAAAAcAAABDAAAAcygAAAB8A2QBawlyEHQAfAODAX0DfACgAWQCdAB8AYMBfAJ8A2QDnAOhAlMAKQRhdgEAAEJ1aWxkIGEgd2hlZWwgZnJvbSB0aGlzIHByb2plY3QuCgogICAgICAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZS4KCiAgICAgICAgSW4gZ2VuZXJhbCwgdGhpcyB3aWxsIGNhbGwgdGhlICdidWlsZF93aGVlbCcgaG9vayBpbiB0aGUgYmFja2VuZC4KICAgICAgICBIb3dldmVyLCBpZiB0aGF0IHdhcyBwcmV2aW91c2x5IGNhbGxlZCBieQogICAgICAgICdwcmVwYXJlX21ldGFkYXRhX2Zvcl9idWlsZF93aGVlbCcsIGFuZCB0aGUgc2FtZSBtZXRhZGF0YV9kaXJlY3RvcnkgaXMKICAgICAgICB1c2VkLCB0aGUgcHJldmlvdXNseSBidWlsdCB3aGVlbCB3aWxsIGJlIGNvcGllZCB0byB3aGVlbF9kaXJlY3RvcnkuCiAgICAgICAgTtoLYnVpbGRfd2hlZWypA9oPd2hlZWxfZGlyZWN0b3J5clwAAAByYAAAAKkCcgMAAAByWgAAAKkEciUAAAByZgAAAHJcAAAAcmAAAAByHAAAAHIcAAAAch0AAAByZAAAAMMAAABzDgAAAAAMCAEIAQYBBgECAQL9ehxQZXA1MTdIb29rQ2FsbGVyLmJ1aWxkX3doZWVsYwIAAAAAAAAAAAAAAAIAAAAFAAAAQwAAAHMQAAAAfACgAGQBZAJ8AWkBoQJTACkDYVMBAABJZGVudGlmeSBwYWNrYWdlcyByZXF1aXJlZCBmb3IgYnVpbGRpbmcgYW4gZWRpdGFibGUgd2hlZWwKCiAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgZGVwZW5kZW5jeSBzcGVjaWZpY2F0aW9ucywgZS5nLjo6CgogICAgICAgICAgICBbIndoZWVsID49IDAuMjUiLCAic2V0dXB0b29scyJdCgogICAgICAgIFRoaXMgZG9lcyBub3QgaW5jbHVkZSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGluIHB5cHJvamVjdC50b21sLgogICAgICAgIEl0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBlcXVpdmFsZW50bHkgbmFtZWQgaG9vayBpbiBhCiAgICAgICAgc3VicHJvY2Vzcy4KICAgICAgICDaH2dldF9yZXF1aXJlc19mb3JfYnVpbGRfZWRpdGFibGVyXAAAAHJZAAAAcl0AAAByHAAAAHIcAAAAch0AAAByaQAAANcAAABzCAAAAAALBgECAAL/ejBQZXA1MTdIb29rQ2FsbGVyLmdldF9yZXF1aXJlc19mb3JfYnVpbGRfZWRpdGFibGVjBAAAAAAAAAAAAAAABAAAAAcAAABDAAAAcxgAAAB8AKAAZAF0AXwBgwF8AnwDZAKcA6ECUwApA2F/AQAAUHJlcGFyZSBhIGBgKi5kaXN0LWluZm9gYCBmb2xkZXIgd2l0aCBtZXRhZGF0YSBmb3IgdGhpcyBwcm9qZWN0LgoKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuZXdseSBjcmVhdGVkIGZvbGRlci4KCiAgICAgICAgSWYgdGhlIGJ1aWxkIGJhY2tlbmQgZGVmaW5lcyBhIGhvb2sgd2l0aCB0aGlzIG5hbWUsIGl0IHdpbGwgYmUgY2FsbGVkCiAgICAgICAgaW4gYSBzdWJwcm9jZXNzLiBJZiBub3QsIHRoZSBiYWNrZW5kIHdpbGwgYmUgYXNrZWQgdG8gYnVpbGQgYW4gZWRpdGFibGUKICAgICAgICB3aGVlbCwgYW5kIHRoZSBkaXN0LWluZm8gZXh0cmFjdGVkIGZyb20gdGhhdCAodW5sZXNzIF9hbGxvd19mYWxsYmFjayBpcwogICAgICAgIEZhbHNlKS4KICAgICAgICDaI3ByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX2VkaXRhYmxlcl8AAAByYgAAAHJjAAAAchwAAAByHAAAAHIdAAAAcmoAAADmAAAAcwoAAAAADAYBBgECAQL9ejRQZXA1MTdIb29rQ2FsbGVyLnByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX2VkaXRhYmxlYwQAAAAAAAAAAAAAAAQAAAAHAAAAQwAAAHMoAAAAfANkAWsJchB0AHwDgwF9A3wAoAFkAnQAfAGDAXwCfANkA5wDoQJTACkEYYYBAABCdWlsZCBhbiBlZGl0YWJsZSB3aGVlbCBmcm9tIHRoaXMgcHJvamVjdC4KCiAgICAgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgoKICAgICAgICBJbiBnZW5lcmFsLCB0aGlzIHdpbGwgY2FsbCB0aGUgJ2J1aWxkX2VkaXRhYmxlJyBob29rIGluIHRoZSBiYWNrZW5kLgogICAgICAgIEhvd2V2ZXIsIGlmIHRoYXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGJ5CiAgICAgICAgJ3ByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX2VkaXRhYmxlJywgYW5kIHRoZSBzYW1lIG1ldGFkYXRhX2RpcmVjdG9yeQogICAgICAgIGlzIHVzZWQsIHRoZSBwcmV2aW91c2x5IGJ1aWx0IHdoZWVsIHdpbGwgYmUgY29waWVkIHRvIHdoZWVsX2RpcmVjdG9yeS4KICAgICAgICBO2g5idWlsZF9lZGl0YWJsZXJlAAAAcmcAAAByaAAAAHIcAAAAchwAAAByHQAAAHJrAAAA+AAAAHMOAAAAAAwIAQgBBgEGAQIBAv16H1BlcDUxN0hvb2tDYWxs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