LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBQb3J0dWd1ZXNlIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3Y21kLmgiCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkFqdWRhIGRvIGNvbWFuZG8gQVRUUklCXG4iCiAgV0NNRF9DQUxMLAoiQ0FMTCA8YXJxdWl2b19kZV9sb3RlPiDpIHVzYWRvIGRlbnRybyBkZSB1bSBhcnF1aXZvIGRlIGxvdGUgcGFyYSBleGVjdXRhclxuXApjb21hbmRvIGRlIG91dHJvIGFycXVpdm8gZGUgbG90ZS4gUXVhbmRvIG8gYXJxdWl2byBleGlzdGUsIG8gY29udHJvbGUgcmV0b3JuYVxuXAphbyBhcnF1aXZvIHF1ZSBvIGNoYW1vdS4gTyBjb21hbmRvIENBTEwgcG9kZSBwYXNzYXIgcGFy4m1ldHJvcyBhbyBwcm9jZWRpbWVudG9cblwKY2hhbWFkby5cblwKXG5cCk11ZGFubudhcyBubyBkaXJldPNyaW8gcGFkcuNvLCB2YXJp4XZlaXMgZGUgYW1iaWVudGUsIGV0YywgZmVpdGFzIGRlbnRyb1xuXApkbyBwcm9jZWRpbWVudGUgY2hhbWFkbyBz428gaGVyZGFkb3MgcGVsbyBjaGFtYWRvci5cbiIKCiAgV0NNRF9DRCwgICAgICJBanVkYSBkbyBjb21hbmRvIENEXG4iCiAgV0NNRF9DSERJUiwgICJBanVkYSBkbyBjb21hbmRvIENIRElSXG4iCgogIFdDTURfQ0xTLCAgICAiQ0xTIGxpbXBhIGEgdGVsYSBkbyBjb25zb2xlXG4iCgogIFdDTURfQ09QWSwgICAiQWp1ZGEgZG8gY29tYW5kbyBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJBanVkYSBkbyBjb21hbmRvIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIkFqdWRhIGRvIGNvbWFuZG8gREFURVxuIgogIFdDTURfREVMLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBERUxcbiIKICBXQ01EX0RJUiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPHN0cmluZz4gbW9zdHJhIGEgPHN0cmluZz4gbm8gZGlzcG9zaXRpdm8gdGVybWluYWwgYXR1YWwuXG5cClxuXApFQ0hPIE9OIGF0aXZhIGEgZXhpYmnn428gZGUgdG9kb3Mgb3MgY29tYW5kb3Mgc3Vic2VxdWVudGVzIGVtIHVtXG5cCmFycXVpdm8gZGUgbG90ZSBubyB0ZXJtaW5hbCBhbnRlcyBkZWxlcyBzZXJlbSBleGVjdXRhZG9zLlxuXApcblwKRUNITyBPRkYgZGVzYXRpdmEgbyBlZmVpdG8gZGUgdW0gY29tYW5kbyBFQ0hPIE9OIChFQ0hPIOkgT0ZGIHBvciBwYWRy428pLlxuXApPIGNvbWFuZG8gRUNITyBPRkYgcG9kZSBzZXIgaW1wZWRpZG8gZGUgc2VyIG1vc3RyYWRvIGNvbG9jYW5kby1zZSB1bVxuXApz7W1ib2xvIEAgcHJlY2VkZW5kbyBvIG1lc21vLlxuIgoKICBXQ01EX0VSQVNFLCAgIkFqdWRhIGRvIGNvbWFuZG8gRVJBU0VcbiIKCiAgV0NNRF9GT1IsCiJPIGNvbWFuZG8gRk9SIOkgdXNhZG8gcGFyYSBleGVjdXRhciB1bSBjb21hbmRvIGEgY2FkYSB2ZXogZW1cbnVtIGNvbmp1bnRvIGRlIGFycXVpdm9zLlxuXApcblwKU2ludGF4ZTogRk9SICV2YXJp4XZlbCBJTiAoY29uanVudG8pIERPIGNvbWFuZG9cblwKXG5cCk5vIGNtZCwgbuNvIGV4aXN0ZSBhIG5lY2Vzc2lkYWRlIGRlIHVzYXIgZG9pcyBzaW5haXMgJSBub1xuXApjb21hbmRvIEZPUiBub3MgYXJxdWl2b3MgZGUgbG90ZS5cbiIKCiAgV0NNRF9HT1RPLAoiTyBjb21hbmRvIEdPVE8gdHJhbnNmZXJlIGEgZXhlY3Xn428gcGFyYSBvdXRyYSBkZWNsYXJh5+NvIGRlbnRyb1xuXApkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApPIHLzdHVsbyBxdWUgc2Vy4SBvIGRlc3Rpbm8gZG8gY29tYW5kbyBHT1RPIHBvZGUgdGVyIGF06SAyNTUgY2FyYWN0ZXJlc1xuXAptYXMgbuNvIHBvZGUgaW5jbHVpciBlc3Bh529zIChkaWZlcmVudGVtZW50ZSBkZSBvdXRyb3Mgc2lzdGVtYXMgb3BlcmFjaW9uYWlzKS5cblwKU2UgZG9pcyBvdSBtYWlzIHLzdHVsb3MgZm9yZW0gaWRlbnRpY29zIG5vIGFycXVpdm8gZGUgbG90ZSwgbyBwcmltZWlybyBkZWxlc1xuXApzZXLhIHNlbXByZSBleGVjdXRhZG8uIEEgdGVudGF0aXZhIGRlIHVzYXIgbyBHT1RPIHBhcmEgdW0gcvN0dWxvIGluZXhpc3RlbnRlXG5cCnRlcm1pbmEgYSBleGVjdefjbyBkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApHT1RPIG7jbyB0ZW0gZWZlaXRvIHF1YW5kbyB1c2FuZG8gaW50ZXJhdGl2YW1lbnRlLlxuIgoKICBXQ01EX0hFTFAsICAgIkFqdWRhIGRvIGNvbWFuZG8gSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYg6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gY29uZGljaW9uYWxtZW50ZS5cblwKXG5cClNpbnRheGU6CUlGIFtOT1RdIEVYSVNUIGFycXVpdm8gY29tYW5kb1xuXAoJSUYgW05PVF0gdGV4dG8xPT10ZXh0bzIgY29tYW5kb1xuXAoJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKTmEgc2VndW5kYSBmb3JtYSBkbyBjb21hbmRvLCB0ZXh0bzEgZSB0ZXh0bzIgZGV2ZW0gZXN0YXIgdXNhbmRvIGFzcGFzLlxuXApBIGNvbXBhcmHn428gbuNvIGRpZmVyZW5jaWEgbWFp+nNjdWxhcyBkZSBtaW51c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIOkgdXNhZG8gcGFyYSByb3R1bGFyIHVtIHZvbHVtZSBkbyBkaXNjby5cblwKXG5cClNpbnRheGU6IExBQkVMIFtkcml2ZTpdXG5cCk8gY29tYW5kbyBMQUJFTCBpcuEgYWd1YXJkYXIgcXVlIHZjIGluZm9ybWUgbyBub3ZvIHLzdHVsbyBwYXJhIG8gZHJpdmVcblwKZXNwZWNpZmljYWRvLiBWb2PqIHBvZGUgbW9zdHJhciBvIHLzdHVsbyBkbyBkaXNjbyBjb20gbyBjb21hbmRvIFZPTC5cbiIKCiAgV0NNRF9NRCwgICAgICJBanVkYSBkbyBjb21hbmRvIE1EXG4iCiAgV0NNRF9NS0RJUiwgICJBanVkYSBkbyBjb21hbmRvIE1LRElSXG4iCiAgV0NNRF9NT1ZFLAoiTU9WRSByZWFsb2NhIHVtIGFycXVpdm8gb3UgZGlyZXTzcmlvIGVtIHVtIG5vdm8gcG9udG8gbm8gc2lzdGVtYSBkZSBhcnF1aXZvcy5cblwKXG5cClNlIG8gaXRlbSBzZW5kbyBtb3ZpZG8g6SB1bSBkaXJldPNyaW8gZW50428gdG9kb3Mgb3MgYXJxdWl2b3MgZSBzdWJkaXJldPNyaW9zXG5cCmFiYWl4byBkbyBpdGVtIHPjbyBtb3ZpZG9zIGNvbSBvIG1lc21vLlxuXApcblwKTU9WRSBmYWxoYXLhIHNlIG8gbG9jYWwgYW50aWdvIGUgbyBub3ZvIGxvY2FsIGVzdONvIGVtIGRpZmVyZW50ZXMgdW5pZGFkZXMuXG4iCgogIFdDTURfUEFUSCwKIlBBVEggbW9zdHJhIG91IHBlcm1pdGUgbXVkYXIgbyBjYW1pbmhvIGRlIHByb2N1cmEgZGUgcHJvZ3JhbWFzIGRvIGNtZC5cblwKXG5cCkRpZ2l0YW5kbyBQQVRIIG1vc3RyYXLhIGEgYXR1YWwgY29uZmlndXJh5+NvIGRvIGNvbWFuZG8gUEFUSCAoaW5pY2lhbG1lbnRlIGVzdGVcblwKdmFsb3Ig6SBlc3BlY2lmaWNhZG8gbm8gYXJxdWl2byB3aW5lLmNvbmYpLiBQYXJhIG11ZGFyIGFzIGNvbmZpZ3VyYef1ZXMsIGRpZ2l0ZVxuXApub3ZvcyB2YWxvcmVzIG5vIGNvbWFuZG8gUEFUSC5cblwKXG5cClRhbWLpbSDpIHBvc3PtdmVsIG1vZGlmaWNhciBvIGNvbWFuZG8gUEFUSCB1c2FuZG8gYSB2YXJp4XZlbCBkZSBhbWJpZW50ZSBQQVRILFxuXApwb3IgZXhlbXBsbzpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgbW9zdHJhIGEgc2VndWludGUgbWVuc2FnZW0gbmEgdGVsYSAnUHJlc3Npb25lIEVudGVyIHBhcmEgY29udGludWFyJ1xuXAplIGFndWFyZGEgcXVlIG8gdXN14XJpbyBwcmVzc2lvbmUgYSB0ZWNsYSBFbnRlci4gSXN0byDpIPp0aWwgcHJpbmNpcGFsbWVudGVcblwKZW0gYXJxdWl2b3MgZGUgbG90ZSBwYXJhIHBlcm1pdGlyIGFvIHVzdeFyaW8gbGVyIGEgc2HtZGEgZGUgdW0gY29tYW5kbyBhbnRlcmlvclxuXAphbnRlcyBxdWUgYSB0ZWxhIHNvZnJhIHVtIHJvbGFtZW50by5cbiIKCiAgV0NNRF9QUk9NUFQsCiJQUk9NUFQgY29uZmlndXJhIG8gJ3Byb21wdCcgZGEgbGluaGEgZGUgY29tYW5kby5cblwKXG5cCk8gdGV4dG8gc2VndWluZG8gbyBjb21hbmRvIFBST01QVCAoZSBvcyBlc3Bh529zIGltZWRpYXRhbWVudGUgZGVwb2lzKVxuXAphcGFyZWNlbSBubyBjb21l528gZGEgbGluaGEgZW5xdWFudG8gbyBjbWQgZXN04SBhZ3VhcmRhbmRvIHBvciBjb21hbmRvcy5cblwKXG5cCk9zIHNlZ3VpbnRlcyBjYXJhY3RlcmVzIHRlbSB1bSBzaWduaWZpY2FkbyBlc3BlY2lhbCwgY29uZm9ybWUgbW9zdHJhZG86XG5cClxuXAokJCAgICBDaWZy428gKCQpICAgICAgICAgICRfICAgIEF2YW7nbyBkZSBsaW5oYSAgICAgJGIgICAgU+1tYm9sbyBwaXBlICh8KVxuXAokZCAgICBEYXRhIGF0dWFsICAgICAgICAgICRlICAgIEPzZGlnbyBkZSBlc2NhcGUgICAgJGcgICAgU2luYWwgZGUgbWFpb3IgKD4pXG5cCiRsICAgIFNpbmFsIGRlIG1lbm9yICg8KSAgJG4gICAgVW5pZGFkZSBhdHVhbCAgICAgICAkcCAgICBDYW1pbmhvIGF0dWFsXG5cCiRxICAgIFNpbmFsIGRlIGlndWFsICg9KSAgJHQgICAgSG9yYSBhdHVhbCAgICAgICAgICAkdiAgICBWZXJz428gZG8gY21kXG5cClxuXApOb3RlIHF1ZSBkaWdpdGFuZG8gbyBjb21hbmRvIFBST01QVCBzZW0gcGFy4m1ldHJvcyByZWNvbmZpZ3VyYSBvIHBhZHLjbyxcblwKcXVlIOkgYSBsZXRyYSBkYSB1bmlkYWRlIGF0dWFsIHNlZ3VpZGEgcGVsbyBkaXJldPNyaW8gZSB1bSBzaW5hbCBkZSBtYWlvclxuXAooZXF1aXZhbGVudGUgYSB1bSBjb21hbmRvIFBST01QVCAkcCRnKS5cblwKXG5cCk8gJ3Byb21wdCcgdGFtYultIHBvZGUgc2VyIG11ZGFkbyBhbHRlcmFuZG8gYSB2YXJp4XZlbCBQUk9NUFQsIGFzc2ltLFxuXApvIGNvbWFuZG8gJ1NFVCBQUk9NUFQ9dGV4dG8nIHRlbSBvIG1lc21vIGVmZWl0byBxdWUgJ1BST01QVCB0ZXh0bydcbiIKCiAgV0NNRF9SRU0sCiJVbWEgbGluaGEgZGUgY29tYW5kbyBpbmljaWFuZG8gY29tIFJFTSAoc2VndWluZG8gZGUgdW0gZXNwYedvKSBu428gZmF6XG5cCmHn428gYWxndW1hLCBlIG9zIGNhcmF0ZXJlcyB1c2FuZG8gc+NvIGNvbnNpZGVyYWRvcyBjb21lbnThcmlvcyBlbSB1bVxuXAphcnF1aXZvIGRlIGxvdGVcbiIKCiAgV0NNRF9SRU4sICAgICJBanVkYSBkbyBjb21hbmRvIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiQWp1ZGEgZG8gY29tYW5kbyBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkRcbiIKICBXQ01EX1JNRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gUk1ESVJcbiIKCiAgV0NNRF9TRVQsCiJTRVQgbW9zdHJhIG91IG11ZGEgYXMgdmFy4XZlbCBkZSBhbWJpZW50ZSBkZSBjbWQuXG5cClxuXApTRVQgc2VtIHBhcuptdHJvcyBtb3N0cmEgdG9kYXMgYXMgdmFy4XZlbCBkZSBhbWJpZW50ZSBhdHVhaXNcblwKXG5cClBhcmEgY3JpYXIgb3UgbW9kaWZpY2FyIHZhcmnhdmVsIGRlIGFtYmllbnRlLCBhIHNpbnRheGUg6TpcblwKXG5cCiAgICAgIFNFVCA8dmFyaeF2ZWw+PTx2YWxvcj5cblwKXG5cCnNlbmRvIHF1ZSA8dmFyaeF2ZWw+IGUgPHZhbG9yPiBz428gdGV4dG9zLiBO428gZGV2ZW0gZXhpc3RpciBlc3Bh529zXG5cCmFudGVzIGRvIHNpbmFsIGRlIGlndWFsZGFkZSwgbmVtIGEgdmFy4XZlbCBwb2RlIGNvbnRlciBlc3Bh529zLlxuXApcblwKTm8gV2luZSwgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIOkgaW5jbHVpZG8gbm8gYW1iaWVudGUgV2luMzIsXG5cCm9uZGUgc2VtcHJlIGhhdmVy4SBtYWlzIHZhbG9yZXMgcXVlIGVtIHVtIHNpc3RlbWEgV2luMzIgbmF0aXZvLiBOb3RlIHF1ZVxuXApu428g6SBwb3Nz7XZlbCBhZmV0YXIgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIGEgcGFydGlyIGRvIGNtZC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUIOkgdXNhZG8gZW0gYXJxdWl2b3MgZGUgbG90ZSBwYXJhIHJlbW92ZXIgdW0gcGFy4m1ldHJvIHF1ZSBpbmljaWEgYVxuXApsaXN0YSwgYXNzaW0gZW50428gbyBwYXLibWVudHJvMiBzb2JyZXD0ZSBvIHBhcmFtZXRybzEgZSBhc3NpbSBwb3IgZGlhbnRlLlxuXApJc3RvIG7jbyB0ZW0gZWZlaXRvIHNlIGNoYW1hZG8gYSBwYXJ0aXIgZGEgbGluaGEgZGUgY29tYW5kby5cbiIKCiAgV0NNRF9USU1FLCAgICJBanVkYSBkbyBjb21hbmRvIFRJTUVcbiIKCiAgV0NNRF9USVRMRSwgICJDb25maWd1cmEgbyB07XR1bG8gZGEgamFuZWxhIGRvIGNtZCwgZSBhIHNpbnRheGUg6SBUSVRMRSBbdGV4dG9dXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPGFycXVpdm8+IGNvcGlhIDxhcnF1dm8+IHBhcmEgbyBkaXNwb3NpdGl2byBjb25zb2xlIChvdSBvdXRybywgc2VcblwKcmVkaXJlY2lvbmFkbykuIE5laHVtYSB2ZXJpZmljYefjbyDpIGZlaXRhIHNlIG8gYXJxdWl2byBwb2RlIHNlciBsaWRvLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSDpIHVzYWRvIHBhcmEgY29uZmlndXJhciwgbGltcGFyIGUgdGVzdGFyIG8gJ2ZsYWcnIGRlIHZlcmlmaWNh5+NvLiBBc1xuXApmb3JtYXMgduFsaWRhcyBz428+XG5cClxuXApWRVJJRlkgT04JQ29uZmlndXJhIG8gZmxhZ1xuXApWRVJJRlkgT0ZGCUxpbXBhIG8gZmxhZ1xuXApWRVJJRlkJCU1vc3RyYSBPTiBvdSBPRkYgcWRvIGFwcm9wcmlhZG8uXG5cClxuXApPIGZsYWcgZGUgdmVyaWZpY2Hn428gbuNvIHRlbSBmdW7n428gbm8gV2luZS5cbiIKCiAgV0NNRF9WRVIsCiJWRVIgbW9zdHJhIGEgdmVyc+NvIGVtIGV4ZWN15+NvIGRvIGNtZC5cbiIKCiAgV0NNRF9WT0wsICAgICJBanVkYSBkbyBjb21hbmRvIFZPTFxuIgoKICBXQ01EX1BVU0hELCAgIlBVU0hEIDxkaXJlY3RvcnluYW1lPiBzYXZlcyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb250byBhXG5cCnN0YWNrLCBhbmQgdGhlbiBjaGFuZ2VzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB0byB0aGUgc3VwcGxpZWQgb25lLlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgY2hhbmdlcyBjdXJyZW50IGRpcmVjdG9yeSB0byB0aGUgbGFzdCBvbmUgc2F2ZWQgd2l0aFxuXApQVVNIRC5cbiIKCiAgV0NNRF9NT1JFLCAgICJNT1JFIGRpc3BsYXlzIG91dHB1dCBvZiBmaWxlcyBvciBwaXBlZCBpbnB1dCBpbiBwYWdlcy5cbiIKCiAgV0NNRF9FWElULAoiRVhJVCB0ZXJtaW5hIGEgc2Vzc+NvIGRlIGNvbWFuZG8gYXR1YWwgZSByZXRvcm5hIGFvIHNpc3RlbWEgb3BlcmFjaW9uYWxcblwKb3Ugc2hlbGwgcXVlIHRlbmhhIGludm9jYWRvIG8gY21kLlxuIgoKICBXQ01EX0FMTEhFTFAsICJDTUQgLSBvcyBjb21hbmRvIGludGVybm9zIHPjbzpcblwKQVRUUklCXHRcdE1vc3RyYSBvdSB0cm9jYSBhdHJpYnV0b3MgZGUgYXJxdWl2byBET1NcblwKQ0FMTFx0XHRJbnZvY2EgdW0gYXJxdWl2byBkZSBsb3RlIGRlbnRybyBkZSBvdXRyb1xuXApDRCAoQ0hESVIpXHRNdWRhIG8gZGlyZXTzcmlvIHBhZHLjbyBhdHVhbFxuXApDTFNcdFx0TGltcGEgYSB0ZWxhIGRvIGNvbnNvbGVcblwKQ09QWVx0XHRDb3BpYSBhcnF1aXZvc1xuXApDVFRZXHRcdE11ZGEgbyBkaXNwb3NpdGl2byBkZSBlbnRyYWRhL3Nh7WRhXG5cCkRBVEVcdFx0TW9zdHJhIG91IG11ZGEgYSBkYXRhIGRvIHNpc3RlbWFcblwKREVMIChFUkFTRSlcdEFwYWdhIHVtIGFycXVpdm8gb3UgY29uanVudG8gZGUgYXJxdWl2b3NcblwKRElSXHRcdE1vc3RyYSBvIGNvbnRl+mRvIGRlIHVtIGRpcmV083Jpb3NcblwKRUNIT1x0XHRDb3BpYSB0ZXh0byBkaXJldGFtZW50ZSBuYSBzYe1kYSBkbyBjb25zb2xlXG5cCkhFTFBcdFx0TW9zdHJhIGJyZXZlcyBkZXRhbGhlcyBkZSB1bSB083BpY29cblwKTUQgKE1LRElSKVx0Q3JpYSB1bSBzdWJkaXJldPNyaW9cblwKTU9SRVx0XHREaXNwbGF5IG91dHB1dCBpbiBwYWdlc1xuXApNT1ZFXHRcdE1vdmUgdW0gYXJxdWl2bywgY29uanVudG8gZGUgYXJxdWl2b3Mgb3UgdW1hIOFydm9yZSBkZSBkaXJldPNyaW9zXG5cClBBVEhcdFx0Q29uZmlnaXJhIG8gY2FtaW5obyBkZSBwcm9jdXJhXG5cClBPUERcdFx0UmVzdG9yZXMgdGhlIGRpcmVjdG9yeSB0byB0aGUgbGFzdCBvbmUgc2F2ZWQgd2l0aCBQVVNIRFxuXApQUk9NUFRcdFx0TXVkYSBvICdwcm9tcHQnIGRlIGNvbWFuZG9cblwKUFVTSERcdFx0Q2hhbmdlcyB0byBhIG5ldyBkaXJlY3RvcnksIHNhdmluZyB0aGUgY3VycmVudCBvbmVcblwKUkVOIChSRU5BTUUpXHRSZW5vbWVpYSB1bSBhcnF1aXZvXG5cClJEIChSTURJUilcdEFwYWdhIHVtIHN1YmRpcmV083Jpb1xuXApTRVRcdFx0Q29uZmlndXJhIG91IG1vc3RyYSB2YXJp4XZlaXMgZGUgYW1iaWVudGVcblwKVElNRVx0XHRDb25maWd1cmEgb3UgbW9zdHJhIGEgaG9yYSBhdHVhbCBkbyBzaXN0ZW1hXG5cClRJVExFXHRcdENvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZGUgY29tYW5kbyBDTURcblwKVFlQRVx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBhcnF1aXZvIHRleHRvXG5cClZFUlx0XHRNb3N0cmEgYSB2ZXJz428gYXR1YWwgZG8gQ01EXG5cClZPTFx0XHRNb3N0cmEgbyBy83R1bG8gZG8gdm9sdW1lIGRlIHVtYSB1bmlkYWRlIGRlIGRpc2NvXG5cCkVYSVRcdFx0RmVjaGEgbyBDTURcblxuXApFbnRyZSBIRUxQIDxjb21hbmRvPiBwYXJhIG1haW9yZXMgaW5mb3JtYef1ZXMgc29icmUgYWxndW5zIGRvcyBjb21hbmRvcyBhY2ltYVxuIgoKICBXQ01EX0NPTkZJUk0sICJBcmUgeW91IHN1cmUiCiAgV0NNRF9ZRVMsICJZIgogIFdDTURfTk8sICJOIgogIFdDTURfTk9BU1NPQywgIkZpbGUgYXNzb2NpYXRpb24gbWlzc2luZyBmb3IgZXh0ZW5zaW9uICVzXG4iCiAgV0NNRF9OT0ZUWVBFLCAiTm8gb3BlbiBjb21tYW5kIGFzc29jaWF0ZWQgd2l0aCBmaWxlIHR5cGUgJyVzJ1xuIgogIFdDTURfT1ZFUldSSVRFLCAiT3ZlcndyaXRlICVzIgogIFdDTURfTU9SRVNUUiwgIk1vcmUuLi4iCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJBanVkYSBkbyBjb21hbmRvIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPGZpY2hlaXJvX2RlX2xvdGU+IOkgdXNhZG8gZGVudHJvIGRlIHVtIGZpY2hlaXJvIGRlIGxvdGUgcGFyYSBleGVjdXRhciBvXG5cCmNvbWFuZG8gZGUgb3V0cm8gZmljaGVpcm8gZGUgbG90ZS4gUXVhbmRvIG8gZmljaGVpcm8gZXhpc3RlLCBvIGNvbnRyb2xlIHJldG9ybmFcblwKYW8gZmljaGVpcm8gcXVlIG8gY2hhbW91LiBPIGNvbWFuZG8gQ0FMTCBwb2RlIHBhc3NhciBwYXLibWV0cm9zIGFvIHByb2NlZGltZW50b1xuXApjaGFtYWRvLlxuXApcblwKTXVkYW7nYXMgbm8gZGlyZWN083JpbyBwYWRy428sIHZhcmnhdmVpcyBkZSBhbWJpZW50ZSwgZXRjLCBmZWl0YXMgZGVudHJvXG5cCmRvIHByb2NlZGltZW50ZSBjaGFtYWRvIHPjbyBoZXJkYWRvcyBwZWxvIGNoYW1hZG9yLlxuIgoKICBXQ01EX0NELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gQ0RcbiIKICBXQ01EX0NIRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgbGltcGEgYSBlY3LjIGRhIGNvbnNvbGFcbiIKCiAgV0NNRF9DT1BZLCAgICJBanVkYSBkbyBjb21hbmRvIENPUFlcbiIKICBXQ01EX0NUVFksICAgIkFqdWRhIGRvIGNvbWFuZG8gQ1RUWVxuIgogIFdDTURfREFURSwgICAiQWp1ZGEgZG8gY29tYW5kbyBEQVRFXG4iCiAgV0NNRF9ERUwsICAgICJBanVkYSBkbyBjb21hbmRvIERFTFxuIgogIFdDTURfRElSLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBESVJcbiIKCiAgV0NNRF9FQ0hPLAoiRUNITyA8c3RyaW5nPiBtb3N0cmEgYSA8c3RyaW5nPiBubyBkaXNwb3NpdGl2byB0ZXJtaW5hbCBhY3R1YWwuXG5cClxuXApFQ0hPIE9OIGFjdGl2YSBhIGV4aWJp5+NvIGRlIHRvZG9zIG9zIGNvbWFuZG9zIHN1YnNlcXVlbnRlcyBudW1cblwKZmljaGVpcm8gZGUgbG90ZSBubyB0ZXJtaW5hbCBhbnRlcyBkZWxlcyBzZXJlbSBleGVjdXRhZG9zLlxuXApcblwKRUNITyBPRkYgZGVzYWN0aXZhIG8gZWZlaXRvIGRlIHVtIGNvbWFuZG8gRUNITyBPTiAoRUNITyDpIE9GRiBwb3IgcGFkcuNvKS5cblwKTyBjb21hbmRvIEVDSE8gT0ZGIHBvZGUgc2VyIGltcGVkaWRvIGRlIHNlciBtb3N0cmFkbyBjb2xvY2FuZG8tc2UgdW1cblwKc+1tYm9sbyBAIHByZWNlZGVuZG8gbyBtZXNtby5cbiIKCiAgV0NNRF9FUkFTRSwgICJBanVkYSBkbyBjb21hbmRvIEVSQVNFXG4iCgogIFdDTURfRk9SLAoiTyBjb21hbmRvIEZPUiDpIHVzYWRvIHBhcmEgZXhlY3V0YXIgdW0gY29tYW5kbyBhIGNhZGEgdmV6IG51bSBjb25qdW50byBkZSBmaWNoZWlyb3MuXG5cClxuXApTaW50YXhlOiBGT1IgJXZhcmnhdmVsIElOIChjb25qdW50bykgRE8gY29tYW5kb1xuXApcblwKTm8gY21kLCBu428gZXhpc3RlIGEgbmVjZXNzaWRhZGUgZGUgdXNhciBkb2lzIHNpbmFpcyAlIG5vXG5cCmNvbWFuZG8gRk9SIG5vcyBmaWNoZWlyb3MgZGUgbG90ZS5cbiIKCiAgV0NNRF9HT1RPLAoiTyBjb21hbmRvIEdPVE8gdHJhbnNmZXJlIGEgZXhlY3Xn428gcGFyYSBvdXRyYSBkZWNsYXJh5+NvIGRlbnRyb1xuXApkbyBmaWNoZWlybyBkZSBsb3RlLlxuXApcblwKTyBy83R1bG8gcXVlIHNlcuEgbyBkZXN0aW5vIGRvIGNvbWFuZG8gR09UTyBwb2RlIHRlciBhdOkgMjU1IGNhcmFjdGVyZXNcblwKbWFzIG7jbyBwb2RlIGNvbnRlciBlc3Bh529zIChkaWZlcmVudGVtZW50ZSBkZSBvdXRyb3Mgc2lzdGVtYXMgb3BlcmFjaW9uYWlzKS5cblwKU2UgZG9pcyBvdSBtYWlzIHLzdHVsb3MgZm9yZW0gaWRlbnRpY29zIG5vIGZpY2hlaXJvIGRlIGxvdGUsIG8gcHJpbWVpcm8gZGVsZXNcblwKc2Vy4SBzZW1wcmUgZXhlY3V0YWRvLiBBIHRlbnRhdGl2YSBkZSB1c2FyIG8gR09UTyBwYXJhIHVtIHLzdHVsbyBpbmV4aXN0ZW50ZVxuXAp0ZXJtaW5hIGEgZXhlY3Xn428gZG8gZmljaGVpcm8gZGUgbG90ZS5cblwKXG5cCkdPVE8gbuNvIHRlbSBlZmVpdG8gcXVhbmRvIHVzYWRvIGludGVyYWN0aXZhbWVudGUuXG4iCgogIFdDTURfSEVMUCwgICAiQWp1ZGEgZG8gY29tYW5kbyBIRUxQXG4iCgogIFdDTURfSUYsCiJJRiDpIHVzYWRvIHBhcmEgZXhlY3V0YXIgdW0gY29tYW5kbyBjb25kaWNpb25hbG1lbnRlLlxuXApcblwKU2ludGF4ZToJSUYgW05PVF0gRVhJU1QgZmljaGVpcm8gY29tYW5kb1xuXAoJSUYgW05PVF0gdGV4dG8xPT10ZXh0bzIgY29tYW5kb1xuXAoJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKTmEgc2VndW5kYSBmb3JtYSBkbyBjb21hbmRvLCB0ZXh0bzEgZSB0ZXh0bzIgZGV2ZW0gZXN0YXIgYSB1c2FyIGFzcGFzLlxuXApBIGNvbXBhcmHn428gbuNvIGRpZmVyZW5jaWEgbWFp+nNjdWxhcyBkZSBtaW51c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIOkgdXNhZG8gcGFyYSByb3R1bGFyIHVtIHZvbHVtZSBkbyBkaXNjby5cblwKXG5cClNpbnRheGU6IExBQkVMIFtkcml2ZTpdXG5cCk8gY29tYW5kbyBMQUJFTCBpcuEgYWd1YXJkYXIgcXVlIGluZm9ybWUgbyBub3ZvIHLzdHVsbyBwYXJhIG8gZHJpdmVcblwKZXNwZWNpZmljYWRvLiBQb2RlIG1vc3RyYXIgbyBy83R1bG8gZG8gZGlzY28gY29tIG8gY29tYW5kbyBWT0wuXG4iCgogIFdDTURfTUQsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBNRFxuIgogIFdDTURfTUtESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBNS0RJUlxuIgogIFdDTURfTU9WRSwKIk1PVkUgcmVhbG9jYSB1bSBmaWNoZWlybyBvdSBkaXJlY3TzcmlvIG51bSBub3ZvIHBvbnRvIG5vIHNpc3RlbWEgZGUgZmljaGVpcm9zLlxuXApcblwKU2UgbyBpdGVtIGFvIHNlciBtb3ZpZG8g6SB1bSBkaXJlY3TzcmlvIGVudONvIHRvZG9zIG9zIGZpY2hlaXJvcyBlIHN1YmRpcmVjdPNyaW9zXG5cCmFiYWl4byBkbyBpdGVtIHNlcuNvIG1vdmlkb3MgY29tIG8gbWVzbW8uXG5cClxuXApNT1ZFIGZhbGhhcuEgc2UgbyBsb2NhbCBhbnRpZ28gZSBvIG5vdm8gbG9jYWwgZXN0428gZW0gZGlmZXJlbnRlcyB1bmlkYWRlcy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtb3N0cmEgb3UgcGVybWl0ZSBtdWRhciBvIGNhbWluaG8gZGUgcHJvY3VyYSBkZSBwcm9ncmFtYXMgZG8gY21kLlxuXApcblwKQW8gZGlnaXRhciBQQVRIIG1vc3RyYXLhIGEgYWN0dWFsIGNvbmZpZ3VyYefjbyBkbyBjb21hbmRvIFBBVEggKGluaWNpYWxtZW50ZSBlc3RlXG5cCnZhbG9yIOkgZXNwZWNpZmljYWRvIG5vIGZpY2hlaXJvIHdpbmUuY29uZikuIFBhcmEgbXVkYXIgYXMgY29uZmlndXJh5/VlcywgZGlnaXRlXG5cCm5vdm9zIHZhbG9yZXMgbm8gY29tYW5kbyBQQVRILlxuXApcblwKVGFtYultIOkgcG9zc+12ZWwgbW9kaWZpY2FyIG8gY29tYW5kbyBQQVRIIHVzYW5kbyBhIHZhcmnhdmVsIGRlIGFtYmllbnRlIFBBVEgsXG5cCnBvciBleGVtcGxvOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSBtb3N0cmEgYSBzZWd1aW50ZSBtZW5zYWdlbSBubyBlY3LjICdQcmltYSBFbnRlciBwYXJhIGNvbnRpbnVhcidcblwKZSBhZ3VhcmRhIHF1ZSBvIHV0aWxpemFkb3IgcHJpbWEgYSB0ZWNsYSBFbnRlci4gSXN0byDpIPp0aWwgcHJpbmNpcGFsbWVudGVcblwKZW0gZmljaGVpcm9zIGRlIGxvdGUgcGFyYSBwZXJtaXRpciBhbyB1dGlsaXphZG9yIGxlciBhIHNh7WRhIGRlIHVtIGNvbWFuZG8gYW50ZXJpb3JcblwKYW50ZXMgcXVlIG8gZWNy4yBzb2ZyYSB1bSByb2xhbWVudG8uXG4iCgogIFdDTURfUFJPTVBULAoiUFJPTVBUIGNvbmZpZ3VyYSBvICdwcm9tcHQnIGRhIGxpbmhhIGRlIGNvbWFuZG8uXG5cClxuXApPIHRleHRvIGEgc2VndWlyIG8gY29tYW5kbyBQUk9NUFQgKGUgb3MgZXNwYedvcyBpbWVkaWF0YW1lbnRlIGRlcG9pcylcblwKYXBhcmVjZW0gbm8gY29tZedvIGRhIGxpbmhhIGVucXVhbnRvIG8gY21kIGVzdOEgYSBhZ3VhcmRhciBwb3IgY29tYW5kb3MuXG5cClxuXApPcyBzZWd1aW50ZXMgY2FyYWN0ZXJlcyB0ZW0gdW0gc2lnbmlmaWNhZG8gZXNwZWNpYWwsIGNvbmZvcm1lIG1vc3RyYWRvOlxuXApcblwKJCQgICAgQ2lmcuNvICgkKSAgICAgICAgICAkXyAgICBBdmFu528gZGUgbGluaGEgICAgICRiICAgIFPtbWJvbG8gcGlwZSAofClcblwKJGQgICAgRGF0YSBhY3R1YWwgICAgICAgICAgJGUgICAgQ/NkaWdvIGRlIGVzY2FwZSAgICAkZyAgICBTaW5hbCBkZSBtYWlvciAoPilcblwKJGwgICAgU2luYWwgZGUgbWVub3IgKDwpICAkbiAgICBVbmlkYWRlIGFjdHVhbCAgICAgICAkcCAgICBDYW1pbmhvIGFjdHVhbFxuXAokcSAgICBTaW5hbCBkZSBpZ3VhbCAoPSkgICR0ICAgIEhvcmEgYWN0dWFsICAgICAgICAgICR2ICAgIFZlcnPjbyBkbyBjbWRcblwKXG5cCk5vdGUgcXVlIGFvIGRpZ2l0YXIgbyBjb21hbmRvIFBST01QVCBzZW0gcGFy4m1ldHJvcyByZWNvbmZpZ3VyYSBvIHBhZHLjbyxcblwKcXVlIOkgYSBsZXRyYSBkYSB1bmlkYWRlIGFjdHVhbCBzZWd1aWRhIHBlbG8gZGlyZWN083JpbyBlIHVtIHNpbmFsIGRlIG1haW9yXG5cCihlcXVpdmFsZW50ZSBhIHVtIGNvbWFuZG8gUFJPTVBUICRwJGcpLlxuXApcblwKTyAncHJvbXB0JyB0YW1i6W0gcG9kZSBzZXIgbXVkYWRvIGFsdGVyYW5kbyBhIHZhcmnhdmVsIFBST01QVCwgYXNzaW0sXG5cCm8gY29tYW5kbyAnU0VUIFBST01QVD10ZXh0bycgdGVtIG8gbWVzbW8gZWZlaXRvIHF1ZSAnUFJPTVBUIHRleHRvJ1xuIgoKICBXQ01EX1JFTSwKIlVtYSBsaW5oYSBkZSBjb21hbmRvIGEgaW5pY2lhciBjb20gUkVNIChzZWd1aWRvIGRlIHVtIGVzcGHnbykgbuNvIGZhelxuXApuZW5odW1hIGFj5+NvLCBlIG9zIGNhcmF0ZXJlcyBhIHVzYXIgc+NvIGNvbnNpZGVyYWRvcyBjb21lbnThcmlvcyBudW1cblwKZmljaGVpcm8gZGUgbG90ZVxuIgoKICBXQ01EX1JFTiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkVOXG4iCiAgV0NNRF9SRU5BTUUsICJBanVkYSBkbyBjb21hbmRvIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBSRFxuIgogIFdDTURfUk1ESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBSTURJUlxuIgoKICBXQ01EX1NFVCwKIlNFVCBtb3N0cmEgb3UgbXVkYSBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGRlIGNtZC5cblwKXG5cClNFVCBzZW0gcGFy6m10cm9zIG1vc3RyYSB0b2RhcyBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGFjdHVhaXNcblwKXG5cClBhcmEgY3JpYXIgb3UgbW9kaWZpY2FyIHZhcmnhdmVsIGRlIGFtYmllbnRlLCBhIHNpbnRheGUg6TpcblwKXG5cCiAgICAgIFNFVCA8dmFyaeF2ZWw+PTx2YWxvcj5cblwKXG5cCnNlbmRvIHF1ZSA8dmFyaeF2ZWw+IGUgPHZhbG9yPiBz428gdGV4dG9zLiBO428gZGV2ZW0gZXhpc3RpciBlc3Bh529zXG5cCmFudGVzIGRvIHNpbmFsIGRlIGlndWFsZGFkZSwgbmVtIGEgdmFy4XZlbCBwb2RlIGNvbnRlciBlc3Bh529zLlxuXApcblwKTm8gV2luZSwgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIOkgaW5jbHVpZG8gbm8gYW1iaWVudGUgV2luMzIsXG5cCm9uZGUgc2VtcHJlIGhhdmVy4SBtYWlzIHZhbG9yZXMgcXVlIG51bSBzaXN0ZW1hIFdpbjMyIG5hdGl2by4gTm90ZSBxdWVcblwKbuNvIOkgcG9zc+12ZWwgYWZlY3RhciBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwgYSBwYXJ0aXIgZG8gY21kLlxuIgoKICBXQ01EX1NISUZULAoiU0hJRlQg6SB1c2FkbyBlbSBmaWNoZWlyb3MgZGUgbG90ZSBwYXJhIHJlbW92ZXIgdW0gcGFy4m1ldHJvIHF1ZSBpbmljaWEgYVxuXApsaXN0YSwgYXNzaW0gZW50428gbyBwYXLibWVudHJvMiBzb2JyZXD0ZSBvIHBhcmFtZXRybzEgZSBhc3NpbSBwb3IgZGlhbnRlLlxuXApJc3RvIG7jbyB0ZW0gZWZlaXRvIHNlIGNoYW1hZG8gYSBwYXJ0aXIgZGEgbGluaGEgZGUgY29tYW5kby5cbiIKCiAgV0NNRF9USU1FLCAgICJBanVkYSBkbyBjb21hbmRvIFRJTUVcbiIKCiAgV0NNRF9USVRMRSwgICJDb25maWd1cmEgbyB07XR1bG8gZGEgamFuZWxhIGRvIGNtZCwgZSBhIHNpbnRheGUg6SBUSVRMRSBbdGV4dG9dXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPGZpY2hlaXJvPiBjb3BpYSA8ZmljaGVpcm8+IHBhcmEgbyBkaXNwb3NpdGl2byBjb25zb2xhIChvdSBvdXRybywgc2VcblwKcmVkaXJlY2Npb25hZG8pLiBOZWh1bWEgdmVyaWZpY2Hn428g6SBmZWl0YSBzZSBvIGZpY2hlaXJvIHBvZGUgc2VyIGxpZG8uXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIOkgdXNhZG8gcGFyYSBjb25maWd1cmFyLCBsaW1wYXIgZSB0ZXN0YXIgbyAnZmxhZycgZGUgdmVyaWZpY2Hn428uIEFzXG5cCmZvcm1hcyB24WxpZGFzIHPjbz5cblwKXG5cClZFUklGWSBPTglDb25maWd1cmEgbyBmbGFnXG5cClZFUklGWSBPRkYJTGltcGEgbyBmbGFnXG5cClZFUklGWQkJTW9zdHJhIE9OIG91IE9GRiBxZG8gYXByb3ByaWFkby5cblwKXG5cCk8gZmxhZyBkZSB2ZXJpZmljYefjbyBu428gdGVtIGZ1bufjbyBubyBXaW5lLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiBtb3N0cmEgYSB2ZXJz428gZW0gZXhlY3Xn428gZG8gY21kLlxuIgoKICBXQ01EX1ZPTCwgICAgIkFqdWRhIGRvIGNvbWFuZG8gVk9MXG4iCgogIFdDTURfUFVTSEQsICAiUFVTSEQgPGRpcmVjdG9yeW5hbWU+IHNhdmVzIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBvbnRvIGFcblwKc3RhY2ssIGFuZCB0aGVuIGNoYW5nZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoZSBzdXBwbGllZCBvbmUuXG4iCgogIFdDTURfUE9QRCwgICAiUE9QRCBjaGFuZ2VzIGN1cnJlbnQgZGlyZWN0b3J5IHRvIHRoZSBsYXN0IG9uZSBzYXZlZCB3aXRoXG5cClBVU0hELlxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgZGlzcGxheXMgb3V0cHV0IG9mIGZpbGVzIG9yIHBpcGVkIGlucHV0IGluIHBhZ2VzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmEgYSBzZXNz428gZGUgY29tYW5kbyBhY3R1YWwgZSByZXRvcm5hIGFvIHNpc3RlbWEgb3BlcmFjaW9uYWxcblwKb3Ugc2hlbGwgcXVlIHRlbmhhIGludm9jYWRvIG8gY21kLlxuIgoKICBXQ01EX0FMTEhFTFAsICJDTUQgLSBvcyBjb21hbmRvIGludGVybm9zIHPjbzpcblwKQVRUUklCXHRcdE1vc3RyYSBvdSB0cm9jYSBhdHJpYnV0b3MgZG8gZmljaGVpcm8gRE9TXG5cCkNBTExcdFx0SW52b2NhIHVtIGZpY2hlaXJvIGRlIGxvdGUgZGVudHJvIGRlIG91dHJvXG5cCkNEIChDSERJUilcdE11ZGEgbyBkaXJlY3TzcmlvIHBhZHLjbyBhY3R1YWxcblwKQ0xTXHRcdExpbXBhIG8gZWNy4yBkYSBjb25zb2xhXG5cCkNPUFlcdFx0Q29waWEgZmljaGVpcm9zXG5cCkNUVFlcdFx0TXVkYSBvIGRpc3Bvc2l0aXZvIGRlIGVudHJhZGEvc2HtZGFcblwKREFURVx0XHRNb3N0cmEgb3UgbXVkYSBhIGRhdGEgZG8gc2lzdGVtYVxuXApERUwgKEVSQVNFKVx0QXBhZ2EgdW0gZmljaGVpcm8gb3UgY29uanVudG8gZGUgZmljaGVpcm9zXG5cCkRJUlx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBkaXJlY3TzcmlvXG5cCkVDSE9cdFx0Q29waWEgbyB0ZXh0byBkaXJldGFtZW50ZSBuYSBzYe1kYSBkYSBjb25zb2xhXG5cCkhFTFBcdFx0TW9zdHJhIGJyZXZlcyBkZXRhbGhlcyBkZSB1bSB083BpY29cblwKTUQgKE1LRElSKVx0Q3JpYSB1bSBzdWJkaXJlY3TzcmlvXG5cCk1PUkVcdFx0RGlzcGxheSBvdXRwdXQgaW4gcGFnZXNcblwKTU9WRVx0XHRNb3ZlIHVtIGZpY2hlaXJvLCBjb25qdW50byBkZSBmaWNoZWlyb3Mgb3UgdW1hIOFydm9yZSBkZSBkaXJlY3Tzcmlvc1xuXApQQVRIXHRcdENvbmZpZ3VyYSBvIGNhbWluaG8gZGUgcHJvY3VyYVxuXApQT1BEXHRcdFJlc3RvcmVzIHRoZSBkaXJlY3RvcnkgdG8gdGhlIGxhc3Qgb25lIHNhdmVkIHdpdGggUFVTSERcblwKUFJPTVBUXHRcdE11ZGEgYSAncHJvbXB0JyBkZSBjb21hbmRvXG5cClBVU0hEXHRcdENoYW5nZXMgdG8gYSBuZXcgZGlyZWN0b3J5LCBzYXZpbmcgdGhlIGN1cnJlbnQgb25lXG5cClJFTiAoUkVOQU1FKVx0UmVub21laWEgdW0gZmljaGVpcm9cblwKUkQgKFJNRElSKVx0QXBhZ2EgdW0gc3ViZGlyZWN083Jpb1xuXApTRVRcdFx0Q29uZmlndXJhIG91IG1vc3RyYSB2YXJp4XZlaXMgZGUgYW1iaWVudGVcblwKVElNRVx0XHRDb25maWd1cmEgb3UgbW9zdHJhIGEgaG9yYSBhdHVhbCBkbyBzaXN0ZW1hXG5cClRJVExFXHRcdENvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZGUgY29tYW5kbyBDTURcblwKVFlQRVx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBmaWNoZWlybyB0ZXh0b1xuXApWRVJcdFx0TW9zdHJhIGEgdmVyc+NvIGF0dWFsIGRvIENNRFxuXApWT0xcdFx0TW9zdHJhIG8gcvN0dWxvIGRvIHZvbHVtZSBkZSB1bWEgdW5pZGFkZSBkZSBkaXNjb1xuXApFWElUXHRcdEZlY2hhIG8gQ01EXG5cblwKRGlnaXRlIEhFTFAgPGNvbWFuZG8+IHBhcmEgbWFpcyBpbmZvcm1h5/VlcyBzb2JyZSBhbGd1bnMgZG9zIGNvbWFuZG9zIGFjaW1hXG4iCgogIFdDTURfQ09ORklSTSwgIkFyZSB5b3Ugc3VyZSIKICBXQ01EX1lFUywgIlkiCiAgV0NNRF9OTywgIk4iCiAgV0NNRF9OT0FTU09DLCAiRmlsZSBhc3NvY2lhdGlvbiBtaXNzaW5nIGZvciBleHRlbnNpb24gJXNcbiIKICBXQ01EX05PRlRZUEUsICJObyBvcGVuIGNvbW1hbmQgYXNzb2NpYXRlZCB3aXRoIGZpbGUgdHlwZSAnJXMnXG4iCiAgV0NNRF9PVkVSV1JJVEUsICJPdmVyd3JpdGUgJXMiCiAgV0NNRF9NT1JFU1RSLCAiTW9yZS4uLiIKICBXQ01EX1RSVU5DQVRFRExJTkUsICJMaW5lIGluIEJhdGNoIHByb2Nlc3NpbmcgcG9zc2libHkgdHJ1bmNhdGVkLiBVc2luZzpcbiIKICBXQ01EX05ZSSwgIk5vdCBZZXQgSW1wbGVtZW50ZWRcblxuIgogIFdDTURfTk9BUkcsICJBcmd1bWVudCBtaXNzaW5nXG4iCiAgV0NNRF9TWU5UQVhFUlIsICJTeW50YXggZXJyb3JcbiIKICBXQ01EX0ZJTEVOT1RGT1VORCwgIiVzIDogRmlsZSBOb3QgRm91bmRcbiIKICBXQ01EX05PQ01ESEVMUCwgIk5vIGhlbHAgYXZhaWxhYmxlIGZvciAlc1xuIgogIFdDTURfTk9UQVJHRVQsICJUYXJnZXQgdG8gR09UTyBub3QgZm91bmRcbiIKICBXQ01EX0NVUlJFTlREQVRFLCAiQ3VycmVudCBEYXRlIGlzICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkN1cnJlbnQgVGltZSBpcyAlc1xuIgogIFdDTURfTkVXREFURSwgIkVudGVyIG5ldyBkYXRlOiAiCiAgV0NNRF9ORVdUSU1FLCAiRW50ZXIgbmV3IHRpbWU6ICIKICBXQ01EX01JU1NJTkdFTlYsICJFbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBub3QgZGVmaW5lZFxuIgogIFdDTURfUkVBREZBSUwsICJGYWlsZWQgdG8gb3BlbiAnJXMnXG4iCiAgV0NNRF9DQUxMSU5TQ1JJUFQsICJDYW5ub3QgY2FsbCBiYXRjaCBsYWJlbCBvdXRzaWRlIG9mIGEgYmF0Y2ggc2NyaXB0XG4iCiAgV0NNRF9BTEwsICJBIgogIFdDTURfREVMUFJPTVBULCAiJXMsIERlbGV0ZSIKICBXQ01EX0VDSE9QUk9NUFQsICJFY2hvIGlzICVzXG4iCiAgV0NNRF9WRVJJRllQUk9NUFQsICJWZXJpZnkgaXMgJXNcbiIKICBXQ01EX1ZFUklGWUVSUiwgIlZlcmlmeSBtdXN0IGJlIE9OIG9yIE9GRlxuIjsKICBXQ01EX0FSR0VSUiwgIlBhcmFtZXRlciBlcnJvclxuIgogIFdDTURfVk9MVU1FREVUQUlMLCAiVm9sdW1lIGluIGRyaXZlICVjIGlzICVzXG5Wb2x1bWUgU2VyaWFsIE51bWJlciBpcyAlMDR4LSUwNHhcblxuIgogIFdDTURfVk9MVU1FUFJPTVBULCAiVm9sdW1lIGxhYmVsICgxMSBjaGFyYWN0ZXJzLCBFTlRFUiBmb3Igbm9uZSk/IgogIFdDTURfTk9QQVRILCAiUEFUSCBub3QgZm91bmRcbiIKICBXQ01EX0FOWUtFWSwiUHJlc3MgUmV0dXJuIGtleSB0byBjb250aW51ZTogIgogIFdDTURfQ09OU1RJVExFLCJXaW5lIENvbW1hbmQgUHJvbXB0IgogIFdDTURfVkVSU0lPTiwiQ01EIFZlcnNpb24gJXNcblxuIgogIFdDTURfTU9SRVBST01QVCwgIk1vcmU/ICIKICBXQ01EX0xJTkVUT09MT05HLCAiVGhlIGlucHV0IGxpbmUgaXMgdG9vIGxvbmcuXG4iCn0K