LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBQb3J0dWd1ZXNlIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ERUZBVUxUCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJBanVkYSBkbyBjb21hbmRvIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPGFycXVpdm9fZGVfbG90ZT4g6SB1c2FkbyBkZW50cm8gZGUgdW0gYXJxdWl2byBkZSBsb3RlIHBhcmEgZXhlY3V0YXJcblwKY29tYW5kbyBkZSBvdXRybyBhcnF1aXZvIGRlIGxvdGUuIFF1YW5kbyBvIGFycXVpdm8gZXhpc3RlLCBvIGNvbnRyb2xlIHJldG9ybmFcblwKYW8gYXJxdWl2byBxdWUgbyBjaGFtb3UuIE8gY29tYW5kbyBDQUxMIHBvZGUgcGFzc2FyIHBhcuJtZXRyb3MgYW8gcHJvY2VkaW1lbnRvXG5cCmNoYW1hZG8uXG5cClxuXApNdWRhbm7nYXMgbm8gZGlyZXTzcmlvIHBhZHLjbywgdmFyaeF2ZWlzIGRlIGFtYmllbnRlLCBldGMsIGZlaXRhcyBkZW50cm9cblwKZG8gcHJvY2VkaW1lbnRlIGNoYW1hZG8gc+NvIGhlcmRhZG9zIHBlbG8gY2hhbWFkb3IuXG4iCgogIFdDTURfQ0QsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBDRFxuIgogIFdDTURfQ0hESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBDSERJUlxuIgoKICBXQ01EX0NMUywgICAgIkNMUyBsaW1wYSBhIHRlbGEgZG8gY29uc29sZVxuIgoKICBXQ01EX0NPUFksICAgIkFqdWRhIGRvIGNvbWFuZG8gQ09QWVxuIgogIFdDTURfQ1RUWSwgICAiQWp1ZGEgZG8gY29tYW5kbyBDVFRZXG4iCiAgV0NNRF9EQVRFLCAgICJBanVkYSBkbyBjb21hbmRvIERBVEVcbiIKICBXQ01EX0RFTCwgICAgIkFqdWRhIGRvIGNvbWFuZG8gREVMXG4iCiAgV0NNRF9ESVIsICAgICJBanVkYSBkbyBjb21hbmRvIERJUlxuIgoKICBXQ01EX0VDSE8sCiJFQ0hPIDxzdHJpbmc+IG1vc3RyYSBhIDxzdHJpbmc+IG5vIGRpc3Bvc2l0aXZvIHRlcm1pbmFsIGF0dWFsLlxuXApcblwKRUNITyBPTiBhdGl2YSBhIGV4aWJp5+NvIGRlIHRvZG9zIG9zIGNvbWFuZG9zIHN1YnNlcXVlbnRlcyBlbSB1bVxuXAphcnF1aXZvIGRlIGxvdGUgbm8gdGVybWluYWwgYW50ZXMgZGVsZXMgc2VyZW0gZXhlY3V0YWRvcy5cblwKXG5cCkVDSE8gT0ZGIGRlc2F0aXZhIG8gZWZlaXRvIGRlIHVtIGNvbWFuZG8gRUNITyBPTiAoRUNITyDpIE9GRiBwb3IgcGFkcuNvKS5cblwKTyBjb21hbmRvIEVDSE8gT0ZGIHBvZGUgc2VyIGltcGVkaWRvIGRlIHNlciBtb3N0cmFkbyBjb2xvY2FuZG8tc2UgdW1cblwKc+1tYm9sbyBAIHByZWNlZGVuZG8gbyBtZXNtby5cbiIKCiAgV0NNRF9FUkFTRSwgICJBanVkYSBkbyBjb21hbmRvIEVSQVNFXG4iCgogIFdDTURfRk9SLAoiTyBjb21hbmRvIEZPUiDpIHVzYWRvIHBhcmEgZXhlY3V0YXIgdW0gY29tYW5kbyBhIGNhZGEgdmV6IGVtXG51bSBjb25qdW50byBkZSBhcnF1aXZvcy5cblwKXG5cClNpbnRheGU6IEZPUiAldmFyaeF2ZWwgSU4gKGNvbmp1bnRvKSBETyBjb21hbmRvXG5cClxuXApObyB3Y21kLCBu428gZXhpc3RlIGEgbmVjZXNzaWRhZGUgZGUgdXNhciBkb2lzIHNpbmFpcyAlIG5vIFxuXApjb21hbmRvIEZPUiBub3MgYXJxdWl2b3MgZGUgbG90ZS5cbiIKCiAgV0NNRF9HT1RPLAoiTyBjb21hbmRvIEdPVE8gdHJhbnNmZXJlIGEgZXhlY3Xn428gcGFyYSBvdXRyYSBkZWNsYXJh5+NvIGRlbnRyb1xuXApkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApPIHLzdHVsbyBxdWUgc2Vy4SBvIGRlc3Rpbm8gZG8gY29tYW5kbyBHT1RPIHBvZGUgdGVyIGF06SAyNTUgY2FyYWN0ZXJlc1xuXAptYXMgbuNvIHBvZGUgaW5jbHVpciBlc3Bh529zIChkaWZlcmVudGVtZW50ZSBkZSBvdXRyb3Mgc2lzdGVtYXMgb3BlcmFjaW9uYWlzKS5cblwKU2UgZG9pcyBvdSBtYWlzIHLzdHVsb3MgZm9yZW0gaWRlbnRpY29zIG5vIGFycXVpdm8gZGUgbG90ZSwgbyBwcmltZWlybyBkZWxlc1xuXApzZXLhIHNlbXByZSBleGVjdXRhZG8uIEEgdGVudGF0aXZhIGRlIHVzYXIgbyBHT1RPIHBhcmEgdW0gcvN0dWxvIGluZXhpc3RlbnRlXG5cCnRlcm1pbmEgYSBleGVjdefjbyBkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApHT1RPIG7jbyB0ZW0gZWZlaXRvIHF1YW5kbyB1c2FuZG8gaW50ZXJhdGl2YW1lbnRlLlxuIgoKICBXQ01EX0hFTFAsICAgIkFqdWRhIGRvIGNvbWFuZG8gSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYg6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gY29uZGljaW9uYWxtZW50ZS5cblwKXG5cClNpbnRheGU6CUlGIFtOT1RdIEVYSVNUIGFycXVpdm8gY29tYW5kb1xuXAoJSUYgW05PVF0gdGV4dG8xPT10ZXh0bzIgY29tYW5kb1xuXAoJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKTmEgc2VndW5kYSBmb3JtYSBkbyBjb21hbmRvLCB0ZXh0bzEgZSB0ZXh0bzIgZGV2ZW0gZXN0YXIgdXNhbmRvIGFzcGFzLlxuXApBIGNvbXBhcmHn428gbuNvIGRpZmVyZW5jaWEgbWFp+nNjdWxhcyBkZSBtaW51c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIOkgdXNhZG8gcGFyYSByb3R1bGFyIHVtIHZvbHVtZSBkbyBkaXNjby4gIFxuXApcblwKU2ludGF4ZTogTEFCRUwgW2RyaXZlOl1cblwKTyBjb21hbmRvIExBQkVMIGly4SBhZ3VhcmRhciBxdWUgdmMgaW5mb3JtZSBvIG5vdm8gcvN0dWxvIHBhcmEgbyBkcml2ZVxuXAplc3BlY2lmaWNhZG8uIFZvY+ogcG9kZSBtb3N0cmFyIG8gcvN0dWxvIGRvIGRpc2NvIGNvbSBvIGNvbWFuZG8gVk9MLlxuIgoKICBXQ01EX01ELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gTURcbiIKICBXQ01EX01LRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvY2EgdW0gYXJxdWl2byBvdSBkaXJldPNyaW8gZW0gdW0gbm92byBwb250byBubyBzaXN0ZW1hIGRlIGFycXVpdm9zLlxuXApcblwKU2UgbyBpdGVtIHNlbmRvIG1vdmlkbyDpIHVtIGRpcmV083JpbyBlbnTjbyB0b2RvcyBvcyBhcnF1aXZvcyBlIHN1YmRpcmV083Jpb3NcblwKYWJhaXhvIGRvIGl0ZW0gc+NvIG1vdmlkb3MgY29tIG8gbWVzbW8uXG5cClxuXApNT1ZFIGZhbGhhcuEgc2UgbyBsb2NhbCBhbnRpZ28gZSBvIG5vdm8gbG9jYWwgZXN0428gZW0gZGlmZXJlbnRlcyB1bmlkYWRlcy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtb3N0cmEgb3UgcGVybWl0ZSBtdWRhciBvIGNhbWluaG8gZGUgcHJvY3VyYSBkZSBwcm9ncmFtYXMgZG8gd2NtZC5cblwKXG5cCkRpZ2l0YW5kbyBQQVRIIG1vc3RyYXLhIGEgYXR1YWwgY29uZmlndXJh5+NvIGRvIGNvbWFuZG8gUEFUSCAoaW5pY2lhbG1lbnRlIGVzdGVcblwKdmFsb3Ig6SBlc3BlY2lmaWNhZG8gbm8gYXJxdWl2byB3aW5lLmNvbmYpLiBQYXJhIG11ZGFyIGFzIGNvbmZpZ3VyYef1ZXMsIGRpZ2l0ZVxuXApub3ZvcyB2YWxvcmVzIG5vIGNvbWFuZG8gUEFUSC5cblwKXG5cClRhbWLpbSDpIHBvc3PtdmVsIG1vZGlmaWNhciBvIGNvbWFuZG8gUEFUSCB1c2FuZG8gYSB2YXJp4XZlbCBkZSBhbWJpZW50ZSBQQVRILFxuXApwb3IgZXhlbXBsbzpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgbW9zdHJhIGEgc2VndWludGUgbWVuc2FnZW0gbmEgdGVsYSAnUHJlc3Npb25lIEVudGVyIHBhcmEgY29udGludWFyJ1xuXAplIGFndWFyZGEgcXVlIG8gdXN14XJpbyBwcmVzc2lvbmUgYSB0ZWNsYSBFbnRlci4gSXN0byDpIPp0aWwgcHJpbmNpcGFsbWVudGVcblwKZW0gYXJxdWl2b3MgZGUgbG90ZSBwYXJhIHBlcm1pdGlyIGFvIHVzdeFyaW8gbGVyIGEgc2HtZGEgZGUgdW0gY29tYW5kbyBhbnRlcmlvclxuXAphbnRlcyBxdWUgYSB0ZWxhIHNvZnJhIHVtIHJvbGFtZW50by5cbiIKCiAgV0NNRF9QUk9NUFQsCiJQUk9NUFQgY29uZmlndXJhIG8gJ3Byb21wdCcgZGEgbGluaGEgZGUgY29tYW5kby5cblwKXG5cCk8gdGV4dG8gc2VndWluZG8gbyBjb21hbmRvIFBST01QVCAoZSBvcyBlc3Bh529zIGltZWRpYXRhbWVudGUgZGVwb2lzKVxuXAphcGFyZWNlbSBubyBjb21l528gZGEgbGluaGEgZW5xdWFudG8gbyB3Y21kIGVzdOEgYWd1YXJkYW5kbyBwb3IgY29tYW5kb3MuXG5cClxuXApPcyBzZWd1aW50ZXMgY2FyYWN0ZXJlcyB0ZW0gdW0gc2lnbmlmaWNhZG8gZXNwZWNpYWwsIGNvbmZvcm1lIG1vc3RyYWRvOlxuXApcblwKJCQgICAgQ2lmcuNvICgkKSAgICAgICAgICAkXyAgICBBdmFu528gZGUgbGluaGEgICAgICRiICAgIFPtbWJvbG8gcGlwZSAofClcblwKJGQgICAgRGF0YSBhdHVhbCAgICAgICAgICAkZSAgICBD82RpZ28gZGUgZXNjYXBlICAgICRnICAgIFNpbmFsIGRlIG1haW9yICg+KVxuXAokbCAgICBTaW5hbCBkZSBtZW5vciAoPCkgICRuICAgIFVuaWRhZGUgYXR1YWwgICAgICAgJHAgICAgQ2FtaW5obyBhdHVhbFxuXAokcSAgICBTaW5hbCBkZSBpZ3VhbCAoPSkgICR0ICAgIEhvcmEgYXR1YWwgICAgICAgICAgJHYgICAgVmVyc+NvIGRvIHdjbWRcblwKXG5cCk5vdGUgcXVlIGRpZ2l0YW5kbyBvIGNvbWFuZG8gUFJPTVBUIHNlbSBwYXLibWV0cm9zIHJlY29uZmlndXJhIG8gcGFkcuNvLFxuXApxdWUg6SBhIGxldHJhIGRhIHVuaWRhZGUgYXR1YWwgc2VndWlkYSBwZWxvIGRpcmV083JpbyBlIHVtIHNpbmFsIGRlIG1haW9yXG5cCihlcXVpdmFsZW50ZSBhIHVtIGNvbWFuZG8gUFJPTVBUICRwJGcpLlxuXApcblwKTyAncHJvbXB0JyB0YW1i6W0gcG9kZSBzZXIgbXVkYWRvIGFsdGVyYW5kbyBhIHZhcmnhdmVsIFBST01QVCwgYXNzaW0sXG5cCm8gY29tYW5kbyAnU0VUIFBST01QVD10ZXh0bycgdGVtIG8gbWVzbW8gZWZlaXRvIHF1ZSAnUFJPTVBUIHRleHRvJ1xuIgoKICBXQ01EX1JFTSwKIlVtYSBsaW5oYSBkZSBjb21hbmRvIGluaWNpYW5kbyBjb20gUkVNIChzZWd1aW5kbyBkZSB1bSBlc3Bh528pIG7jbyBmYXpcblwKYefjbyBhbGd1bWEsIGUgb3MgY2FyYXRlcmVzIHVzYW5kbyBz428gY29uc2lkZXJhZG9zIGNvbWVudOFyaW9zIGVtIHVtXG5cCmFycXVpdm8gZGUgbG90ZVxuIgoKICBXQ01EX1JFTiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkVOXG4iCiAgV0NNRF9SRU5BTUUsICJBanVkYSBkbyBjb21hbmRvIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBSRFxuIgogIFdDTURfUk1ESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBSTURJUlxuIgoKICBXQ01EX1NFVCwKIlNFVCBtb3N0cmEgb3UgbXVkYSBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGRlIHdjbWQuXG5cClxuXApTRVQgc2VtIHBhcuptdHJvcyBtb3N0cmEgdG9kYXMgYXMgdmFy4XZlbCBkZSBhbWJpZW50ZSBhdHVhaXNcblwKXG5cClBhcmEgY3JpYXIgb3UgbW9kaWZpY2FyIHZhcmnhdmVsIGRlIGFtYmllbnRlLCBhIHNpbnRheGUg6TpcblwKXG5cCiAgICAgIFNFVCA8dmFyaeF2ZWw+PTx2YWxvcj5cblwKXG5cCnNlbmRvIHF1ZSA8dmFyaeF2ZWw+IGUgPHZhbG9yPiBz428gdGV4dG9zLiBO428gZGV2ZW0gZXhpc3RpciBlc3Bh529zXG5cCmFudGVzIGRvIHNpbmFsIGRlIGlndWFsZGFkZSwgbmVtIGEgdmFy4XZlbCBwb2RlIGNvbnRlciBlc3Bh529zLlxuXApcblwKTm8gV2luZSwgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIOkgaW5jbHVpZG8gbm8gYW1iaWVudGUgV2luMzIsXG5cCm9uZGUgc2VtcHJlIGhhdmVy4SBtYWlzIHZhbG9yZXMgcXVlIGVtIHVtIHNpc3RlbWEgV2luMzIgbmF0aXZvLiBOb3RlIHF1ZVxuXApu428g6SBwb3Nz7XZlbCBhZmV0YXIgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIGEgcGFydGlyIGRvIHdjbWQuXG4iCgogIFdDTURfU0hJRlQsCiJTSElGVCDpIHVzYWRvIGVtIGFycXVpdm9zIGRlIGxvdGUgcGFyYSByZW1vdmVyIHVtIHBhcuJtZXRybyBxdWUgaW5pY2lhIGFcblwKbGlzdGEsIGFzc2ltIGVudONvIG8gcGFy4m1lbnRybzIgc29icmVw9GUgbyBwYXJhbWV0cm8xIGUgYXNzaW0gcG9yIGRpYW50ZS5cblwKSXN0byBu428gdGVtIGVmZWl0byBzZSBjaGFtYWRvIGEgcGFydGlyIGRhIGxpbmhhIGRlIGNvbWFuZG8uXG4iCgogIFdDTURfVElNRSwgICAiQWp1ZGEgZG8gY29tYW5kbyBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiQ29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkbyB3Y21kLCBlIGEgc2ludGF4ZSDpIFRJVExFIFt0ZXh0b11cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8YXJxdWl2bz4gY29waWEgPGFycXV2bz4gcGFyYSBvIGRpc3Bvc2l0aXZvIGNvbnNvbGUgKG91IG91dHJvLCBzZVxuXApyZWRpcmVjaW9uYWRvKS4gTmVodW1hIHZlcmlmaWNh5+NvIOkgZmVpdGEgc2UgbyBhcnF1aXZvIHBvZGUgc2VyIGxpZG8uXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIOkgdXNhZG8gcGFyYSBjb25maWd1cmFyLCBsaW1wYXIgZSB0ZXN0YXIgbyAnZmxhZycgZGUgdmVyaWZpY2Hn428uIEFzXG5cCmZvcm1hcyB24WxpZGFzIHPjbz5cblwKXG5cClZFUklGWSBPTglDb25maWd1cmEgbyBmbGFnXG5cClZFUklGWSBPRkYJTGltcGEgbyBmbGFnXG5cClZFUklGWQkJTW9zdHJhIE9OIG91IE9GRiBxZG8gYXByb3ByaWFkby5cblwKXG5cCk8gZmxhZyBkZSB2ZXJpZmljYefjbyBu428gdGVtIGZ1bufjbyBubyBXaW5lLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiBtb3N0cmEgYSB2ZXJz428gZW0gZXhlY3Xn428gZG8gd2NtZC5cbiIKCiAgV0NNRF9WT0wsICAgICJBanVkYSBkbyBjb21hbmRvIFZPTFxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmEgYSBzZXNz428gZGUgY29tYW5kbyBhdHVhbCBlIHJldG9ybmEgYW8gc2lzdGVtYSBvcGVyYWNpb25hbFxuXApvdSBzaGVsbCBxdWUgdGVuaGEgaW52b2NhZG8gbyB3Y21kLlxuIgoKICAxMDAwLCAiV0NNRCAtIG9zIGNvbWFuZG8gaW50ZXJub3Mgc+NvOlxuXApBVFRSSUJcdFx0TW9zdHJhIG91IHRyb2NhIGF0cmlidXRvcyBkZSBhcnF1aXZvIERPU1xuXApDQUxMXHRcdEludm9jYSB1bSBhcnF1aXZvIGRlIGxvdGUgZGVudHJvIGRlIG91dHJvXG5cCkNEIChDSERJUilcdE11ZGEgbyBkaXJldPNyaW8gcGFkcuNvIGF0dWFsXG5cCkNMU1x0XHRMaW1wYSBhIHRlbGEgZG8gY29uc29sZVxuXApDT1BZXHRcdENvcGlhIGFycXVpdm9zXG5cCkNUVFlcdFx0TXVkYSBvIGRpc3Bvc2l0aXZvIGRlIGVudHJhZGEvc2HtZGFcblwKREFURVx0XHRNb3N0cmEgb3UgbXVkYSBhIGRhdGEgZG8gc2lzdGVtYVxuXApERUwgKEVSQVNFKVx0QXBhZ2EgdW0gYXJxdWl2byBvdSBjb25qdW50byBkZSBhcnF1aXZvc1xuXApESVJcdFx0TW9zdHJhIG8gY29udGX6ZG8gZGUgdW0gZGlyZXTzcmlvc1xuXApFQ0hPXHRcdENvcGlhIHRleHRvIGRpcmV0YW1lbnRlIG5hIHNh7WRhIGRvIGNvbnNvbGVcblwKSEVMUFx0XHRNb3N0cmEgYnJldmVzIGRldGFsaGVzIGRlIHVtIHTzcGljb1xuXApNRCAoTUtESVIpXHRDcmlhIHVtIHN1YmRpcmV083Jpb1xuXApNT1ZFXHRcdE1vdmUgdW0gYXJxdWl2bywgY29uanVudG8gZGUgYXJxdWl2b3Mgb3UgdW1hIOFydm9yZSBkZSBkaXJldPNyaW9zXG5cClBBVEhcdFx0Q29uZmlnaXJhIG8gY2FtaW5obyBkZSBwcm9jdXJhXG5cClBST01QVFx0XHRNdWRhIG8gJ3Byb21wdCcgZGUgY29tYW5kb1xuXApSRU4gKFJFTkFNRSlcdFJlbm9tZWlhIHVtIGFycXVpdm9cblwKUkQgKFJNRElSKVx0QXBhZ2EgdW0gc3ViZGlyZXTzcmlvXG5cClNFVFx0XHRDb25maWd1cmEgb3UgbW9zdHJhIHZhcmnhdmVpcyBkZSBhbWJpZW50ZVxuXApUSU1FXHRcdENvbmZpZ3VyYSBvdSBtb3N0cmEgYSBob3JhIGF0dWFsIGRvIHNpc3RlbWFcblwKVElUTEVcdFx0Q29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkZSBjb21hbmRvIFdDTURcblwKVFlQRVx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBhcnF1aXZvIHRleHRvXG5cClZFUlx0XHRNb3N0cmEgYSB2ZXJz428gYXR1YWwgZG8gV0NNRFxuXApWT0xcdFx0TW9zdHJhIG8gcvN0dWxvIGRvIHZvbHVtZSBkZSB1bWEgdW5pZGFkZSBkZSBkaXNjb1xuXApFWElUXHRcdEZlY2hhIG8gV0NNRFxuXG5cCkVudHJlIEhFTFAgPGNvbWFuZG8+IHBhcmEgbWFpb3JlcyBpbmZvcm1h5/VlcyBzb2JyZSBhbGd1bnMgZG9zIGNvbWFuZG9zIGFjaW1hXG4iCn0K