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SABk4wCEAABaSQBk5ACEAABaSgBlSQCDAAABZUoAgwAAAWVLAIMAAAFuAABkAwBTKOUAAABznQ0AAApUdXJ0bGUgZ3JhcGhpY3MgaXMgYSBwb3B1bGFyIHdheSBmb3IgaW50cm9kdWNpbmcgcHJvZ3JhbW1pbmcgdG8Ka2lkcy4gSXQgd2FzIHBhcnQgb2YgdGhlIG9yaWdpbmFsIExvZ28gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGV2ZWxvcGVkCmJ5IFdhbGx5IEZldXJ6aWcgYW5kIFNleW1vdXIgUGFwZXJ0IGluIDE5NjYuCgpJbWFnaW5lIGEgcm9ib3RpYyB0dXJ0bGUgc3RhcnRpbmcgYXQgKDAsIDApIGluIHRoZSB4LXkgcGxhbmUuIEFmdGVyIGFuIGBgaW1wb3J0IHR1cnRsZWBgLCBnaXZlIGl0CnRoZSBjb21tYW5kIHR1cnRsZS5mb3J3YXJkKDE1KSwgYW5kIGl0IG1vdmVzIChvbi1zY3JlZW4hKSAxNSBwaXhlbHMgaW4KdGhlIGRpcmVjdGlvbiBpdCBpcyBmYWNpbmcsIGRyYXdpbmcgYSBsaW5lIGFzIGl0IG1vdmVzLiBHaXZlIGl0IHRoZQpjb21tYW5kIHR1cnRsZS5yaWdodCgyNSksIGFuZCBpdCByb3RhdGVzIGluLXBsYWNlIDI1IGRlZ3JlZXMgY2xvY2t3aXNlLgoKQnkgY29tYmluaW5nIHRvZ2V0aGVyIHRoZXNlIGFuZCBzaW1pbGFyIGNvbW1hbmRzLCBpbnRyaWNhdGUgc2hhcGVzIGFuZApwaWN0dXJlcyBjYW4gZWFzaWx5IGJlIGRyYXduLgoKLS0tLS0gdHVydGxlLnB5CgpUaGlzIG1vZHVsZSBpcyBhbiBleHRlbmRlZCByZWltcGxlbWVudGF0aW9uIG9mIHR1cnRsZS5weSBmcm9tIHRoZQpQeXRob24gc3RhbmRhcmQgZGlzdHJpYnV0aW9uIHVwIHRvIFB5dGhvbiAyLjUuIChTZWU6IGh0dHA6Ly93d3cucHl0aG9uLm9yZykKCkl0IHRyaWVzIHRvIGtlZXAgdGhlIG1lcml0cyBvZiB0dXJ0bGUucHkgYW5kIHRvIGJlIChuZWFybHkpIDEwMCUKY29tcGF0aWJsZSB3aXRoIGl0LiBUaGlzIG1lYW5zIGluIHRoZSBmaXJzdCBwbGFjZSB0byBlbmFibGUgdGhlCmxlYXJuaW5nIHByb2dyYW1tZXIgdG8gdXNlIGFsbCB0aGUgY29tbWFuZHMsIGNsYXNzZXMgYW5kIG1ldGhvZHMKaW50ZXJhY3RpdmVseSB3aGVuIHVzaW5nIHRoZSBtb2R1bGUgZnJvbSB3aXRoaW4gSURMRSBydW4gd2l0aAp0aGUgLW4gc3dpdGNoLgoKUm91Z2hseSBpdCBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhZGRlZDoKCi0gQmV0dGVyIGFuaW1hdGlvbiBvZiB0aGUgdHVydGxlIG1vdmVtZW50cywgZXNwZWNpYWxseSBvZiB0dXJuaW5nIHRoZQogIHR1cnRsZS4gU28gdGhlIHR1cnRsZXMgY2FuIG1vcmUgZWFzaWx5IGJlIHVzZWQgYXMgYSB2aXN1YWwgZmVlZGJhY2sKICBpbnN0cnVtZW50IGJ5IHRoZSAoYmVnaW5uaW5nKSBwcm9ncmFtbWVyLgoKLSBEaWZmZXJlbnQgdHVydGxlIHNoYXBlcywgZ2lmLWltYWdlcyBhcyB0dXJ0bGUgc2hhcGVzLCB1c2VyIGRlZmluZWQKICBhbmQgdXNlciBjb250cm9sbGFibGUgdHVydGxlIHNoYXBlcywgYW1vbmcgdGhlbSBjb21wb3VuZAogIChtdWx0aWNvbG9yZWQpIHNoYXBlcy4gVHVydGxlIHNoYXBlcyBjYW4gYmUgc3RyZXRjaGVkIGFuZCB0aWx0ZWQsIHdoaWNoCiAgbWFrZXMgdHVydGxlcyB2ZXJ5IHZlcnNhdGlsZSBnZW9tZXRyaWNhbCBvYmplY3RzLgoKLSBGaW5lIGNvbnRyb2wgb3ZlciB0dXJ0bGUgbW92ZW1lbnQgYW5kIHNjcmVlbiB1cGRhdGVzIHZpYSBkZWxheSgpLAogIGFuZCBlbmhhbmNlZCB0cmFjZXIoKSBhbmQgc3BlZWQoKSBtZXRob2RzLgoKLSBBbGlhc2VzIGZvciB0aGUgbW9zdCBjb21tb25seSB1c2VkIGNvbW1hbmRzLCBsaWtlIGZkIGZvciBmb3J3YXJkIGV0Yy4sCiAgZm9sbG93aW5nIHRoZSBlYXJseSBMb2dvIHRyYWRpdGlvbnMuIFRoaXMgcmVkdWNlcyB0aGUgYm9yaW5nIHdvcmsgb2YKICB0eXBpbmcgbG9uZyBzZXF1ZW5jZXMgb2YgY29tbWFuZHMsIHdoaWNoIG9mdGVuIG9jY3VyIGluIGEgbmF0dXJhbCB3YXkKICB3aGVuIGtpZHMgdHJ5IHRvIHByb2dyYW0gZmFuY3kgcGljdHVyZXMgb24gdGhlaXIgZmlyc3QgZW5jb3VudGVyIHdpdGgKICB0dXJ0bGUgZ3JhcGhpY3MuCgotIFR1cnRsZXMgbm93IGhhdmUgYW4gdW5kbygpLW1ldGhvZCB3aXRoIGNvbmZpZ3VyYWJsZSB1bmRvLWJ1ZmZlci4KCi0gU29tZSBzaW1wbGUgY29tbWFuZHMvbWV0aG9kcyBmb3IgY3JlYXRpbmcgZXZlbnQgZHJpdmVuIHByb2dyYW1zCiAgKG1vdXNlLSwga2V5LSwgdGltZXItZXZlbnRzKS4gRXNwZWNpYWxseSB1c2VmdWwgZm9yIHByb2dyYW1taW5nIGdhbWVzLgoKLSBBIHNjcm9sbGFibGUgQ2FudmFzIGNsYXNzLiBUaGUgZGVmYXVsdCBzY3JvbGxhYmxlIENhbnZhcyBjYW4gYmUKICBleHRlbmRlZCBpbnRlcmFjdGl2ZWx5IGFzIG5lZWRlZCB3aGlsZSBwbGF5aW5nIGFyb3VuZCB3aXRoIHRoZSB0dXJ0bGUocykuCgotIEEgVHVydGxlU2NyZWVuIGNsYXNzIHdpdGggbWV0aG9kcyBjb250cm9sbGluZyBiYWNrZ3JvdW5kIGNvbG9yIG9yCiAgYmFja2dyb3VuZCBpbWFnZSwgd2luZG93IGFuZCBjYW52YXMgc2l6ZSBhbmQgb3RoZXIgcHJvcGVydGllcyBvZiB0aGUKICBUdXJ0bGVTY3JlZW4uCgotIFRoZXJlIGlzIGEgbWV0aG9kLCBzZXR3b3JsZGNvb3JkaW5hdGVzKCksIHRvIGluc3RhbGwgYSB1c2VyIGRlZmluZWQKICBjb29yZGluYXRlLXN5c3RlbSBmb3IgdGhlIFR1cnRsZVNjcmVlbi4KCi0gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYSAyLXZlY3RvciBjbGFzcyBuYW1lZCBWZWMyRCwgZGVyaXZlZCBmcm9tIHR1cGxlLgogIFRoaXMgY2xhc3MgaXMgcHVibGljLCBzbyBpdCBjYW4gYmUgaW1wb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW1tZXIsCiAgd2hpY2ggbWFrZXMgY2VydGFpbiB0eXBlcyBvZiBjb21wdXRhdGlvbnMgdmVyeSBuYXR1cmFsIGFuZCBjb21wYWN0LgoKLSBBcHBlYXJhbmNlIG9mIHRoZSBUdXJ0bGVTY3JlZW4gYW5kIHRoZSBUdXJ0bGVzIGF0IHN0YXJ0dXAvaW1wb3J0IGNhbiBiZQogIGNvbmZpZ3VyZWQgYnkgbWVhbnMgb2YgYSB0dXJ0bGUuY2ZnIGNvbmZpZ3VyYXRpb24gZmlsZS4KICBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIG1pbWljcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgb2xkIHR1cnRsZSBtb2R1bGUuCgotIElmIGNvbmZpZ3VyZWQgYXBwcm9wcmlhdGVseSB0aGUgbW9kdWxlIHJlYWRzIGluIGRvY3N0cmluZ3MgZnJvbSBhIGRvY3N0cmluZwogIGRpY3Rpb25hcnkgaW4gc29tZSBkaWZmZXJlbnQgbGFuZ3VhZ2UsIHN1cHBsaWVkIHNlcGFyYXRlbHkgIGFuZCByZXBsYWNlcwogIHRoZSBFbmdsaXNoIG9uZXMgYnkgdGhvc2UgcmVhZCBpbi4gVGhlcmUgaXMgYSB1dGlsaXR5IGZ1bmN0aW9uCiAgd3JpdGVfZG9jc3RyaW5nZGljdCgpIHRvIHdyaXRlIGEgZGljdGlvbmFyeSB3aXRoIHRoZSBvcmlnaW5hbCAoRW5nbGlzaCkKICBkb2NzdHJpbmdzIHRvIGRpc2MsIHNvIGl0IGNhbiBzZXJ2ZSBhcyBhIHRlbXBsYXRlIGZvciB0cmFuc2xhdGlvbnMuCgpCZWhpbmQgdGhlIHNjZW5lcyB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBpbmNsdWRlZCB3aXRoIHBvc3NpYmxlCmV4dGVuc2lvbnMgaW4gbWluZC4gVGhlc2Ugd2lsbCBiZSBjb21tZW50ZWQgYW5kIGRvY3VtZW50ZWQgZWxzZXdoZXJlLgoKczUAAAB0dXJ0bGUgMS4wYjEgLSBmb3IgUHl0aG9uIDIuNiAgIC0gIDMwLiA1LiAyMDA4LCAxODowOGn/////TigDAAAAdAYAAABpc2ZpbGV0BQAAAHNwbGl0dAQAAABqb2luKAEAAAB0CAAAAGRlZXBjb3B5KAEAAAB0AQAAACp0DgAAAFNjcm9sbGVkQ2FudmFzdAwAAABUdXJ0bGVTY3JlZW50BgAAAFNjcmVlbnQJAAAAUmF3VHVydGxldAYAAABUdXJ0bGV0BgAAAFJhd1BlbnQDAAAAUGVudAUAAABTaGFwZXQFAAAAVmVjMkR0CAAAAGFkZHNoYXBldAcAAABiZ2NvbG9ydAUAAABiZ3BpY3QDAAAAYnlldAsAAABjbGVhcnNjcmVlbnQJAAAAY29sb3Jtb2RldAUAAABkZWxheXQLAAAAZXhpdG9uY2xpY2t0CQAAAGdldGNhbnZhc3QJAAAAZ2V0c2hhcGVzdAYAAABsaXN0ZW50BAAAAG1vZGV0BQAAAG9ua2V5dA0AAABvbnNjcmVlbmNsaWNrdAcAAABvbnRpbWVydA4AAAByZWdpc3Rlcl9zaGFwZXQLAAAAcmVzZXRzY3JlZW50CgAAAHNjcmVlbnNpemV0BQAAAHNldHVwdBMAAABzZXR3b3JsZGNvb3JkaW5hdGVzdAUAAAB0aXRsZXQGAAAAdHJhY2VydAcAAAB0dXJ0bGVzdAYAAAB1cGRhdGV0DQAAAHdpbmRvd19oZWlnaHR0DAAAAHdpbmRvd193aWR0aHQEAAAAYmFja3QIAAAAYmFja3dhcmR0CgAAAGJlZ2luX2ZpbGx0CgAAAGJlZ2luX3BvbHl0AgAAAGJrdAYAAABjaXJjbGV0BQAAAGNsZWFydAoAAABjbGVhcnN0YW1wdAsAAABjbGVhcnN0YW1wc3QFAAAAY2xvbmV0BQAAAGNvbG9ydAcAAABkZWdyZWVzdAgAAABkaXN0YW5jZXQDAAAAZG90dAQAAABkb3dudAgAAABlbmRfZmlsbHQIAAAAZW5kX3BvbHl0AgAAAGZkdAQAAABmaWxsdAkAAABmaWxsY29sb3J0BwAAAGZvcndhcmR0CAAAAGdldF9wb2x5dAYAAABnZXRwZW50CQAAAGdldHNjcmVlbnQJAAAAZ2V0dHVydGxldAQAAABnb3RvdAcAAABoZWFkaW5ndAoAAABoaWRldHVydGxldAQAAABob21ldAIAAABodHQGAAAAaXNkb3dudAkAAABpc3Zpc2libGV0BAAAAGxlZnR0AgAAAGx0dAcAAABvbmNsaWNrdAYAAABvbmRyYWd0CQAAAG9ucmVsZWFzZXQCAAAAcGR0AwAAAHBlbnQIAAAAcGVuY29sb3J0BwAAAHBlbmRvd250BwAAAHBlbnNpemV0BQAAAHBlbnVwdAMAAABwb3N0CAAAAHBvc2l0aW9udAIAAABwdXQHAAAAcmFkaWFuc3QFAAAAcmlnaHR0BQAAAHJlc2V0dAoAAAByZXNpemVtb2RldAIAAABydHQEAAAAc2V0aHQKAAAAc2V0aGVhZGluZ3QGAAAAc2V0cG9zdAsAAABzZXRwb3NpdGlvbnQMAAAAc2V0dGlsdGFuZ2xldA0AAABzZXR1bmRvYnVmZmVydAQAAABzZXR4dAQAAABzZXR5dAUAAABzaGFwZXQJAAAAc2hhcGVzaXpldAoAAABzaG93dHVydGxldAUAAABzcGVlZHQCAAAAc3R0BQAAAHN0YW1wdAQAAAB0aWx0dAkAAAB0aWx0YW5nbGV0BwAAAHRvd2FyZHN0CgAAAHR1cnRsZXNpemV0BAAAAHVuZG90EQAAAHVuZG9idWZmZXJlbnRyaWVzdAIAAAB1cHQFAAAAd2lkdGh0BQAAAHdyaXRldAQAAAB4Y29ydAQAAAB5Y29ydBMAAAB3cml0ZV9kb2NzdHJpbmdkaWN0dAQAAABkb25ldAgAAABtYWlubG9vcHQEAAAAYWNvc3QEAAAAYXNpbnQEAAAAYXRhbnQFAAAAYXRhbjJ0BAAAAGNlaWx0AwAAAGNvc3QEAAAAY29zaHQBAAAAZXQDAAAAZXhwdAQAAABmYWJzdAUAAABmbG9vcnQEAAAAZm1vZHQFAAAAZnJleHB0BQAAAGh5cG90dAUAAABsZGV4cHQDAAAAbG9ndAUAAABsb2cxMHQEAAAAbW9kZnQCAAAAcGl0AwAAAHBvd3QDAAAAc2ludAQAAABzaW5odAQAAABzcXJ0dAMAAAB0YW50BAAAAHRhbmhnAAAAAAAA4D9nAAAAAAAA6D90BgAAAGhlaWdodGmQAQAAdAkAAABjYW52d2lkdGhpLAEAAHQKAAAAY2FudmhlaWdodHQJAAAAbGVmdHJpZ2h0dAkAAAB0b3Bib3R0b210CAAAAHN0YW5kYXJkZwAAAAAAAPA/aQoAAABp6AMAAHQOAAAAdW5kb2J1ZmZlcnNpemV0BwAAAGNsYXNzaWN0BQAAAGJsYWNrdAgAAABub3Jlc2l6ZXQHAAAAdmlzaWJsZXQHAAAAZW5nbGlzaHQIAAAAbGFuZ3VhZ2V0BgAAAHR1cnRsZXQNAAAAZXhhbXBsZXR1cnRsZXQGAAAAc2NyZWVudA0AAABleGFtcGxlc2NyZWVucxYAAABQeXRob24gVHVydGxlIEdyYXBoaWNzdAoAAAB1c2luZ19JRExFYwEAAAAHAAAACAAAAEMAAABzDwEAAHQAAHwAAGQBAIMCAH0BAHwBAGoBAIMAAH0CAHwBAGoCAIMAAAFpAAB9AwB43QB8AgBEXdUAfQQAfAQAagMAgwAAfQQAfAQADHMyAHwEAGoEAGQCAIMBAHJgAHEyAG4AAHkZAHwEAGoFAGQDAIMBAFwCAH0FAH0GAFduGQABAQFkBAB8AAB8BABmAgAWR0hxMgBuAQBYfAUAagMAgwAAfQUAfAYAagMAgwAAfQYAfAYAZAsAawYAcsgAdAYAfAYAgwEAfQYAbjUAeSsAZAoAfAYAawYAcuYAdAcAfAYAgwEAfQYAbgwAdAgAfAYAgwEAfQYAV24HAAEBAW4BAFh8BgB8AwB8BQA8cTIAV3wDAFMoDAAAAHMvAAAAQ29udmVydCBjb250ZW50IG9mIGNvbmZpZy1maWxlIGludG8gZGljdGlvbmFyeS50AQAAAHJ0AQAAACN0AQAAAD1zHgAAAEJhZCBsaW5lIGluIGNvbmZpZy1maWxlICVzOgolc3QEAAAAVHJ1ZXQFAAAARmFsc2V0BAAAAE5vbmVzAgAAACcncwIAAAAiInQBAAAALigFAAAAcwQAAABUcnVlcwUAAABGYWxzZXMEAAAATm9uZXMCAAAAJydzAgAAACIiKAkAAAB0BAAAAG9wZW50CQAAAHJlYWRsaW5lc3QFAAAAY2xvc2V0BQAAAHN0cmlwdAoAAABzdGFydHN3aXRoUgEAAAB0BAAAAGV2YWx0BQAAAGZsb2F0dAMAAABpbnQoBwAAAHQIAAAAZmlsZW5hbWV0AQAAAGZ0CAAAAGNmZ2xpbmVzdAcAAABjZmdkaWN0dAQAAABsaW5ldAMAAABrZXl0BQAAAHZhbHVlKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5dAsAAABjb25maWdfZGljdLcAAABzMgAAAAACDwEMAQoBBgENAQwBFgEGAQMBGQEDAQ8BBwEMAQwBDAEPAgMBDAEPAhABAwEEAQ4BYwEAAAAHAAAAAwAAAEMAAABzuAAAAGQBAH0BAGkAAH0CAGkAAH0DAHQAAHwBAIMBAHItAHQBAHwBAIMBAH0CAG4AAGQCAHwCAGsGAHJKAGQDAHwCAGQCABkWfQEAbgAAeSUAdAIAdAMAgwEAXAIAfQQAfQUAdAQAfAQAfAEAgwIAfQYAV24NAAEBAWQEAH0GAG4BAFh0AAB8BgCDAQBymgB0AQB8BgCDAQB9AwBuAAB0BQBqBgB8AwCDAQABdAUAagYAfAIAgwEAAWQFAFMoBgAAAHNAAgAAUmVhZCBjb25maWctZmlsZXMsIGNoYW5nZSBjb25maWd1cmF0aW9uLWRpY3QgYWNjb3JkaW5nbHkuCgogICAgSWYgdGhlcmUgaXMgYSB0dXJ0bGUuY2ZnIGZpbGUgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCiAgICByZWFkIGl0IGZyb20gdGhlcmUuIElmIHRoaXMgY29udGFpbnMgYW4gaW1wb3J0Y29uZmlnLXZhbHVlLAogICAgc2F5ICdteXdheScsIGNvbnN0cnVjdCBmaWxlbmFtZSB0dXJ0bGVfbWF5d2F5LmNmZyBlbHNlIHVzZQogICAgdHVydGxlLmNmZyBhbmQgcmVhZCBpdCBmcm9tIHRoZSBpbXBvcnQtZGlyZWN0b3J5LCB3aGVyZQogICAgdHVydGxlLnB5IGlzIGxvY2F0ZWQuCiAgICBVcGRhdGUgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5IGZpcnN0IGFjY29yZGluZyB0byBjb25maWctZmlsZSwKICAgIGluIHRoZSBpbXBvcnQgZGlyZWN0b3J5LCB0aGVuIGFjY29yZGluZyB0byBjb25maWctZmlsZSBpbiB0aGUKICAgIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgICBJZiBubyBjb25maWctZmlsZSBpcyBmb3VuZCwgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcyB1c2VkLgogICAgcwoAAAB0dXJ0bGUuY2ZndAwAAABpbXBvcnRjb25maWdzDQAAAHR1cnRsZV8lcy5jZmd0AAAAAE4oBwAAAFIAAAAAUrgAAABSAQAAAHQIAAAAX19maWxlX19SAgAAAHQEAAAAX0NGR1IlAAAAKAcAAABStAAAAHQLAAAAZGVmYXVsdF9jZmd0CAAAAGNmZ2RpY3QxdAgAAABjZmdkaWN0MnQEAAAAaGVhZHQEAAAAdGFpbHQJAAAAY2ZnX2ZpbGUyKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5dAoAAAByZWFkY29uZmln1QAAAHMgAAAAAA0GAQYBBgEMAQ8CDAERAQMBEgETAQMBCgEMAg8DDQNzIgAAAE5vIGNvbmZpZ2ZpbGUgcmVhZCwgcmVhc29uIHVua25vd25jAAAAAAAAAAABAAAAQgAAAHNoAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAZAMAhAAAWgUAZAQAhAAAWgYAZAUAhAAAWgcAZAYAhAAAWggAZAcAhAAAWgkAZAgAhAAAWgoAZAkAhAAAWgsAZAoAhAAAWgwAUlMoCwAAAHOvAQAAQSAyIGRpbWVuc2lvbmFsIHZlY3RvciBjbGFzcywgdXNlZCBhcyBhIGhlbHBlciBjbGFzcwogICAgZm9yIGltcGxlbWVudGluZyB0dXJ0bGUgZ3JhcGhpY3MuCiAgICBNYXkgYmUgdXNlZnVsIGZvciB0dXJ0bGUgZ3JhcGhpY3MgcHJvZ3JhbXMgYWxzby4KICAgIERlcml2ZWQgZnJvbSB0dXBsZSwgc28gYSB2ZWN0b3IgaXMgYSB0dXBsZSEKCiAgICBQcm92aWRlcyAoZm9yIGEsIGIgdmVjdG9ycywgayBudW1iZXIpOgogICAgICAgYStiIHZlY3RvciBhZGRpdGlvbgogICAgICAgYS1iIHZlY3RvciBzdWJ0cmFjdGlv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AAAAAQAAAEMAAABzDgAAAHwAAGoAAIMAAAFkAQBTKAIAAABzEAAAAHNlbGYtZXhwbGFuYXRvcnlOKAEAAABSJgEAACgCAAAAUskAAAB0BQAAAGV2ZW50KAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiABAACiAQAAcwIAAAAAAmMBAAAAAgAAAAIAAABHAAAAcxAAAAB8AABqAABqAQB8AQCMAABTKAEAAABzQAAAACAnZm9yd2FyZCcgbWV0aG9kLCB3aGljaCBjYW52YXMgaXRzZWxmIGhhcyBpbmhlcml0ZWQuLi4KICAgICAgICAoAgAAAFITAQAAdAQAAABiYm94KAIAAABSyQAAAHQEAAAAYXJncygAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVItAQAApgEAAHMCAAAAAANjAQAAAAMAAAADAAAATwAAAHMTAAAAfAAAagAAagEAfAEAfAIAjgAAUygBAAAAc0AAAAAgJ2ZvcndhcmQnIG1ldGhvZCwgd2hpY2ggY2FudmFzIGl0c2VsZiBoYXMgaW5oZXJpdGVkLi4uCiAgICAgICAgKAIAAABSEwEAAHQEAAAAY2dldCgDAAAAUskAAABSLgEAAHQGAAAAa3dhcmdzKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Ui8BAACrAQAAcwIAAAAAA2MBAAAAAwAAAAMAAABPAAAAcxcAAAB8AABqAABqAQB8AQB8AgCOAAABZAEAUygCAAAAc0AAAAAgJ2ZvcndhcmQnIG1ldGhvZCwgd2hpY2ggY2FudmFzIGl0c2VsZiBoYXMgaW5oZXJpdGVkLi4uCiAgICAgICAgTigCAAAAUhMBAABSIwEAACgDAAAAUskAAABSLgEAAFIwAQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiMBAACwAQAAcwIAAAAAA2MBAAAAAwAAAAMAAABPAAAAcxcAAAB8AABqAABqAQB8AQB8AgCOAAABZAEAUygCAAAAc0AAAAAgJ2ZvcndhcmQnIG1ldGhvZCwgd2hpY2ggY2FudmFzIGl0c2VsZiBoYXMgaW5oZXJpdGVkLi4uCiAgICAgICAgTigCAAAAUhMBAABSHwEAACgDAAAAUskAAABSLgEAAFIwAQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Uh8BAAC1AQAAcwIAAAAAA2MBAAAAAwAAAAMAAABPAAAAcxcAAAB8AABqAABqAQB8AQB8AgCOAAABZAEAUygCAAAAc0AAAAAgJ2ZvcndhcmQnIG1ldGhvZCwgd2hpY2ggY2FudmFzIGl0c2VsZiBoYXMgaW5oZXJpdGVkLi4uCiAgICAgICAgTigCAAAAUhMBAAB0BgAAAHVuYmluZCgDAAAAUskAAABSLgEAAFIwAQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UjEBAAC6AQAAcwIAAAAAA2MBAAAAAQAAAAEAAABDAAAAcxEAAAB8AABq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AQB8AQCDAgABZAAAUygCAAAATnQQAAAAV01fREVMRVRFX1dJTkRPVygBAAAAdAsAAAB3bV9wcm90b2NvbCgCAAAAUskAAAB0BwAAAGRlc3Ryb3koAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0CQAAAG9uZGVzdHJvedYBAABzAgAAAAABYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGoAAIMAAFMoAQAAAE4oAQAAAHQRAAAAd2luZm9fc2NyZWVud2lkdGgoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5dAkAAAB3aW5fd2lkdGjZAQAAcwIAAAAAAWMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABqAACDAABTKAEAAABOKAEAAAB0EgAAAHdpbmZvX3NjcmVlbmhlaWdodCgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0CgAAAHdpbl9oZWlnaHTcAQAAcwIAAAAAASgKAAAAUtoAAABS2wAAAFLcAAAAUg4BAABSOAEAAFI5AQAAUj0BAABSQQEAAFJDAQAAUkUBAAAoAAAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRr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AHNdAAAARGVsZXRlIGdyYXBoaWNzIGl0ZW0gZnJvbSBjYW52YXMuCiAgICAgICAgSWYgaXRlbSBpcyJhbGwiIGRlbGV0ZSBhbGwgZ3JhcGhpY3MgaXRlbXMuCiAgICAgICAgTigCAAAAUk0BAAB0BgAAAGRlbGV0ZSgCAAAAUskAAAB0BAAAAGl0ZW0oAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0BwAAAF9kZWxldGVBAgAAcwIAAAAABGMBAAAAAQAAAAEAAABDAAAAcxEAAAB8AABqAABqAQCDAAABZAEAUygCAAAAcygAAABSZWRyYXcgZ3JhcGhpY3MgaXRlbXMgb24gY2FudmFzCiAgICAgICAgTigCAAAAUk0BAABSJQAAACgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0BwAAAF91cGRhdGVHAgAAcwIAAAAAA2MCAAAAAgAAAAIAAABDAAAAcxQAAAB8AABqAABqAQB8AQCDAQABZAEAUygCAAAAcy0AAABEZWxheSBzdWJzZXF1ZW50IGNhbnZhcyBhY3Rpb25zIGZvciBkZWxheSBtcy5OKAIAAABSTQEAAHQFAAAAYWZ0ZXIoAgAAAFLJAAAAUhQAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0BgAAAF9kZWxheUwCAABzAgAAAAACYwIAAAAEAAAABQAAAEMAAABzPQAAAHkcAHwAAGoAAGoBAHwBAIMB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b24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSgQEAALgCAABzBgAAAAABGQEhAU4oBAAAAFKnAAAAUk0BAABSMQEAAFIfAQAAKAUAAABSyQAAAFKAAQAAUoQBAABShQEAAFKBAQAAKAAAAAAoAgAAAFKAAQAAUskAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weXQOAAAAX29uc2NyZWVuY2xpY2usAgAAcwgAAAAACQwBFwISBGMDAAAABAAAAAMAAAADAAAAc1AAAACIAABkAwBrCAByJgB8AABqAQBqAgBkAQB8AgAWZAMAgwIAAW4mAIcAAGYBAGQCAIYAAH0DAHwAAGoBAGoDAGQBAHwCABZ8AwCDAgABZAMAUygEAAAAc2AAAABCaW5kIGZ1biB0byBrZXktcmVsZWFzZSBldmVudCBvZiBrZXkuCiAgICAgICAgQ2FudmFzIG11c3QgaGF2ZSBmb2N1cy4gU2VlIG1ldGhvZCBsaXN0ZW4KICAgICAgICBzDwAAADxLZXlSZWxlYXNlLSVzPmMBAAAAAQAAAAEAAAATAAAAcwsAAACIAACDAAABZAAAUygBAAAATigAAAAAKAEAAABSLAEAACgBAAAAUoABAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UoEBAADFAgAAcwIAAAAAAU4oBAAAAFKnAAAAUk0BAABSMQEAAFIfAQAAKAQAAABSyQAAAFKAAQAAUrYAAABSgQEAACgAAAAAKAEAAABSgAEAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGli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ZFUAZFYAZFcAZFgAZFkAZFoAZFsAZFwAZF0AZhQAgwIAZCQANnQAAGQBAGReAGRfAGRgAGRhAGYEAIMCAGQlADZ0AABkAQBkYgBkYwBkZABmAwCDAgBkKAA2dAAAZAEAZGUAZGYAZGcAZGgAZgQAgwIAZCkANnQAAGQqAHwAAGoBAIMAAIMCAGQrADZ8AABfAgBpAQBkLABkLQA2fAAAXwMAdAQAagUAfAAAfAEAgwIAAXwCAHwAAF8GAHwEAHwAAF8HAHQIAGQuABl8AABfCQBnAAB8AABfCgB8AABqCwCDAAABZAAAUyhpAAAATlKtAQAAafb///9pAAAAAGkKAAAAdAUAAABhcnJvd2kQAAAAaf7///9pDgAAAGn/////afz///9pBwAAAGn5////aQkAAABp9////2kIAAAAafr///9pBQAAAGkBAAAAafv///9p/f///2n4////aQQAAABpBgAAAGkCAAAAUp0AAABnhetRuB4FI0BnuB6F61G4CEBnrkfhehQuIEBnhetRuB6FF0BnuB6F61G4CMBnhetRuB6FF8BnrkfhehQuIMBnhetRuB4FI8BnAAAAAAAAAIBnAAAAAAAAJMBSLQAAAHQGAAAAc3F1YXJlZxSuR+F6FBfAZ5qZmZmZGSdAdAgAAAB0cmlhbmdsZVKXAAAAUo8BAABSSAEAAFK6AAAAdAUAAABub3BpY1ITAAAAKAIAAABp9v///2kAAAAAKAIAAABpCgAAAGkAAAAAKAIAAABpAAAAAGkKAAAAKAIAAABpAAAAAGkQAAAAKAIAAABp/v///2kOAAAAKAIAAABp/////2kKAAAAKAIAAABp/P///2kHAAAAKAIAAABp+f///2kJAAAAKAIAAABp9////2kIAAAAKAIAAABp+v///2kFAAAAKAIAAABp+f///2kBAAAAKAIAAABp+////2n9////KAIAAABp+P///2n6////KAIAAABp+v///2n4////KAIAAABp/P///2n7////KAIAAABpAAAAAGn5////KAIAAABpBAAAAGn7////KAIAAABpBgAAAGn4////KAIAAABpCAAAAGn6////KAIAAABpBQAAAGn9////KAIAAABpBwAAAGkBAAAAKAIAAABpBgAAAGkFAAAAKAIAAABpCQAAAGkIAAAAKAIAAABpBwAAAGkJAAAA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AHwBAHwAAGoEABR9CwB8BAALfAAAagUAFH0MAHwAAGoGAHwLABd9DQB8AABqBwB8DAAXfQ4AfAAAaggAfAsAfAwAfA0AfA4AgwQAAXwAAGoJAHwAAGoEAHwJABV8AABqBQB8CgAVgwIAAXwAAGoKAIMAAAFkAwBTKAQAAABzcwMAAFNldCB1cCBhIHVzZXIgZGVmaW5lZCBjb29yZGluYXRlLXN5c3RlbS4KCiAgICAgICAgQXJndW1lbnRzOgogICAgICAgIGxseCAtLSBhIG51bWJlciwgeC1jb29yZGluYXRlIG9mIGxvd2VyIGxlZnQgY29ybmVyIG9mIGNhbnZhcwogICAgICAgIGxseSAtLSBhIG51bWJlciwgeS1jb29yZGluYXRlIG9mIGxvd2VyIGxlZnQgY29ybmVyIG9mIGNhbnZhcwogICAgICAgIHVyeCAtLSBhIG51bWJlciwgeC1jb29yZGluYXRlIG9mIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiBjYW52YXMKICAgICAgICB1cnkgLS0gYSBudW1iZXIsIHktY29vcmRpbmF0ZSBvZiB1cHBlciByaWdodCBjb3JuZXIgb2YgY2FudmFzCgogICAgICAgIFNldCB1cCB1c2VyIGNvb2RpbmF0LXN5c3RlbSBhbmQgc3dpdGNoIHRvIG1vZGUgJ3dvcmxkJyBpZiBuZWNlc3NhcnkuCiAgICAgICAgVGhpcyBwZXJmb3JtcyBhIHNjcmVlbi5yZXNldC4gSWYgbW9kZSAnd29ybGQnIGlzIGFscmVhZHkgYWN0aXZlLAogICAgICAgIGFsbCBkcmF3aW5ncyBhcmUgcmVkcmF3biBhY2NvcmRpbmcgdG8gdGhlIG5ldyBjb29yZGluYXRlcy4KCiAgICAgICAgQnV0IEFUVEVOVElPTjogaW4gdXNlci1kZWZpbmVkIGNvb3JkaW5hdGVzeXN0ZW1zIGFuZ2xlcyBtYXkgYXBwZWFyCiAgICAgICAgZGlzdG9ydGVkLiAoc2VlIFNjcmVlbi5tb2RlKCkpCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4uc2V0d29ybGRjb29yZGluYXRl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CiAgICAgICAgTigEAAAAUtABAAB0CAAAAF9zZXRtb2RlUscBAABSWAAAACgCAAAAUskAAABSnQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJYAAAAfAQAAHMGAAAAAAgQARABYwEAAAABAAAAAQAAAEMAAABzBwAAAHwAAGoAAFMoAQAAAHO7AAAAUmV0dXJuIHRoZSBsaXN0IG9mIHR1cnRsZXMgb24gdGhlIHNjcmVlbi4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlU2NyZWVuIGluc3RhbmNlIG5hbWVkIHNjcmVlbik6CiAgICAgICAgPj4+IHNjcmVlbi50dXJ0bGVzKCkKICAgICAgICBbPHR1cnRsZS5UdXJ0bGUgb2JqZWN0IGF0IDB4MDBFMTFGQjA+XQogICAgICAgICgBAAAAUtABAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiQAAACIBAAAcwIAAAAAB2MBAAAAAwAAAAIAAABHAAAAc08AAAB8AQByGAB8AABqAAB8AQCDAQB9AgBuBgBkAQB9AgB8AABqAgB8AgCDAQB9AgB8AgBkAQBrCQBySwB8AABqAwB8AgCDAQB9AgBuAAB8AgBTKAIAAABznwEAAFNldCBvciByZXR1cm4gYmFja2dyb3VuZGNvbG9yIG9mIHRoZSBUdXJ0bGVTY3JlZW4uCgogICAgICAgIEFyZ3VtZW50cyAoaWYgZ2l2ZW4pOiBhIGNvbG9yIHN0cmluZyBvciB0aHJlZSBudW1iZXJzCiAgICAgICAgaW4gdGhlIHJhbmdlIDAuLmNvbG9ybW9kZSBvciBhIDMtdHVwbGUgb2Ygc3VjaCBudW1iZXJzLgoK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cG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UhQAAADEBAAAcwYAAAAACwwBBwFjAQAAAAEAAAADAAAAQwAAAHNSAAAAdAAAagEAcxsAdAIAdAAAXwMAdAQAggEAbgAAfAAAagUAZAEAawQAck4AfAAABGoGAGQCADcCXwYAfAAABGoGAHwAAGoFADsCXwYAbgAAZAMAUygEAAAAcxkAAABJbmNyZW1lbnQgdXBkYXRlIGNvdW50ZXIuaQAAAABpAQAAAE4oBwAAAFIGAAAAdAgAAABfUlVOTklOR1KlAAAAdAkAAABfUlVOTk5JTkdSqwEAAFLOAQAAUs8BAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5dA0AAABfaW5jcmVtZW50dWRj0wQAAHMMAAAAAAIJAQkBCQEPAQ8BYwEAAAADAAAAAgAAAEMAAABzVAAAAHwAAGoAAH0BAHQBAHwAAF8AAHgoAHwAAGoCAIMAAERdGgB9AgB8AgBqAwCDAAABfAIAagQAgwAAAXEfAFd8AQB8AABfAAB8AABqBQCDAAABZAEAUygCAAAAcycAAABQZXJmb3JtIGEgVHVydGxlU2NyZWVuIHVwZGF0ZS4KICAgICAgICBOKAYAAABSzgEAAFKlAAAAUiQAAAB0DAAAAF91cGRhdGVfZGF0YXQLAAAAX2RyYXd0dXJ0bGVSZwEAACgDAAAAUskAAAB0BwAAAHRyYWNpbmdSjQEAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIlAAAA3AQAAHMOAAAAAAMJAQkBEwEKAQ4BCQFjAQAAAAEAAAACAAAAQwAAAHMOAAAAfAAAagAAgwAAZAEAGVMoAgAAAHObAAAAIFJldHVybiB0aGUgd2lkdGggb2YgdGhlIHR1cnRsZSB3aW5kb3cuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4ud2luZG93X3dpZHRoKCkKICAgICAgICA2NDAKICAgICAgICBpAAAAACgBAAAAUqkBAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UicAAADnBAAAcwIAAAAAB2MBAAAAAQAAAAIAAABDAAAAcw4AAAB8AABqAACDAABkAQAZUygCAAAAc50AAAAgUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIHR1cnRsZSB3aW5kb3cuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4ud2luZG93X2hlaWdodCgpCiAgICAgICAgNDgwCiAgICAgICAgaQEAAAAoAQAAAFKpAQAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVImAAAA8AQAAHMCAAAAAAdjAQAAAAEAAAABAAAAQwAAAHMHAAAAfAAAagAAUygBAAAAc+cAAABSZXR1cm4gdGhlIENhbnZhcyBvZiB0aGlzIFR1cnRsZVNjcmVlbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBjdiA9IHNjcmVlbi5nZXRjYW52YXMoKQogICAgICAgID4+PiBjdgogICAgICAgIDx0dXJ0bGUuU2Nyb2xsZWRDYW52YXMgaW5zdGFuY2UgYXQgMHgwMTA3NDJEOD4KICAgICAgICAoAQAAAFJNAQAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIWAAAA+QQAAHMCAAAAAApjAQAAAAEAAAACAAAAQwAAAHMTAAAAdAAAfAAAagEAagIAgwAAgwEAUygBAAAAc/AAAABSZXR1cm4gYSBsaXN0IG9mIG5hbWVzIG9mIGFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIHR1cnRsZSBzaGFwZXMuCgogICAgICAgIE5vIGFyZ3VtZW50LgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGVTY3JlZW4gaW5zdGFuY2UgbmFtZWQgc2NyZWVuKToKICAgICAgICA+Pj4gc2NyZWVuLmdldHNoYXBlcygpCiAgICAgICAgWydhcnJvdycsICdibGFuaycsICdjaXJjbGUnLCAuLi4gLCAndHVydGxlJ10KICAgICAgICAoAwAAAHQGAAAAc29ydGVkUsUBAABS6QAAACgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSFwAAAAUFAABzAgAAAAAJaQEAAABjBAAAAAQAAAAEAAAAQwAAAHMXAAAAfAAAagAAfAEAfAIAfAMAgwMAAWQBAFMoAgAAAHMWAgAAQmluZCBmdW4gdG8gbW91c2UtY2xpY2sgZXZlbnQgb24gY2FudmFzLgoKICAg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cnVubmluZyA9IEZhbHNlCiAgICAgICAgTigBAAAAUo4BAAAoAwAAAFLJAAAAUoABAABSjQEAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIcAAAATAUAAHMCAAAAABNjAgAAAAIAAAAEAAAAQwAAAHNiAAAAfAEAZAEAawgAchMAfAAAagEAU3wBAHwAAGoCAGsHAHI7AHwAAGoDAHwBAIMBAHwAAGoCAHwBADxuAAB8AABqBAB8AABqBQB8AABqAgB8AQAZgwIAAXwBAHwAAF8BAGQBAFMoAgAAAHNGAgAAU2V0IGJhY2tncm91bmQgaW1hZ2Ugb3IgcmV0dXJuIG5hbWUgb2YgY3VycmVudCBiYWNrZ3JvdW5kaW1hZ2UuCgogICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50OgogICAgICAgIHBpY25hbWUgLS0gYSBzdHJpbmcsIG5hbWUgb2YgYSBnaWYtZmlsZSBvciAibm9waWMiLgoKICAgICAgICBJZiBwaWNuYW1lIGlzIGEgZmlsZW5hbWUsIHNldCB0aGUgY29ycmVzcG9uZGluZyBpbWFnZSBhcyBiYWNrZ3JvdW5kLgogICAgICAgIElmIHBpY25hbWUgaXMgIm5vcGljIiwgZGVsZXRlIGJhY2tncm91bmRpbWFnZSwgaWYgcHJlc2VudC4KICAgICAgICBJZiBwaWNuYW1lIGlzIE5vbmUsIHJldHVybiB0aGUgZmlsZW5hbWUgb2YgdGhlIGN1cnJlbnQgYmFja2dyb3VuZGltYWdlLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGVTY3JlZW4gaW5zdGFuY2UgbmFtZWQgc2NyZWVuKToKICAgICAgICA+Pj4gc2NyZWVuLmJncGljKCkKICAgICAgICAnbm9waWMnCiAgICAgICAgPj4+IHNjcmVlbi5iZ3BpYygibGFuZHNjYXBlLmdpZiIpCiAgICAgICAgPj4+IHNjcmVlbi5iZ3BpYygpCiAgICAgICAgJ2xhbmRzY2FwZS5naWYnCiAgICAgICAgTigGAAAAUqcAAABSzQEAAFLGAQAAUkwBAABSlgEAAFLMAQAAKAIAAABSyQAAAHQHAAAAcGljbmFtZSgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIQAAAAYQUAAHMMAAAAABEMAQcBDwEZARoBYwQAAAAEAAAABAAAAEMAAABzEwAAAHwAAGoAAHwBAHwCAHwDAIMDAFMoAQAAAHPXAgAAUmVzaXplIHRoZSBjYW52YXMgdGhlIHR1cnRsZXMgYXJlIGRyYXdpbmcgb24uCgogICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50czoKICAgICAgICBjYW52d2lkdGggLS0gcG9zaXRpdmUgaW50ZWdlciwgbmV3IHdpZHRoIG9mIGNhbnZhcyBpbiBwaXhlbHMKICAgICAgICBjYW52aGVpZ2h0IC0tICBwb3NpdGl2ZSBpbnRlZ2VyLCBuZXcgaGVpZ2h0IG9mIGNhbnZhcyBpbiBwaXhlbHMKICAgICAgICBiZyAtLSBjb2xvcnN0cmluZyBvciBjb2xvci10dXBsZSwgbmV3IGJhY2tncm91bmRjb2xvcgogICAgICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHJldHVybiBjdXJyZW50IChjYW52YXN3aWR0aCwgY2FudmFzaGVpZ2h0KQoKICAgICAgICBEbyBub3QgYWx0ZXIgdGhlIGRyYXdpbmcgd2luZG93LiBUbyBvYnNlcnZlIGhpZGRlbiBwYXJ0cyBvZgogICAgICAgIHRoZSBjYW52YXMgdXNlIHRoZSBzY3JvbGxiYXJzLiAoQ2FuIG1ha2UgdmlzaWJsZSB0aG9zZSBwYXJ0cwogICAgICAgIG9mIGEgZHJhd2luZywgd2hpY2ggd2VyZSBvdXRzaWRlIHRoZSBjYW52YXMgYmVmb3JlISkKCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5zY3JlZW5zaXplKDIwMDAsMTUwMCkKICAgICAgICA+Pj4gIyBlLiBnLiB0byBzZWFyY2ggZm9yIGFuIGVycm9uZW91c2x5IGVzY2FwZWQgdHVydGxlIDstKQogICAgICAgICgBAAAAUqgBAAAoBAAAAFLJAAAAUpEAAABSkgAAAFL6AAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Uh8AAAB5BQAAcwIAAAAAEU4oJAAAAFLaAAAAUtsAAABS3AAAAFKlAAAAUukBAABSvAAAAFIOAQAAUi4AAABSpwAAAFIZAAAAUiEAAABSHQAAAFLjAQAAUuUBAABSEwAAAFJYAAAAUiQAAABSDwAAAFIjAAAAUhQAAABS6wEAAFIlAAAAUicAAABSJgAAAFIWAAAAUhcAAABSSgAAAFIaAAAAUhgAAABSHAAAAFIQAAAAUh8AAABSGwAAAFIeAAAAUhIAAABSDgAAACgAAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UgYAAACOAwAAc0AAAAAGBgYCBgIHARcfCRwMIgknDCQJGwkLDBUJDAkJCRcPHAwPCQkJCwkJCQkJDAkLDxIJHg8MDBUMGBITBgEGAQYBdAoAAABUTmF2aWdhdG9yYwAAAAAAAAAABAAAAEIAAABzrAEAAGUAAFoBAGQAAFoCAGkDAGUDAGQBAGQCAIMCAGQDADZlAwBkAQBkAgCDAgBkBAA2ZQMAZAIAZAEAgwIAZAUANloEAGQDAFoFAGQGAFoGAGQHAFoHAGUFAGQIAIQBAFoIAGQJAIQAAFoJAGQlAGQKAIQBAFoLAGQLAIQAAFoMAGQMAGQNAIQBAFoNAGQOAIQAAFoOAGQPAIQAAFoPAGQQAIQAAFoQAGQRAIQAAFoRAGQSAIQAAFoSAGQTAIQAAFoTAGQUAIQAAFoUAGQVAIQAAFoVAGQWAIQAAFoWAGQXAIQAAFoXAGQYAIQAAFoYAGQlAGQZAIQBAFoZAGQaAIQAAFoaAGQbAIQAAFobAGQcAIQAAFocAGQlAGQdAIQBAFodAGQlAGQeAIQBAFoeAGQfAIQAAFofAGQgAIQAAFogAGQlAGQlAGQhAIQCAFohAGQGAGQiAIQBAFoiAGQlAGQlAGQjAIQCAFojAGQlAGQkAIQBAFokAGUSAFolAGUTAFomAGUTAFonAGUUAFooAGUVAFopAGUWAFoqAGUZAForAGUZAFosAGUgAFotAFJTKCYAAABzUgAAAE5hdmlnYXRpb24gcGFydCBvZiB0aGUgUmF3VHVydGxlLgogICAgSW1wbGVtZW50cyBtZXRob2RzIGZvciB0dXJ0bGUgbW92ZW1lbnQuCiAgICBnAAAAAAAA8D9nAAAAAAAAAABSlQAAAFLUAQAAUtMBAABpAAAAAGkBAAAAYwIAAAACAAAAAgAAAEMAAABzWwAAAHwAAGoAAHwAAF8BAHwAAGoCAHwAAF8DAHwBAHwAAF8EAGQAAHwAAF8GAHwAAGoHAIMAAAFkAAB8AABfBAB8AABqCAB8AQCDAQABdAkAagoAfAAAgwEAAWQAAFMoAQAAAE4oCwAAAHQTAAAAREVGQVVMVF9BTkdMRU9GRlNFVHQMAAAAX2FuZ2xlT2Zmc2V0dBMAAABERUZBVUxUX0FOR0xFT1JJRU5UdAwAAABfYW5nbGVPcmllbnRSxwEAAFKnAAAAdAoAAAB1bmRvYnVmZmVyUjMAAABS5wEAAFL0AQAAUlgAAAAoAgAAAFLJAAAAUhkAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSDgEAAJ0FAABzEAAAAAABDAEMAQkBCQEKAQkBDQFjAQAAAAEAAAADAAAAQwAAAHMpAAAAdAAAZAEAZAEAgwIAfAAAXwEAdAIAagMAfAAAagQAGXwAAF8FAGQCAFMoAwAAAHNYAAAAcmVzZXQgdHVydGxlIHRvIGl0cyBpbml0aWFsIHZhbHVlcwoKICAgICAgICBXaWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHBhcmVudCBjbGFzcwogICAgICAgIGcAAAAAAAAAAE4oBgAAAFINAAAAdAkAAABfcG9zaXRpb25S9AEAAHQRAAAAU1RBUlRfT1JJRU5UQVRJT05SxwEAAHQHAAAAX29yaWVudCgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSWAAAAKcFAABzBAAAAAAFEgFjAgAAAAIAAAAEAAAAQwAAAHNqAAAAfAEAZAQAawgAchMAfAAAagEAU3wBAGQJAGsHAHIjAGQEAFN8AQB8AABfAQB8AQBkCgBrBgByTQBkBQB8AABfAgBkBgB8AABfAwBuGQB8AABqBABkBwAVfAAAXwIAZAgAfAAAXwMAZAQAUygLAAAAczoAAABTZXQgdHVydGxlLW1vZGUgdG8gJ3N0YW5kYXJkJywgJ3dvcmxkJyBvciAnbG9nbycuCiAgICAgICAgUpUAAABS0wEAAFLUAQAATmkAAAAAaQEAAABnAAAAAAAAEEBp/////ygDAAAAcwgAAABzdGFuZGFyZHMEAAAAbG9nb3MFAAAAd29ybGQoAgAAAHMIAAAAc3RhbmRhcmRzBQAAAHdvcmxkKAUAAABSpwAAAFLHAQAAUvYBAABS+AEAAHQLAAAAX2Z1bGxjaXJjbGUoAgAAAFLJAAAAUhkAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlS5wEAAK8FAABzFAAAAAADDAEHAQwBBAEJAQwBCQEMAhABYwIAAAACAAAAAgAAAEMAAABzQgAAAHwBAHwAAF8AAGQBAHwBABV8AABfAQB8AABqAgBkAgBrAgByMQBkAwB8AABfAwBuDQB8AQBkBAAVfAAAXwMAZAUAUygGAAAAcysAAABIZWxwZXIgZnVuY3Rpb24gZm9yIGRlZ3JlZXMoKSBhbmQgcmFkaWFucygpaWgBAABSlQAAAGkAAAAAZwAAAAAAABBATigEAAAAUv0BAAB0DQAAAF9kZWdyZWVzUGVyQVVSxwEAAFL2AQAAKAIAAABSyQAAAHQKAAAAZnVsbGNpcmNsZSgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weXQQAAAAX3NldERlZ3JlZXNQZXJBVb4FAABzCgAAAAACCQENAQ8BDAJnAAAAAACAdkBjAgAAAAIAAAACAAAAQwAAAHMRAAAAfAAAagAAfAEAgwEAAWQBAFMoAgAAAHM+AgAAIFNldCBhbmdsZSBtZWFzdXJlbWVudCB1bml0cyB0byBkZWdyZWVzLgoKICAgICAgICBPcHRpb25hbCBhcmd1bWVudDoKICAgICAgICBmdWxsY2lyY2xlIC0gIGEgbnVtYmVyCgogICAgICAgIFNldCBhbmdsZSBtZWFzdXJlbWVudCB1bml0cywgaS4gZS4gc2V0IG51bWJlcgogICAgICAgIG9mICdkZWdyZWVzJyBmb3IgYSBmdWxsIGNpcmNsZS4gRGFmYXVsdCB2YWx1ZSBpcwogICAgICAgIDM2MCBkZWdyZWVzLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLmxlZnQoOTApCiAgICAgICAgPj4+IHR1cnRsZS5oZWFkaW5nKCkKICAgICAgICA5MAoKICAgICAgICBDaGFuZ2UgYW5nbGUgbWVhc3VyZW1lbnQgdW5pdCB0byBncmFkIChhbHNvIGtub3duIGFzIGdvbiwKICAgICAgICBncmFkZSwgb3IgZ3JhZGlhbiBhbmQgZXF1YWxzIDEvMTAwLXRoIG9mIHRoZSByaWdodCBhbmdsZS4pCiAgICAgICAgPj4+IHR1cnRsZS5kZWdyZWVzKDQwMC4wKQogICAgICAgID4+PiB0dXJ0bGUuaGVhZGluZygpCiAgICAgICAgMTAwCgogICAgICAgIE4oAQAAAFIAAgAAKAIAAABSyQAAAFL/AQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UjMAAADHBQAAcwIAAAAAFmMBAAAAAQAAAAMAAABDAAAAcxgAAAB8AABqAABkAQB0AQBqAgAUgwEAAWQCAFMoAwAAAHMAAQAAIFNldCB0aGUgYW5nbGUgbWVhc3VyZW1lbnQgdW5pdHMgdG8gcmFkaWFucy4KCiAgICAgICAgTm8gYXJndW1lbnRzLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLmhlYWRpbmcoKQogICAgICAgIDkwCiAgICAgICAgPj4+IHR1cnRsZS5yYWRpYW5zKCkKICAgICAgICA+Pj4gdHVydGxlLmhlYWRpbmcoKQogICAgICAgIDEuNTcwNzk2MzI2Nzk0ODk2NgogICAgICAgIGkCAAAATigDAAAAUgACAABS0gAAAFKJAAAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJWAAAA3wUAAHMCAAAAAAxjAgAAAAMAAAADAAAAQwAAAHMlAAAAfAAAagAAfAAAagEAfAEAFBd9AgB8AABqAgB8AgCDAQABZAEAUygCAAAAcykAAABtb3ZlIHR1cnRsZSBmb3J3YXJkIGJ5IHNwZWNpZmllZCBkaXN0YW5jZU4oAwAAAFL6AQAAUvwBAAB0BQAAAF9nb3RvKAMAAABSyQAAAFI0AAAAdAQAAABlbmRlKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5dAMAAABfZ2/tBQAAcwQAAAAAAhQBYwIAAAACAAAAAgAAAEMAAABzJgAAAHwBAHwAAGoAADl9AQB8AABqAQBqAgB8AQCDAQB8AABfAQBkAQBTKAIAAABzPQAAAFR1cm4gdHVydGxlIGNvdW50ZXJjbG9ja3dpc2UgYnkgc3BlY2lmaWVkIGFuZ2xlIGlmIGFuZ2xlID4gMC5OKAMAAABS/gEAAFL8AQAAUtcAAAAoAgAAAFLJAAAAUtMAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0BwAAAF9yb3RhdGXyBQAAcwQAAAAAAg0BYwIAAAACAAAAAgAAAEMAAABzDQAAAHwBAHwAAF8AAGQBAFMoAgAAAHMcAAAAbW92ZSB0dXJ0bGUgdG8gcG9zaXRpb24gZW5kLk4oAQAAAFL6AQAAKAIAAABSyQAAAHQDAAAAZW5kKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UgECAAD3BQAAcwIAAAAAAmMCAAAAAgAAAAIAAABDAAAAcxEAAAB8AABqAAB8AQCDAQABZAEAUygCAAAAcxgCAABNb3ZlIHRoZSB0dXJ0bGUgZm9yd2FyZCBieSB0aGUgc3BlY2lmaWVkIGRpc3RhbmNlLgoKICAgICAgICBBbGlhc2VzOiBmb3J3YXJkIHwg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Y2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSSAAAADsGAABzAgAAAAATYwEAAAABAAAAAQAAAEMAAABzBwAAAHwAAGoAAFMoAQAAAHPmAAAAUmV0dXJuIHRoZSB0dXJ0bGUncyBjdXJyZW50IGxvY2F0aW9uICh4LHkpLCBhcyBhIFZlYzJELXZlY3Rvci4KCiAgICAgICAgQWxpYXNlczogcG9zIHwgcG9zaXRpb24KCiAgICAgICAgTm8gYXJndW1lbnRzLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLnBvcygpCiAgICAgICAgKDAuMDAsIDI0MC4wMCkKICAgICAgICAoAQAAAFL6AQAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJTAAAAUAYAAHMCAAAAAAtjAQAAAAEAAAACAAAAQwAAAHMLAAAAfAAAagAAZAEAGVMoAgAAAHP2AAAAIFJldHVybiB0aGUgdHVydGxlJ3MgeCBjb29yZGluYXRlLgoKICAgICAgICBObyBhcmd1bWVudHMuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiByZXNldCgpCiAgICAgICAgPj4+IHR1cnRsZS5sZWZ0KDYwKQogICAgICAgID4+PiB0dXJ0bGUuZm9yd2FyZCgxMDApCiAgICAgICAgPj4+IHByaW50IHR1cnRsZS54Y29yKCkKICAgICAgICA1MC4wCiAgICAgICAgaQAAAAAoAQAAAFL6AQAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5z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AGoQAHwGAIMBAAFxYQFXfAAAahAAfAcAC4MBAAF8BABkCgBrAgByzAF8AABqDgB8CQB8CgCDAgABbgAAfAAAagQAfAQAgwEAAXwAAGoAAHLxAXQTAHwAAGoAAF8DAG4AAGQLAFMoDAAAAHPrBAAAIERyYXcgYSBjaXJjbGUgd2l0aCBnaXZlbiByYWRpdXMuCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICByYWRpdXMgLS0gYSBudW1iZXIKICAgICAgICBleHRlbnQgKG9wdGlvbmFsKSAtLSBhIG51bWJlcgogICAgICAgIHN0ZXBzIChvcHRpb25hbCkgLS0gYW4gaW50ZWdlcgoKICAgICAgICBEcmF3IGEgY2lyY2xlIHdpdGggZ2l2ZW4gcmFkaXVzLiBUaGUgY2VudGVyIGlzIHJhZGl1cyB1bml0cyBsZWZ0CiAgICAgICAgb2YgdGhlIHR1cnRsZTsgZXh0ZW50IC0gYW4gYW5nbGUgLSBkZXRlcm1pbmVzIHdoaWNoIHBhcnQgb2YgdGhlCiAgICAgICAgY2lyY2xlIGlzIGRyYXduLiBJZiBleHRlbnQgaXMgbm90IGdpdmVuLCBkcmF3IHRoZSBlbnRpcmUgY2lyY2xlLgogICAgICAgIElmIGV4dGVudCBpcyBub3QgYSBmdWxsIGNpcmNsZSwgb25lIGVuZHBvaW50IG9mIHRoZSBhcmMgaXMgdGhlCiAgICAgICAgY3VycmVudCBwZW4gcG9zaXRpb24uIERyYXcgdGhlIGFyYyBpbiBjb3VudGVyY2xvY2t3aXNlIGRpcmVjdGlvbgogICAgICAgIGlmIHJhZGl1cyBpcyBwb3NpdGl2ZSwgb3RoZXJ3aXNlIGluIGNsb2Nrd2lzZSBkaXJlY3Rpb24uIEZpbmFsbHkKICAgICAgICB0aGUgZGlyZWN0aW9uIG9mIHRoZSB0dXJ0bGUgaXMgY2hhbmdlZCBieSB0aGUgYW1vdW50IG9mIGV4dGVudC4KCiAgICAgICAgQXMgdGhlIGNpcmNsZSBpcyBhcHByb3hpbWF0ZWQgYnkgYW4gaW5zY3JpYmVkIHJlZ3VsYXIgcG9seWdvbiwKICAgICAgICBzdGVwcyBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc3RlcHMgdG8gdXNlLiBJZiBub3QgZ2l2ZW4sCiAgICAgICAgaXQgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkuIE1heWJlIHVzZWQgdG8gZHJhdyByZWd1bGFyCiAgICAgICAgcG9seWdvbnMuCgogICAgICAgIGNhbGw6IGNpcmNsZShyYWRpdXMpICAgICAgICAgICAgICAgICAgIyBmdWxsIGNpcmNsZQogICAgICAgIC0tb3I6IGNpcmNsZShyYWRpdXMsIGV4dGVudCkgICAgICAgICAgIyBhcmMKICAgICAgICAtLW9yOiBjaXJjbGUocmFkaXVzLCBleHRlbnQsIHN0ZXBzKQogICAgICAgIC0tb3I6IGNpcmNsZShyYWRpdXMsIHN0ZXBzPTYpICAgICAgICAgIyA2LXNpZGVkIHBvbHlnb24KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5jaXJjbGUoNTApCiAgICAgICAgPj4+IHR1cnRsZS5jaXJjbGUoMTIwLCAxODApICAjIHNlbWljaXJjbGUKICAgICAgICB0AwAAAHNlcWkBAAAAaQsAAABnAAAAAAAAGEBnAAAAAACATUBnAAAAAAAA8D9nAAAAAAAA4D9nAAAAAAAAAEBnAAAAAACAZkBpAAAAAE4oFAAAAFL5AQAAUrwBAABSpQAAAFK7AQAAUmYAAABSpwAAAFL9AQAAUgYCAABSsAAAAHQDAAAAbWluUtIAAABSiwAAAFKJAAAAUv4BAABSIwAAAFJpAQAAUgQCAABSmAEAAFIDAgAAUqYAAAAoDAAAAFLJAAAAdAYAAAByYWRpdXN0BgAAAGV4dGVudHQFAAAAc3RlcHNSZgAAAHQEAAAAZnJhY1JQAQAAdAIAAAB3MnQBAAAAbHQCAAAAdHJ0AgAAAGRsUpoBAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSLQAAAD0HAABzPgAAAAAeCQETAQ8BDAEMAQwBDAETAS4BDgEKASkBDAEaAQwBDAEMARMCDQENARMBDQENAQ0BEQEOAQwBEwENAQkBYwIAAAACAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHMvAAAAZHVtbXkgbWV0aG9kIC0gdG8gYmUgb3ZlcndyaXR0ZW4gYnkgY2hpbGQgY2xhc3NOKAAAAAAoAgAAAFLJAAAAUtYAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSZgAAAH4HAABzAAAAAGMDAAAAAwAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzLwAAAGR1bW15IG1ldGhvZCAtIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGNoaWxkIGNsYXNzTigAAAAAKAMAAABSyQAAAHQBAAAAYVLiAQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiMAAACABwAAcwAAAABjAgAAAAIAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAcy8AAABkdW1teSBtZXRob2QgLSB0byBiZSBvdmVyd3JpdHRlbiBieSBjaGlsZCBjbGFzc04oAAAAACgCAAAAUskAAABS6AEAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJpAQAAggcAAHMAAAAATiguAAAAUtoAAABS2wAAAFLcAAAAUg0AAABS+wEAAHQMAAAAREVGQVVMVF9NT0RFUvUBAABS9wEAAFIOAQAAUlgAAABSpwAAAFLn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ICJub3Jlc2l6ZSIKCiAgICAgICAgRGlmZmVyZW50IHJlc2l6ZW1vZGVzIGhhdmUgdGhlIGZvbGxvd2luZyBlZmZlY3RzOgogICAgICAgICAgLSAiYXV0byIgYWRhcHRzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSB0dXJ0bGUKICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZhbHVlIG9mIHBlbnNpemUuCiAgICAgICAgICAtICJ1c2VyIiBhZGFwdHMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHR1cnRsZSBhY2NvcmRpbmcgdG8gdGhlCiAgICAgICAgICAgICAgICAgICB2YWx1ZXMgb2Ygc3RyZXRjaGZhY3RvciBhbmQgb3V0bGluZXdpZHRoIChvdXRsaW5lKSwKICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBzZXQgYnkgc2hhcGVzaXplKCkKICAgICAgICAgIC0gIm5vcmVzaXplIiBubyBhZGFwdGlvbiBvZiB0aGUgdHVydGxlJ3MgYXBwZWFyYW5jZSB0YWtlcyBwbGFjZS4KICAgICAgICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJuIGN1cnJlbnQgcmVzaXplbW9kZS4KICAgICAgICByZXNpemVtb2RlKCJ1c2VyIikgaXMgY2FsbGVkIGJ5IGEgY2FsbCBvZiBzaGFwZXNpemUgd2l0aCBhcmd1bWVudHMuCgoKICAgICAgICBFeGFtcGxlcyAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5yZXNpemVtb2RlKCJub3Jlc2l6ZSIpCiAgICAgICAgPj4+IHR1cnRsZS5yZXNpemVtb2RlKCkKICAgICAgICAnbm9yZXNpemUnCiAgICAgICAgdAQAAABhdXRvdAQAAAB1c2VyUpkAAABSWQAAAE4oAwAAAFIiAgAAUiMCAABSmQAAACgEAAAAUqcAAABSFwIAAFKwAQAAUk4AAAAoAgAAAFLJAAAAdAUAAABybW9kZSgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJZAAAApgcAAHMKAAAAABYMAQcBDAEMAWMCAAAAAgAAAAMAAABDAAAAcycAAAB8AQBkAgBrCAByEwB8AABqAQBTfAAAagIAZAEAfAEAgwABAWQCAFMoAwAAAHMhAgAAU2V0IG9yIHJldHVybiB0aGUgbGluZSB0aGlja25lc3MuCgogICAgICAgIEFsaWFzZXM6ICBwZW5zaXplIHwgd2lkdGgKCiAgICAgICAgQXJndW1lbnQ6CiAgICAgICAgd2lkdGggLS0gcG9zaXRpdmUgbnVtYmVyCgogICAgICAgIFNldCB0aGUgbGluZSB0aGlja25lc3MgdG8gd2lkdGggb3IgcmV0dXJuIGl0LiBJZiByZXNpemVtb2RlIGlzIHNldAogICAgICAgIHRvICJhdXRvIiBhbmQgdHVydGxlc2hhcGUgaXMgYSBwb2x5Z29uLCB0aGF0IHBvbHlnb24gaXMgZHJhd24gd2l0aAogICAgICAgIHRoZSBzYW1lIGxpbmUgdGhpY2tuZXNzLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgY3VycmVudCBwZW5zaXplCiAgICAgICAgaXMgcmV0dXJuZWQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUucGVuc2l6ZSgpCiAgICAgICAgMQogICAgICAgID4+PiB0dXJ0bGUucGVuc2l6ZSgxMCkgICAjIGZyb20gaGVyZSBvbiBsaW5lcyBvZiB3aWR0aCAxMCBhcmUgZHJhd24KICAgICAgICBSUQAAAE4oAwAAAFKnAAAAUhkCAABSTgAAACgCAAAAUskAAABScAAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJRAAAAwgcAAHMG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AQwBDwEMAQ0BDwEPARkCYwEAAAADAAAAAwAAAEcAAABzTwAAAHwBAHI7AHwAAGoAAHwBAIMBAH0CAHwCAHwAAGoBAGsCAHIoAGQBAFN8AABqAgBkAgB8AgCDAAEBbhAAfAAAagMAfAAAagEAgwEAU2QBAFMoAwAAAHNaBAAAIFJldHVybiBvciBzZXQgdGhlIHBlbmNvbG9yLgoKICAgICAgICBBcmd1bWVudHM6CiAgICAgICAgRm91ciBpbnB1dCBmb3JtYXRzIGFyZSBhbGxvd2VkOgogICAgICAgICAgLSBwZW5jb2xvcigpCiAgICAgICAgICAgIFJldHVybiB0aGUgY3VycmVudCBwZW5jb2xvciBhcyBjb2xvciBzcGVjaWZpY2F0aW9uIHN0cmluZywKICAgICAgICAgICAgcG9zc2libHkgaW4gaGV4LW51bWJlciBmb3JtYXQgKHNlZSBleGFtcGxlKS4KICAgICAgICAgICAgTWF5IGJlIHVzZWQgYXMgaW5wdXQgdG8gYW5vdGhlciBjb2xvci9wZW5jb2xvci9maWxsY29sb3IgY2FsbC4KICAgICAgICAgIC0gcGVuY29sb3IoY29sb3JzdHJpbmcpCiAgICAgICAgICAgIHMgaXMgYSBUayBjb2xvciBzcGVjaWZpY2F0aW9uIHN0cmluZywgc3VjaCBhcyAicmVkIiBvciAieWVsbG93IgogICAgICAgICAgLSBwZW5jb2xvcigociwgZywgYikpCiAgICAgICAgICAgICphIHR1cGxlKiBvZiByLCBnLCBhbmQgYiwgd2hpY2ggcmVwcmVzZW50LCBhbiBSR0IgY29sb3IsCiAgICAgICAgICAgIGFuZCBlYWNoIG9mIHIsIGcsIGFuZCBiIGFyZSBpbiB0aGUgcmFuZ2UgMC4uY29sb3Jtb2RlLAogICAgICAgICAgICB3aGVyZSBjb2xvcm1vZGUgaXMgZWl0aGVyIDEuMCBvciAyNTUKICAgICAgICAgIC0gcGVuY29sb3IociwgZywgYikKICAgICAgICAgICAgciwgZywgYW5kIGIgcmVwcmVzZW50IGFuIFJHQiBjb2xvciwgYW5kIGVhY2ggb2YgciwgZywgYW5kIGIKICAgICAgICAgICAgYXJlIGluIHRoZSByYW5nZSAwLi5jb2xvcm1vZGUKCiAgICAgICAgSWYgdHVydGxlc2hhcGUgaXMgYSBwb2x5Z29uLCB0aGUgb3V0bGluZSBvZiB0aGF0IHBvbHlnb24gaXMgZHJhd24KICAgICAgICB3aXRoIHRoZSBuZXdseSBzZXQgcGVuY29sb3IuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUucGVuY29sb3IoJ2Jyb3duJykKICAgICAgICA+Pj4gdHVwID0gKDAuMiwgMC44LCAwLjU1KQogICAgICAgID4+PiB0dXJ0bGUucGVuY29sb3IodHVwKQogICAgICAgID4+PiB0dXJ0bGUucGVuY29sb3IoKQogICAgICAgICcjMzNjYzhjJwogICAgICAgIE5STwAAACgEAAAAUuMBAABSGwIAAFJOAAAAUuUBAAAoAwAAAFLJAAAAUi4BAABSMgAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJPAAAAWAgAAHMMAAAAAB0GAQ8BDwEEARMCYwEAAAADAAAAAwAAAEcAAABzTwAAAHwBAHI7AHwAAGoAAHwBAIMBAH0CAHwCAHwAAGoBAGsCAHIoAGQBAFN8AABqAgBkAgB8AgCDAAEBbhAAfAAAagMAfAAAagEAgwEAU2QBAFMoAwAAAHNdBAAAIFJldHVybiBvciBzZXQgdGhlIGZpbGxjb2xvci4KCiAgICAgICAgQXJndW1lbnRzOgogICAgICAgIEZvdXIgaW5wdXQgZm9ybWF0cyBhcmUgYWxsb3dlZDoKICAgICAgICAgIC0gZmlsbGNvbG9yKCkKICAgICAgICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGZpbGxjb2xvciBhcyBjb2xvciBzcGVjaWZpY2F0aW9uIHN0cmluZywKICAgICAgICAgICAgcG9zc2libHkgaW4gaGV4LW51bWJlciBmb3JtYXQgKHNlZSBleGFtcGxlKS4KICAgICAgICAgICAgTWF5IGJlIHVzZWQgYXMgaW5wdXQgdG8gYW5vdGhlciBjb2xvci9wZW5jb2xvci9maWxsY29sb3IgY2FsbC4KICAgICAgICAgIC0gZmlsbGNvbG9yKGNvbG9yc3RyaW5nKQogICAgICAgICAgICBzIGlzIGEgVGsgY29sb3Igc3BlY2lmaWNhdGlvbiBzdHJpbmcsIHN1Y2ggYXMgInJlZCIgb3IgInllbGxvdyIKICAgICAgICAgIC0gZmlsbGNvbG9yKChyLCBnLCBiKSkKICAgICAgICAgICAgKmEgdHVwbGUqIG9mIHIsIGcsIGFuZCBiLCB3aGljaCByZXByZXNlbnQsIGFuIFJHQiBjb2xvciwKICAgICAgICAgICAgYW5kIGVhY2ggb2YgciwgZywgYW5kIGIgYXJlIGluIHRoZSByYW5nZSAwLi5jb2xvcm1vZGUsCiAgICAgICAgICAgIHdoZXJlIGNvbG9ybW9kZSBpcyBlaXRoZXIgMS4wIG9yIDI1NQogICAgICAgICAgLSBmaWxsY29sb3IociwgZywgYikKICAgICAgICAgICAgciwgZywgYW5kIGIgcmVwcmVzZW50IGFuIFJHQiBjb2xvciwgYW5kIGVhY2ggb2YgciwgZywgYW5kIGIKICAgICAgICAgICAgYXJlIGluIHRoZSByYW5nZSAwLi5jb2xvcm1vZGUKCiAgICAgICAgSWYgdHVydGxlc2hhcGUgaXMgYSBwb2x5Z29uLCB0aGUgaW50ZXJpb3Igb2YgdGhhdCBwb2x5Z29uIGlzIGRyYXduCiAgICAgICAgd2l0aCB0aGUgbmV3bHkgc2V0IGZpbGxjb2xvci4KCiAgICAgICAgRXhhbXBsZSAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5maWxsY29sb3IoJ3Zpb2xldCcpCiAgICAgICAgPj4+IGNvbCA9IHR1cnRsZS5wZW5jb2xvcigpCiAgICAgICAgPj4+IHR1cnRsZS5maWxsY29sb3IoY29sKQogICAgICAgID4+PiB0dXJ0bGUuZmlsbGNvbG9yKDAsIC41LCAwKQogICAgICAgIE5SOwAAACgEAAAAUuMBAABSHAIAAFJOAAAAUuUBAAAoAwAAAFLJAAAAUi4BAABSMgAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVI7AAAAfQgAAHMMAAAAABwGAQ8BDwEEARMCYwEAAAABAAAAAwAAAEMAAABzFAAAAHwAAGoAAGQBAHQBAIMAAQFkAgBTKAMAAABz0QAAAE1ha2VzIHRoZSB0dXJ0bGUgdmlzaWJsZS4KCiAgICAgICAgQWxpYXNlczogc2hvd3R1cnRsZSB8IHN0CgogICAgICAgIE5vIGFyZ3VtZW50LgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLmhpZGV0dXJ0bGUoKQogICAgICAgID4+PiB0dXJ0bGUuc2hvd3R1cnRsZSgpCiAgICAgICAgdAUAAABzaG93bk4oAgAAAFJOAAAAUqUAAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UmUAAAChCAAAcwIAAAAAC2MBAAAAAQAAAAMAAABDAAAAcxQAAAB8AABqAABkAQB0AQCDAAEBZAIAUygDAAAAc1kBAABNYWtlcyB0aGUgdHVydGxlIGludmlzaWJsZS4KCiAgICAgICAgQWxpYXNlczogaGlkZXR1cnRsZSB8IGh0CgogICAgICAgIE5vIGFyZ3VtZW50LgoKICAgICAgICBJdCdzIGEgZ29vZCBpZGVhIHRvIGRvIHRoaXMgd2hpbGUgeW91J3JlIGluIHRoZQogICAgICAgIG1pZGRsZSBvZiBhIGNvbXBsaWNhdGVkIGRyYXdpbmcsIGJlY2F1c2UgaGlkaW5nCiAgICAgICAgdGhl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IHRoZSBiZWxvdwogICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGtleXMgYXMga2V5d29yZHMuCgogICAgICAgIFJldHVybiBvciBzZXQgdGhlIHBlbidzIGF0dHJpYnV0ZXMgaW4gYSAncGVuLWRpY3Rpb25hcnknCiAgICAgICAgd2l0aCB0aGUgZm9sbG93aW5nIGtleS92YWx1ZSBwYWlyczoKICAgICAgICAgICAic2hvd24iICAgICAgOiAgIFRydWUvRmFsc2UKICAgICAgICAgICAicGVuZG93biIgICAgOiAgIFRydWUvRmFsc2UKICAgICAgICAgICAicGVuY29sb3IiICAgOiAgIGNvbG9yLXN0cmluZyBvciBjb2xvci10dXBsZQogICAgICAgICAgICJmaWxsY29sb3IiICA6ICAgY29sb3Itc3RyaW5nIG9yIGNvbG9yLXR1cGxlCiAgICAgICAgICAgInBlbnNpemUiICAgIDogICBwb3NpdGl2ZSBudW1iZXIKICAgICAgICAgICAic3BlZWQiICAgICAgOiAgIG51bWJlciBpbiByYW5nZSAwLi4xMAogICAgICAgICAgICJyZXNpemVtb2RlIiA6ICAgImF1dG8iIG9yICJ1c2VyIiBvciAibm9yZXNpemUiCiAgICAgICAgICAgInN0cmV0Y2hmYWN0b3IiOiAocG9zaXRpdmUgbnVtYmVyLCBwb3NpdGl2ZSBudW1iZXIpCiAgICAgICAgICAgIm91dGxpbmUiICAgIDogICBwb3NpdGl2ZSBudW1iZXIKICAgICAgICAgICAidGlsdCIgICAgICAgOiAgIG51bWJlcgoKICAgICAgICBUaGlzIGRpY3Rpb25hcnkgY2FuIGJlIHVzZWQgYXMgYXJndW1lbnQgZm9yIGEgc3Vic2VxdWVudAogICAgICAgIHBlbigpLWNhbGwgdG8gcmVzdG9yZSB0aGUgZm9ybWVyIHBlbi1zdGF0ZS4gTW9yZW92ZXIgb25lCiAgICAgICAgb3IgbW9yZSBvZiB0aGVzZSBhdHRyaWJ1dGVzIGNhbiBiZSBwcm92aWRlZCBhcyBrZXl3b3JkLWFyZ3VtZW50cy4KICAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIHNldCBzZXZlcmFsIHBlbiBhdHRyaWJ1dGVzIGluIG9uZSBzdGF0ZW1lbnQuCgoKICAgICAgICBFeGFtcGxlcyAoZm9yIGEgVHVydGxlIGluc3RhbmNlIG5hbWVkIHR1cnRsZSk6CiAgICAgICAgPj4+IHR1cnRsZS5wZW4oZmlsbGNvbG9yPSJibGFjayIsIHBlbmNvbG9yPSJyZWQiLCBwZW5zaXplPTEwKQogICAgICAgID4+PiB0dXJ0bGUucGVuKCkKICAgICAgICB7J3BlbnNpemUnOiAxMCwgJ3Nob3duJzogVHJ1ZSwgJ3Jlc2l6ZW1vZGUnOiAnYXV0bycsICdvdXRsaW5lJzogMSwKICAgICAgICAncGVuY29sb3InOiAncmVkJywgJ3BlbmRvd24nOiBUcnVlLCAnZmlsbGNvbG9yJzogJ2JsYWNrJywKICAgICAgICAnc3RyZXRjaGZhY3Rvcic6ICgxLDEpLCAnc3BlZWQnOiAzfQogICAgICAgID4+PiBwZW5zdGF0ZT10dXJ0bGUucGVuKCkKICAgICAgICA+Pj4gdHVydGxlLmNvbG9yKCJ5ZWxsb3ciLCIiKQogICAgICAgID4+PiB0dXJ0bGUucGVudXAoKQogICAgICAgID4+PiB0dXJ0bGUucGVuKCkKICAgICAgICB7J3BlbnNpemUnOiAxMCwgJ3Nob3duJzogVHJ1ZSwgJ3Jlc2l6ZW1vZGUnOiAnYXV0bycsICdvdXRsaW5lJzogMSwKICAgICAgICAncGVuY29sb3InOiAneWVsbG93JywgJ3BlbmRvd24nOiBGYWxzZSwgJ2ZpbGxjb2xvcic6ICcnLAogICAgICAgICdzdHJldGNoZmFjdG9yJzogKDEsMSksICdzcGVlZCc6IDN9CiAgICAgICAgPj4+IHAucGVuKHBlbnN0YXRlLCBmaWxsY29sb3I9ImdyZWVuIikKICAgICAgICA+Pj4gcC5wZW4oKQogICAgICAgIHsncGVuc2l6ZSc6IDEwLCAnc2hvd24nOiBUcnVlLCAncmVzaXplbW9kZSc6ICdhdXRvJywgJ291dGxpbmUnOiAxLAogICAgICAgICdwZW5jb2xvcic6ICdyZWQnLCAncGVuZG93bic6IFRydWUsICdmaWxsY29sb3InOiAnZ3JlZW4nLAogICAgICAgICdzdHJldGNoZmFjdG9yJzogKDEsMSksICdzcGVlZCc6IDN9CiAgICAgICAgUi0CAABSUAAAAFJPAAAAUjsAAABSUQAAAFJmAAAAUlkAAAB0DQAAAHN0cmV0Y2hmYWN0b3JSUgEAAFJpAAAAUk4AAABOKBcAAABSGgIAAFIdAgAAUhsCAABSHAIAAFIZAgAAUh4CAABSFwIAAFIfAgAAUiECAABSIAIAAFLMAAAAdAQAAABkaWN0UiUAAABS+QEAAFK8AQAAUqYAAABSpQAAAFLEAAAAUuMBAAB0CAAAAF9uZXdMaW5lUrAAAABSrwAAAFJnAQAAKAkAAABSyQAAAFJOAAAAdAcAAABwZW5kaWN0dAMAAABfcGR0AQAAAHB0BgAAAF9wX2J1ZlK2AAAAdAcAAABuZXdMaW5ldAIAAABzZigAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJOAAAAyggAAHN6AAAAAC4NAQoBCgEKAQoBCgEKAQoBCgENAwwBBAIPAQkCBgENAgYBDQESAgkBGQIGAQwBEwEMAQwBEwEdARMBDAEMARMBDAEGAQ0BDAEQAQwBEAEMARABDAETAR0BEAEMARABDAEQAQwBCgEVAQ8BDAEMARABDAEQAQwBEAFjAgAAAAIAAAABAAAAQwAAAHMEAAAAZAEAUygCAAAAcy8AAABkdW1teSBtZXRob2QgLSB0byBiZSBvdmVyd3JpdHRlbiBieSBjaGlsZCBjbGFzc04oAAAAACgCAAAAUskAAAB0BgAAAHVzZVBvcygAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIwAgAAPwkAAHMAAAAAYwMAAAADAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHMvAAAAZHVtbXkgbWV0aG9kIC0gdG8gYmUgb3ZlcndyaXR0ZW4gYnkgY2hpbGQgY2xhc3NOKAAAAAAoAwAAAFLJAAAAUr4BAAB0BgAAAGZvcmNlZCgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVJnAQAAQQkAAHMAAAAAYwIAAAACAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAHMvAAAAZHVtbXkgbWV0aG9kIC0gdG8gYmUgb3ZlcndyaXR0ZW4gYnkgY2hpbGQgY2xhc3NOKAAAAAAoAgAAAFLJAAAAUi4BAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlS5QEAAEMJAABzAAAAAGMCAAAAAgAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABzLwAAAGR1bW15IG1ldGhvZCAtIHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGNoaWxkIGNsYXNzTigAAAAAKAIAAABSyQAAAFIuAQAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UuMBAABFCQAAcwAAAABOKCEAAABS2gAAAFLbAAAAUtwAAABSvAAAAFIOAQAAUhgCAABSpwAAAFJZAAAAUlEAAABSUgAAAFJQAAAAUkYAAABSZgAAAFIyAAAAUk8AAABSOwAAAFJlAAAAUkMAAABSRwAAAFJOAAAAUqUAAABSMAIAAFKmAAAAUmcBAABS5QEAAFLjAQAAUnAAAABSbwAAAFJVAAAAUk0AAABSNgAAAFJnAAAAUkUAAAAoAAAAACgAAAAAKAAA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IG91dGxpbmUgIDogcG9zaXRpdmUgbnVtYmVyCgogICAgICAgIFJldHVybiBvciBzZXQgdGhlIHBlbidzIGF0dHJpYnV0ZXMgeC95LXN0cmV0Y2hmYWN0b3JzIGFuZC9vciBvdXRsaW5lLgogICAgICAgIFNldCByZXNpemVtb2RlIHRvICJ1c2VyIi4KICAgICAgICBJZiBhbmQgb25seSBpZiByZXNpemVtb2RlIGlzIHNldCB0byAidXNlciIsIHRoZSB0dXJ0bGUgd2lsbCBiZSBkaXNwbGF5ZWQKICAgICAgICBzdHJldGNoZWQgYWNjb3JkaW5nIHRvIGl0cyBzdHJldGNoZmFjdG9yczoKICAgICAgICBzdHJldGNoX3dpZCBpcyBzdHJldGNoZmFjdG9yIHBlcnBlbmRpY3VsYXIgdG8gb3JpZW50YXRpb24KICAgICAgICBzdHJldGNoX2xlbiBpcyBzdHJldGNoZmFjdG9yIGluIGRpcmVjdGlvbiBvZiB0dXJ0bGVzIG9yaWVudGF0aW9uLgogICAgICAgIG91dGxpbmUgZGV0ZXJtaW5lcyB0aGUgd2lkdGggb2YgdGhlIHNoYXBlcydzIG91dGxpbmUuCgogICAgICAgIEV4YW1wbGVzIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLnJlc2l6ZW1vZGUoInVzZXIiKQogICAgICAgID4+PiB0dXJ0bGUuc2hhcGVzaXplKDUsIDUsIDEyKQogICAgICAgID4+PiB0dXJ0bGUuc2hhcGVzaXplKG91dGxpbmU9OCkKICAgICAgICBpAAAAAFJZAAAAUiMCAABSLgIAAFJSAQAATigEAAAAUqcAAABSHwIAAFIhAgAAUk4AAAAoBQAAAFLJAAAAdAsAAABzdHJldGNoX3dpZHQLAAAAc3RyZXRjaF9sZW5SUgEAAFIuAgAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UmQAAAB8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ZGluZyB0aGUgdmVydGljZXMgb2YgYSBwb2x5Z29uLiBDdXJyZW50IHR1cnRsZSBwb3NpdGlvbgogICAgICAgIGlzIGZpcnN0IHBvaW50IG9mIHBvbHlnb24uCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiB0dXJ0bGUuYmVnaW5fcG9seSgpCiAgICAgICAgTigEAAAAUvoBAABSQAIAAFKlAAAAUkECAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UisAAADpDAAAcwQAAAAACw8BYwEAAAABAAAAAgAAAEMAAABzDQAAAHQAAHwAAF8BAGQBAFMoAgAAAHM3AQAAU3RvcCByZWNvcmRpbmcgdGhlIHZlcnRpY2VzIG9mIGEgcG9seWdvbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIFN0b3AgcmVjb3JkaW5nIHRoZSB2ZXJ0aWNlcyBvZiBhIHBvbHlnb24uIEN1cnJlbnQgdHVydGxlIHBvc2l0aW9uIGlzCiAgICAgICAgbGFzdCBwb2ludCBvZiBwb2x5Z29uLiBUaGlzIHdpbGwgYmUgY29ubmVjdGVkIHdpdGggdGhlIGZpcnN0IHBvaW50LgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLmVuZF9wb2x5KCkKICAgICAgICBOKAIAAABSpgAAAFJBAgAAKAEAAABSyQAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVI4AAAA9wwAAHMCAAAAAAtjAQAAAAEAAAACAAAAQwAAAHMgAAAAfAAAagAAZAEAawkAchwAdAIAfAAAagAAgwEAU2QBAFMoAgAAAHPUAAAAUmV0dXJuIHRoZSBsYXN0bHkgcmVjb3JkZWQgcG9seWdvbi4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZSBpbnN0YW5jZSBuYW1lZCB0dXJ0bGUpOgogICAgICAgID4+PiBwID0gdHVydGxlLmdldF9wb2x5KCkKICAgICAgICA+Pj4gdHVydGxlLnJlZ2lzdGVyX3NoYXBlKCJteUZhdm91cml0ZVNoYXBlIiwgcCkKICAgICAgICBOKAMAAABSQAIAAFKnAAAAUsQAAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Uj0AAAAEDQAAcwQAAAAACg8BYwEAAAABAAAAAQAAAEMAAABzBwAAAHwAAGoAAFMoAQAAAHOYAQAAUmV0dXJuIHRoZSBUdXJ0bGVTY3JlZW4gb2JqZWN0LCB0aGUgdHVydGxlIGlzIGRyYXdpbmcgIG9uLgoKICAgICAgICBObyBhcmd1bWVudC4KCiAgICAgICAgUmV0dXJuIHRoZSBUdXJ0bGVTY3JlZW4gb2JqZWN0LCB0aGUgdHVydGxlIGlzIGRyYXdpbmcgIG9uLgogICAgICAgIFNvIFR1cnRsZVNjcmVlbi1tZXRob2RzIGNhbiBiZSBjYWxsZWQgZm9yIHRoYXQgb2JqZWN0LgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHMgPSB0dXJ0bGUuZ2V0c2NyZWVuKCkKICAgICAgICA+Pj4gdHMKICAgICAgICA8dHVydGxlLlR1cnRsZVNjcmVlbiBvYmplY3QgYXQgMHgwMTA2Qjc3MD4KICAgICAgICA+Pj4gdHMuYmdjb2xvcigicGluayIpCiAgICAgICAgKAEAAABSnwAAACgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSPwAAABENAABzAgAAAAAOYwEAAAABAAAAAQAAAEMAAABzBAAAAHwAAFMoAQAAAHNVAQAAUmV0dXJuIHRoZSBUdXJ0bGVvYmplY3QgaXRzZWxmLgoKICAgICAgICBObyBhcmd1bWVudC4KCiAgICAgICAgT25seSByZWFzb25hYmxlIHVzZTogYXMgYSBmdW5jdGlvbiB0byByZXR1cm4gdGhlICdhbm9ueW1vdXMgdHVydGxlJzoKCiAgICAgICAgRXhhbXBsZToKICAgICAgICA+Pj4gcGV0ID0gZ2V0dHVydGxlKCkKICAgICAgICA+Pj4gcGV0LmZkKDUwKQogICAgICAgID4+PiBwZXQKICAgICAgICA8dHVydGxlLlR1cnRsZSBvYmplY3QgYXQgMHgwMTg3RDgxMD4KICAgICAgICA+Pj4gdHVydGxlcygpCiAgICAgICAgWzx0dXJ0bGUuVHVydGxlIG9iamVjdCBhdCAweDAxODdEODEwPl0KICAgICAgICAoAAAAACgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSQAAAACENAABzAgAAAAAPYwEAAAABAAAAAgAAAEMAAABzEQAAAHwAAGoAAGoBAIMAAGQBABlTKAIAAABzsgAAACBSZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgdHVydGxlIHdpbmRvdy4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4ud2luZG93X3dpZHRoKCkKICAgICAgICA2NDAKICAgICAgICBpAAAAACgCAAAAUp8AAABSqQEAACgBAAAAUskAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSJwAAADkNAABzAgAAAAAJYwEAAAABAAAAAgAAAEMAAABzEQAAAHwAAGoAAGoBAIMAAGQBABlTKAIAAABzswAAACBSZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgdHVydGxlIHdpbmRvdy4KCiAgICAgICAgTm8gYXJndW1lbnQuCgogICAgICAgIEV4YW1wbGUgKGZvciBhIFR1cnRsZVNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4ud2luZG93X2hlaWdodCgpCiAgICAgICAgNDgwCiAgICAgICAgaQEAAAAoAgAAAFKfAAAAUqkBAAAoAQAAAFLJAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UiYAAABEDQAAcwIAAAAACWMCAAAAAgAAAAIAAABDAAAAcxAAAAB8AABqAABqAQB8AQCDAQBTKAEAAABzRAAAAFNldCBkZWxheSB2YWx1ZSB3aGljaCBkZXRlcm1pbmVzIHNwZWVkIG9mIHR1cnRsZSBhbmltYXRpb24uCiAgICAgICAgKAIAAABSnwAAAFIUAAAAKAIAAABSyQAAAFIUAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGli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ZSB0dXJucyBmaWxsY29sb3IgcmVkLCB1bmNsaWNraW5nIHR1cm5zIGl0IHRvCiAgICAgICAgdHJhbnNwYXJlbnQuCiAgICAgICAgTigFAAAAUp8AAABShwEAAFKdAAAAUjwCAABSZwEAACgEAAAAUskAAABSgAEAAFLSAQAAUoUBAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSTAAAAGsNAABzBAAAAAAWHwFjBAAAAAQAAAAFAAAAQwAAAHMjAAAAfAAAagAAagEAfAAAagIAagMAfAEAfAIAfAMAgwQAAWQBAFMoAgAAAHOSAgAAQmluZCBmdW4gdG8gbW91c2UtbW92ZSBldmVudCBvbiB0aGlzIHR1cnRsZSBvbiBjYW52YXMuCgogICAgICAgIEFyZ3VtZW50czoKICAgICAgICBmdW4gLS0gYSBmdW5jdGlvbiB3aXRoIHR3byBhcmd1bWVudHMsIHRvIHdoaWNoIHdpbGwgYmUgYXNzaWduZWQKICAgICAgICAgICAgICAgdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBjbGlja2VkIHBvaW50IG9uIHRoZSBjYW52YXMuCiAgICAgICAgbnVtIC0tIG51bWJlciBvZiB0aGUgbW91c2UtYnV0dG9uIGRlZmF1bHRzIHRvIDEgKGxlZnQgbW91c2UgYnV0dG9uKS4KCiAgICAgICAgRXZlcnkgc2VxdWVuY2Ugb2YgbW91c2UtbW92ZS1ldmVudHMgb24gYSB0dXJ0bGUgaXMgcHJlY2VkZWQgYnkgYQogICAgICAgIG1vdXNlLWNsaWNrIGV2ZW50IG9uIHRoYXQgdHVydGxlLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBUdXJ0bGUgaW5zdGFuY2UgbmFtZWQgdHVydGxlKToKICAgICAgICA+Pj4gdHVydGxlLm9uZHJhZyh0dXJ0bGUuZ290bykKCiAgICAgICAgU3Vic2VxdWVudGx5IGNsaWNraW5nIGFuZCBkcmFnZ2luZyBhIFR1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YXJ0aW5nIHBvc2l0aW9uIGluIHBpeGVscyBmcm9tIHRoZSBsZWZ0CiAgICAgICAgICBlZGdlIG9mIHRoZSBzY3JlZW4sIGlmIG5lZ2F0aXZlIGZyb20gdGhlIHJpZ2h0IGVkZ2UKICAgICAgICAgIERlZmF1bHQsIHN0YXJ0eD1Ob25lIGlzIHRvIGNlbnRlciB3aW5kb3cgaG9yaXpvbnRhbGx5LgogICAgICAgIHN0YXJ0eTogaWYgcG9zaXRpdmUsIHN0YXJ0aW5nIHBvc2l0aW9uIGluIHBpeGVscyBmcm9tIHRoZSB0b3AKICAgICAgICAgIGVkZ2Ugb2YgdGhlIHNjcmVlbiwgaWYgbmVnYXRpdmUgZnJvbSB0aGUgYm90dG9tIGVkZ2UKICAgICAgICAgIERlZmF1bHQsIHN0YXJ0eT1Ob25lIGlzIHRvIGNlbnRlciB3aW5kb3cgdmVydGljYWxseS4KCiAgICAgICAgRXhhbXBsZXMgKGZvciBhIFNjcmVlbiBpbnN0YW5jZSBuYW1lZCBzY3JlZW4pOgogICAgICAgID4+PiBzY3JlZW4uc2V0dXAgKHdpZHRoPTIwMCwgaGVpZ2h0PTIwMCwgc3RhcnR4PTAsIHN0YXJ0eT0wKQoKICAgICAgICBzZXRzIHdpbmRvdyB0byAyMDB4MjAwIHBpeGVscywgaW4gdXBwZXIgbGVmdCBvZiBzY3JlZW4KCiAgICAgICAgPj4+IHNjcmVlbi5zZXR1cCh3aWR0aD0uNzUsIGhlaWdodD0wLjUsIHN0YXJ0eD1Ob25lLCBzdGFydHk9Tm9uZSkKCiAgICAgICAgc2V0cyB3aW5kb3cgdG8gNzUlIG9mIHNjcmVlbiBieSA1MCUgb2Ygc2NyZWVuIGFuZCBjZW50ZXJzCiAgICAgICAgUj0BAABOaQAAAABpAQAAAGkCAAAAKAkAAABShwIAAFKRAgAAUkMBAABSRQEAAFLMAAAAUq8AAABSpwAAAFI9AQAAUiUAAAAoBwAAAFLJAAAAUnAAAABSkAAAAFI7AQAAUjwBAABScAEAAHQCAAAAc2goAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44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YWlubG9vcC4KICAgICAgICBJZiBJRExFIHdpdGggLW4gc3dpdGNoIChubyBzdWJwcm9jZXNzKSBpcyB1c2VkLCB0aGlzIHZhbHVlIHNob3VsZCBiZQogICAgICAgIHNldCB0byBUcnVlIGluIHR1cnRsZS5jZmcuIEluIHRoaXMgY2FzZSBJRExFJ3MgbWFpbmxvb3AKICAgICAgICBpcyBhY3RpdmUgYWxzbyBmb3IgdGhlIGNsaWVudCBzY3JpcHQuCgogICAgICAgIFRoaXMgaXMgYSBtZXRob2Qgb2YgdGhlIFNjcmVlbi1jbGFzcyBhbmQgbm90IGF2YWlsYWJsZSBmb3IKICAgICAgICBUdXJ0bGVTY3JlZW4gaW5zdGFuY2VzLgoKICAgICAgICBFeGFtcGxlIChmb3IgYSBTY3JlZW4gaW5zdGFuY2UgbmFtZWQgc2NyZWVuKToKICAgICAgICA+Pj4gc2NyZWVuLmV4aXRvbmNsaWNrKCkKCiAgICAgICAgYwIAAAACAAAAAQAAABMAAABzDgAAAIgAAGoAAIMAAAFkAQBTKAIAAABzJgAAAFNjcmVlbi5ieWUoKSB3aXRoIHR3byBkdW1teS1wYXJhbWV0ZXJzTigBAAAAUhEAAAAoAgAAAFLHAAAAUsgAAAAoAQAAAFLJAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weXQOAAAAZXhpdEdyYWNlZnVsbHldDgAAcwIAAAAAAlKhAAAATmkAAAAAKAUAAABSSgAAAFK8AAAAUnYAAAB0DgAAAEF0dHJpYnV0ZUVycm9ydAQAAABleGl0KAIAAABSyQAAAFKXAgAAKAAAAAAoAQAAAFLJAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSFQAAAEoOAABzEAAAAAATDwMNAQoBBAEDAQsBDQFOKA0AAABS2gAAAFLbAAAAUqcAAABSkQIAAFITAQAAUrwAAABSkgIAAFIOAQAAUiAAAABSIgAAAFKTAgAAUhEAAABSFQAAACgAAAAAKAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5Uj0CAADjDQAAcxQAAAAGAgYBBgEKAgkWDgEXJwkRCQoJCGMAAAAAAAAAAAQAAABCAAAAczgAAABlAABaAQBkAABaAgBkBQBaBABkBQBaBQBlBgBkAQAZZQYAZAIAGWUGAGQDABlkBACEAwBaBwBSUygGAAAAc8AAAABSYXdUdXJ0bGUgYXV0by1jcmVhdGluZyAoc2Nyb2xsZWQpIGNhbnZhcy4KCiAgICBXaGVuIGEgVHVydGxlIG9iamVjdCBpcyBjcmVhdGVkIG9yIGEgZnVuY3Rpb24gZGVyaXZlZCBmcm9tIHNvbWUKICAgIFR1cnRsZSBtZXRob2QgaXMgY2FsbGVkIGEgVHVydGxlU2NyZWVuIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuCiAgICBSYwAAAFKWAAAAUpoAAABjBAAAAAQAAAAJAAAAQwAAAHNHAAAAdAAAagEAZAAAawgAch4AdAMAgwAAdAAAXwEAbgAAdAQAagUAfAAAdAAAagEAZAEAfAEAZAIAfAIAZAMAfAMAgwIDAWQAAFMoBAAAAE5SYwAAAFKWAAAAUpoAAAAoBgAAAFIJAAAAUpACAABSpwAAAFIHAAAAUggAAABSDgEAACgEAAAAUskAAABSYwAAAFKWAAAAUpoAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHlSDgEAAHIOAABzDAAAAAAEDwEPARIBBgEGAU4oCAAAAFLaAAAAUtsAAABS3AAAAFKnAAAAUtEBAABSkAIAAFK8AAAAUg4BAAAoAAAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weVIJAAAAaQ4AAHMMAAAABgUGAQYBBgMHAQcBYwAAAAAAAAAAAgAAAEMAAABzJQAAAHQAAGoBAGQBAGsIAHIeAHQAAIMAAHQAAF8BAG4AAHQAAGoBAFMoAgAAAHM1AAAAQ3JlYXRlIHRoZSAnYW5vbnltb3VzJyB0dXJ0bGUgaWYgbm90IGFscmVhZHkgcHJlc2VudC5OKAMAAABSCQAAAFLRAQAAUqcAAAAoAAAAACgAAAAAKAAAAABzeAAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvbGliLXRrL3R1cnRsZS5weXQHAAAAX2dldHBlbn8OAABzBgAAAAACDwEPAWMAAAAAAAAAAAIAAABDAAAAcyUAAAB0AABqAQBkAQBrCAByHgB0AwCDAAB0AABfAQBuAAB0AABqAQBTKAIAAABzLQAAAENyZWF0ZSBhIFR1cnRsZVNjcmVlbiBpZiBub3QgYWxyZWFkeSBwcmVzZW50Lk4oBAAAAFIJAAAAUpACAABSpwAAAFIHAAAAKAAAAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0CgAAAF9nZXRzY3JlZW6FDgAAcwYAAAAAAg8BDwF0FAAAAHR1cnRsZV9kb2NzdHJpbmdkaWN0YwEAAAAHAAAABQAAAEMAAABzUgEAAGkAAH0BAHgrAHQAAERdIwB9AgBkAQB8AgAXfQMA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AAAATnMDAAAAPSVzKAEAAABSoAIAACgBAAAAUt8BAAAoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0CAAAADxsYW1iZGE+3A4AAHMAAAAAYwIAAAACAAAAAgAAAFMAAABzCAAAAHwAAHwBABdTKAEAAABOKAAAAAAoAgAAAFKKAgAAdAQAAABkZmx0KAAAAAAoAAAAAHN4AAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9saWItdGsvdHVydGxlLnB5UqkCAADeDgAAcwAAAABpBAAAAFIEAAAAaQgAAABzAgAAACoqcwIAAAAsIHMEAAAAKCVzKSgQAAAAUuMAAABS5AAAAHQKAAAATWV0aG9kVHlwZVKkAgAAUuUAAAB0CgAAAExhbWJkYVR5cGV0CQAAAGZ1bmNfY29kZXQLAAAAY29fYXJnY291bnRS3QAAAHQLAAAAY29fdmFybmFtZXN0DQAAAGZ1bmNfZGVmYXVsdHN0AwAAAG1hcFKZAQAAdAgAAABjb19mbGFnc1JVAQAAUgIAAAAoCgAAAHQCAAAAb2J0CAAAAGFyZ1RleHQxdAgAAABhcmdUZXh0MnQDAAAAZm9idAkAAABhcmdPZmZzZXR0BwAAAGNvdW50ZXJ0BgAAAGl0ZW1zMnQIAAAAcmVhbEFyZ3N0CAAAAGRlZmF1bHRzdAYAAABpdGVtczEoAAAAACgAAAAAc3gAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2xpYi10ay90dXJ0bGUucHl0DgAAAGdldG1ldGhwYXJsaXN0yg4AAHM6AAAAAAIKAxUBCQEJAgYBBgIeAQMBDAEZ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