REDROOM
PHP 8.0.30
Path:
Logout
Edit File
Size: 32.11 KB
Close
//opt/alt/python37/lib64/python3.7/site-packages/numpy/matrixlib/__pycache__/defmatrix.cpython-37.pyc
Text
Base64
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c2FtZSBzaGFwZSBhbmQgdHlwZSBhcyBgTWA7CiAgICAgICAgaWYgdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlIG9yIHplcm8gdGhlbiB0aGUgdHlwZSBvZiB0aGUKICAgICAgICBlbGVtZW50cyBpcyB0aGUgc2FtZSBhcyB0aG9zZSBvZiBgTWAuIElmIHRoZSBleHBvbmVudCBpcwogICAgICAgIG5lZ2F0aXZlIHRoZSBlbGVtZW50cyBhcmUgZmxvYXRpbmctcG9pbnQuCgogICAgUmFpc2VzCiAgICAtLS0tLS0KICAgIExpbkFsZ0Vycm9yCiAgICAgICAgSWYgdGhlIG1hdHJpeCBpcyBub3QgbnVtZXJpY2FsbHkgaW52ZXJ0aWJsZS4KCiAgICBTZWUgQWxzbwogICAgLS0tLS0tLS0KICAgIG1hdHJpeAogICAgICAgIFByb3ZpZGVzIGFuIGVxdWl2YWxlbnQgZnVuY3Rpb24gYXMgdGhlIGV4cG9uZW50aWF0aW9uIG9wZXJhdG9yCiAgICAgICAgKGBgKipgYCwgbm90IGBgXmBgKS4KCiAgICBFeGFtcGxlcwogICAgLS0tLS0tLS0KICAgID4+PiBmcm9tIG51bXB5IGltcG9ydCBsaW5hbGcgYXMgTEEKICAgID4+PiBpID0gbnAuYXJyYXkoW1swLCAxXSwgWy0xLCAwXV0pICMgbWF0cml4IGVxdWl2LiBvZiB0aGUgaW1hZ2luYXJ5IHVuaXQKICAgID4+PiBMQS5tYXRyaXhfcG93ZXIoaSwgMykgIyBzaG91bGQgPSAtaQogICAgYXJyYXkoW1sgMCwgLTFdLAogICAgICAgICAgIFsgMSwgIDBdXSkKICAgID4+PiBMQS5tYXRyaXhfcG93ZXIobnAubWF0cml4KGkpLCAzKSAjIG1hdHJpeCBhcmcgcmV0dXJucyBtYXRyaXgKICAgIG1hdHJpeChbWyAwLCAtMV0sCiAgICAgICAgICAgIFsgMSwgIDBdXSkKICAgID4+PiBMQS5tYXRyaXhfcG93ZXIoaSwgMCkKICAgIGFycmF5KFtbMSwgMF0sCiAgICAgICAgICAgWzAsIDFdXSkKICAgID4+PiBMQS5tYXRyaXhfcG93ZXIoaSwgLTMpICMgc2hvdWxkID0gMS8oLWkpID0gaSwgYnV0IHcvIGYucC4gZWxlbWVudHMKICAgIGFycmF5KFtbIDAuLCAgMS5dLAogICAgICAgICAgIFstMS4sICAwLl1dKQoKICAgIFNvbWV3aGF0IG1vcmUgc29waGlzdGljYXRlZCBleGFtcGxlCgogICAgPj4+IHEgPSBucC56ZXJvcygoNCwgNCkpCiAgICA+Pj4gcVswOjIsIDA6Ml0gPSAtaQogICAgPj4+IHFbMjo0LCAyOjRdID0gaQogICAgPj4+IHEgIyBvbmUgb2YgdGhlIHRocmVlIHF1YXRlcm5pb24gdW5pdHMgbm90IGVxdWFsIHRvIDEKICAgIGFycmF5KFtbIDAuLCAtMS4sICAwLiwgIDAuXSwKICAgICAgICAgICBbIDEuLCAgMC4sICAwLiwgIDAuXSwKICAgICAgICAgICBbIDAuLCAgMC4sICAwLiwgIDEuXSwKICAgICAgICAgICBbIDAuLCAgMC4sIC0xLiwgIDAuXV0pCiAgICA+Pj4gTEEubWF0cml4X3Bvd2VyKHEsIDIpICMgPSAtbnAuZXllKDQpCiAgICBhcnJheShbWy0xLiwgIDAuLCAgMC4sICAwLl0sCiAgICAgICAgICAgWyAwLiwgLTEuLCAgMC4sICAwLl0sCiAgICAgICAgICAgWyAwLiwgIDAuLCAtMS4sICAwLl0sCiAgICAgICAgICAgWyAwLiwgIDAuLCAgMC4sIC0xLl1dKQoKICAgIOkCAAAAcgEAAAByEgAAAHocaW5wdXQgbXVzdCBiZSBhIHNxdWFyZSBhcnJheXobZXhwb25lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyKQHaA2ludk7p/////+kDAAAA2gEw2gExKRFyDQAAANoEbmRpbdoFc2hhcGVyGgAAAHIOAAAA2gR0eXBl2gNpbnTaCVR5cGVFcnJvcloMbnVtcHkubGluYWxnciwAAAByKgAAAHIMAAAA2gVyYW5nZdoBTtoDZG90cgsAAAByGQAAACkK2gFN2gFuciwAAADaBnJlc3VsdNoBX9oEYmV0YdoBWtoBcdoBdNoBa3ImAAAAciYAAAByJwAAANoMbWF0cml4X3Bvd2VyQgAAAHM6AAAAAEcIAR4BCAEOAQgCDAIIAQgBFgEEAQgBCAEIAgQBCAESARABBAQIARQBGAEMAQwBBAEUAQwBFgESAXJCAAAAYwAAAAAAAAAAAAAAAAQAAABAAAAAc3YBAABlAFoBZABaAmQBWgNkAloEZEtkBWQGhAFaBWQHZAiEAFoGZAlkCoQAWgdkC2QMhABaCGQNZA6EAFoJZA9kEIQAWgpkEWQShABaC2QTZBSEAFoMZBVkFoQAWg1kF2QYhABaDmQZZBqEAFoPZBtkHIQAWhBkHWQehABaEWQfZCCEAFoSZExkIWQihAFaE2RNZCNkJIQBWhRkTmQmZCeEAVoVZE9kKGQphAFaFmRQZCtkLIQBWhdkUWQtZC6EAVoYZFJkL2QwhAFaGWRTZDFkMoQBWhpkVGQzZDSEAVobZFVkNWQ2hAFaHGRWZDdkOIQBWh1kV2Q5ZDqEAVoeZFhkO2Q8hAFaH2RZZD1kPoQBWiBkP2RAhABaIWRBZEKEAFoiZENkRIQAWiNkWmRFZEaEAVokZEdkSIQAWiVkSWRKhABaJmUnZSVkA4MCWihlJ2UiZAODAlopZSdlI2QDgwJaKmUnZSZkA4MCWitlJ2UhZAODAlosZANTAClbcgUAAABhzAMAAAogICAgbWF0cml4KGRhdGEsIGR0eXBlPU5vbmUsIGNvcHk9VHJ1ZSkKCiAgICBSZXR1cm5zIGEgbWF0cml4IGZyb20gYW4gYXJyYXktbGlrZSBvYmplY3QsIG9yIGZyb20gYSBzdHJpbmcgb2YgZGF0YS4KICAgIEEgbWF0cml4IGlzIGEgc3BlY2lhbGl6ZWQgMi1EIGFycmF5IHRoYXQgcmV0YWlucyBpdHMgMi1EIG5hdHVyZQogICAgdGhyb3VnaCBvcGVyYXRpb25zLiAgSXQgaGFzIGNlcnRhaW4gc3BlY2lhbCBvcGVyYXRvcnMsIHN1Y2ggYXMgYGAqYGAKICAgIChtYXRyaXggbXVsdGlwbGljYXRpb24pIGFuZCBgYCoqYGAgKG1hdHJpeCBwb3dlcikuCgogICAgUGFyYW1ldGVycwogICAgLS0tLS0tLS0tLQogICAgZGF0YSA6IGFycmF5X2xpa2Ugb3Igc3RyaW5nCiAgICAgICBJZiBgZGF0YWAgaXMgYSBzdHJpbmcsIGl0IGlzIGludGVycHJldGVkIGFzIGEgbWF0cml4IHdpdGggY29tbWFzCiAgICAgICBvciBzcGFjZXMgc2VwYXJh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CiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIG9yZGVyIDogeydDJywgJ0YnLCAnQScsICdLJ30sIG9wdGlvbmFsCiAgICAgICAgICAgICdDJyBtZWFucyB0byBmbGF0dGVuIGluIHJvdy1tYWpvciAoQy1zdHlsZSkgb3JkZXIuICdGJyBtZWFucyB0bwogICAgICAgICAgICBmbGF0dGVuIGluIGNvbHVtbi1tYWpvciAoRm9ydHJhbi1zdHlsZSkgb3JkZXIuICdBJyBtZWFucyB0bwogICAgICAgICAgICBmbGF0dGVuIGluIGNvbHVtbi1tYWpvciBvcmRlciBpZiBgbWAgaXMgRm9ydHJhbiAqY29udGlndW91cyogaW4KICAgICAgICAgICAgbWVtb3J5LCByb3ctbWFqb3Igb3JkZXIgb3RoZXJ3aXNlLiAnSycgbWVhbnMgdG8gZmxhdHRlbiBgbWAgaW4KICAgICAgICAgICAgdGhlIG9yZGVyIHRoZSBlbGVtZW50cyBvY2N1ciBpbiBtZW1vcnkuIFRoZSBkZWZhdWx0IGlzICdDJy4KCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KICAgICAgICB5IDogbWF0cml4CiAgICAgICAgICAgIEEgY29weSBvZiB0aGUgbWF0cml4LCBmbGF0dGVuZWQgdG8gYSBgKDEsIE4pYCBtYXRyaXggd2hlcmUgYE5gCiAgICAgICAgICAgIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIG9yaWdpbmFsIG1hdHJpeC4KCiAgICAgICAgU2VlIEFsc28KICAgICAgICAtLS0tLS0tLQogICAgICAgIHJhdmVsIDogUmV0dXJuIGEgZmxhdHRlbmVkIGFycmF5LgogICAgICAgIGZsYXQgOiBBIDEtRCBmbGF0IGl0ZXJhdG9yIG92ZXIgdGhlIG1hdHJpeC4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiBtID0gbnAubWF0cml4KFtbMSwyXSwgWzMsNF1dKQogICAgICAgID4+PiBtLmZsYXR0ZW4oKQogICAgICAgIG1hdHJpeChbWzEsIDIsIDMsIDRdXSkKICAgICAgICA+Pj4gbS5mbGF0dGVuKCdGJykKICAgICAgICBtYXRyaXgoW1sxLCAzLCAyLCA0XV0pCgogICAgICAgICkBckYAAAApA3I3AAAAckkAAADaB2ZsYXR0ZW4pAnJYAAAAckYAAAByJgAAAHImAAAAcicAAAByfAAAAOABAABzAgAAAAAjeg5tYXRyaXguZmxhdHRlbmMEAAAAAAAAAAQAAAAHAAAAQwAAAHMcAAAAdABqAWoCfAB8AXwCfANkAWQCjQWgA3wBoQFTACkDYeACAAAKICAgICAgICBSZXR1cm5zIHRoZSBhdmVyYWdlIG9mIHRoZSBtYXRyaXggZWxlbWVudHMgYWxvbmcgdGhlIGdpdmVuIGF4aXMuCgogICAgICAgIFJlZmVyIHRvIGBudW1weS5tZWFuYCBmb3IgZnVsbCBkb2N1bWVudGF0aW9uLgoKICAgICAgICBTZWUgQWxzbwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgbnVtcHkubWVhbgoKICAgICAgICBOb3RlcwogICAgICAgIC0tLS0tCiAgICAgICAgU2FtZSBhcyBgbmRhcnJheS5tZWFuYCBleGNlcHQgdGhhdCwgd2hlcmUgdGhhdCByZXR1cm5zIGFuIGBuZGFycmF5YCwKICAgICAgICB0aGlzIHJldHVybnMgYSBgbWF0cml4YCBvYmplY3QuCgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KICAgICAgICA+Pj4geCA9IG5wLm1hdHJpeChucC5hcmFuZ2UoMTIpLnJlc2hhcGUoKDMsIDQpKSkKICAgICAgICA+Pj4geAogICAgICAgIG1hdHJpeChbWyAwLCAgMSwgIDIsICAzXSwKICAgICAgICAgICAgICAgIFsgNCwgIDUsICA2LCAgN10sCiAgICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSkKICAgICAgICA+Pj4geC5tZWFuKCkKICAgICAgICA1LjUKICAgICAgICA+Pj4geC5tZWFuKDApCiAgICAgICAgbWF0cml4KFtbIDQuLCAgNS4sICA2LiwgIDcuXV0pCiAgICAgICAgPj4+IHgubWVhbigxKQogICAgICAgIG1hdHJpeChbWyAxLjVdLAogICAgICAgICAgICAgICAgWyA1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NjY2NjY2CiAgICAgICAgPj4+IHgudmFyKDApCiAgICAgICAgbWF0cml4KFtbIDEwLjY2NjY2NjY3LCAgMTAuNjY2NjY2NjcsICAxMC42NjY2NjY2NywgIDEwLjY2NjY2NjY3XV0pCiAgICAgICAgPj4+IHgudmFyKDEpCiAgICAgICAgbWF0cml4KFtbIDEuMjVdLAogICAgICAgICAgICAgICAgWyAxLjI1XSwKICAgICAgICAgICAgICAgIFsgMS4yNV1dKQoKICAgICAgICBUKQFyeQAAACkEcjcAAABySQAAANoDdmFycncAAAApBXJYAAAAcnUAAAByKQAAAHJdAAAAcn8AAAByJgAAAHImAAAAcicAAABygAAAAEkCAABzAgAAAAAgegptYXRyaXgudmFyYwQAAAAAAAAABAAAAAcAAABDAAAAcxwAAAB0AGoBagJ8AHwBfAJ8A2QBZAKNBaADfAGhAVMAKQNh1QIAAAogICAgICAgIFJldHVybiB0aGUgcHJvZHVjdCBvZiB0aGUgYXJyYXkgZWxlbWVudHMgb3ZlciB0aGUgZ2l2ZW4gYXhpcy4KCiAgICAgICAgUmVmZXIgdG8gYHByb2RgIGZvciBmdWxsIGRvY3VtZW50YXRpb24uCgogICAgICAgIFNlZSBBbHNvCiAgICAgICAgLS0tLS0tLS0KICAgICAgICBwcm9kLCBuZGFycmF5LnByb2QKCiAgICAgICAgTm90ZXMKICAgICAgICAtLS0tLQogICAgICAgIFNhbWUgYXMgYG5kYXJyYXkucHJvZGAsIGV4Y2VwdCwgd2hlcmUgdGhhdCByZXR1cm5zIGFuIGBuZGFycmF5YCwgdGhpcwogICAgICAgIHJldHVybnMgYSBgbWF0cml4YCBvYmplY3QgaW5zdGVhZC4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiB4ID0gbnAubWF0cml4KG5wLmFyYW5nZSgxMikucmVzaGFwZSgoMyw0KSkpOyB4CiAgICAgICAgbWF0cml4KFtbIDAsICAxLCAgMiwgIDNdLAogICAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKICAgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dKQogICAgICAgID4+PiB4LnByb2QoKQogICAgICAgIDAKICAgICAgICA+Pj4geC5wcm9kKDApCiAgICAgICAgbWF0cml4KFtbICAwLCAgNDUsIDEyMCwgMjMxXV0pCiAgICAgICAgPj4+IHgucHJvZCgxKQogICAgICAgIG1hdHJpeChbWyAgIDBdLAogICAgICAgICAgICAgICAgWyA4NDBdLAogICAgICAgICAgICAgICAgWzc5MjBdXSkKCiAgICAgICAgVCkBcnkAAAApBHI3AAAAckkAAADaBHByb2RydwAAACkEclgAAABydQAAAHIpAAAAcl0AAAByJgAAAHImAAAAcicAAABygQAAAGsCAABzAgAAAAAfegttYXRyaXgucHJvZGMDAAAAAAAAAAMAAAAGAAAAQwAAAHMaAAAAdABqAWoCfAB8AXwCZAFkAo0EoAN8AaEBUwApA2FHAgAACiAgICAgICAgVGVzdCB3aGV0aGVyIGFueSBhcnJheSBlbGVtZW50IGFsb25nIGEgZ2l2ZW4gYXhpcyBldmFsdWF0ZXMgdG8gVHJ1ZS4KCiAgICAgICAgUmVmZXIgdG8gYG51bXB5LmFueWAgZm9yIGZ1bGwgZG9jdW1lbnRhdGlvbi4KCiAgICAgICAgUGFyYW1ldGVycwogICAgICAgIC0tLS0tLS0tLS0KICAgICAgICBheGlzIDogaW50LCBvcHRpb25hbAogICAgICAgICAgICBBeGlzIGFsb25nIHdoaWNoIGxvZ2ljYWwgT1IgaXMgcGVyZm9ybWVkCiAgICAgICAgb3V0IDogbmRhcnJheSwgb3B0aW9uYWwKICAgICAgICAgICAgT3V0cHV0IHRvIGV4aXN0aW5nIGFycmF5IGluc3RlYWQgb2YgY3JlYXRpbmcgbmV3IG9uZSwgbXVzdCBoYXZlCiAgICAgICAgICAgIHNhbWUgc2hhcGUgYXMgZXhwZWN0ZWQgb3V0cHV0CgogICAgICAgIFJldHVybnMKICAgICAgICAtLS0tLS0tCiAgICAgICAgICAgIGFueSA6IGJvb2wsIG5kYXJyYXkKICAgICAgICAgICAgICAgIFJldHVybnMgYSBzaW5nbGUgYm9vbCBpZiBgYXhpc2AgaXMgYGBOb25lYGA7IG90aGVyd2lzZSwKICAgICAgICAgICAgICAgIHJldHVybnMgYG5kYXJyYXlgCgogICAgICAgIFQpAXJ5AAAAKQRyNwAAAHJJAAAA2gNhbnlydwAAACkDclgAAABydQAAAHJdAAAAciYAAAByJgAAAHInAAAAcoIAAACMAgAAcwIAAAAAFXoKbWF0cml4LmFueWMDAAAAAAAAAAMAAAAGAAAAQwAAAHMaAAAAdABqAWoCfAB8AXwCZAFkAo0EoAN8AaEBUwApA2HsAwAACiAgICAgICAgVGVzdCB3aGV0aGVyIGFsbCBtYXRyaXggZWxlbWVudHMgYWxvbmcgYSBnaXZlbiBheGlzIGV2YWx1YXRlIHRvIFRydWUuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgU2VlIGBudW1weS5hbGxgIGZvciBjb21wbGV0ZSBkZXNjcmlwdGlvbnMKCiAgICAgICAgU2VlIEFsc28KICAgICAgICAtLS0tLS0tLQogICAgICAgIG51bXB5LmFsbAoKICAgICAgICBOb3RlcwogICAgICAgIC0tLS0tCiAgICAgICAgVGhpcyBpcyB0aGUgc2FtZSBhcyBgbmRhcnJheS5hbGxgLCBidXQgaXQgcmV0dXJucyBhIGBtYXRyaXhgIG9iamVjdC4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiB4ID0gbnAubWF0cml4KG5wLmFyYW5nZSgxMikucmVzaGFwZSgoMyw0KSkpOyB4CiAgICAgICAgbWF0cml4KFtbIDAsICAxLCAgMiwgIDNdLAogICAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKICAgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dKQogICAgICAgID4+PiB5ID0geFswXTsgeQogICAgICAgIG1hdHJpeChbWzAsIDEsIDIsIDNdXSkKICAgICAgICA+Pj4gKHggPT0geSkKICAgICAgICBtYXRyaXgoW1sgVHJ1ZSwgIFRydWUsICBUcnVlLCAgVHJ1ZV0sCiAgICAgICAgICAgICAgICBbRmFsc2UsIEZhbHNlLCBGYWxzZSwgRmFsc2VdLAogICAgICAgICAgICAgICAgW0ZhbHNlLCBGYWxzZSwgRmFsc2UsIEZhbHNlXV0sIGR0eXBlPWJvb2wpCiAgICAgICAgPj4+ICh4ID09IHkpLmFsbCgpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gKHggPT0geSkuYWxsKDApCiAgICAgICAgbWF0cml4KFtbRmFsc2UsIEZhbHNlLCBGYWxzZSwgRmFsc2VdXSwgZHR5cGU9Ym9vbCkKICAgICAgICA+Pj4gKHggPT0geSkuYWxsKDEpCiAgICAgICAgbWF0cml4KFtbIFRydWVdLAogICAgICAgICAgICAgICAgW0ZhbHNlXSwKICAgICAgICAgICAgICAgIFtGYWxzZV1dLCBkdHlwZT1ib29sKQoKICAgICAgICBUKQFyeQAAACkEcjcAAABySQAAANoDYWxscncAAAApA3JYAAAAcnUAAAByXQAAAHImAAAAciYAAAByJwAAAHKDAAAAowIAAHMCAAAAACZ6Cm1hdHJpeC5hbGxjAwAAAAAAAAADAAAABgAAAEMAAABzGgAAAHQAagFqAnwAfAF8AmQBZAKNBKADfAGhAVMAKQNh2gIAAAogICAgICAgIFJldHVybiB0aGUgbWF4aW11bSB2YWx1ZSBhbG9uZyBhbiBheGlzLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIFNlZSBgYW1heGAgZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucwoKICAgICAgICBTZWUgQWxzbwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgYW1heCwgbmRhcnJheS5tYXgKCiAgICAgICAgTm90ZXMKICAgICAgICAtLS0tLQogICAgICAgIFRoaXMgaXMgdGhlIHNhbWUgYXMgYG5kYXJyYXkubWF4YCwgYnV0IHJldHVybnMgYSBgbWF0cml4YCBvYmplY3QKICAgICAgICB3aGVyZSBgbmRhcnJheS5tYXhgIHdvdWxkIHJldHVybiBhbiBuZGFycmF5LgoKICAgICAgICBFeGFtcGxlcwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgPj4+IHggPSBucC5tYXRyaXgobnAuYXJhbmdlKDEyKS5yZXNoYXBlKCgzLDQpKSk7IHgKICAgICAgICBtYXRyaXgoW1sgMCwgIDEsICAyLCAgM10sCiAgICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAogICAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0pCiAgICAgICAgPj4+IHgubWF4KCkKICAgICAgICAxMQogICAgICAgID4+PiB4Lm1heCgwKQogICAgICAgIG1hdHJpeChbWyA4LCAgOSwgMTAsIDExXV0pCiAgICAgICAgPj4+IHgubWF4KDEpCiAgICAgICAgbWF0cml4KFtbIDNdLAogICAgICAgICAgICAgICAgWyA3XSwKICAgICAgICAgICAgICAgIFsxMV1dKQoKICAgICAgICBUKQFyeQAAACkEcjcAAABySQAAANoDbWF4cncAAAApA3JYAAAAcnUAAAByXQAAAHImAAAAciYAAAByJwAAAHKEAAAAywIAAHMCAAAAACF6Cm1hdHJpeC5tYXhjAwAAAAAAAAADAAAABQAAAEMAAABzFgAAAHQAagGgAnwAfAF8AqEDoAN8AaEBUwApAWGaAwAACiAgICAgICAgSW5kZXhlcyBvZiB0aGUgbWF4aW11bSB2YWx1ZXMgYWxvbmcgYW4gYXhpcy4KCiAgICAgICAgUmV0dXJuIHRoZSBpbmRleGVzIG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlcyBvZiB0aGUgbWF4aW11bSB2YWx1ZXMKICAgICAgICBhbG9uZyB0aGUgc3BlY2lmaWVkIGF4aXMuICBJZiBheGlzIGlzIE5vbmUsIHRoZSBpbmRleCBpcyBmb3IgdGhlCiAgICAgICAgZmxhdHRlbmVkIG1hdHJpeC4KCiAgICAgICAgUGFyYW1ldGVycwogICAgICAgIC0tLS0tLS0tLS0KICAgICAgICBTZWUgYG51bXB5LmFyZ21heGAgZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucwoKICAgICAgICBTZWUgQWxzbwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgbnVtcHkuYXJnbWF4CgogICAgICAgIE5vdGVzCiAgICAgICAgLS0tLS0KICAgICAgICBUaGlzIGlzIHRoZSBzYW1lIGFzIGBuZGFycmF5LmFyZ21heGAsIGJ1dCByZXR1cm5zIGEgYG1hdHJpeGAgb2JqZWN0CiAgICAgICAgd2hlcmUgYG5kYXJyYXkuYXJnbWF4YCB3b3VsZCByZXR1cm4gYW4gYG5kYXJyYXlgLgoKICAgICAgICBFeGFtcGxlcwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgPj4+IHggPSBucC5tYXRyaXgobnAuYXJhbmdlKDEyKS5yZXNoYXBlKCgzLDQpKSk7IHgKICAgICAgICBtYXRyaXgoW1sgMCwgIDEsICAyLCAgM10sCiAgICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAogICAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0pCiAgICAgICAgPj4+IHguYXJnbWF4KCkKICAgICAgICAxMQogICAgICAgID4+PiB4LmFyZ21heCgwKQogICAgICAgIG1hdHJpeChbWzIsIDIsIDIsIDJdXSkKICAgICAgICA+Pj4geC5hcmdtYXgoMSkKICAgICAgICBtYXRyaXgoW1szXSwKICAgICAgICAgICAgICAgIFszXSwKICAgICAgICAgICAgICAgIFszXV0pCgogICAgICAgICkEcjcAAABySQAAANoGYXJnbWF4cnYAAAApA3JYAAAAcnUAAAByXQAAAHImAAAAciYAAAByJwAAAHKFAAAA7gIAAHMCAAAAACV6DW1hdHJpeC5hcmdtYXhjAwAAAAAAAAADAAAABgAAAEMAAABzGgAAAHQAagFqAnwAfAF8AmQBZAKNBKADfAGhAVMAKQNh8AIAAAogICAgICAgIFJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBhbG9uZyBhbiBheGlzLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIFNlZSBgYW1pbmAgZm9yIGNvbXBsZXRlIGRlc2NyaXB0aW9ucy4KCiAgICAgICAgU2VlIEFsc28KICAgICAgICAtLS0tLS0tLQogICAgICAgIGFtaW4sIG5kYXJyYXkubWluCgogICAgICAgIE5vdGVzCiAgICAgICAgLS0tLS0KICAgICAgICBUaGlzIGlzIHRoZSBzYW1lIGFzIGBuZGFycmF5Lm1pbmAsIGJ1dCByZXR1cm5zIGEgYG1hdHJpeGAgb2JqZWN0CiAgICAgICAgd2hlcmUgYG5kYXJyYXkubWluYCB3b3VsZCByZXR1cm4gYW4gbmRhcnJheS4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiB4ID0gLW5wLm1hdHJpeChucC5hcmFuZ2UoMTIpLnJlc2hhcGUoKDMsNCkpKTsgeAogICAgICAgIG1hdHJpeChbWyAgMCwgIC0xLCAgLTIsICAtM10sCiAgICAgICAgICAgICAgICBbIC00LCAgLTUsICAtNiwgIC03XSwKICAgICAgICAgICAgICAgIFsgLTgsICAtOSwgLTEwLCAtMTFdXSkKICAgICAgICA+Pj4geC5taW4oKQogICAgICAgIC0xMQogICAgICAgID4+PiB4Lm1pbigwKQogICAgICAgIG1hdHJpeChbWyAtOCwgIC05LCAtMTAsIC0xMV1dKQogICAgICAgID4+PiB4Lm1pbigxKQogICAgICAgIG1hdHJpeChbWyAtM10sCiAgICAgICAgICAgICAgICBbIC03XSwKICAgICAgICAgICAgICAgIFstMTFdXSkKCiAgICAgICAgVCkBcnkAAAApBHI3AAAAckkAAADaA21pbnJ3AAAAKQNyWAAAAHJ1AAAAcl0AAAByJgAAAHImAAAAcicAAAByhgAAABUDAABzAgAAAAAhegptYXRyaXgubWluYwMAAAAAAAAAAwAAAAUAAABDAAAAcxYAAAB0AGoBoAJ8AHwBfAKhA6ADfAGhAVMAKQFhqAMAAAogICAgICAgIEluZGV4ZXMgb2YgdGhlIG1pbmltdW0gdmFsdWVzIGFsb25nIGFuIGF4aXMuCgogICAgICAgIFJldHVybiB0aGUgaW5kZXhlcyBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZXMgb2YgdGhlIG1pbmltdW0gdmFsdWVzCiAgICAgICAgYWxvbmcgdGhlIHNwZWNpZmllZCBheGlzLiAgSWYgYXhpcyBpcyBOb25lLCB0aGUgaW5kZXggaXMgZm9yIHRoZQogICAgICAgIGZsYXR0ZW5lZCBtYXRyaXguCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgU2VlIGBudW1weS5hcmdtaW5gIGZvciBjb21wbGV0ZSBkZXNjcmlwdGlvbnMuCgogICAgICAgIFNlZSBBbHNvCiAgICAgICAgLS0tLS0tLS0KICAgICAgICBudW1weS5hcmdtaW4KCiAgICAgICAgTm90ZXMKICAgICAgICAtLS0tLQogICAgICAgIFRoaXMgaXMgdGhlIHNhbWUgYXMgYG5kYXJyYXkuYXJnbWluYCwgYnV0IHJldHVybnMgYSBgbWF0cml4YCBvYmplY3QKICAgICAgICB3aGVyZSBgbmRhcnJheS5hcmdtaW5gIHdvdWxkIHJldHVybiBhbiBgbmRhcnJheWAuCgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KICAgICAgICA+Pj4geCA9IC1ucC5tYXRyaXgobnAuYXJhbmdlKDEyKS5yZXNoYXBlKCgzLDQpKSk7IHgKICAgICAgICBtYXRyaXgoW1sgIDAsICAtMSwgIC0yLCAgLTNdLAogICAgICAgICAgICAgICAgWyAtNCwgIC01LCAgLTYsICAtN10sCiAgICAgICAgICAgICAgICBbIC04LCAgLTksIC0xMCwgLTExXV0pCiAgICAgICAgPj4+IHguYXJnbWluKCkKICAgICAgICAxMQogICAgICAgID4+PiB4LmFyZ21pbigwKQogICAgICAgIG1hdHJpeChbWzIsIDIsIDIsIDJdXSkKICAgICAgICA+Pj4geC5hcmdtaW4oMSkKICAgICAgICBtYXRyaXgoW1szXSwKICAgICAgICAgICAgICAgIFszXSwKICAgICAgICAgICAgICAgIFszXV0pCgogICAgICAgICkEcjcAAABySQAAANoGYXJnbWlucnYAAAApA3JYAAAAcnUAAAByXQAAAHImAAAAciYAAAByJwAAAHKHAAAAOAMAAHMCAAAAACV6DW1hdHJpeC5hcmdtaW5jAwAAAAAAAAADAAAABQAAAEMAAABzFgAAAHQAagGgAnwAfAF8AqEDoAN8AaEBUwApAWHAAgAACiAgICAgICAgUGVhay10by1wZWFrIChtYXhpbXVtIC0gbWluaW11bSkgdmFsdWUgYWxvbmcgdGhlIGdpdmVuIGF4aXMuCgogICAgICAgIFJlZmVyIHRvIGBudW1weS5wdHBgIGZvciBmdWxsIGRvY3VtZW50YXRpb24uCgogICAgICAgIFNlZSBBbHNvCiAgICAgICAgLS0tLS0tLS0KICAgICAgICBudW1weS5wdHAKCiAgICAgICAgTm90ZXMKICAgICAgICAtLS0tLQogICAgICAgIFNhbWUgYXMgYG5kYXJyYXkucHRwYCwgZXhjZXB0LCB3aGVyZSB0aGF0IHdvdWxkIHJldHVybiBhbiBgbmRhcnJheWAgb2JqZWN0LAogICAgICAgIHRoaXMgcmV0dXJucyBhIGBtYXRyaXhgIG9iamVjdC4KCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiB4ID0gbnAubWF0cml4KG5wLmFyYW5nZSgxMikucmVzaGFwZSgoMyw0KSkpOyB4CiAgICAgICAgbWF0cml4KFtbIDAsICAxLCAgMiwgIDNdLAogICAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKICAgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dKQogICAgICAgID4+PiB4LnB0cCgpCiAgICAgICAgMTEKICAgICAgICA+Pj4geC5wdHAoMCkKICAgICAgICBtYXRyaXgoW1s4LCA4LCA4LCA4XV0pCiAgICAgICAgPj4+IHgucHRwKDEpCiAgICAgICAgbWF0cml4KFtbM10sCiAgICAgICAgICAgICAgICBbM10sCiAgICAgICAgICAgICAgICBbM11dKQoKICAgICAgICApBHI3AAAAckkAAADaA3B0cHJ2AAAAKQNyWAAAAHJ1AAAAcl0AAAByJgAAAHImAAAAcicAAAByiAAAAF8DAABzAgAAAAAfegptYXRyaXgucHRwYwEAAAAAAAAABAAAAAMAAABDAAAAczgAAAB8AGoAXAJ9AX0CfAF8AmsCciBkAWQCbAFtAn0DAQBuDGQBZANsAW0DfQMBAHQEfAN8AIMBgwFTACkEYT0DAAAKICAgICAgICBSZXR1cm5zIHRoZSAobXVsdGlwbGljYXRpdmUpIGludmVyc2Ugb2YgaW52ZXJ0aWJsZSBgc2VsZmAuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgTm9uZQoKICAgICAgICBSZXR1cm5zCiAgICAgICAgLS0tLS0tLQogICAgICAgIHJldCA6IG1hdHJpeCBvYmplY3QKICAgICAgICAgICAgSWYgYHNlbGZgIGlzIG5vbi1zaW5ndWxhciwgYHJldGAgaXMgc3VjaCB0aGF0IGBgcmV0ICogc2VsZmBgID09CiAgICAgICAgICAgIGBgc2VsZiAqIHJldGBgID09IGBgbnAubWF0cml4KG5wLmV5ZShzZWxmWzAsOl0uc2l6ZSlgYCBhbGwgcmV0dXJuCiAgICAgICAgICAgIGBgVHJ1ZWBgLgoKICAgICAgICBSYWlzZXMKICAgICAgICAtLS0tLS0KICAgICAgICBudW1weS5saW5hbGcuTGluQWxnRXJyb3I6IFNpbmd1bGFyIG1hdHJpeAogICAgICAgICAgICBJZiBgc2VsZmAgaXMgc2luZ3VsYXIuCgogICAgICAgIFNlZSBBbHNvCiAgICAgICAgLS0tLS0tLS0KICAgICAgICBsaW5hbGcuaW52CgogICAgICAgIEV4YW1wbGVzCiAgICAgICAgLS0tLS0tLS0KICAgICAgICA+Pj4gbSA9IG5wLm1hdHJpeCgnWzEsIDI7IDMsIDRdJyk7IG0KICAgICAgICBtYXRyaXgoW1sxLCAyXSwKICAgICAgICAgICAgICAgIFszLCA0XV0pCiAgICAgICAgPj4+IG0uZ2V0SSgpCiAgICAgICAgbWF0cml4KFtbLTIuICwgIDEuIF0sCiAgICAgICAgICAgICAgICBbIDEuNSwgLTAuNV1dKQogICAgICAgID4+PiBtLmdldEkoKSAqIG0KICAgICAgICBtYXRyaXgoW1sgMS4sICAwLl0sCiAgICAgICAgICAgICAgICBbIDAuLCAgMS5dXSkKCiAgICAgICAgcgEAAAApAXIsAAAAKQHaBHBpbnYpBXIyAAAAWgpudW1weS5kdWFsciwAAAByiQAAAHIIAAAAKQRyWAAAAHI5AAAAcjcAAADaBGZ1bmNyJgAAAHImAAAAcicAAADaBGdldEmAAwAAcwoAAAAAJQoBCAEOAgwBegttYXRyaXguZ2V0SWMBAAAAAAAAAAEAAAACAAAAQwAAAHMIAAAAfACgAKEAUwApAWExAgAACiAgICAgICAgUmV0dXJuIGBzZWxmYCBhcyBhbiBgbmRhcnJheWAgb2JqZWN0LgoKICAgICAgICBFcXVpdmFsZW50IHRvIGBgbnAuYXNhcnJheShzZWxmKWBgLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIE5vbmUKCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KICAgICAgICByZXQgOiBuZGFycmF5CiAgICAgICAgICAgIGBzZWxmYCBhcyBhbiBgbmRhcnJheWAKCiAgICAgICAgRXhhbXBsZXMKICAgICAgICAtLS0tLS0tLQogICAgICAgID4+PiB4ID0gbnAubWF0cml4KG5wLmFyYW5nZSgxMikucmVzaGFwZSgoMyw0KSkpOyB4CiAgICAgICAgbWF0cml4KFtbIDAsICAxLCAgMiwgIDNdLAogICAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKICAgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dKQogICAgICAgID4+PiB4LmdldEEoKQogICAgICAgIGFycmF5KFtbIDAsICAxLCAgMiwgIDNdLAogICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAogICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSkKCiAgICAgICAgKQFybAAAACkBclgAAAByJgAAAHImAAAAcicAAADaBGdldEGsAwAAcwIAAAAAG3oLbWF0cml4LmdldEFjAQAAAAAAAAABAAAAAgAAAEMAAABzDAAAAHwAoAChAKABoQBTACkBYRoCAAAKICAgICAgICBSZXR1cm4gYHNlbGZgIGFzIGEgZmxhdHRlbmVkIGBuZGFycmF5YC4KCiAgICAgICAgRXF1aXZhbGVudCB0byBgYG5wLmFzYXJyYXkoeCkucmF2ZWwoKWBgCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgTm9uZQoKICAgICAgICBSZXR1cm5zCiAgICAgICAgLS0tLS0tLQogICAgICAgIHJldCA6IG5kYXJyYXkKICAgICAgICAgICAgYHNlbGZgLCAxLUQsIGFzIGFuIGBuZGFycmF5YAoKICAgICAgICBFeGFtcGxlcwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgPj4+IHggPSBucC5tYXRyaXgobnAuYXJhbmdlKDEyKS5yZXNoYXBlKCgzLDQpKSk7IHgKICAgICAgICBtYXRyaXgoW1sgMCwgIDEsICAyLCAgM10sCiAgICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAogICAgICAgICAgICAgICAgWyA4LCAgOSwgMTAsIDExXV0pCiAgICAgICAgPj4+IHguZ2V0QTEoKQogICAgICAgIGFycmF5KFsgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExXSkKCiAgICAgICAgKQJybAAAANoFcmF2ZWwpAXJYAAAAciYAAAByJgAAAHInAAAA2gVnZXRBMckDAABzAgAAAAAZegxtYXRyaXguZ2V0QTFjAgAAAAAAAAACAAAABAAAAEMAAABzEAAAAHQAagFqAnwAfAFkAY0CUwApAmEJBgAACiAgICAgICAgUmV0dXJuIGEgZmxhdHRlbmVkIG1hdHJpeC4KCiAgICAgICAgUmVmZXIgdG8gYG51bXB5LnJhdmVsYCBmb3IgbW9yZSBkb2N1bWVudGF0aW9uLgoKICAgICAgICBQYXJhbWV0ZXJzCiAgICAgICAgLS0tLS0tLS0tLQogICAgICAgIG9yZGVyIDogeydDJywgJ0YnLCAnQScsICdLJ30sIG9wdGlvbmFsCiAgICAgICAgICAgIFRoZSBlbGVtZW50cyBvZiBgbWAgYXJlIHJlYWQgdXNpbmcgdGhpcyBpbmRleCBvcmRlci4gJ0MnIG1lYW5zIHRvCiAgICAgICAgICAgIGluZGV4IHRoZSBlbGVtZW50cyBpbiBDLWxpa2Ugb3JkZXIsIHdpdGggdGhlIGxhc3QgYXhpcyBpbmRleAogICAgICAgICAgICBjaGFuZ2luZyBmYXN0ZXN0LCBiYWNrIHRvIHRoZSBmaXJzdCBheGlzIGluZGV4IGNoYW5naW5nIHNsb3dlc3QuCiAgICAgICAgICAgICdGJyBtZWFucyB0byBpbmRleCB0aGUgZWxlbWVudHMgaW4gRm9ydHJhbi1saWtlIGluZGV4IG9yZGVyLCB3aXRoCiAgICAgICAgICAgIHRoZSBmaXJzdCBpbmRleCBjaGFuZ2luZyBmYXN0ZXN0LCBhbmQgdGhlIGxhc3QgaW5kZXggY2hhbmdpbmcKICAgICAgICAgICAgc2xvd2VzdC4gTm90ZSB0aGF0IHRoZSAnQycgYW5kICdGJyBvcHRpb25zIHRha2Ugbm8gYWNjb3VudCBvZiB0aGUKICAgICAgICAgICAgbWVtb3J5IGxheW91dCBvZiB0aGUgdW5kZXJseWluZyBhcnJheSwgYW5kIG9ubHkgcmVmZXIgdG8gdGhlIG9yZGVyCiAgICAgICAgICAgIG9mIGF4aXMgaW5kZXhpbmcuICAnQScgbWVhbnMgdG8gcmVhZCB0aGUgZWxlbWVudHMgaW4gRm9ydHJhbi1saWtlCiAgICAgICAgICAgIGluZGV4IG9yZGVyIGlmIGBtYCBpcyBGb3J0cmFuICpjb250aWd1b3VzKiBpbiBtZW1vcnksIEMtbGlrZSBvcmRlcgogICAgICAgICAgICBvdGhlcndpc2UuICAnSycgbWVhbnMgdG8gcmVhZCB0aGUgZWxlbWVudHMgaW4gdGhlIG9yZGVyIHRoZXkgb2NjdXIKICAgICAgICAgICAgaW4gbWVtb3J5LCBleGNlcHQgZm9yIHJldmVyc2luZyB0aGUgZGF0YSB3aGVuIHN0cmlkZXMgYXJlIG5lZ2F0aXZlLgogICAgICAgICAgICBCeSBkZWZhdWx0LCAnQycgaW5kZXggb3JkZXIgaXMgdXNlZC4KCiAgICAgICAgUmV0dXJucwogICAgICAgIC0tLS0tLS0KICAgICAgICByZXQgOiBtYXRyaXgKICAgICAgICAgICAgUmV0dXJuIHRoZSBtYXRyaXggZmxhdHRlbmVkIHRvIHNoYXBlIGAoMSwgTilgIHdoZXJlIGBOYAogICAgICAgICAgICBpcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBvcmlnaW5hbCBtYXRyaXguCiAgICAgICAgICAgIEEgY29weSBpcyBtYWRlIG9ubHkgaWYgbmVjZXNzYXJ5LgoKICAgICAgICBTZWUgQWxzbwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgbWF0cml4LmZsYXR0ZW4gOiByZXR1cm5zIGEgc2ltaWxhciBvdXRwdXQgbWF0cml4IGJ1dCBhbHdheXMgYSBjb3B5CiAgICAgICAgbWF0cml4LmZsYXQgOiBhIGZsYXQgaXRlcmF0b3Igb24gdGhlIGFycmF5LgogICAgICAgIG51bXB5LnJhdmVsIDogcmVsYXRlZCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG5kYXJyYXkKCiAgICAgICAgKQFyRgAAACkDcjcAAABySQAAAHKNAAAAKQJyWAAAAHJGAAAAciYAAAByJgAAAHInAAAAco0AAADlAwAAcwIAAAAAJHoMbWF0cml4LnJhdmVsYwEAAAAAAAAAAQAAAAIAAABDAAAAcwgAAAB8AKAAoQBTACkBYUACAAAKICAgICAgICBSZXR1cm5zIHRoZSB0cmFuc3Bvc2Ugb2YgdGhlIG1hdHJpeC4KCiAgICAgICAgRG9lcyAqbm90KiBjb25qdWdhdGUhICBGb3IgdGhlIGNvbXBsZXggY29uanVnYXRlIHRyYW5zcG9zZSwgdXNlIGBgLkhgYC4KCiAgICAgICAgUGFyYW1ldGVycwogICAgICAgIC0tLS0tLS0tLS0KICAgICAgICBOb25lCgogICAgICAgIFJldHVybnMKICAgICAgICAtLS0tLS0tCiAgICAgICAgcmV0IDogbWF0cml4IG9iamVjdAogICAgICAgICAgICBUaGUgKG5vbi1jb25qdWdhdGVkKSB0cmFuc3Bvc2Ugb2YgdGhlIG1hdHJpeC4KCiAgICAgICAgU2VlIEFsc28KICAgICAgICAtLS0tLS0tLQogICAgICAgIHRyYW5zcG9zZSwgZ2V0SAoKICAgICAgICBFeGFtcGxlcwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgPj4+IG0gPSBucC5tYXRyaXgoJ1sxLCAyOyAzLCA0XScpCiAgICAgICAgPj4+IG0KICAgICAgICBtYXRyaXgoW1sxLCAyXSwKICAgICAgICAgICAgICAgIFszLCA0XV0pCiAgICAgICAgPj4+IG0uZ2V0VCgpCiAgICAgICAgbWF0cml4KFtbMSwgM10sCiAgICAgICAgICAgICAgICBbMiwgNF1dKQoKICAgICAgICApAXJ0AAAAKQFyWAAAAHImAAAAciYAAAByJwAAANoEZ2V0VAwEAABzAgAAAAAeegttYXRyaXguZ2V0VGMBAAAAAAAAAAEAAAADAAAAQwAAAHMoAAAAdAB8AGoBagJ0A2oEgwJyHHwAoAWhAKAGoQBTAHwAoAWhAFMAZAFTACkCYUYDAAAKICAgICAgICBSZXR1cm5zIHRoZSAoY29tcGxleCkgY29uanVnYXRlIHRyYW5zcG9zZSBvZiBgc2VsZmAuCgogICAgICAgIEVxdWl2YWxlbnQgdG8gYGBucC50cmFuc3Bvc2Uoc2VsZilgYCBpZiBgc2VsZmAgaXMgcmVhbC12YWx1ZWQuCgogICAgICAgIFBhcmFtZXRlcnMKICAgICAgICAtLS0tLS0tLS0tCiAgICAgICAgTm9uZQoKICAgICAgICBSZXR1cm5zCiAgICAgICAgLS0tLS0tLQogICAgICAgIHJldCA6IG1hdHJpeCBvYmplY3QKICAgICAgICAgICAgY29tcGxleCBjb25qdWdhdGUgdHJhbnNwb3NlIG9mIGBzZWxmYAoKICAgICAgICBFeGFtcGxlcwogICAgICAgIC0tLS0tLS0tCiAgICAgICAgPj4+IHggPSBucC5tYXRyaXgobnAuYXJhbmdlKDEyKS5yZXNoYXBlKCgzLDQpKSkKICAgICAgICA+Pj4geiA9IHggLSAxaip4OyB6CiAgICAgICAgbWF0cml4KFtbICAwLiArMC5qLCAgIDEuIC0xLmosICAgMi4gLTIuaiwgICAzLiAtMy5qXSwKICAgICAgICAgICAgICAgIFsgIDQuIC00LmosICAgNS4gLTUuaiwgICA2LiAtNi5qLCAgIDcuIC03LmpdLAogICAgICAgICAgICAgICAgWyAgOC4gLTguaiwgICA5LiAtOS5qLCAgMTAuLTEwLmosICAxMS4tMTEual1dKQogICAgICAgID4+PiB6LmdldEgoKQogICAgICAgIG1hdHJpeChbWyAgMC4gKzAuaiwgICA0LiArNC5qLCAgIDguICs4LmpdLAogICAgICAgICAgICAgICAgWyAgMS4gKzEuaiwgICA1LiArNS5qLCAgIDkuICs5LmpdLAogICAgICAgICAgICAgICAgWyAgMi4gKzIuaiwgICA2LiArNi5qLCAgMTAuKzEwLmpdLAogICAgICAgICAgICAgICAgWyAgMy4gKzMuaiwgICA3LiArNy5qLCAgMTEuKzExLmpdXSkKCiAgICAgICAgTikH2gppc3N1YmNsYXNzcikAAAByMwAAAHI3AAAAWg9jb21w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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 3
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
defmatrix.cpython-37.pyc
32.11 KB
lrw-r--r--
2023-04-24 19:38:35
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
setup.cpython-37.pyc
644 B
lrw-r--r--
2023-04-24 19:38:35
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-37.pyc
480 B
lrw-r--r--
2023-04-24 19:38:35
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).