ClNsaWNlQ09NIGFkYXB0ZXIgdXNlcidzIGRvY3VtZW50YXRpb24gLSBmb3IgdGhlIDAuNTEgZHJpdmVyIHZlcnNpb24KCldyaXR0ZW4gYnkgQmFydPNrIElzdHbhbiA8YmFydG9raUBpdGMuaHU+CgpFbmdsaXNoIHRyYW5zbGF0aW9uOiBMYWthdG9zIEd59nJneSA8Z3l1cmlAaXRjLmh1PgpNb24gRGVjIDExIDE1OjI4OjQyIENFVCAyMDAwCgpMYXN0IG1vZGlmaWVkOiBXZWQgQXVnIDI5IDE3OjI1OjM3IENFU1QgMjAwMQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClVzYWdlOgoKQ29tcGlsaW5nIHRoZSBrZXJuZWw6CgpDb2RlIG1hdHVyaXR5IGxldmVsIG9wdGlvbnMKCVsqXSBQcm9tcHQgZm9yIGRldmVsb3BtZW50IGFuZC9vciBpbmNvbXBsZXRlIGNvZGUvZHJpdmVycwoKTmV0d29yayBkZXZpY2Ugc3VwcG9ydAoJV2FuIGludGVyZmFjZXMKCQk8TT4gTXVsdGlHYXRlIChDT01YKSBzeW5jaHJvbm91cwoJCQk8TT4gU3VwcG9ydCBmb3IgTVVOSUNIIGJhc2VkIGJvYXJkczogU2xpY2VDT00sIFBDSUNPTSAoTkVXKQoJCQk8TT4gU3VwcG9ydCBmb3IgSERMQyBhbmQgc3luY1BQUC4uLgoKCkxvYWRpbmcgdGhlIG1vZHVsZXM6Cgptb2Rwcm9iZSBjb214Cgptb2Rwcm9iZSBjb214LXByb3RvLXBwcAkJIyBtb2R1bGUgZm9yICBDaXNjby1IRExDIGFuZCBTeW5jUFBQIHByb3RvY29scwoKbW9kcHJvYmUgY29teC1ody1tdW5pY2gJCSMgdGhlIG1vZHVsZSBsb2dzIGluZm9ybWF0aW9uIGJ5IHRoZSBrZXJuZWwKCQkJCSMgYWJvdXQgdGhlIGRldGVjdGVkIGJvYXJkcwoKCkNvbmZpZ3VyaW5nIHRoZSBib2FyZDoKCiMgVGhpcyBpbnRlcmZhY2Ugd2lsbCB1c2UgdGhlIENpc2NvLUhETEMgbGluZSBwcm90b2NvbCwKIyB0aGUgdGltZXNsaWNlcyBhc3NpZ25lZCBhcmUgMSwyICgxMjggS2lCaXQgbGluZSBzcGVlZCkKIyAodGhlIGZpcnN0IGRhdGEgdGltZXNsaWNlIGluIHRoZSBHLjcwMyBmcmFtZSBpcyBuby4gMSkKIwpta2RpciAvcHJvYy9jb214L2NvbXgwLjEvCmVjaG8gc2xpY2Vjb20JPi9wcm9jL2NvbXgvY29teDAuMS9ib2FyZHR5cGUKZWNobyBoZGxjCT4vcHJvYy9jb214L2NvbXgwLjEvcHJvdG9jb2wKZWNobyAxIDIJPi9wcm9jL2NvbXgvY29teDAuMS90aW1lc2xvdHMKCgojIFRoaXMgaW50ZXJmYWNlIHVzZXMgU3luY1BQUCBsaW5lIHByb3RvY29sLCB0aGUgYXNzaWduZWQgCiMgaXMgbm8uIDMgKDY0IEtpQml0IGxpbmUgc3BlZWQpCiMKbWtkaXIgL3Byb2MvY29teC9jb214MC4yLwplY2hvIHNsaWNlY29tCT4vcHJvYy9jb214L2NvbXgwLjIvYm9hcmR0eXBlCmVjaG8gcHBwCT4vcHJvYy9jb214L2NvbXgwLjIvcHJvdG9jb2wKZWNobyAzCQk+L3Byb2MvY29teC9jb214MC4yL3RpbWVzbG90cwoKLi4uCgppZmNvbmZpZyBjb214MC4xIHVwCmlmY29uZmlnIGNvbXgwLjIgdXAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgQ09NWCBpbnRlcmZhY2VzIHVzZSBhIDEwIHBhY2tldCB0cmFuc21pdCBxdWV1ZSBieSBkZWZhdWx0LCBob3dldmVyIFdBTgpuZXR3b3JrcyBzb21ldGltZXMgdXNlIGJpZ2dlciB2YWx1ZXMgKDIwIHRvIDEwMCksIHRvIHV0aWxpemUgdGhlIGxpbmUgYmV0dGVyCmJ5IGxhcmdlIHRyYWZmaWMgKHRob3VnaCB0aGUgbGluZSBkZWxheSBpbmNyZWFzZXMgYmVjYXVzZSBvZiBtb3JlIHBhY2tldHMKam9pbiB0aGUgcXVldWUpLgoKIyBpZmNvbmZpZyBjb214MCB0eHF1ZXVlbGVuIDUwCgpUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBieSB0aGUgaWZjb25maWcgY29tbWFuZCBvZiB0aGUgbGF0ZXIgCmRpc3RyaWJ1dGlvbnMsIHdoaWNoIGNhbWUgd2l0aCAyLjIga2VybmVscywgc3VjaCBhcyBSZWRIYXQgNi4xIG9yIERlYmlhbiAyLjIuCgpZb3UgY2FuIGRvd25sb2FkIGEgbmV3ZXIgbmV0YmFzZSBwYWNrZXQgZnJvbSAKaHR0cDovL3d3dy5kZWJpYW4ub3JnL35yY3cvMi4yL25ldGJhc2UvIGZvciBEZWJpYW4gMi4xLCB3aGljaCBoYXMgYSBuZXcKaWZjb25maWcuIFlvdSBjYW4gZ2V0IGZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdXNpbmcgMi4yIGtlcm5lbCB3aXRoCkRlYmlhbiAyLjEgZnJvbSBodHRwOi8vd3d3LmRlYmlhbi5vcmcvcmVsZWFzZXMvc3RhYmxlL3J1bm5pbmcta2VybmVsLTIuMgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZSBTbGljZUNvbSBMRURzOgoKcmVkCS0gb24sIGlmIHRoZSBpbnRlcmZhY2UgaXMgdW5jb25maWd1cmVkLCBvciBpdCBnZXRzIFJlbW90ZSBBbGFybS1zCmdyZWVuCS0gb24sIGlmIHRoZSBib2FyZCBmaW5kcyBmcmFtZS1zeW5jIGluIHRoZSByZWNlaXZlZCBzaWduYWwgCQoKQSBiaXQgbW9yZSBkZXRhaWxlZDoKCnJlZDoJZ3JlZW46CW1lYW5pbmc6CgotCS0Jbm8gZnJhbWUtc3luYywgbm8gc2lnbmFsIHJlY2VpdmVkLCBvciBzaWduYWwgU05BRlUuCi0Jb24JIkV2ZXJ5dGhpbmcgaXMgT0siCm9uCW9uCVJlY2VwdGlvbiBpcyBvaywgYnV0IHRoZSByZW1vdGUgZW5kIHNlbmRzIFJlbW90ZSBBbGFybQpvbgktCVRoZSBpbnRlcmZhY2UgaXMgdW5jb25maWd1cmVkCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBoYXJkd2FyZSBzZXR0aW5nIG9wdGlvbnM6CgpUaGUgZ2VuZXJhbCBhbmQgdGhlIHByb3RvY29sIGxheWVyIG9wdGlvbnMgZGVzY3JpYmVkIGluIHRoZSAnY29teC50eHQnIGZpbGUKYXBwbHkgdG8gdGhlIFNsaWNlQ29tIGFzIHdlbGwsIEkgb25seSBzdW1tYXJpemUgdGhlIFNsaWNlQ29tIGhhcmR3YXJlIHNwZWNpZmljCnNldHRpbmdzIGJlbG93LgoKVGhlICcvcHJvYy9jb214JyBjb25maWd1cmluZyBpbnRlcmZhY2U6CgpBbiBpbnRlcmZhY2UgZGlyZWN0b3J5IHNob3VsZCBiZSBjcmVhdGVkIGZvciBldmVyeSB0aW1lc2xvdCBncm91cCB3aXRoCidta2RpcicsIGUsZzogJ2NvbXgwJywgJ2NvbXgxJyBldGMuIFRoZSB0aW1lc2xvdHMgY2FuIGJlIGFzc2lnbmVkIGhlcmUgdG8gdGhlCnNwZWNpZmljIGludGVyZmFjZS4gVGhlIENpc2NvLWxpa2UgbmFtaW5nIGNvbnZlbnRpb24gKHNlcmlhbDM6MSAtIGZpcnN0CnRpbWVzbG90IGdyb3VwIG9mIHRoZSAzcmQuIGJvYXJkKSBjYW4ndCBiZSB1c2VkIGhlcmUsIGJlY2F1c2UgdGhlc2UgbWVhbiBJUAphbGlhc2luZyBpbiBMaW51eC4KCllvdSBjYW4gZ2l2ZSBhbnkgbWVhbmluZ2Z1bCBuYW1lIHRvIGtlZXAgdGhlIGNvbmZpZ3VyYXRpb24gY2xlYXI7IAplLmc6ICdjb214MC4xJywgJ2NvbXgwLjInLCAnY29teDEuMScsIGNvbXgxLjInLCBpZiB5b3UgaGF2ZSB0d28gYm9hcmRzCndpdGggdHdvIGludGVyZmFjZXMgZWFjaC4KClNldHRpbmdzLCB3aGljaCBhcHBseSB0byB0aGUgYm9hcmQ6CgpOZWl0aGVyICdpbycgbm9yICdpcnEnIHNldHRpbmdzIHJlcXVpcmVkLCB0aGUgZHJpdmVyIHVzZXMgdGhlIHJlc291cmNlcwpnaXZlbiBieSB0aGUgUENJIEJJT1MuCgpjb214MC9ib2FyZG51bQktIGJvYXJkIG51bWJlciBvZiB0aGUgU2xpY2VDb20gaW4gdGhlIFBDICh1c2luZyB0aGUgJ25hdHVyYWwnCgkJUENJIG9yZGVyKSBhcyBsaXN0ZWQgaW4gJy9wcm9jL3BjaScgb3IgdGhlIG91dHB1dCBvZiB0aGUKCSAJJ2xzcGNpJyBjb21tYW5kLCBnZW5lcmFsbHkgdGhlIHNsb3RzIG5lYXJlciB0byB0aGUgbW90aGVyYm9hcmQKCQlQQ0kgZHJpdmVyIGNoaXBzIGhhdmUgdGhlIGxvd2VyIG51bWJlcnMuCgkJCgkJRGVmYXVsdDogMCAodGhlIGNvdW50aW5nIHN0YXJ0cyB3aXRoIDApCgpUaG91Z2ggdGhlIG9wdGlvbnMgYmVsb3cgYXJlIHRvIGJlIHNldCBvbiBhIHNpbmdsZSBpbnRlcmZhY2UsIHRoZXkgYXBwbHkgdG8gdGhlCndob2xlIGJvYXJkLiBUaGUgcmVzdHJpY3Rpb24sIHRvIHVzZSB0aGVtIG9uICdVUCcgaW50ZXJmYWNlcywgaXMgYmVjYXVzZSB0aGUgCmNvbW1hbmQgc2VxdWVuY2UgYmVsb3cgY291bGQgbGVhZCB0byB1bnByZWRpY2FibGUgcmVzdWx0cy4KCgkjIGVjaG8gMCAgICAgICAgPmJvYXJkbnVtCgkjIGVjaG8gaW50ZXJuYWwgPmNsb2NrX3NvdXJjZQoJIyBlY2hvIDEgICAgICAgID5ib2FyZG51bQoKVGhlIHNlcXVlbmNlIHdvdWxkIHNldCB0aGUgY2xvY2sgc291cmNlIG9mIGJvYXJkIDAuCgpUaGVzZSBzZXR0aW5ncyB3aWxsIHBlcnNpc3QgYWZ0ZXIgYWxsIHRoZSBpbnRlcmZhY2VzIGFyZSBjbGVhcmVkLCBidXQgYXJlCmNsZWFyZWQgd2hlbiB0aGUgZHJpdmVyIG1vZHVsZSBpcyB1bmxvYWRlZCBhbmQgbG9hZGVkIGFnYWluLgoKY29teDAvY2xvY2tfc291cmNlIC0gc291cmNlIG9mIHRoZSB0cmFuc21pdCBjbG9jawoJVXNhZ2U6CgoJIyBlY2hvIGxpbmUgICAgID4vcHJvYy9jb214L2NvbXgwL2Nsb2NrX3NvdXJjZQoJIyBlY2hvIGludGVybmFsID4vcHJvYy9jb214L2NvbXgwL2Nsb2NrX3NvdXJjZQoKCWxpbmUJLSBUaGUgVHggY2xvY2sgaXMgYmVpbmcgZGVjb2RlZCBpZiB0aGUgaW5wdXQgZGF0YSBzdHJlYW0sCgkJaWYgbm8gY2xvY2sgc2VlbiBvbiB0aGUgaW5wdXQsIHRoZW4gdGhlIGJvYXJkIHdpbGwgdXNlIGl0J3MKCQlvd24gY2xvY2sgZ2VuZXJhdG9yLgoKCWludGVybmFsIC0gVGhlIFR4IGNsb2NrIGlzIHN1cHBsaWVkIGJ5IHRoZSBidWlsdGluIGNsb2NrIGdlbmVyYXRvci4gCQoKCURlZmF1bHQ6IGxpbmUKCglOb3JtYWxseSwgdGhlIHRlbGVjb21tdW5pY2F0aW9uIGNvbXBhbnkncyBlbmQgZGV2aWNlICh0aGUgSERTTAoJbW9kZW0pIHByb3ZpZGVzIHRoZSBUeCBjbG9jaywgdGhhdCdzIHdoeSAnbGluZScgaXMgdGhlIGRlZmF1bHQuCgpjb214MC9mcmFtaW5nCS0gU3dpdGNoaW5nIENSQzQgb2ZmL29uCgoJQ1JDNDogMTYgUENNIGZyYW1lcyAoVGhlIDMyIDY0S2liaXQgY2hhbm5lbHMgYXJlIG11bHRpcGxleGVkIGludG8gYQoJUENNIGZyYW1lLCBub3RoaW5nIHRvIGRvIHdpdGggSERMQyBmcmFtZXMpIGFyZSBkaXZpZGVkIGludG8gMng4Cglncm91cHMsIGVhY2ggZ3JvdXAgaGFzIGEgNCBiaXQgQ1JDLgoKCSMgZWNobyBjcmM0CT4vcHJvYy9jb214L2NvbXgwL2ZyYW1pbmcKCSMgZWNobyBuby1jcmM0CT4vcHJvYy9jb214L2NvbXgwL2ZyYW1pbmcKCglEZWZhdWx0IGlzICdjcmM0JywgdGhlIEh1bmdhcmlhbiBNQVRBViBsaW5lcyBiZWhhdmUgbGlrZSB0aGlzLiAKCVRoZSB0cmFmZmljIGdlbmVyYWxseSBwYXNzZXMgaWYgdGhpcyBzZXR0aW5nIG9uIGJvdGggZW5kcyBkb24ndCBtYXRjaC4KCmNvbXgwL2xpbmVjb2RlCS0gU2V0dGluZyB0aGUgbGluZSBjb2RpbmcKCgkjIGVjaG8gaGRiMwk+L3Byb2MvY29teC9jb214MC9saW5lY29kZQoJIyBlY2hvIGFtaQk+L3Byb2MvY29teC9jb214MC9saW5lY29kZQoKCURlZmF1bHQgYSAnaGRiMycsIE1BVEFWIGxpbmVzIHVzZSB0aGlzLgoJCgkoQU1JIGNvZGluZyBpcyByYXJlbHkgdXNlZCB3aXRoIEUxIGxpbmVzKS4gRnJhbWUgc3luYyBtYXkgb2NjdXIsIGlmCgl0aGlzIHNldHRpbmcgZG9lc24ndCBtYXRjaCB0aGUgb3RoZXIgZW5kJ3MsIGJ1dCBDUkM0IGFuZCBkYXRhIGVycm9ycwoJd2lsbCBjb21lLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBDUkMgZXJyb3JzIG9uIEhETEMvU3luY1BQUCBsZXZlbC4gCgpjb214MC9yZWcJLSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBib2FyZCdzIE1VTklDSCAocmVnKSBhbmQgRkFMQyAobGJpcmVnKQpjb214MC9sYmlyZWcJY2lyY3VpdCdzIHJlZ2lzdGVycyAgCgoJIyBlY2hvID5yZWcgMHgwNCAweDAJLSB3cml0ZSAwIHRvIHJlZ2lzdGVyIDQKCSMgZWNobyA+cmVnIDB4MTA0CS0gd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHJlZ2lzdGVyIDQgd2l0aAoJCQkJcHJpbnRrKCkgdG8gc3lzbG9nCgpXQVJOSU5HISBUaGVzZSBhcmUgb25seSBmb3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMsIG1lc3Npbmcgd2l0aCB0aGlzIHdpbGwKCXJlc3VsdCBtdWNoIHRyb3VibGUhCgpjb214MC9sb29wYmFjayAtIFBsYWNlcyBhIGxvb3AgdG8gdGhlIGJvYXJkJ3MgRy43MDMgc2lnbmFscwoKCSMgZWNobyBub25lICAgPi9wcm9jL2NvbXgvY29teDAvbG9vcGJhY2sKCSMgZWNobyBsb2NhbCAgPi9wcm9jL2NvbXgvY29teDAvbG9vcGJhY2sKCSMgZWNobyByZW1vdGUgPi9wcm9jL2NvbXgvY29teDAvbG9vcGJhY2sKCglub25lICAgLSBub3JtYWwgb3BlcmF0aW9uLCBubyBsb29wCglsb2NhbCAgLSB0aGUgYm9hcmQgcmVjZWl2ZXMgaXQncyBvd24gb3V0cHV0CglyZW1vdGUgLSB0aGUgYm9hcmQgc2VuZHMgdGhlIHJlY2VpdmVkIGRhdGEgdG8gdGhlIHJlbW90ZSBzaWRlCgoJRGVmYXVsdDogbm9uZQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkludGVyZmFjZSAoY2hhbm5lbCBncm91cCBpbiBDaXNjbyB0ZXJtcykgc2V0dGluZ3M6IAoKY29teDAvdGltZXNsb3RzCS0gd2hpY2ggdGltZXNsb3RzIGJlbG9uZyB0byB0aGUgZ2l2ZW4gaW50ZXJmYWNlCgoJU2V0dGluZzoKCgkjIGVjaG8gJzEgNSAyIDYgNyA4JyA+L3Byb2MvY29teC9jb214MC90aW1lc2xvdHMKCgkjIGNhdCAvcHJvYy9jb214L2NvbXgwL3RpbWVzbG90cwoJMSAyIDUgNiA3IDggCgkjCgoJRmluZGluZyBhIHRpbWVzbG90OiAKCgkjIGdyZXAgJyA0JyAvcHJvYy9jb214L2NvbXgqL3RpbWVzbG90cwoJL3Byb2MvY29teC9jb214MC90aW1lc2xvdHM6MSAzIDQgNSA2CgkjCgoJVGhlIHRpbWVzbG90cyBjYW4gYmUgaW4gYW55IG9yZGVyLCAnMSAyIDMnIGlzIHRoZSBzYW1lIGFzICcxIDMgMicuCgoJVGhlIGludGVyZmFjZSBoYXMgdG8gYmUgRE9XTiBkdXJpbmcgdGhlIHNldHRpbmcgKCdpZmNvbmZpZyBjb214MAoJZG93bicpLCBidXQgdGhlIG90aGVyIGludGVyZmFjZXMgY291bGQgb3BlcmF0ZSBub3JtYWxseS4KCglUaGUgZHJpdmVyIGNoZWNrcyBpZiB0aGUgYXNzaWduZWQgdGltZXNsb3RzIGFyZSB2YWNhbnQsIGlmIG5vdCwgdGhlbgoJdGhlIHNldHRpbmcgd29uJ3QgYmUgYXBwbGllZC4KCglUaGUgdGltZXNsb3QgdmFsdWVzIGFyZSB0cmVhdGVkIGFzIGRlY2ltYWwgbnVtYmVycywgbm90IHRvIG1pc3VuZGVyc3RhbmQKCXZhbHVlcyBvZiAwOCwgMDkgZm9ybS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGVja2luZyB0aGUgaW50ZXJmYWNlIGFuZCBib2FyZCBzdGF0dXM6CgotIExpbmVzIGJlZ2lubmluZyB3aXRoICcgJyAoc3BhY2UpIGJlbG9uZyB0byB0aGUgb3JpZ2luYWwgb3V0cHV0LCB0aGUgbGluZXMKd2hpY2ggYmVnaW4gd2l0aCAnLy8nIGFyZSB0aGUgY29tbWVudHMuCgogcGFwYXlhOn4kIGNhdCAvcHJvYy9jb214L2NvbXgxL3N0YXR1cwogSW50ZXJmYWNlIGFkbWluaXN0cmF0aXZlIHN0YXR1cyBpcyBVUCwgbW9kZW0gc3RhdHVzIGlzIFVQLCBwcm90b2NvbCBpcyBVUAogTW9kZW0gc3RhdHVzIGNoYW5nZXM6IDAsIFRyYW5zbWl0dGVyIHN0YXR1cyBpcyBJRExFLCB0YnVzeTogMAogSW50ZXJmYWNlIGxvYWQgKGlucHV0KTogOTc4Mzc2IC8gOTQ3ODA4IC8gOTUxMDI0IGJpdHMvcyAoNXMvNW0vMTVtKQogICAgICAgICAgICAgICAob3V0cHV0KTogOTc4Mzc2IC8gOTQ3ODQ4IC8gOTUxMDI0IGJpdHMvcyAoNXMvNW0vMTVtKQogRGVidWcgZmxhZ3M6IG5vbmUKIFJYIGVycm9yczogbGVuOiAyMiwgb3ZlcnJ1bjogMSwgY3JjOiAwLCBhYm9ydHM6IDAKICAgICAgICAgICAgYnVmZmVyIG92ZXJydW46IDAsIHBidWZmZXIgb3ZlcnJ1bjogMAogVFggZXJyb3JzOiB1bmRlcnJ1bjogMAogTGluZSBrZWVwYWxpdmUgKHZhbHVlOiAxMCkgc3RhdHVzIFVQIFswXQoKLy8gVGhlIGhhcmR3YXJlIHNwZWNpZmljIHBhcnQgc3RhcnRzIGhlcmU6CiBDb250cm9sbGVyIHN0YXR1czoKICAgICAgICAgTm8gYWxhcm1zCgovLyBBbGFybTogCi8vCi8vIE5vIGFsYXJtcyAtIEV2ZXJ5dGhpbmcgT0sKLy8KLy8gTE9TICAtIExvc3MgT2YgU2lnbmFsIC0gTm8gc2lnbmFsIHNlbnNlZCBvbiB0aGUgaW5wdXQKLy8gQUlTICAtIEFsYXJtIEluZGljYXRpb24gU2lnbmFsIC0gVGhlIHJlbW90ZSBzaWRlIHNlbmRzICcxMTExMTExMSctcywgCi8vCWl0IHRlbGxzLCB0aGF0IHRoZXJlJ3MgYW4gZXJyb3IgY29uZGl0aW9uLCBvciBpdCdzIG5vdAovLwlpbml0aWFsaXNlZC4KLy8gQVVYUCAtIEF1eGlsaWFyeSBQYXR0ZXJuIEluZGljYXRpb24gLSAwMTAxMDEwMS4uIHJlY2VpdmVkLgovLyBMRkEgIC0gTG9zcyBvZiBGcmFtZSBBbGlnbm1lbnQgLSBubyBmcmFtZSBzeW5jIHJlY2VpdmVkLgovLyBSUkEgIC0gUmVjZWl2ZSBSZW1vdGUgQWxhcm0gLSB0aGUgcmVtb3RlIGVuZCdzIE9LLCBidXQgc2lnbmFscyBlcnJvciBjb25kLgovLyBMTUZBIC0gTG9zcyBvZiBDUkM0IE11bHRpZnJhbWUgQWxpZ25tZW50IC0gbm8gQ1JDNCBtdWx0aWZyYW1lIHN5bmMuCi8vIE5NRiAgLSBObyBNdWx0aWZyYW1lIGFsaWdubWVudCBGb3VuZCBhZnRlciA0MDAgbXNlYyAtIG5vIHN1Y2ggYWxhcm0gdXNpbmcKLy8Jbm8tY3JjNCBvciBjcmM0IGZyYW1pbmcsIHNlZSBiZWxvdy4KLy8KLy8gT3RoZXIgcG9zc2libGUgZXJyb3IgbWVzc2FnZXM6Ci8vCi8vIFRyYW5zbWl0IExpbmUgU2hvcnQgLSB0aGUgYm9hcmQgZmVsdCwgdGhhdCBpdCdzIG91dHB1dCBpcyBzaG9ydC1jaXJjdWl0ZWQsCi8vIAlzbyBpdCBzd2l0Y2hlZCB0aGUgdHJhbnNtaXNzaW9uIG9mZi4gKFRoZSBib2FyZCBjYW4ndCBkZWZpbml0ZWx5IHRlbGwsCi8vCXRoYXQgaXQncyBvdXRwdXQgaXMgc2hvcnQtY2lyY3VpdGVkLikKCi8vIENoYWluZWQgbGlzdCBvZiB0aGUgcmVjZWl2ZWQgcGFja2V0cywgZm9yIGRlYnVnIHB1cnBvc2VzOgoKIFJ4IHJpbmc6CiAgICAgICAgIHJhZnV0b3R0OiAwCiAgICAgICAgIGxhc3RjaGVjazogNTA4NDU3MzEsIGppZmZpZXM6IDUxMzE0MjgxCiAgICAgICAgIGJhc2U6IDAxN2IxODU4CiAgICAgICAgIHJ4X2Rlc2NfcHRyOiAwCiAgICAgICAgIHJ4X2Rlc2NfcHRyOiAwMTdiMTg1OAogICAgICAgICBod19jdXJyX3B0cjogMDE3YjE4NTgKICAgICAgICAgMDYwNDAwMDAgMDE3YjE4NjggMDE3YjE4OTggYzAxNmZmMDAKICAgICAgICAgMDYwNDAwMDAgMDE3YjE4NzggMDE3YjFlOWMgYzAxNmZmMDAKICAgICAgICAgNDYwNDAwMDAgMDE3YjE4ODggMDE3YjI0YTAgYzAxNmZmMDAKICAgICAgICAgMDYwNDAwMDAgMDE3YjE4NTggMDE3YjJhYTQgYzAxNmZmMDAKCi8vIEFsbCB0aGUgaW50ZXJmYWNlcyB1c2luZyB0aGUgYm9hcmQ6IGNvbXgxLCB1c2luZyB0aGUgMSwyLC4uLjE2IHRpbWVzbG90cywKLy8gY29teDIsIHVzaW5nIHRpbWVzbG90IDE3LCBldGMuCgogSW50ZXJmYWNlcyB1c2luZyB0aGlzIGJvYXJkOiAoY2hhbm5lbC1ncm91cCwgaW50ZXJmYWNlLCB0aW1lc2xvdHMpCiAgICAgICAgICAwIGNvbXgxOiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNgogICAgICAgICAgMSBjb214MjogMTcKICAgICAgICAgIDIgY29teDM6IDE4CiAgICAgICAgICAzIGNvbXg0OiAxOQogICAgICAgICAgNCBjb214NTogMjAKICAgICAgICAgIDUgY29teDY6IDIxCiAgICAgICAgICA2IGNvbXg3OiAyMgogICAgICAgICAgNyBjb214ODogMjMKICAgICAgICAgIDggY29teDk6IDI0CiAgICAgICAgICA5IGNvbXgxMDogMjUKICAgICAgICAgMTAgY29teDExOiAyNgogICAgICAgICAxMSBjb214MTI6IDI3CiAgICAgICAgIDEyIGNvbXgxMzogMjgKICAgICAgICAgMTMgY29teDE0OiAyOQogICAgICAgICAxNCBjb214MTU6IDMwCiAgICAgICAgIDE1IGNvbXgxNjogMzEKCi8vIFRoZSBudW1iZXIgb2YgZXZlbnRzIGhhbmRsZWQgYnkgdGhlIGRyaXZlciBkdXJpbmcgYW4gaW50ZXJydXB0IGN5Y2xlOgoKIEludGVycnVwdCB3b3JrIGhpc3RvZ3JhbToKIGhpc3RbIDBdOiAgICAgICAgMCBoaXN0WyAxXTogICAgICAgIDIgaGlzdFsgMl06ICAgIDE4NTc0IGhpc3RbIDNdOiAgICAgICA3OQogaGlzdFsgNF06ICAgICAgIDE0IGhpc3RbIDVdOiAgICAgICAgMSBoaXN0WyA2XTogICAgICAgIDAgaGlzdFsgN106ICAgICAgICAxCiBoaXN0WyA4XTogICAgICAgIDAgaGlzdFsgOV06ICAgICAgICA3CgovLyBUaGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gc2VuZCBpbiB0aGUgVHggcmluZywgd2hlbiBhIG5ldyBvbmUgYXJyaXZlZDoKCiBUeCByaW5nIGhpc3RvZ3JhbToKIGhpc3RbIDBdOiAgICAgMjMyOSBoaXN0WyAxXTogICAgICAgIDAgaGlzdFsgMl06ICAgICAgICAwIGhpc3RbIDNdOiAgICAgICAgMAoKLy8gVGhlIGVycm9yIGNvdW50ZXJzIG9mIHRoZSBFMSBpbnRlcmZhY2UsIGFjY29yZGluZyB0byB0aGUgUkZDMjQ5NSwKLy8gKHNpbWlsYXIgdG8gdGhlIENpc2NvICJzaG93IGNvbnRyb2xsZXJzIGUxIiBjb21tYW5kJ3Mgb3V0cHV0OgovLyBodHRwOi8vd3d3LmNpc2NvLmNvbS91bml2ZXJjZC9jYy90ZC9kb2MvcHJvZHVjdC9zb2Z0d2FyZS9pb3MxMS9yYm9vay9yaW50ZXJmYy5odG0jeHRvY2lkMjU2NjkxMjYpCgpEYXRhIGluIGN1cnJlbnQgaW50ZXJ2YWwgKDkxIHNlY29uZHMgZWxhcHNlZCk6CiAgIDk1MTYgTGluZSBDb2RlIFZpb2xhdGlvbnMsIDY1IFBhdGggQ29kZSBWaW9sYXRpb25zLCAyIEUtQml0IEVycm9ycwogICAwIFNsaXAgU2VjcywgMiBGciBMb3NzIFNlY3MsIDIgTGluZSBFcnIgU2VjcywgMCBEZWdyYWRlZCBNaW5zCiAgIDAgRXJyb3JlZCBTZWNzLCAwIEJ1cnN0eSBFcnIgU2VjcywgMCBTZXZlcmVseSBFcnIgU2VjcywgMTEgVW5hdmFpbCBTZWNzCkRhdGEgaW4gSW50ZXJ2YWwgMSAoMTUgbWludXRlcyk6CiAgIDAgTGluZSBDb2RlIFZpb2xhdGlvbnMsIDAgUGF0aCBDb2RlIFZpb2xhdGlvbnMsIDAgRS1CaXQgRXJyb3JzCiAgIDAgU2xpcCBTZWNzLCAwIEZyIExvc3MgU2VjcywgMCBMaW5lIEVyciBTZWNzLCAwIERlZ3JhZGVkIE1pbnMKICAgMCBFcnJvcmVkIFNlY3MsIDAgQnVyc3R5IEVyciBTZWNzLCAwIFNldmVyZWx5IEVyciBTZWNzLCAwIFVuYXZhaWwgU2VjcwpEYXRhIGluIGxhc3QgNCBpbnRlcnZhbHMgKDEgaG91cik6CiAgIDAgTGluZSBDb2RlIFZpb2xhdGlvbnMsIDAgUGF0aCBDb2RlIFZpb2xhdGlvbnMsIDAgRS1CaXQgRXJyb3JzCiAgIDAgU2xpcCBTZWNzLCAwIEZyIExvc3MgU2VjcywgMCBMaW5lIEVyciBTZWNzLCAwIERlZ3JhZGVkIE1pbnMKICAgMCBFcnJvcmVkIFNlY3MsIDAgQnVyc3R5IEVyciBTZWNzLCAwIFNldmVyZWx5IEVyciBTZWNzLCAwIFVuYXZhaWwgU2VjcwpEYXRhIGluIGxhc3QgOTYgaW50ZXJ2YWxzICgyNCBob3Vycyk6CiAgIDAgTGluZSBDb2RlIFZpb2xhdGlvbnMsIDAgUGF0aCBDb2RlIFZpb2xhdGlvbnMsIDAgRS1CaXQgRXJyb3JzCiAgIDAgU2xpcCBTZWNzLCAwIEZyIExvc3MgU2VjcywgMCBMaW5lIEVyciBTZWNzLCAwIERlZ3JhZGVkIE1pbnMKICAgMCBFcnJvcmVkIFNlY3MsIDAgQnVyc3R5IEVyciBTZWNzLCAwIFNldmVyZWx5IEVyciBTZWNzLCAwIFVuYXZhaWwgU2VjcwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClNvbWUgdW5pcXVlIG9wdGlvbnMsIChtYXkgZ2V0IGludG8gdGhlIGRyaXZlciBsYXRlcik6ClRyZWF0IHRoZW0gdmVyeSBjYXJlZnVsbHksIHRoZXNlIGNhbiBjYXVzZSBtdWNoIHRyb3VibGUhCgoJbW9kaWZpZWQgQ1JDLTQsIGZvciBpbXByb3ZlZCBpbnRlcndvcmtpbmcgb2YgQ1JDLTQgYW5kIG5vbi1DUkMtNAoJZGV2aWNlczogKHNlZSBwYWdlIDEwNyBhbmQgZzcwNiBBbm5leCBCKQoJCWxiaXJlZ1sgMHgxYiBdIHw9IDB4MDgKCQlsYmlyZWdbIDB4MWMgXSB8PSAweGMwCgoJLSBUaGUgTk1GIC0gJ05vIE11bHRpZnJhbWUgYWxpZ25tZW50IEZvdW5kIGFmdGVyIDQwMCBtc2VjJyBhbGFybSAKCWNvbWVzIGludG8gYWNjb3VudC4KCglGQUxDIC0gdGhlIGxpbmUgZHJpdmVyIGNoaXAuCglsb2NhbCBsb29wIC0gSSBoZWFyIG15IHRyYW5zbWlzc2lvbiBiYWNrLgoJcmVtb3RlIGxvb3AgLSBJIGVjaG8gdGhlIHJlbW90ZSB0cmFuc21pc3Npb24gYmFjay4KCglTb21ldGhpbmcgdXNlZnVsIGZvciBmaW5kaW5nIGVycm9yczoKCQoJCS0gbG9jYWwgbG9vcCBmb3IgdGltZXNsb3QgMSBpbiB0aGUgRkFMQyBjaGlwOgoKCSMgZWNobyA+bGJpcmVnIDB4MWQgMHgyMQoKCQktIFN3aXRjaGluZyB0aGUgbG9vcCBvZmY6CgoJIyBlY2hvID5sYmlyZWcgMHgxZCAweDAwCg==