LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBQb3J0dWd1ZXNlIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQWp1ZGEgZG8gY29tYW5kbyBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiJDQUxMIDxhcnF1aXZvX2RlX2xvdGU+IOkgdXNhZG8gZGVudHJvIGRlIHVtIGFycXVpdm8gZGUgbG90ZSBwYXJhIGV4ZWN1dGFyXG5cCmNvbWFuZG8gZGUgb3V0cm8gYXJxdWl2byBkZSBsb3RlLiBRdWFuZG8gbyBhcnF1aXZvIGV4aXN0ZSwgbyBjb250cm9sZSByZXRvcm5hXG5cCmFvIGFycXVpdm8gcXVlIG8gY2hhbW91LiBPIGNvbWFuZG8gQ0FMTCBwb2RlIHBhc3NhciBwYXLibWV0cm9zIGFvIHByb2NlZGltZW50b1xuXApjaGFtYWRvLlxuXApcblwKTXVkYW5u52FzIG5vIGRpcmV083JpbyBwYWRy428sIHZhcmnhdmVpcyBkZSBhbWJpZW50ZSwgZXRjLCBmZWl0YXMgZGVudHJvXG5cCmRvIHByb2NlZGltZW50ZSBjaGFtYWRvIHPjbyBoZXJkYWRvcyBwZWxvIGNoYW1hZG9yLlxuIgoKICBXQ01EX0NELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gQ0RcbiIKICBXQ01EX0NIRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgbGltcGEgYSB0ZWxhIGRvIGNvbnNvbGVcbiIKCiAgV0NNRF9DT1BZLCAgICJBanVkYSBkbyBjb21hbmRvIENPUFlcbiIKICBXQ01EX0NUVFksICAgIkFqdWRhIGRvIGNvbWFuZG8gQ1RUWVxuIgogIFdDTURfREFURSwgICAiQWp1ZGEgZG8gY29tYW5kbyBEQVRFXG4iCiAgV0NNRF9ERUwsICAgICJBanVkYSBkbyBjb21hbmRvIERFTFxuIgogIFdDTURfRElSLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBESVJcbiIKCiAgV0NNRF9FQ0hPLAoiRUNITyA8c3RyaW5nPiBtb3N0cmEgYSA8c3RyaW5nPiBubyBkaXNwb3NpdGl2byB0ZXJtaW5hbCBhdHVhbC5cblwKXG5cCkVDSE8gT04gYXRpdmEgYSBleGliaefjbyBkZSB0b2RvcyBvcyBjb21hbmRvcyBzdWJzZXF1ZW50ZXMgZW0gdW1cblwKYXJxdWl2byBkZSBsb3RlIG5vIHRlcm1pbmFsIGFudGVzIGRlbGVzIHNlcmVtIGV4ZWN1dGFkb3MuXG5cClxuXApFQ0hPIE9GRiBkZXNhdGl2YSBvIGVmZWl0byBkZSB1bSBjb21hbmRvIEVDSE8gT04gKEVDSE8g6SBPRkYgcG9yIHBhZHLjbykuXG5cCk8gY29tYW5kbyBFQ0hPIE9GRiBwb2RlIHNlciBpbXBlZGlkbyBkZSBzZXIgbW9zdHJhZG8gY29sb2NhbmRvLXNlIHVtXG5cCnPtbWJvbG8gQCBwcmVjZWRlbmRvIG8gbWVzbW8uXG4iCgogIFdDTURfRVJBU0UsICAiQWp1ZGEgZG8gY29tYW5kbyBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIk8gY29tYW5kbyBGT1Ig6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gYSBjYWRhIHZleiBlbVxudW0gY29uanVudG8gZGUgYXJxdWl2b3MuXG5cClxuXApTaW50YXhlOiBGT1IgJXZhcmnhdmVsIElOIChjb25qdW50bykgRE8gY29tYW5kb1xuXApcblwKTm8gY21kLCBu428gZXhpc3RlIGEgbmVjZXNzaWRhZGUgZGUgdXNhciBkb2lzIHNpbmFpcyAlIG5vIFxuXApjb21hbmRvIEZPUiBub3MgYXJxdWl2b3MgZGUgbG90ZS5cbiIKCiAgV0NNRF9HT1RPLAoiTyBjb21hbmRvIEdPVE8gdHJhbnNmZXJlIGEgZXhlY3Xn428gcGFyYSBvdXRyYSBkZWNsYXJh5+NvIGRlbnRyb1xuXApkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApPIHLzdHVsbyBxdWUgc2Vy4SBvIGRlc3Rpbm8gZG8gY29tYW5kbyBHT1RPIHBvZGUgdGVyIGF06SAyNTUgY2FyYWN0ZXJlc1xuXAptYXMgbuNvIHBvZGUgaW5jbHVpciBlc3Bh529zIChkaWZlcmVudGVtZW50ZSBkZSBvdXRyb3Mgc2lzdGVtYXMgb3BlcmFjaW9uYWlzKS5cblwKU2UgZG9pcyBvdSBtYWlzIHLzdHVsb3MgZm9yZW0gaWRlbnRpY29zIG5vIGFycXVpdm8gZGUgbG90ZSwgbyBwcmltZWlybyBkZWxlc1xuXApzZXLhIHNlbXByZSBleGVjdXRhZG8uIEEgdGVudGF0aXZhIGRlIHVzYXIgbyBHT1RPIHBhcmEgdW0gcvN0dWxvIGluZXhpc3RlbnRlXG5cCnRlcm1pbmEgYSBleGVjdefjbyBkbyBhcnF1aXZvIGRlIGxvdGUuXG5cClxuXApHT1RPIG7jbyB0ZW0gZWZlaXRvIHF1YW5kbyB1c2FuZG8gaW50ZXJhdGl2YW1lbnRlLlxuIgoKICBXQ01EX0hFTFAsICAgIkFqdWRhIGRvIGNvbWFuZG8gSEVMUFxuIgoKICBXQ01EX0lGLAoiSUYg6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gY29uZGljaW9uYWxtZW50ZS5cblwKXG5cClNpbnRheGU6CUlGIFtOT1RdIEVYSVNUIGFycXVpdm8gY29tYW5kb1xuXAoJSUYgW05PVF0gdGV4dG8xPT10ZXh0bzIgY29tYW5kb1xuXAoJSUYgW05PVF0gRVJST1JMRVZFTCBu+m1lcm8gY29tYW5kb1xuXApcblwKTmEgc2VndW5kYSBmb3JtYSBkbyBjb21hbmRvLCB0ZXh0bzEgZSB0ZXh0bzIgZGV2ZW0gZXN0YXIgdXNhbmRvIGFzcGFzLlxuXApBIGNvbXBhcmHn428gbuNvIGRpZmVyZW5jaWEgbWFp+nNjdWxhcyBkZSBtaW51c2N1bGFzLlxuIgoKICBXQ01EX0xBQkVMLCAgIkxBQkVMIOkgdXNhZG8gcGFyYSByb3R1bGFyIHVtIHZvbHVtZSBkbyBkaXNjby4gIFxuXApcblwKU2ludGF4ZTogTEFCRUwgW2RyaXZlOl1cblwKTyBjb21hbmRvIExBQkVMIGly4SBhZ3VhcmRhciBxdWUgdmMgaW5mb3JtZSBvIG5vdm8gcvN0dWxvIHBhcmEgbyBkcml2ZVxuXAplc3BlY2lmaWNhZG8uIFZvY+ogcG9kZSBtb3N0cmFyIG8gcvN0dWxvIGRvIGRpc2NvIGNvbSBvIGNvbWFuZG8gVk9MLlxuIgoKICBXQ01EX01ELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gTURcbiIKICBXQ01EX01LRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvY2EgdW0gYXJxdWl2byBvdSBkaXJldPNyaW8gZW0gdW0gbm92byBwb250byBubyBzaXN0ZW1hIGRlIGFycXVpdm9zLlxuXApcblwKU2UgbyBpdGVtIHNlbmRvIG1vdmlkbyDpIHVtIGRpcmV083JpbyBlbnTjbyB0b2RvcyBvcyBhcnF1aXZvcyBlIHN1YmRpcmV083Jpb3NcblwKYWJhaXhvIGRvIGl0ZW0gc+NvIG1vdmlkb3MgY29tIG8gbWVzbW8uXG5cClxuXApNT1ZFIGZhbGhhcuEgc2UgbyBsb2NhbCBhbnRpZ28gZSBvIG5vdm8gbG9jYWwgZXN0428gZW0gZGlmZXJlbnRlcyB1bmlkYWRlcy5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCBtb3N0cmEgb3UgcGVybWl0ZSBtdWRhciBvIGNhbWluaG8gZGUgcHJvY3VyYSBkZSBwcm9ncmFtYXMgZG8gY21kLlxuXApcblwKRGlnaXRhbmRvIFBBVEggbW9zdHJhcuEgYSBhdHVhbCBjb25maWd1cmHn428gZG8gY29tYW5kbyBQQVRIIChpbmljaWFsbWVudGUgZXN0ZVxuXAp2YWxvciDpIGVzcGVjaWZpY2FkbyBubyBhcnF1aXZvIHdpbmUuY29uZikuIFBhcmEgbXVkYXIgYXMgY29uZmlndXJh5/VlcywgZGlnaXRlXG5cCm5vdm9zIHZhbG9yZXMgbm8gY29tYW5kbyBQQVRILlxuXApcblwKVGFtYultIOkgcG9zc+12ZWwgbW9kaWZpY2FyIG8gY29tYW5kbyBQQVRIIHVzYW5kbyBhIHZhcmnhdmVsIGRlIGFtYmllbnRlIFBBVEgsXG5cCnBvciBleGVtcGxvOlxuXAoJCVBBVEggJVBBVEglO2M6XFx0ZW1wXG4iCgogIFdDTURfUEFVU0UsCiJQQVVTRSBtb3N0cmEgYSBzZWd1aW50ZSBtZW5zYWdlbSBuYSB0ZWxhICdQcmVzc2lvbmUgRW50ZXIgcGFyYSBjb250aW51YXInXG5cCmUgYWd1YXJkYSBxdWUgbyB1c3XhcmlvIHByZXNzaW9uZSBhIHRlY2xhIEVudGVyLiBJc3RvIOkg+nRpbCBwcmluY2lwYWxtZW50ZVxuXAplbSBhcnF1aXZvcyBkZSBsb3RlIHBhcmEgcGVybWl0aXIgYW8gdXN14XJpbyBsZXIgYSBzYe1kYSBkZSB1bSBjb21hbmRvIGFudGVyaW9yXG5cCmFudGVzIHF1ZSBhIHRlbGEgc29mcmEgdW0gcm9sYW1lbnRvLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBjb25maWd1cmEgbyAncHJvbXB0JyBkYSBsaW5oYSBkZSBjb21hbmRvLlxuXApcblwKTyB0ZXh0byBzZWd1aW5kbyBvIGNvbWFuZG8gUFJPTVBUIChlIG9zIGVzcGHnb3MgaW1lZGlhdGFtZW50ZSBkZXBvaXMpXG5cCmFwYXJlY2VtIG5vIGNvbWXnbyBkYSBsaW5oYSBlbnF1YW50byBvIGNtZCBlc3ThIGFndWFyZGFuZG8gcG9yIGNvbWFuZG9zLlxuXApcblwKT3Mgc2VndWludGVzIGNhcmFjdGVyZXMgdGVtIHVtIHNpZ25pZmljYWRvIGVzcGVjaWFsLCBjb25mb3JtZSBtb3N0cmFkbzpcblwKXG5cCiQkICAgIENpZnLjbyAoJCkgICAgICAgICAgJF8gICAgQXZhbudvIGRlIGxpbmhhICAgICAkYiAgICBT7W1ib2xvIHBpcGUgKHwpXG5cCiRkICAgIERhdGEgYXR1YWwgICAgICAgICAgJGUgICAgQ/NkaWdvIGRlIGVzY2FwZSAgICAkZyAgICBTaW5hbCBkZSBtYWlvciAoPilcblwKJGwgICAgU2luYWwgZGUgbWVub3IgKDwpICAkbiAgICBVbmlkYWRlIGF0dWFsICAgICAgICRwICAgIENhbWluaG8gYXR1YWxcblwKJHEgICAgU2luYWwgZGUgaWd1YWwgKD0pICAkdCAgICBIb3JhIGF0dWFsICAgICAgICAgICR2ICAgIFZlcnPjbyBkbyBjbWRcblwKXG5cCk5vdGUgcXVlIGRpZ2l0YW5kbyBvIGNvbWFuZG8gUFJPTVBUIHNlbSBwYXLibWV0cm9zIHJlY29uZmlndXJhIG8gcGFkcuNvLFxuXApxdWUg6SBhIGxldHJhIGRhIHVuaWRhZGUgYXR1YWwgc2VndWlkYSBwZWxvIGRpcmV083JpbyBlIHVtIHNpbmFsIGRlIG1haW9yXG5cCihlcXVpdmFsZW50ZSBhIHVtIGNvbWFuZG8gUFJPTVBUICRwJGcpLlxuXApcblwKTyAncHJvbXB0JyB0YW1i6W0gcG9kZSBzZXIgbXVkYWRvIGFsdGVyYW5kbyBhIHZhcmnhdmVsIFBST01QVCwgYXNzaW0sXG5cCm8gY29tYW5kbyAnU0VUIFBST01QVD10ZXh0bycgdGVtIG8gbWVzbW8gZWZlaXRvIHF1ZSAnUFJPTVBUIHRleHRvJ1xuIgoKICBXQ01EX1JFTSwKIlVtYSBsaW5oYSBkZSBjb21hbmRvIGluaWNpYW5kbyBjb20gUkVNIChzZWd1aW5kbyBkZSB1bSBlc3Bh528pIG7jbyBmYXpcblwKYefjbyBhbGd1bWEsIGUgb3MgY2FyYXRlcmVzIHVzYW5kbyBz428gY29uc2lkZXJhZG9zIGNvbWVudOFyaW9zIGVtIHVtXG5cCmFycXVpdm8gZGUgbG90ZVxuIgoKICBXQ01EX1JFTiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkVOXG4iCiAgV0NNRF9SRU5BTUUsICJBanVkYSBkbyBjb21hbmRvIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQWp1ZGEgZG8gY29tYW5kbyBSRFxuIgogIFdDTURfUk1ESVIsICAiQWp1ZGEgZG8gY29tYW5kbyBSTURJUlxuIgoKICBXQ01EX1NFVCwKIlNFVCBtb3N0cmEgb3UgbXVkYSBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGRlIGNtZC5cblwKXG5cClNFVCBzZW0gcGFy6m10cm9zIG1vc3RyYSB0b2RhcyBhcyB2YXLhdmVsIGRlIGFtYmllbnRlIGF0dWFpc1xuXApcblwKUGFyYSBjcmlhciBvdSBtb2RpZmljYXIgdmFyaeF2ZWwgZGUgYW1iaWVudGUsIGEgc2ludGF4ZSDpOlxuXApcblwKICAgICAgU0VUIDx2YXJp4XZlbD49PHZhbG9yPlxuXApcblwKc2VuZG8gcXVlIDx2YXJp4XZlbD4gZSA8dmFsb3I+IHPjbyB0ZXh0b3MuIE7jbyBkZXZlbSBleGlzdGlyIGVzcGHnb3NcblwKYW50ZXMgZG8gc2luYWwgZGUgaWd1YWxkYWRlLCBuZW0gYSB2YXLhdmVsIHBvZGUgY29udGVyIGVzcGHnb3MuXG5cClxuXApObyBXaW5lLCBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwg6SBpbmNsdWlkbyBubyBhbWJpZW50ZSBXaW4zMixcblwKb25kZSBzZW1wcmUgaGF2ZXLhIG1haXMgdmFsb3JlcyBxdWUgZW0gdW0gc2lzdGVtYSBXaW4zMiBuYXRpdm8uIE5vdGUgcXVlXG5cCm7jbyDpIHBvc3PtdmVsIGFmZXRhciBvIGFtYmllbnRlIGRvIHNpc3RlbWEgb3BlcmFjaW9uYWwgYSBwYXJ0aXIgZG8gY21kLlxuIgoKICBXQ01EX1NISUZULAoiU0hJRlQg6SB1c2FkbyBlbSBhcnF1aXZvcyBkZSBsb3RlIHBhcmEgcmVtb3ZlciB1bSBwYXLibWV0cm8gcXVlIGluaWNpYSBhXG5cCmxpc3RhLCBhc3NpbSBlbnTjbyBvIHBhcuJtZW50cm8yIHNvYnJlcPRlIG8gcGFyYW1ldHJvMSBlIGFzc2ltIHBvciBkaWFudGUuXG5cCklzdG8gbuNvIHRlbSBlZmVpdG8gc2UgY2hhbWFkbyBhIHBhcnRpciBkYSBsaW5oYSBkZSBjb21hbmRvLlxuIgoKICBXQ01EX1RJTUUsICAgIkFqdWRhIGRvIGNvbWFuZG8gVElNRVxuIgoKICBXQ01EX1RJVExFLCAgIkNvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZG8gY21kLCBlIGEgc2ludGF4ZSDpIFRJVExFIFt0ZXh0b11cbiIKCiAgV0NNRF9UWVBFLAoiVFlQRSA8YXJxdWl2bz4gY29waWEgPGFycXV2bz4gcGFyYSBvIGRpc3Bvc2l0aXZvIGNvbnNvbGUgKG91IG91dHJvLCBzZVxuXApyZWRpcmVjaW9uYWRvKS4gTmVodW1hIHZlcmlmaWNh5+NvIOkgZmVpdGEgc2UgbyBhcnF1aXZvIHBvZGUgc2VyIGxpZG8uXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZIOkgdXNhZG8gcGFyYSBjb25maWd1cmFyLCBsaW1wYXIgZSB0ZXN0YXIgbyAnZmxhZycgZGUgdmVyaWZpY2Hn428uIEFzXG5cCmZvcm1hcyB24WxpZGFzIHPjbz5cblwKXG5cClZFUklGWSBPTglDb25maWd1cmEgbyBmbGFnXG5cClZFUklGWSBPRkYJTGltcGEgbyBmbGFnXG5cClZFUklGWQkJTW9zdHJhIE9OIG91IE9GRiBxZG8gYXByb3ByaWFkby5cblwKXG5cCk8gZmxhZyBkZSB2ZXJpZmljYefjbyBu428gdGVtIGZ1bufjbyBubyBXaW5lLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiBtb3N0cmEgYSB2ZXJz428gZW0gZXhlY3Xn428gZG8gY21kLlxuIgoKICBXQ01EX1ZPTCwgICAgIkFqdWRhIGRvIGNvbWFuZG8gVk9MXG4iCgogIFdDTURfTU9SRSwgICAiTU9SRSBkaXNwbGF5cyBvdXRwdXQgb2YgZmlsZXMgb3IgcGlwZWQgaW5wdXQgaW4gcGFnZXMuXG4iCgogIFdDTURfRVhJVCwKIkVYSVQgdGVybWluYSBhIHNlc3PjbyBkZSBjb21hbmRvIGF0dWFsIGUgcmV0b3JuYSBhbyBzaXN0ZW1hIG9wZXJhY2lvbmFsXG5cCm91IHNoZWxsIHF1ZSB0ZW5oYSBpbnZvY2FkbyBvIGNtZC5cbiIKCiAgV0NNRF9BTExIRUxQLCAiQ01EIC0gb3MgY29tYW5kbyBpbnRlcm5vcyBz4286XG5cCkFUVFJJQlx0XHRNb3N0cmEgb3UgdHJvY2EgYXRyaWJ1dG9zIGRlIGFycXVpdm8gRE9TXG5cCkNBTExcdFx0SW52b2NhIHVtIGFycXVpdm8gZGUgbG90ZSBkZW50cm8gZGUgb3V0cm9cblwKQ0QgKENIRElSKVx0TXVkYSBvIGRpcmV083JpbyBwYWRy428gYXR1YWxcblwKQ0xTXHRcdExpbXBhIGEgdGVsYSBkbyBjb25zb2xlXG5cCkNPUFlcdFx0Q29waWEgYXJxdWl2b3NcblwKQ1RUWVx0XHRNdWRhIG8gZGlzcG9zaXRpdm8gZGUgZW50cmFkYS9zYe1kYVxuXApEQVRFXHRcdE1vc3RyYSBvdSBtdWRhIGEgZGF0YSBkbyBzaXN0ZW1hXG5cCkRFTCAoRVJBU0UpXHRBcGFnYSB1bSBhcnF1aXZvIG91IGNvbmp1bnRvIGRlIGFycXVpdm9zXG5cCkRJUlx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBkaXJldPNyaW9zXG5cCkVDSE9cdFx0Q29waWEgdGV4dG8gZGlyZXRhbWVudGUgbmEgc2HtZGEgZG8gY29uc29sZVxuXApIRUxQXHRcdE1vc3RyYSBicmV2ZXMgZGV0YWxoZXMgZGUgdW0gdPNwaWNvXG5cCk1EIChNS0RJUilcdENyaWEgdW0gc3ViZGlyZXTzcmlvXG5cCk1PUkVcdFx0RGlzcGxheSBvdXRwdXQgaW4gcGFnZXNcblwKTU9WRVx0XHRNb3ZlIHVtIGFycXVpdm8sIGNvbmp1bnRvIGRlIGFycXVpdm9zIG91IHVtYSDhcnZvcmUgZGUgZGlyZXTzcmlvc1xuXApQQVRIXHRcdENvbmZpZ2lyYSBvIGNhbWluaG8gZGUgcHJvY3VyYVxuXApQUk9NUFRcdFx0TXVkYSBvICdwcm9tcHQnIGRlIGNvbWFuZG9cblwKUkVOIChSRU5BTUUpXHRSZW5vbWVpYSB1bSBhcnF1aXZvXG5cClJEIChSTURJUilcdEFwYWdhIHVtIHN1YmRpcmV083Jpb1xuXApTRVRcdFx0Q29uZmlndXJhIG91IG1vc3RyYSB2YXJp4XZlaXMgZGUgYW1iaWVudGVcblwKVElNRVx0XHRDb25maWd1cmEgb3UgbW9zdHJhIGEgaG9yYSBhdHVhbCBkbyBzaXN0ZW1hXG5cClRJVExFXHRcdENvbmZpZ3VyYSBvIHTtdHVsbyBkYSBqYW5lbGEgZGUgY29tYW5kbyBDTURcblwKVFlQRVx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBhcnF1aXZvIHRleHRvXG5cClZFUlx0XHRNb3N0cmEgYSB2ZXJz428gYXR1YWwgZG8gQ01EXG5cClZPTFx0XHRNb3N0cmEgbyBy83R1bG8gZG8gdm9sdW1lIGRlIHVtYSB1bmlkYWRlIGRlIGRpc2NvXG5cCkVYSVRcdFx0RmVjaGEgbyBDTURcblxuXApFbnRyZSBIRUxQIDxjb21hbmRvPiBwYXJhIG1haW9yZXMgaW5mb3JtYef1ZXMgc29icmUgYWxndW5zIGRvcyBjb21hbmRvcyBhY2ltYVxuIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUKewogIFdDTURfQVRUUklCLCAiQWp1ZGEgZG8gY29tYW5kbyBBVFRSSUJcbiIKICBXQ01EX0NBTEwsCiJDQUxMIDxmaWNoZWlyb19kZV9sb3RlPiDpIHVzYWRvIGRlbnRybyBkZSB1bSBmaWNoZWlybyBkZSBsb3RlIHBhcmEgZXhlY3V0YXIgb1xuXApjb21hbmRvIGRlIG91dHJvIGZpY2hlaXJvIGRlIGxvdGUuIFF1YW5kbyBvIGZpY2hlaXJvIGV4aXN0ZSwgbyBjb250cm9sZSByZXRvcm5hXG5cCmFvIGZpY2hlaXJvIHF1ZSBvIGNoYW1vdS4gTyBjb21hbmRvIENBTEwgcG9kZSBwYXNzYXIgcGFy4m1ldHJvcyBhbyBwcm9jZWRpbWVudG9cblwKY2hhbWFkby5cblwKXG5cCk11ZGFu52FzIG5vIGRpcmVjdPNyaW8gcGFkcuNvLCB2YXJp4XZlaXMgZGUgYW1iaWVudGUsIGV0YywgZmVpdGFzIGRlbnRyb1xuXApkbyBwcm9jZWRpbWVudGUgY2hhbWFkbyBz428gaGVyZGFkb3MgcGVsbyBjaGFtYWRvci5cbiIKCiAgV0NNRF9DRCwgICAgICJBanVkYSBkbyBjb21hbmRvIENEXG4iCiAgV0NNRF9DSERJUiwgICJBanVkYSBkbyBjb21hbmRvIENIRElSXG4iCgogIFdDTURfQ0xTLCAgICAiQ0xTIGxpbXBhIGEgZWNy4yBkYSBjb25zb2xhXG4iCgogIFdDTURfQ09QWSwgICAiQWp1ZGEgZG8gY29tYW5kbyBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJBanVkYSBkbyBjb21hbmRvIENUVFlcbiIKICBXQ01EX0RBVEUsICAgIkFqdWRhIGRvIGNvbWFuZG8gREFURVxuIgogIFdDTURfREVMLCAgICAiQWp1ZGEgZG8gY29tYW5kbyBERUxcbiIKICBXQ01EX0RJUiwgICAgIkFqdWRhIGRvIGNvbWFuZG8gRElSXG4iCgogIFdDTURfRUNITywKIkVDSE8gPHN0cmluZz4gbW9zdHJhIGEgPHN0cmluZz4gbm8gZGlzcG9zaXRpdm8gdGVybWluYWwgYWN0dWFsLlxuXApcblwKRUNITyBPTiBhY3RpdmEgYSBleGliaefjbyBkZSB0b2RvcyBvcyBjb21hbmRvcyBzdWJzZXF1ZW50ZXMgbnVtXG5cCmZpY2hlaXJvIGRlIGxvdGUgbm8gdGVybWluYWwgYW50ZXMgZGVsZXMgc2VyZW0gZXhlY3V0YWRvcy5cblwKXG5cCkVDSE8gT0ZGIGRlc2FjdGl2YSBvIGVmZWl0byBkZSB1bSBjb21hbmRvIEVDSE8gT04gKEVDSE8g6SBPRkYgcG9yIHBhZHLjbykuXG5cCk8gY29tYW5kbyBFQ0hPIE9GRiBwb2RlIHNlciBpbXBlZGlkbyBkZSBzZXIgbW9zdHJhZG8gY29sb2NhbmRvLXNlIHVtXG5cCnPtbWJvbG8gQCBwcmVjZWRlbmRvIG8gbWVzbW8uXG4iCgogIFdDTURfRVJBU0UsICAiQWp1ZGEgZG8gY29tYW5kbyBFUkFTRVxuIgoKICBXQ01EX0ZPUiwKIk8gY29tYW5kbyBGT1Ig6SB1c2FkbyBwYXJhIGV4ZWN1dGFyIHVtIGNvbWFuZG8gYSBjYWRhIHZleiBudW0gY29uanVudG8gZGUgZmljaGVpcm9zLlxuXApcblwKU2ludGF4ZTogRk9SICV2YXJp4XZlbCBJTiAoY29uanVudG8pIERPIGNvbWFuZG9cblwKXG5cCk5vIGNtZCwgbuNvIGV4aXN0ZSBhIG5lY2Vzc2lkYWRlIGRlIHVzYXIgZG9pcyBzaW5haXMgJSBubyBcblwKY29tYW5kbyBGT1Igbm9zIGZpY2hlaXJvcyBkZSBsb3RlLlxuIgoKICBXQ01EX0dPVE8sCiJPIGNvbWFuZG8gR09UTyB0cmFuc2ZlcmUgYSBleGVjdefjbyBwYXJhIG91dHJhIGRlY2xhcmHn428gZGVudHJvXG5cCmRvIGZpY2hlaXJvIGRlIGxvdGUuXG5cClxuXApPIHLzdHVsbyBxdWUgc2Vy4SBvIGRlc3Rpbm8gZG8gY29tYW5kbyBHT1RPIHBvZGUgdGVyIGF06SAyNTUgY2FyYWN0ZXJlc1xuXAptYXMgbuNvIHBvZGUgY29udGVyIGVzcGHnb3MgKGRpZmVyZW50ZW1lbnRlIGRlIG91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMpLlxuXApTZSBkb2lzIG91IG1haXMgcvN0dWxvcyBmb3JlbSBpZGVudGljb3Mgbm8gZmljaGVpcm8gZGUgbG90ZSwgbyBwcmltZWlybyBkZWxlc1xuXApzZXLhIHNlbXByZSBleGVjdXRhZG8uIEEgdGVudGF0aXZhIGRlIHVzYXIgbyBHT1RPIHBhcmEgdW0gcvN0dWxvIGluZXhpc3RlbnRlXG5cCnRlcm1pbmEgYSBleGVjdefjbyBkbyBmaWNoZWlybyBkZSBsb3RlLlxuXApcblwKR09UTyBu428gdGVtIGVmZWl0byBxdWFuZG8gdXNhZG8gaW50ZXJhY3RpdmFtZW50ZS5cbiIKCiAgV0NNRF9IRUxQLCAgICJBanVkYSBkbyBjb21hbmRvIEhFTFBcbiIKCiAgV0NNRF9JRiwKIklGIOkgdXNhZG8gcGFyYSBleGVjdXRhciB1bSBjb21hbmRvIGNvbmRpY2lvbmFsbWVudGUuXG5cClxuXApTaW50YXhlOglJRiBbTk9UXSBFWElTVCBmaWNoZWlybyBjb21hbmRvXG5cCglJRiBbTk9UXSB0ZXh0bzE9PXRleHRvMiBjb21hbmRvXG5cCglJRiBbTk9UXSBFUlJPUkxFVkVMIG76bWVybyBjb21hbmRvXG5cClxuXApOYSBzZWd1bmRhIGZvcm1hIGRvIGNvbWFuZG8sIHRleHRvMSBlIHRleHRvMiBkZXZlbSBlc3RhciBhIHVzYXIgYXNwYXMuXG5cCkEgY29tcGFyYefjbyBu428gZGlmZXJlbmNpYSBtYWn6c2N1bGFzIGRlIG1pbnVzY3VsYXMuXG4iCgogIFdDTURfTEFCRUwsICAiTEFCRUwg6SB1c2FkbyBwYXJhIHJvdHVsYXIgdW0gdm9sdW1lIGRvIGRpc2NvLiAgXG5cClxuXApTaW50YXhlOiBMQUJFTCBbZHJpdmU6XVxuXApPIGNvbWFuZG8gTEFCRUwgaXLhIGFndWFyZGFyIHF1ZSBpbmZvcm1lIG8gbm92byBy83R1bG8gcGFyYSBvIGRyaXZlXG5cCmVzcGVjaWZpY2Fkby4gUG9kZSBtb3N0cmFyIG8gcvN0dWxvIGRvIGRpc2NvIGNvbSBvIGNvbWFuZG8gVk9MLlxuIgoKICBXQ01EX01ELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gTURcbiIKICBXQ01EX01LRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gTUtESVJcbiIKICBXQ01EX01PVkUsCiJNT1ZFIHJlYWxvY2EgdW0gZmljaGVpcm8gb3UgZGlyZWN083JpbyBudW0gbm92byBwb250byBubyBzaXN0ZW1hIGRlIGZpY2hlaXJvcy5cblwKXG5cClNlIG8gaXRlbSBhbyBzZXIgbW92aWRvIOkgdW0gZGlyZWN083JpbyBlbnTjbyB0b2RvcyBvcyBmaWNoZWlyb3MgZSBzdWJkaXJlY3Tzcmlvc1xuXAphYmFpeG8gZG8gaXRlbSBzZXLjbyBtb3ZpZG9zIGNvbSBvIG1lc21vLlxuXApcblwKTU9WRSBmYWxoYXLhIHNlIG8gbG9jYWwgYW50aWdvIGUgbyBub3ZvIGxvY2FsIGVzdONvIGVtIGRpZmVyZW50ZXMgdW5pZGFkZXMuXG4iCgogIFdDTURfUEFUSCwKIlBBVEggbW9zdHJhIG91IHBlcm1pdGUgbXVkYXIgbyBjYW1pbmhvIGRlIHByb2N1cmEgZGUgcHJvZ3JhbWFzIGRvIGNtZC5cblwKXG5cCkFvIGRpZ2l0YXIgUEFUSCBtb3N0cmFy4SBhIGFjdHVhbCBjb25maWd1cmHn428gZG8gY29tYW5kbyBQQVRIIChpbmljaWFsbWVudGUgZXN0ZVxuXAp2YWxvciDpIGVzcGVjaWZpY2FkbyBubyBmaWNoZWlybyB3aW5lLmNvbmYpLiBQYXJhIG11ZGFyIGFzIGNvbmZpZ3VyYef1ZXMsIGRpZ2l0ZVxuXApub3ZvcyB2YWxvcmVzIG5vIGNvbWFuZG8gUEFUSC5cblwKXG5cClRhbWLpbSDpIHBvc3PtdmVsIG1vZGlmaWNhciBvIGNvbWFuZG8gUEFUSCB1c2FuZG8gYSB2YXJp4XZlbCBkZSBhbWJpZW50ZSBQQVRILFxuXApwb3IgZXhlbXBsbzpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgbW9zdHJhIGEgc2VndWludGUgbWVuc2FnZW0gbm8gZWNy4yAnUHJpbWEgRW50ZXIgcGFyYSBjb250aW51YXInXG5cCmUgYWd1YXJkYSBxdWUgbyB1dGlsaXphZG9yIHByaW1hIGEgdGVjbGEgRW50ZXIuIElzdG8g6SD6dGlsIHByaW5jaXBhbG1lbnRlXG5cCmVtIGZpY2hlaXJvcyBkZSBsb3RlIHBhcmEgcGVybWl0aXIgYW8gdXRpbGl6YWRvciBsZXIgYSBzYe1kYSBkZSB1bSBjb21hbmRvIGFudGVyaW9yXG5cCmFudGVzIHF1ZSBvIGVjcuMgc29mcmEgdW0gcm9sYW1lbnRvLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBjb25maWd1cmEgbyAncHJvbXB0JyBkYSBsaW5oYSBkZSBjb21hbmRvLlxuXApcblwKTyB0ZXh0byBhIHNlZ3VpciBvIGNvbWFuZG8gUFJPTVBUIChlIG9zIGVzcGHnb3MgaW1lZGlhdGFtZW50ZSBkZXBvaXMpXG5cCmFwYXJlY2VtIG5vIGNvbWXnbyBkYSBsaW5oYSBlbnF1YW50byBvIGNtZCBlc3ThIGEgYWd1YXJkYXIgcG9yIGNvbWFuZG9zLlxuXApcblwKT3Mgc2VndWludGVzIGNhcmFjdGVyZXMgdGVtIHVtIHNpZ25pZmljYWRvIGVzcGVjaWFsLCBjb25mb3JtZSBtb3N0cmFkbzpcblwKXG5cCiQkICAgIENpZnLjbyAoJCkgICAgICAgICAgJF8gICAgQXZhbudvIGRlIGxpbmhhICAgICAkYiAgICBT7W1ib2xvIHBpcGUgKHwpXG5cCiRkICAgIERhdGEgYWN0dWFsICAgICAgICAgICRlICAgIEPzZGlnbyBkZSBlc2NhcGUgICAgJGcgICAgU2luYWwgZGUgbWFpb3IgKD4pXG5cCiRsICAgIFNpbmFsIGRlIG1lbm9yICg8KSAgJG4gICAgVW5pZGFkZSBhY3R1YWwgICAgICAgJHAgICAgQ2FtaW5obyBhY3R1YWxcblwKJHEgICAgU2luYWwgZGUgaWd1YWwgKD0pICAkdCAgICBIb3JhIGFjdHVhbCAgICAgICAgICAkdiAgICBWZXJz428gZG8gY21kXG5cClxuXApOb3RlIHF1ZSBhbyBkaWdpdGFyIG8gY29tYW5kbyBQUk9NUFQgc2VtIHBhcuJtZXRyb3MgcmVjb25maWd1cmEgbyBwYWRy428sXG5cCnF1ZSDpIGEgbGV0cmEgZGEgdW5pZGFkZSBhY3R1YWwgc2VndWlkYSBwZWxvIGRpcmVjdPNyaW8gZSB1bSBzaW5hbCBkZSBtYWlvclxuXAooZXF1aXZhbGVudGUgYSB1bSBjb21hbmRvIFBST01QVCAkcCRnKS5cblwKXG5cCk8gJ3Byb21wdCcgdGFtYultIHBvZGUgc2VyIG11ZGFkbyBhbHRlcmFuZG8gYSB2YXJp4XZlbCBQUk9NUFQsIGFzc2ltLFxuXApvIGNvbWFuZG8gJ1NFVCBQUk9NUFQ9dGV4dG8nIHRlbSBvIG1lc21vIGVmZWl0byBxdWUgJ1BST01QVCB0ZXh0bydcbiIKCiAgV0NNRF9SRU0sCiJVbWEgbGluaGEgZGUgY29tYW5kbyBhIGluaWNpYXIgY29tIFJFTSAoc2VndWlkbyBkZSB1bSBlc3Bh528pIG7jbyBmYXpcblwKbmVuaHVtYSBhY+fjbywgZSBvcyBjYXJhdGVyZXMgYSB1c2FyIHPjbyBjb25zaWRlcmFkb3MgY29tZW504XJpb3MgbnVtXG5cCmZpY2hlaXJvIGRlIGxvdGVcbiIKCiAgV0NNRF9SRU4sICAgICJBanVkYSBkbyBjb21hbmRvIFJFTlxuIgogIFdDTURfUkVOQU1FLCAiQWp1ZGEgZG8gY29tYW5kbyBSRU5BTUVcbiIKICBXQ01EX1JELCAgICAgIkFqdWRhIGRvIGNvbWFuZG8gUkRcbiIKICBXQ01EX1JNRElSLCAgIkFqdWRhIGRvIGNvbWFuZG8gUk1ESVJcbiIKCiAgV0NNRF9TRVQsCiJTRVQgbW9zdHJhIG91IG11ZGEgYXMgdmFy4XZlbCBkZSBhbWJpZW50ZSBkZSBjbWQuXG5cClxuXApTRVQgc2VtIHBhcuptdHJvcyBtb3N0cmEgdG9kYXMgYXMgdmFy4XZlbCBkZSBhbWJpZW50ZSBhY3R1YWlzXG5cClxuXApQYXJhIGNyaWFyIG91IG1vZGlmaWNhciB2YXJp4XZlbCBkZSBhbWJpZW50ZSwgYSBzaW50YXhlIOk6XG5cClxuXAogICAgICBTRVQgPHZhcmnhdmVsPj08dmFsb3I+XG5cClxuXApzZW5kbyBxdWUgPHZhcmnhdmVsPiBlIDx2YWxvcj4gc+NvIHRleHRvcy4gTuNvIGRldmVtIGV4aXN0aXIgZXNwYedvc1xuXAphbnRlcyBkbyBzaW5hbCBkZSBpZ3VhbGRhZGUsIG5lbSBhIHZhcuF2ZWwgcG9kZSBjb250ZXIgZXNwYedvcy5cblwKXG5cCk5vIFdpbmUsIG8gYW1iaWVudGUgZG8gc2lzdGVtYSBvcGVyYWNpb25hbCDpIGluY2x1aWRvIG5vIGFtYmllbnRlIFdpbjMyLFxuXApvbmRlIHNlbXByZSBoYXZlcuEgbWFpcyB2YWxvcmVzIHF1ZSBudW0gc2lzdGVtYSBXaW4zMiBuYXRpdm8uIE5vdGUgcXVlXG5cCm7jbyDpIHBvc3PtdmVsIGFmZWN0YXIgbyBhbWJpZW50ZSBkbyBzaXN0ZW1hIG9wZXJhY2lvbmFsIGEgcGFydGlyIGRvIGNtZC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUIOkgdXNhZG8gZW0gZmljaGVpcm9zIGRlIGxvdGUgcGFyYSByZW1vdmVyIHVtIHBhcuJtZXRybyBxdWUgaW5pY2lhIGFcblwKbGlzdGEsIGFzc2ltIGVudONvIG8gcGFy4m1lbnRybzIgc29icmVw9GUgbyBwYXJhbWV0cm8xIGUgYXNzaW0gcG9yIGRpYW50ZS5cblwKSXN0byBu428gdGVtIGVmZWl0byBzZSBjaGFtYWRvIGEgcGFydGlyIGRhIGxpbmhhIGRlIGNvbWFuZG8uXG4iCgogIFdDTURfVElNRSwgICAiQWp1ZGEgZG8gY29tYW5kbyBUSU1FXG4iCgogIFdDTURfVElUTEUsICAiQ29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkbyBjbWQsIGUgYSBzaW50YXhlIOkgVElUTEUgW3RleHRvXVxuIgoKICBXQ01EX1RZUEUsCiJUWVBFIDxmaWNoZWlybz4gY29waWEgPGZpY2hlaXJvPiBwYXJhIG8gZGlzcG9zaXRpdm8gY29uc29sYSAob3Ugb3V0cm8sIHNlXG5cCnJlZGlyZWNjaW9uYWRvKS4gTmVodW1hIHZlcmlmaWNh5+NvIOkgZmVpdGEgc2UgbyBmaWNoZWlybyBwb2RlIHNlciBsaWRvLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSDpIHVzYWRvIHBhcmEgY29uZmlndXJhciwgbGltcGFyIGUgdGVzdGFyIG8gJ2ZsYWcnIGRlIHZlcmlmaWNh5+NvLiBBc1xuXApmb3JtYXMgduFsaWRhcyBz428+XG5cClxuXApWRVJJRlkgT04JQ29uZmlndXJhIG8gZmxhZ1xuXApWRVJJRlkgT0ZGCUxpbXBhIG8gZmxhZ1xuXApWRVJJRlkJCU1vc3RyYSBPTiBvdSBPRkYgcWRvIGFwcm9wcmlhZG8uXG5cClxuXApPIGZsYWcgZGUgdmVyaWZpY2Hn428gbuNvIHRlbSBmdW7n428gbm8gV2luZS5cbiIKCiAgV0NNRF9WRVIsCiJWRVIgbW9zdHJhIGEgdmVyc+NvIGVtIGV4ZWN15+NvIGRvIGNtZC5cbiIKCiAgV0NNRF9WT0wsICAgICJBanVkYSBkbyBjb21hbmRvIFZPTFxuIgoKICBXQ01EX01PUkUsICAgIk1PUkUgZGlzcGxheXMgb3V0cHV0IG9mIGZpbGVzIG9yIHBpcGVkIGlucHV0IGluIHBhZ2VzLlxuIgoKICBXQ01EX0VYSVQsCiJFWElUIHRlcm1pbmEgYSBzZXNz428gZGUgY29tYW5kbyBhY3R1YWwgZSByZXRvcm5hIGFvIHNpc3RlbWEgb3BlcmFjaW9uYWxcblwKb3Ugc2hlbGwgcXVlIHRlbmhhIGludm9jYWRvIG8gY21kLlxuIgoKICBXQ01EX0FMTEhFTFAsICJDTUQgLSBvcyBjb21hbmRvIGludGVybm9zIHPjbzpcblwKQVRUUklCXHRcdE1vc3RyYSBvdSB0cm9jYSBhdHJpYnV0b3MgZG8gZmljaGVpcm8gRE9TXG5cCkNBTExcdFx0SW52b2NhIHVtIGZpY2hlaXJvIGRlIGxvdGUgZGVudHJvIGRlIG91dHJvXG5cCkNEIChDSERJUilcdE11ZGEgbyBkaXJlY3TzcmlvIHBhZHLjbyBhY3R1YWxcblwKQ0xTXHRcdExpbXBhIG8gZWNy4yBkYSBjb25zb2xhXG5cCkNPUFlcdFx0Q29waWEgZmljaGVpcm9zXG5cCkNUVFlcdFx0TXVkYSBvIGRpc3Bvc2l0aXZvIGRlIGVudHJhZGEvc2HtZGFcblwKREFURVx0XHRNb3N0cmEgb3UgbXVkYSBhIGRhdGEgZG8gc2lzdGVtYVxuXApERUwgKEVSQVNFKVx0QXBhZ2EgdW0gZmljaGVpcm8gb3UgY29uanVudG8gZGUgZmljaGVpcm9zXG5cCkRJUlx0XHRNb3N0cmEgbyBjb250ZfpkbyBkZSB1bSBkaXJlY3TzcmlvXG5cCkVDSE9cdFx0Q29waWEgbyB0ZXh0byBkaXJldGFtZW50ZSBuYSBzYe1kYSBkYSBjb25zb2xhXG5cCkhFTFBcdFx0TW9zdHJhIGJyZXZlcyBkZXRhbGhlcyBkZSB1bSB083BpY29cblwKTUQgKE1LRElSKVx0Q3JpYSB1bSBzdWJkaXJlY3TzcmlvXG5cCk1PUkVcdFx0RGlzcGxheSBvdXRwdXQgaW4gcGFnZXNcblwKTU9WRVx0XHRNb3ZlIHVtIGZpY2hlaXJvLCBjb25qdW50byBkZSBmaWNoZWlyb3Mgb3UgdW1hIOFydm9yZSBkZSBkaXJlY3Tzcmlvc1xuXApQQVRIXHRcdENvbmZpZ3VyYSBvIGNhbWluaG8gZGUgcHJvY3VyYVxuXApQUk9NUFRcdFx0TXVkYSBhICdwcm9tcHQnIGRlIGNvbWFuZG9cblwKUkVOIChSRU5BTUUpXHRSZW5vbWVpYSB1bSBmaWNoZWlyb1xuXApSRCAoUk1ESVIpXHRBcGFnYSB1bSBzdWJkaXJlY3TzcmlvXG5cClNFVFx0XHRDb25maWd1cmEgb3UgbW9zdHJhIHZhcmnhdmVpcyBkZSBhbWJpZW50ZVxuXApUSU1FXHRcdENvbmZpZ3VyYSBvdSBtb3N0cmEgYSBob3JhIGF0dWFsIGRvIHNpc3RlbWFcblwKVElUTEVcdFx0Q29uZmlndXJhIG8gdO10dWxvIGRhIGphbmVsYSBkZSBjb21hbmRvIENNRFxuXApUWVBFXHRcdE1vc3RyYSBvIGNvbnRl+mRvIGRlIHVtIGZpY2hlaXJvIHRleHRvXG5cClZFUlx0XHRNb3N0cmEgYSB2ZXJz428gYXR1YWwgZG8gQ01EXG5cClZPTFx0XHRNb3N0cmEgbyBy83R1bG8gZG8gdm9sdW1lIGRlIHVtYSB1bmlkYWRlIGRlIGRpc2NvXG5cCkVYSVRcdFx0RmVjaGEgbyBDTURcblxuXApEaWdpdGUgSEVMUCA8Y29tYW5kbz4gcGFyYSBtYWlzIGluZm9ybWHn9WVzIHNvYnJlIGFsZ3VucyBkb3MgY29tYW5kb3MgYWNpbWFcbiIKCiAgV0NNRF9DT05GSVJNLCAiQXJlIHlvdSBzdXJlIgogIFdDTURfWUVTLCAiWSIKICBXQ01EX05PLCAiTiIKICBXQ01EX05PQVNTT0MsICJGaWxlIGFzc29jaWF0aW9uIG1pc3NpbmcgZm9yIGV4dGVuc2lvbiAlc1xuIgogIFdDTURfTk9GVFlQRSwgIk5vIG9wZW4gY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggZmlsZSB0eXBlICclcydcbiIKICBXQ01EX09WRVJXUklURSwgIk92ZXJ3cml0ZSAlcyIKICBXQ01EX01PUkVTVFIsICJNb3JlLi4uIgogIFdDTURfVFJVTkNBVEVETElORSwgIkxpbmUgaW4gQmF0Y2ggcHJvY2Vzc2luZyBwb3NzaWJseSB0cnVuY2F0ZWQuIFVzaW5nOlxuIgogIFdDTURfTllJLCAiTm90IFlldCBJbXBsZW1lbnRlZFxuXG4iCiAgV0NNRF9OT0FSRywgIkFyZ3VtZW50IG1pc3NpbmdcbiIKICBXQ01EX1NZTlRBWEVSUiwgIlN5bnRheCBlcnJvclxuIgogIFdDTURfRklMRU5PVEZPVU5ELCAiJXMgOiBGaWxlIE5vdCBGb3VuZFxuIgogIFdDTURfTk9DTURIRUxQLCAiTm8gaGVscCBhdmFpbGFibGUgZm9yICVzXG4iCiAgV0NNRF9OT1RBUkdFVCwgIlRhcmdldCB0byBHT1RPIG5vdCBmb3VuZFxuIgogIFdDTURfQ1VSUkVOVERBVEUsICJDdXJyZW50IERhdGUgaXMgJXNcbiIKICBXQ01EX0NVUlJFTlRUSU1FLCAiQ3VycmVudCBUaW1lIGlzICVzXG4iCiAgV0NNRF9ORVdEQVRFLCAiRW50ZXIgbmV3IGRhdGU6ICIKICBXQ01EX05FV1RJTUUsICJFbnRlciBuZXcgdGltZTogIgogIFdDTURfTUlTU0lOR0VOViwgIkVudmlyb25tZW50IHZhcmlhYmxlICVzIG5vdCBkZWZpbmVkXG4iCiAgV0NNRF9SRUFERkFJTCwgIkZhaWxlZCB0byBvcGVuICclcydcbiIKICBXQ01EX0NBTExJTlNDUklQVCwgIkNhbm5vdCBjYWxsIGJhdGNoIGxhYmVsIG91dHNpZGUgb2YgYSBiYXRjaCBzY3JpcHRcbiIKICBXQ01EX0FMTCwgIkEiCiAgV0NNRF9ERUxQUk9NUFQsICIlcywgRGVsZXRlIgogIFdDTURfRUNIT1BST01QVCwgIkVjaG8gaXMgJXNcbiIKICBXQ01EX1ZFUklGWVBST01QVCwgIlZlcmlmeSBpcyAlc1xuIgogIFdDTURfVkVSSUZZRVJSLCAiVmVyaWZ5IG11c3QgYmUgT04gb3IgT0ZGXG4iOwogIFdDTURfQVJHRVJSLCAiUGFyYW1ldGVyIGVycm9yXG4iCiAgV0NNRF9WT0xVTUVERVRBSUwsICJWb2x1bWUgaW4gZHJpdmUgJWMgaXMgJXNcblZvbHVtZSBTZXJpYWwgTnVtYmVyIGlzICUwNHgtJTA0eFxuXG4iCiAgV0NNRF9WT0xVTUVQUk9NUFQsICJWb2x1bWUgbGFiZWwgKDExIGNoYXJhY3RlcnMsIEVOVEVSIGZvciBub25lKT8iCiAgV0NNRF9OT1BBVEgsICJQQVRIIG5vdCBmb3VuZFxuIgogIFdDTURfQU5ZS0VZLCJQcmVzcyBSZXR1cm4ga2V5IHRvIGNvbnRpbnVlOiAiCiAgV0NNRF9DT05TVElUTEUsIldpbmUgQ29tbWFuZCBQcm9tcHQiCiAgV0NNRF9WRVJTSU9OLCJDTUQgVmVyc2lvbiAlc1xuXG4iCiAgV0NNRF9NT1JFUFJPTVBULCAiTW9yZT8gIgp9Cg==