IyBTcGFtQXNzYXNzaW4gdHJhbnNsYXRpb25zOiBGcmFu52Fpc2UKIwojIFdyaXR0ZW4gYnkgTWljaGVsIEJvdWlzc291IDxtaWNoZWxAYm91aXNzb3UubmV0PiBmb3IgU3BhbUFzc2Fzc2luIDIuNjAKIyBMYXRlc3QgcmV2aXNpb246IDIwMDMvMTEvMTQKIwojIFBsZWFzZSBkb24ndCBtb2RpZnkgdGhpcyBmaWxlIGFzIHlvdXIgY2hhbmdlcyB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGgKIyB0aGUgbmV4dCB1cGRhdGUuIFVzZSBAQExPQ0FMX1JVTEVTX0RJUkBAL2xvY2FsLmNmIGluc3RlYWQuCiMgU2VlICdwZXJsZG9jIE1haWw6OlNwYW1Bc3Nhc3Npbjo6Q29uZicgZm9yIGRldGFpbHMuCiMKIyA8QExJQ0VOU0U+CiMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiMgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiMgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgojIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiMgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKIyB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKIwojICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAojIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KIyA8L0BMSUNFTlNFPgojCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyAgICAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KbGFuZyBmciBjbGVhci1yZXBvcnQtdGVtcGxhdGUKbGFuZyBmciByZXBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tIETpYnV0IGRlIFJhcHBvcnQgU3BhbUFzc2Fzc2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQpsYW5nIGZyIHJlcG9ydCBDZSBtZXNzYWdlIGVzdCBwcm9iYWJsZW1lbnQgZHUgU1BBTSAobWVzc2FnZSBub24gc29sbGljaXTpIGVudm956SBlbgpsYW5nIGZyIHJlcG9ydCBtYXNzZSwgcHVibGljaXTpLCBlc2Nyb3F1ZXJpZS4uLikuCmxhbmcgZnIgcmVwb3J0CmxhbmcgZnIgcmVwb3J0IENldHRlIG5vdGljZSBhIOl06SBham91dOllIHBhciBsZSBzeXN06G1lIGQnYW5hbHlzZSAiU3BhbUFzc2Fzc2luIiBzdXIKbGFuZyBmciByZXBvcnQgdm90cmUgc2VydmV1ciBkZSBjb3VycmllciAiX0hPU1ROQU1FXyIsIHBvdXIgdm91cwpsYW5nIGZyIHJlcG9ydCBhaWRlciDgIGlkZW50aWZpZXIgY2UgdHlwZSBkZSBtZXNzYWdlcy4KbGFuZyBmciByZXBvcnQKbGFuZyBmciByZXBvcnQgTGUgc3lzdOhtZSBTcGFtQXNzYXNzaW4gYWpvdXRlIHVuIGVuLXTqdGUgIlgtU3BhbS1GbGFnOiBZRVMiIGF1eApsYW5nIGZyIHJlcG9ydCBtZXNzYWdlcyBxdSdpbCBjb25zaWTocmUgY29tbWUg6XRhbnQgcHJvYmFibGVtZW50IGR1IFNwYW0uCmxhbmcgZnIgcmVwb3J0IFZvdXMgcG91dmV6IHNpIHZvdXMgbGUgc291aGFpdGV6IHV0aWxpc2VyIGNldHRlIGNhcmFjdOlyaXN0aXF1ZQpsYW5nIGZyIHJlcG9ydCBwb3VyIHLpZ2xlciB1biBmaWx0cmUgZGFucyB2b3RyZSBsb2dpY2llbCBkZSBsZWN0dXJlIGRlIGNvdXJyaWVyLApsYW5nIGZyIHJlcG9ydCBhZmluIGRlIGTpdHJ1aXJlIG91IGRlIGNsYXNzZXIg4CBwYXJ0IGNlIHR5cGUgZGUgbWVzc2FnZS4KbGFuZyBmciByZXBvcnQKbGFuZyBmciByZXBvcnQgU2kgY2Ugcm9ib3QgYSBjbGFzc2lmaekgaW5jb3JyZWN0ZW1lbnQgdW4gbWVzc2FnZSBxdWkgdm91cyDpdGFpdApsYW5nIGZyIHJlcG9ydCBkZXN0aW7pLCBvdSBwb3VyIHRvdXRlIHF1ZXN0aW9uLCB2ZXVpbGxleiBjb250YWN0ZXIgbCdhZG1pbmlzdHJhdGV1cgpsYW5nIGZyIHJlcG9ydCBkdSBzeXN06G1lIHBhciBlLW1haWwg4CBfQ09OVEFDVEFERFJFU1NfIC4KbGFuZyBmciByZXBvcnQKbGFuZyBmciByZXBvcnQgVm9pciBodHRwOi8vc3BhbWFzc2Fzc2luLmFwYWNoZS5vcmcvdGFnLyBwb3VyIHBsdXMgZGUgZOl0YWlscyAoZW4gYW5nbGFpcykuCmxhbmcgZnIgcmVwb3J0CmxhbmcgZnIgcmVwb3J0IETpdGFpbHMgZGUgbCdhbmFseXNlIGR1IG1lc3NhZ2U6ICAgKF9TQ09SRV8gcG9pbnRzLCBfUkVRRF8gcmVxdWlzKQpsYW5nIGZyIHJlcG9ydCBfU1VNTUFSWV8KbGFuZyBmciByZXBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0gRmluIGRlIFJhcHBvcnQgU3BhbUFzc2Fzc2luIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyAgICAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyBWb3VzIGRldnJpZXogY2hhbmdlciAicmVwb3J0X2NvbnRhY3QiIGRhbnMgbGUgZmljaGllciAxMF9taXNjLmNmLgojIF9DT05UQUNUQUREUkVTU18gZXN0IHJlbXBsYWPpZSBwYXIgY2UgdGV4dGUuCiMgICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgojICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpsYW5nIGZyIGNsZWFyLXVuc2FmZS1yZXBvcnQtdGVtcGxhdGUKbGFuZyBmciB1bnNhZmUtcmVwb3J0IExlIG1lc3NhZ2Ugb3JpZ2luYWwgbifpdGFudCBwYXMgYXUgZm9ybWF0IHRleHQgYnJ1dCwgaWwgZXN0IHBldXQt6nRyZQpsYW5nIGZyIHVuc2FmZS1yZXBvcnQgZGFuZ2VyZXV4IGRlIGwnb3V2cmlyIGF2ZWMgdm90cmUgbG9naWNpZWwgZS1tYWlsIDsgZW4gcGFydGljdWxpZXIgaWwKbGFuZyBmciB1bnNhZmUtcmVwb3J0IHBvdXJyYWl0IGNvbnRlbmlyIHVuIHZpcnVzLCBvdSBjb25maXJtZXIg4CBsJ2V4cOlkaXRldXIgcXVlIHZvdHJlCmxhbmcgZnIgdW5zYWZlLXJlcG9ydCBhZHJlc3NlIGUtbWFpbCBlc3QgYWN0aXZlLCBldCBwZXV0IHJlY2V2b2lyIGR1IHNwYW0uIFNpIHZvdXMgdm91bGV6CmxhbmcgZnIgdW5zYWZlLXJlcG9ydCBsaXJlIGNlIG1lc3NhZ2UsIGV0IG4n6nRlcyBwYXMgY2VydGFpbiBkZSBsYSBz6WN1cml06SBkZSB2b3RyZSBsb2dpY2llbApsYW5nIGZyIHVuc2FmZS1yZXBvcnQgZS1tYWlsLCBpbCBlc3QgcGx1cyBwcnVkZW50IGQnZW5yZWdpc3RyZXIgY2UgbWVzc2FnZSBzdXIgdm90cmUgZGlzcXVlCmxhbmcgZnIgdW5zYWZlLXJlcG9ydCBkdXIsIGV0IGRlIGwnYWZmaWNoZXIgZW5zdWl0ZSBhdmVjIHVuIOlkaXRldXIgZGUgdGV4dGUuCiMgICAgICAgICAgICAgICAgICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgojIyMjIyMjIyMjIyMjCiMgMjNfYmF5ZXMuY2YKaWZwbHVnaW4gTWFpbDo6U3BhbUFzc2Fzc2luOjpQbHVnaW46OkJheWVzCmxhbmcgZnIgZGVzY3JpYmUgQkFZRVNfMDAJTCdhbGdvcml0aG1lIEJheelzaWVuIGEg6XZhbHXpIGxhIHByb2JhYmlsaXTpIGRlIHNwYW0gZW50cmUgMCBldCAxJQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzA1CUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDEgZXQgNSUKbGFuZyBmciBkZXNjcmliZSBCQVlFU18yMAlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA1IGV0IDIwJQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzQwCUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDIwIGV0IDQwJQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzUwCUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDQwIGV0IDYwJQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzYwCUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDYwIGV0IDgwJQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzgwCUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDgwIGV0IDk1JQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzk1CUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDk1IGV0IDk5JQpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzk5CUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDk5IGV0IDEwMCUKbGFuZyBmciBkZXNjcmliZSBCQVlFU185OTkgICAgICBMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA5OS45IGV0IDEwMCUKZW5kaWYKCmxhbmcgZnIgZGVzY3JpYmUgQUNUX05PV19DQVBTCQlEZW1hbmRlIGQnYWdpciBpbW3pZGlhdGVtZW50IChlbiBtYWp1c2N1bGVzKQpsYW5nIGZyIGRlc2NyaWJlIEJBRF9DUkVESVQJCUNvbnRpZW50ICJFbGltaW5hdGUgQmFkIENyZWRpdCIKbGFuZyBmciBkZXNjcmliZSBCQU5HX0dVQVIJCVF1ZWxxdWUgY2hvc2UgZXN0ICJnYXJhbnRpIiBkZSBtYW5p6HJlIGVtcGhhdGlxdWUKbGFuZyBmciBkZXNjcmliZSBCQU5HX09QUkFIICAgICAgCVBhcmxlIGQnT3ByYWggYXZlYyBwb2ludCBkJ2V4Y2xhbWF0aW9uICEKbGFuZyBmciBkZXNjcmliZSBCSUxMSU9OX0RPTExBUlMgICAgICAgIEV2b3F1ZSBkZXMgbWlsbGlvbnMgb3UgbWlsbGlhcmRzIGRlIGRvbGxhcnMKbGFuZyBmciBkZXNjcmliZSBCTEFOS19MSU5FU184MF85MAlMZSBjb3JwcyBkdSBtZXNzYWdlIGEgODAg4CA5MCUgZGUgbGlnbmVzIHZpZGVzCmxhbmcgZnIgZGVzY3JpYmUgQ0hBUlNFVF9GQVJBV0FZCU1lc3NhZ2UgdXRpbGlzYW50IHVuIGpldSBkZSBjYXJhY3TocmVzIGV4b3RpcXVlCmxhbmcgZnIgZGVzY3JpYmUgQ0hBUlNFVF9GQVJBV0FZX0hFQURFUglFbi106nRlIHV0aWxpc2FudCB1biBqZXUgZGUgY2FyYWN06HJlcyBleG90aXF1ZQpsYW5nIGZyIGRlc2NyaWJlIENPTkZJUk1FRF9GT1JHRUQJTGVzIGVuLXTqdGVzICJSZWNlaXZlZDoiIG9udCDpdOkgZmFsc2lmaelzCmxhbmcgZnIgZGVzY3JpYmUgQ1VNX1NIT1QgICAgICAgICAgICAgICBQb3Jub2dyYXBoaWUgcHJvYmFibGUsICJncm9zIHBsYW5zIGQn6WphY3VsYXRpb25zIgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fUEFTVF8wM18wNglEYXRlOiBlc3QgMyDgIDYgaGV1cmVzIGF2YW50IGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fUEFTVF8wNl8xMglEYXRlOiBlc3QgNiDgIDEyIGhldXJlcyBhdmFudCBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX1BBU1RfMTJfMjQJRGF0ZTogZXN0IDEyIOAgMjQgaGV1cmVzIGF2YW50IGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fUEFTVF8yNF80OAlEYXRlOiBlc3QgMjQg4CA0OCBoZXVyZXMgYXZhbnQgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgREFURV9JTl9QQVNUXzk2X1hYCURhdGU6IGVzdCBwbHVzIGRlIDk2IGhldXJlcyBhdmFudCBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX0ZVVFVSRV8wM18wNglEYXRlOiBlc3QgMyDgIDYgaGV1cmVzIGFwcuhzIGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fRlVUVVJFXzA2XzEyCURhdGU6IGVzdCA2IOAgMTIgaGV1cmVzIGFwcuhzIGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fRlVUVVJFXzEyXzI0CURhdGU6IGVzdCAxMiDgIDI0IGhldXJlcyBhcHLocyBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX0ZVVFVSRV8yNF80OAlEYXRlOiBlc3QgMjQg4CA0OCBoZXVyZXMgYXBy6HMgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgREFURV9JTl9GVVRVUkVfNDhfOTYJRGF0ZTogZXN0IDQ4IOAgOTYgaGV1cmVzIGFwcuhzIGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fRlVUVVJFXzk2X1hYCURhdGU6IGVzdCBwbHVzIGRlIDk2IGhldXJlcyBhcHLocyBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBNSVNTSU5HX0RBVEUJCUVuLXTqdGUgIkRhdGU6IiBhYnNlbnQKbGFuZyBmciBkZXNjcmliZSBEQVRFX1NQQU1XQVJFX1kySwlMJ2VuLXTqdGUgZGF0ZSB1dGlsaXNlIHVuIGZvcm1hdCBZMksgaW5oYWJpdHVlbApsYW5nIGZyIGRlc2NyaWJlIERFQVJfRlJJRU5ECQlDb250aWVudCBsYSBmb3JtdWxlICJEZWFyIGZyaWVuZCIKbGFuZyBmciBkZXNjcmliZSBERUFSX1NPTUVUSElORwkJTGUgbWVzc2FnZSBjb250aWVudCAiRGVhci4uLiAocXVlbHF1J3VuKSIKbGFuZyBmciBkZXNjcmliZSBESUVUXzEJCQlTcGFtIHByb3Bvc2FudCB1bmUgcGVydGUgZGUgcG9pZHMKbGFuZyBmciBkZXNjcmliZSBFTUFJTF9ST1QxMwkJQ29ycHMgY29udGllbnQgdW5lIGFkcmVzc2UgbWFpbCBlbmNvZOllIGVuIFJPVDEzCmxhbmcgZnIgZGVzY3JpYmUgRVhDVVNFX1JFTU9WRQkJRXhwbGlxdWUgY29tbWVudCDqdHJlIHJldGly6SBkZXMgbGlzdGVzIGRlIG1haWxpbmcgKHNvaS1kaXNhbnQuLi4pCmxhbmcgZnIgZGVzY3JpYmUgRVhDVVNFXzQJCVBy6XRlbmQgcXVlIHZvdXMgcG91dmV6IHZvdXMgZmFpcmUgc3VwcHJpbWVyIGRlIGxldXIgbGlzdGUKbGFuZyBmciBkZXNjcmliZSBFWENVU0VfMjQJCVBy6XRlbmQgcXVlIHZvdXMgYXZleiBkZW1hbmTpIOAgcmVjZXZvaXIgY2V0dGUgcHVibGljaXTpCmxhbmcgZnIgZGVzY3JpYmUgRklOX0ZSRUUgCQlQYXJsZSBkZSAibGliZXJ06SBmaW5hbmNp6HJlIiAoRmluYW5jaWFsIEZyZWVkb20pCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX0hPVE1BSUxfUkNWRDIJRnJvbSBob3RtYWlsLmNvbSwgbWFpcyBzYW5zICJSZWNlaXZlZDoiCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX0lNU19IVE1MCUlNUyBuJ2Vudm9pZSBwYXMgZGUgbWVzc2FnZXMgZW4gSFRNTCBzZXVsCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX0lNU19UQUdTCUlNUyBuJ2Vudm9pZSBwYXMgZGUgSFRNTCBkYW5zIGNlIGZvcm1hdApsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfRVVET1JBCU1lc3NhZ2UgZmFsc2lmaekgcHLpdGVuZGFudCBwcm92ZW5pciBkdSBsb2dpY2llbCBFdWRvcmEKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfTVVBX0lNUwkJTWVzc2FnZSBmYWxzaWZp6SBwcul0ZW5kYW50IHByb3ZlbmlyIGR1IGxvZ2ljaWVsIElNUwpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfTU9aSUxMQQlNZXNzYWdlIGZhbHNpZmnpIHBy6XRlbmRhbnQgcHJvdmVuaXIgZHUgbG9naWNpZWwgTW96aWxsYQpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfT0lNTwlNZXNzYWdlIGZhbHNpZmnpIHBy6XRlbmRhbnQgcHJvdmVuaXIgZHUgbG9naWNpZWwgTVMgT3V0bG9vayBJTU8KbGFuZyBmciBkZXNjcmliZSBGT1JHRURfTVVBX09VVExPT0sJTWVzc2FnZSBmYWxzaWZp6SBwcul0ZW5kYW50IHByb3ZlbmlyIGR1IGxvZ2ljaWVsIE1TIE91dGxvb2sKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfTVVBX1RIRUJBVF9CT1VOIE1haWwgcHLpdGVuZGFudCBwcm92ZW5pciBkZSBUaGUgQmF0ISAoYm91bmRhcnkpCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX01VQV9USEVCQVRfQ1MJTWFpbCBwcmV0ZW5kYW50IHByb3ZlbmlyIGRlIFRoZSBCYXQhIChjaGFyc2V0KQpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9PVVRMT09LX0hUTUwJT3V0bG9vayBuJ2Vudm9pZSBwYXMgZGUgbWVzc2FnZXMgZW4gSFRNTCBzZXVsCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX09VVExPT0tfVEFHUwlPdXRsb29rIG4nZW52b2llIHBhcyBkZSBIVE1MIHNvdXMgY2UgZm9ybWF0CmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX1FVQUxDT01NX1RBR1MJUVVBTENPTU0gbWFpbGVycyBuJ2Vudm9pZW50IHBhcyBkZSBIVE1MIHNvdXMgY2UgZm9ybWF0CmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX1RFTEVTUF9SQ1ZECUNvbnRpZW50IHVuIG5vbSBkZSBtYWNoaW5lIGZhbHNpZmnpIGNoZXogdW4gRi5BLkkuIGJy6XNpbGllbgpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9USEVCQVRfSFRNTAlUaGUgQmF0ISBuJ2Vudm9pZSBwYXMgZGUgbWVzc2FnZXMgZW4gSFRNTCBzZXVsCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX1lBSE9PX1JDVkQJQ29udGllbnQgdW4gZW4tdOp0ZSBmYWxzaWZp6SBSZWNlaXZlZDogeWFob28uY29tCmxhbmcgZnIgZGVzY3JpYmUgRk9SV0FSRF9MT09LSU5HCUNvbnRpZW50IHVuICJTdG9jayBEaXNjbGFpbWVyIFN0YXRlbWVudCIgKGJvdXJzZSkKbGFuZyBmciBkZXNjcmliZSBGUkVFX1BPUk4gICAgICAgICAgICAgIFBvcm5vZ3JhcGhpZSBwcm9iYWJsZSAiRnJlZSBwb3JuIgpsYW5nIGZyIGRlc2NyaWJlIEZSRUVfUVVPVEVfSU5TVEFOVAlDb250aWVudCBmb3JtdWxlIHR5cGUgIkZyZWUgZXhwcmVzcyIgb3UgIm5vIG9ibGlnYXRpb24iCmxhbmcgZnIgZGVzY3JpYmUgRlJPTV9JTExFR0FMX0NIQVJTCUZyb206IGNvbnRpZW50IHRyb3AgZGUgY2FyYWN06HJlcyBicnV0cyBpbnZhbGlkZXMKbGFuZyBmciBkZXNjcmliZSBGUk9NX05PX1VTRVIJCUwnZW4tdOp0ZSBGcm9tOiBuJ2EgcGFzIGRlIG5vbSBkJ3V0aWxpc2F0ZXVyIGF2YW50IGxlIHNpZ25lIEAKbGFuZyBmciBkZXNjcmliZSBGUk9NX09GRkVSUwkJTCdhZHJlc3NlIGQnZXhw6WRpdGV1ciBlc3QgImF0IHNvbWV0aGluZy1vZmZlcnMiCmxhbmcgZnIgZGVzY3JpYmUgRlJPTV9TVEFSVFNfV0lUSF9OVU1TCUwnZW4tdOp0ZSBGcm9tOiBjb21tZW5jZSBwYXIgZGVzIGNoaWZmcmVzCmxhbmcgZnIgZGVzY3JpYmUgR0FQUFlfU1VCSkVDVAkJTCdlbi106nRlIFN1YmplY3Q6IGNvbnRpZW50IGR1ICJ0IGUgeCB0IGUgIGUgcyBwIGEgYyDpIgpsYW5nIGZyIGRlc2NyaWJlIEdUVUJFCQkJVGVzdCBn6W7pcmlxdWUgZGUgY291cnJpZXIgbm9uIHNvbGxpY3TpIGVuIG1hc3NlCmxhbmcgZnIgZGVzY3JpYmUgR1VBUkFOVEVFRF8xMDBfUEVSQ0VOVAlDb250aWVudCAiT25lIGh1bmRyZWQgcGVyY2VudCBndWFyYW50ZWVkIiAoMTAwJSBnYXJhbnRpKQpsYW5nIGZyIGRlc2NyaWJlIEhFQURfSUxMRUdBTF9DSEFSUwlFbi106nRlIGNvbnRpZW50IHRyb3AgZGUgY2FyYWN06HJlcyBicnV0cyBpbnZhbGlkZXMKbGFuZyBmciBkZXNjcmliZSBIRUFERVJfQ09VTlRfQ1RZUEUJUGx1c2lldXJzIGVuLXTqdGVzIENvbnRlbnQtVHlwZQpsYW5nIGZyIGRlc2NyaWJlIEhJREVfV0lOX1NUQVRVUwlKYXZhc2NyaXB0IGRlc3Rpbukg4CBjYW1vdWZsZXIgdW5lIFVSTCBkYW5zIGxlIG5hdmlnYXRldXIKbGFuZyBmciBkZXNjcmliZSBIVE1MX0NIQVJTRVRfRkFSQVdBWQlKZXUgZGUgY2FyYWN06HJlcyBleG90aXF1ZSB1dGlsaXPpIHBvdXIgbGUgSFRNTApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfQ09NTUVOVF9TQVZFRF9VUkwJTGUgbWVzc2FnZSBIVE1MIGVzdCB1bmUgcGFnZSB3ZWIgc2F1dmVnYXJk6WUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0VNQkVEUwkJSFRNTDogSW5jbHVzaW9uIGQnb2JqZXRzCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9GT05UX0ZBQ0VfQkFECUxlIG5vbSBkZSBsYSBwb2xpY2UgSFRNTCBuJ2VzdCBwYXMgdW4gbW90CmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9GT05UX0xPV19DT05UUkFTVAlQb2xpY2UgSFRNTCBkZSBsYSBt6m1lIGNvdWxldXIgcXVlIGxlIGZvbmQKbGFuZyBmciBkZXNjcmliZSBIVE1MX0ZPUk1BQ1RJT05fTUFJTFRPCUhUTUwgaW5jbHV0IHVuIGZvcm11bGFpcmUgZCdlbnZvaSBkZSBtYWlsCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9JTUFHRV9PTkxZXzA0CUhUTUwgY29udGllbnQgaW1hZ2VzIGF2ZWMgMjAwIOAgNDAwIG9jdGV0cyBkZSB0ZXh0ZQpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfSU1BR0VfT05MWV8wOAlIVE1MIGNvbnRpZW50IGltYWdlcyBhdmVjIDYwMCDgIDgwMCBvY3RldHMgZGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX09OTFlfMTIJSFRNTCBjb250aWVudCBpbWFnZXMgYXZlYyAxMDAwIOAgMTIwMCBvY3RldHMgZGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX1JBVElPXzAyCUhUTUwgRmFpYmxlIHJhdGlvIGRlIHRleHRlIHBhciByYXBwb3J0IGF1eCBpbWFnZXMKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX1JBVElPXzA0ICAgSFRNTCBGYWlibGUgcmF0aW8gZGUgdGV4dGUgcGFyIHJhcHBvcnQgYXV4IGltYWdlcwpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfSU1BR0VfUkFUSU9fMDYgICBIVE1MIEZhaWJsZSByYXRpbyBkZSB0ZXh0ZSBwYXIgcmFwcG9ydCBhdXggaW1hZ2VzCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9JTUFHRV9SQVRJT18wOCAgIEhUTUwgRmFpYmxlIHJhdGlvIGRlIHRleHRlIHBhciByYXBwb3J0IGF1eCBpbWFnZXMKbGFuZyBmciBkZXNjcmliZSBIVE1MX01FU1NBR0UJCUhUTUwgaW5jbHVzIGRhbnMgbGUgbWVzc2FnZQpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfTUlNRV9OT19IVE1MX1RBRwlNZXNzYWdlIGVuIEhUTUwgc2V1bCwgbWFpcyBzYW5zIHRhZ3MgSFRNTApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfVEFHX0JBTEFOQ0VfQk9EWQlMZSB0YWcgZGUgZmVybWV0dXJlIGRlICJib2R5IiBIVE1MIGVzdCBtYW5xdWFudApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfVEFHX0JBTEFOQ0VfSEVBRAlMZSB0YWcgZGUgZmVybWV0dXJlIGRlICJoZWFkIiBIVE1MIGVzdCBtYW5xdWFudApsYW5nIGZyIGRlc2NyaWJlIEhUVFBfRVNDQVBFRF9IT1NUCVVSSTogQ29udGllbnQgZGVzICUtZXNjYXBlcyBkYW5zIGxlIG5vbSBkZSBtYWNoaW5lCmxhbmcgZnIgZGVzY3JpYmUgSFRUUF9FWENFU1NJVkVfRVNDQVBFUwlVUkk6IENvbnRpZW50IGRlcyAlLWVzY2FwZXMgbm9tYnJldXggZXQgc3VwZXJmbHVzCmxhbmcgZnIgZGVzY3JpYmUgSU1QT1RFTkNFCQlQcul0ZW5kIHBlcm1ldHRyZSBkZSBjb21iYXR0cmUgbCdpbXB1aXNzYW5jZQpsYW5nIGZyIGRlc2NyaWJlIE1PUkVfU0VYIAkJUGFybGUgZCdhdWdtZW50ZXIgbGUgZOlzaXIgc2V4dWVsCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9EQVRFCQlMJ2VuLXTqdGUgRGF0ZTogZXN0IGluY29ycmVjdCAoaWwgY29udGllbnQgQU0vUE0pCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9EQVRFX1RaX0FCU1VSRAlMJ2VuLXTqdGUgRGF0ZTogZXN0IGluY29ycmVjdCAobGEgem9uZSBkZSB0ZW1wcyBuJ2V4aXN0ZSBwYXMpCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9NU0dJRAkJTGUgTWVzc2FnZS1JRCBlc3QgaW52YWxpZGUsIHNlbG9uIGxhIFJGQy0yODIyCmxhbmcgZnIgZGVzY3JpYmUgSVBfTElOS19QTFVTCQlBZHJlc3NlIElQIGVuIGTpY2ltYWwgc3VpdmllIGQndW4gQ0dJCmxhbmcgZnIgZGVzY3JpYmUgSkFQQU5FU0VfVUNFX1NVQkpFQ1QJU3VqZXQgY29udGllbnQgdW5lIG1hcnF1ZSBqYXBvbmFpc2UgZGUgc3BhbQpsYW5nIGZyIGRlc2NyaWJlIEpPSU5fTUlMTElPTlMJCUNvbnRpZW50ICJKb2luIE1pbGxpb25zIG9mIEFtZXJpY2FucyIKbGFuZyBmciBkZXNjcmliZSBLT1JFQU5fVUNFX1NVQkpFQ1QJTGUgc3VqZXQgY29udGllbnQgZGVzIGNhcmFjdOhyZXMgY29y6WVucwpsYW5nIGZyIGRlc2NyaWJlIExJVkVfUE9STiAgICAgICAgICAgICAgUG9ybm9ncmFwaGllIHByb2JhYmxlOiBwb3JubyBlbiBkaXJlY3QtbGl2ZQpsYW5nIGZyIGRlc2NyaWJlIFNVQkpFQ1RfRElFVCAgICAgICAgICAgIExlIHN1amV0IHBhcmxlIGRlIHBlcnRlIGRlIHBvaWRzCmxhbmcgZnIgZGVzY3JpYmUgTE9XX1BSSUNFICAgICAgICAgICAgICBDb250aWVudCAiTG93ZXN0IFByaWNlIiAobGUgcHJpeCBsZSBwbHVzIGJhcykKbGFuZyBmciBkZXNjcmliZSBNQVJLRVRJTkdfUEFSVE5FUlMJUHLpdGVuZCBxdWUgdm91cyB2b3VzIOp0ZXMgZW5yZWdpc3Ry6SBhdXBy6HMgZCd1biAicGFydGVuYWlyZSIgcXVlbGNvbnF1ZQpsYW5nIGZyIGRlc2NyaWJlIE1JTExJT05fVVNEIAkJUGhyYXNlIGNs6SBkJ2VzY3JvcXVlcmllIG5pZ+lyaWVubmUgKG1pbGxpb25zIG9mIGRvbGxhcnMpCmxhbmcgZnIgZGVzY3JpYmUgX19NSU1FX0JBU0U2NAkJSW5jbHV0IHVuIGF0dGFjaGVtZW50IGVuIEJBU0U2NApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfQkFTRTY0X0JMQU5LUwlMaWduZSBibGFuY2hlcyBzdXJudW3pcmFpcmVzIGRhbnMgbCdlbmNvZGFnZSBCQVNFNjQKbGFuZyBmciBkZXNjcmliZSBNSU1FX0JBU0U2NF9URVhUCVRleHRlIGR1IG1lc3NhZ2UgY2Ftb3VmbOkgcGFyIGVuY29kYWdlIGVuIEJBU0U2NApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfQk9VTkRfTUFOWV9IRVgJTW90aWYgY2FyYWN06XJpc3RpcXVlIGQnb3V0aWwgZGUgc3BhbSBkYW5zIGxlcyBk6WxpbWl0ZXVycyBNSU1FCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9DSEFSU0VUX0ZBUkFXQVkJSmV1IGRlIGNhcmFjdOhyZXMgTUlNRSBleG90aXF1ZQpsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSEVBREVSX0NUWVBFX09OTFkgRW4tdOp0ZSAiQ29udGVudC1UeXBlIiBwculzZW50IHNhbnMgbGVzIGVuLXTqdGVzIE1JTUUgcmVxdWlzCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9IVE1MX01PU1RMWQlNZXNzYWdlIG11bHRpcGFydCBwcmluY2lwYWxlbWVudCBlbiBNSU1FIHRleHQvaHRtbApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSFRNTF9PTkxZCQlMZSBtZXNzYWdlIHBvc3PoZGUgdW5pcXVlbWVudCBkZXMgcGFydGllcyBNSU1FIHRleHQvaHRtbApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSFRNTF9PTkxZX01VTFRJCU1lc3NhZ2UgbXVsdGlwYXJ0IHVuaXF1ZW1lbnQgZW4gTUlNRSB0ZXh0L2h0bWwKbGFuZyBmciBkZXNjcmliZSBfX01JTUVfUVAJCUNvbnRpZW50IGVuIGF0dGFjaGVtZW50IGVuIHF1b3RlZC1wcmludGFibGUKbGFuZyBmciBkZXNjcmliZSBNSU1FX1FQX0xPTkdfTElORQlMaWduZSBxdW90ZWQtcHJpbnRhYmxlIGRlIHBsdXMgZGUgNzYgY2FyYWN06HJlcwpsYW5nIGZyIGRlc2NyaWJlIE1JU1NJTkdfSEVBREVSUwlMZSBtZXNzYWdlIG5lIGNvbXBvcnRlIHBhcyBsJ2VuLXTqdGUgVG86CmxhbmcgZnIgZGVzY3JpYmUgTUlTU0lOR19NSU1FT0xFCVBvc3PoZGUgdW4gZW4tdOp0ZSBYLU1TTWFpbC1Qcmlvcml0eSwgbWFpcyBwYXMgZGUgWC1NaW1lT0xFCmxhbmcgZnIgZGVzY3JpYmUgTU9ORVlfQkFDSwkJVm91cyBnYXJhbnRpdCB1biAicmVtYm91cnNlbWVudCBzaSBpbnNhdGlzZmFpdCIgKGVuIGFuZ2xhaXMpCmxhbmcgZnIgZGVzY3JpYmUgTVNHSURfRlJPTV9NVEFfSEVBREVSCU1lc3NhZ2UtSUQgYWpvdXTpIHBhciB1biByZWxhaXMKbGFuZyBmciBkZXNjcmliZSBNU0dJRF9PVVRMT09LX0lOVkFMSUQJTWVzc2FnZS1JRCBmYWxzaWZp6SAoZm9ydG1hdCBPdXRsb29rIEV4cHJlc3MpCmxhbmcgZnIgZGVzY3JpYmUgTVVMVElfRk9SR0VECQlsZXMgZW4tdOp0ZXMgIlJlY2VpdmVkIiBtb250cmVudCBkZSBub21icmV1c2VzIGZhbHNpZmljYXRpb25zCmxhbmcgZnIgZGVzY3JpYmUgTkFfRE9MTEFSUwkJUGFybGUgZCd1biBtaWxsaW9uIGRlIGRvbGxhcnMgIm5vcmQtYW3pcmljYWlucyIKbGFuZyBmciBkZXNjcmliZSBOT05FWElTVEVOVF9DSEFSU0VUCU1lc3NhZ2UgculkaWfpIGRhbnMgdW4gamV1IGRlIGNhcmFjdOhyZXMgaW5leGlzdGFudApsYW5nIGZyIGRlc2NyaWJlIE5PVF9BRFZJU09SCQlDb250aWVudCAiTm90IHJlZ2lzdGVyZWQgaW52ZXN0bWVudCBhZHZpc29yIgpsYW5nIGZyIGRlc2NyaWJlIE5PX0ROU19GT1JfRlJPTQlBZHJlc3NlIEZyb206IGluY29ubnVlIGVuIEROUyAocGFzIGQnZW5yZWdpc3RyZW1lbnQgTVgpCmxhbmcgZnIgZGVzY3JpYmUgTk9fTUVESUNBTAkJQ29udGllbnQgIk5vIE1lZGljYWwgRXhhbXMiIChzYW5zIGV4YW1lbiBt6WRpY2FsKQpsYW5nIGZyIGRlc2NyaWJlIE5PX1JETlNfRE9UQ09NX0hFTE8JSEVMTyBkZSBGLkEuSS4gaW1wb3J0YW50LCBtYWlzIHBhcyBkZSByRE5TCmxhbmcgZnIgZGVzY3JpYmUgTlVNRVJJQ19IVFRQX0FERFIJVXRpbGlzZSB1bmUgYWRyZXNzZSBJUCwgc2FucyBwb2ludHMsIGRhbnMgdW5lIFVSTApsYW5nIGZyIGRlc2NyaWJlIE9CRlVTQ0FUSU5HX0NPTU1FTlQJQ29tbWVudGFpcmVzIEhUTUwgaW51dGlsZXMgZGVzdGlu6XMg4CBjYW1vdWZsZXIgbGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBPQlNDVVJFRF9FTUFJTCAgICAgICAgIExlIG1lc3NhZ2Ugc2VtYmxlIGNvbnRlbmlyIHVuZSBhZHJlc3NlIG1haWwgY2Ftb3VmbOllIHBhciByb3QxMwpsYW5nIGZyIGRlc2NyaWJlIE9OTElORV9QSEFSTUFDWQlQcm9kdWl0cyBwaGFybWFjZXV0aXF1ZXMgZW4gbGlnbmUKbGFuZyBmciBkZXNjcmliZSBCT0RZX0VOSEFOQ0VNRU5UCQlBcm5hcXVlIHBy6XRlbmRhbnQgYXVnbWVudGVyIGxhIHRhaWxlIGRlIHZvdHJlIHDpbmlzCmxhbmcgZnIgZGVzY3JpYmUgQk9EWV9FTkhBTkNFTUVOVDIJCUFybmFxdWUgcHLpdGVuZGFudCBhdWdtZW50ZXIgbGEgdGFpbGUgZGUgdm90cmUgcOluaXMKbGFuZyBmciBkZXNjcmliZSBQTElOR19RVUVSWQkJTGUgc3VqZXQgYSB1biBwb2ludCBkJ2ludGVycm9nYXRpb24gRVQgdW4gcG9pbnQgZCdleGNsYW1hdGlvbgpsYW5nIGZyIGRlc2NyaWJlIFBSRVNUX05PTl9BQ0NSRURJVEVECUZhaXQgculm6XJlbmNlIGEgdW5lICJwcmVzdGlnaWV1c2UgdW5pdmVyc2l06SIgbm9uIHJlY29ubnVlCmxhbmcgZnIgZGVzY3JpYmUgUkFUV0FSRV9FR1JPVVBTCVRyYWNlIGRlIGxvZ2ljaWVsIGRlIG1haWxpbmcgZW4gbWFzc2UgKGVHcm91cHMpIGRhbnMgbGVzIGVuLXTqdGVzCmxhbmcgZnIgZGVzY3JpYmUgUkFUV0FSRV9IQVNIX0RBU0gJQ29udGllbnQgdW4gImhhc2hidXN0ZXIiIGF1IGZvcm1hdCBTZW5kLVNhZmUKbGFuZyBmciBkZXNjcmliZSBSQVRXQVJFX09FX01BTEZPUk1FRAlFbi106nRlIFgtTWFpbGVyIGluZGlxdWUgTm8gZGUgdmVyc2lvbiBPdXRsb29rIEV4cHJlc3MgbWFsZm9ybekKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0FNX1BNCQlFbi106nRlIFJlY2VpdmVkOiBmYWxzaWZp6SAoQU0vUE0pCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9GQUtFX0hFTE9fRE9UQ09NICBFbi106nRlIFJlY2VpdmVkIGNvbnRpZW50IG5vbSBkJ2j0dGUgZmFsc2lmaekgZGFucyBsZSBIRUxPCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9CTF9TUEFNQ09QX05FVAlSZWxhaXMgbGlzdOkgZGFucyBodHRwOi8vc3BhbWNvcC5uZXQvYmwuc2h0bWwKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX0RVTAlFbnZveekgZGlyZWN0ZW1lbnQgZGVwdWlzIHVuZSBhZHJlc3NlIElQIGR5bmFtaXF1ZQpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTUFQU19EVUwJUmVsYWlzIGxpc3TpIGRhbnMgRFVMLCBodHRwOi8vd3d3Lm1haWwtYWJ1c2Uub3JnL2R1bC8KbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX01BUFNfTk1MCVJlbGFpcyBsaXN06SBkYW5zIE5NTCwgaHR0cDovL3d3dy5tYWlsLWFidXNlLm9yZy9ubWwvCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9NQVBTX1JCTAlSZWxhaXMgbGlzdOkgZGFucyBSQkwsIGh0dHA6Ly93d3cubWFpbC1hYnVzZS5vcmcvcmJsLwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTUFQU19SU1MJUmVsYWlzIGxpc3TpIGRhbnMgUlNTLCBodHRwOi8vd3d3Lm1haWwtYWJ1c2Uub3JnL3Jzcy8KbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NCTAkJUmVsYWlzIGxpc3TpIGRhbnMgaHR0cDovL3d3dy5zcGFtaGF1cy5vcmcvc2JsLwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfQkxPQ0sJU09SQlM6IFJlbGFpcyByZWZ1c2FudCBkJ+p0cmUgdGVzdOkgcGFyIFNPUkJTCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9TT1JCU19IVFRQCVNPUkJTOiBFbnZveekgcGFyIHVuIHByb3h5IEhUVFAgb3V2ZXJ0CmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9TT1JCU19NSVNDCVNPUkJTOiBFbnZveekgcGFyIHVuIHByb3h5IG91dmVydApsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfU01UUAlTT1JCUzogRW52b3npIHBhciB1biByZWxhaXMgU01UUCBvdXZlcnQKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX1NPQ0tTCVNPUkJTOiBFbnZveekgcGFyIHVuIHByb3h5IFNPQ0tTIG91dmVydApsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfV0VCCVNPUkJTOiBFbnZveekgZGVwdWlzIHVuIHNlcnZldXIgd2ViIHZ1bG7pcmFibGUKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX1pPTUJJRQlTT1JCUzogRW52b3npIGRlcHVpcyB1biBy6XNlYXUgSVAgcGlyYXTpCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9OVU1FUklDX0hFTE8JUmVjZWl2ZWQ6IGNvbnRpZW50IHVuIEhFTE8gbnVt6XJpcXVlCmxhbmcgZnIgZGVzY3JpYmUgUkVGSU5BTkNFX05PVyAgICAgICAgICBPZmZyZSBkZSByZWZpbmFuY2VtZW50IGltbW9iaWxpZXIKbGFuZyBmciBkZXNjcmliZSBSRUZJTkFOQ0VfWU9VUl9IT01FCU9mZnJlIGRlIHJlZmluYW5jZW1lbnQgaW1tb2JpbGllcgpsYW5nIGZyIGRlc2NyaWJlIFNPUlRFRF9SRUNJUFMJCUxhIGxpc3RlIGRlcyBkZXN0aW5hdGFpcmVzIGVzdCB0cmnpZSBwYXIgb3JkcmUgYWxwaGFi6XRpcXVlCmxhbmcgZnIgZGVzY3JpYmUgU1RPQ0tfQUxFUlQJCUNvbnRpZW50IGxhIGZvcm11bGUgInN0b2NrIGFsZXJ0IgpsYW5nIGZyIGRlc2NyaWJlIFNUUk9OR19CVVkJCUNvbnRpZW50IGxhIGZvcm11bGUgInN0cm9uZyBidXkiCmxhbmcgZnIgZGVzY3JpYmUgU1VCSl9BTExfQ0FQUwkJTGUgc3VqZXQgZXN0IGVuIG1hanVzY3VsZXMKbGFuZyBmciBkZXNjcmliZSBTVUJKX0FTX1NFRU4JCUxlIHN1amV0IGNvbnRpZW50ICJBcyBTZWVuIiAoZ+lu6XJhbGVtZW50ICJ2dSDgIGxhIHTpbOkiLi4uKQpsYW5nIGZyIGRlc2NyaWJlIFNVQkpfQlVZICAgICAgICAgICAgICAgTGUgc3VqZXQgY29tbWVuY2UgcGFyICJCdXksIEJ1eWluZyIgKGFjaGV0ZXosIGFjaGF0KQpsYW5nIGZyIGRlc2NyaWJlIFNVQkpfRE9MTEFSUyAgICAgICAgICAgTGUgc3VqZXQgY29tbWVuY2UgcGFyIHVuZSBzb21tZSBlbiBkb2xsYXJzCmxhbmcgZnIgZGVzY3JpYmUgU1VCSl9JTExFR0FMX0NIQVJTCVN1YmplY3Q6IGNvbnRpZW50IHRyb3AgZGUgY2FyYWN06HJlcyBicnV0cyBpbnZhbGlkZXMKI2xhbmcgZnIgZGVzY3JpYmUgU1VCSl9ZT1VSX0RFQlQJCUxlIHN1amV0IGNvbnRpZW50ICJZb3VyIEJpbGxzIiAodm9zIGZhY3R1cmVzKSBvdSBzaW1pbGFpcmUKbGFuZyBmciBkZXNjcmliZSBTVUJKX1lPVVJfRkFNSUxZCUxlIHN1amV0IGNvbnRpZW50ICJZb3VyIEZhbWlseSIgKHZvdHJlIGZhbWlsbGUpCmxhbmcgZnIgZGVzY3JpYmUgU1VTUElDSU9VU19SRUNJUFMJTCdlbi106nRlIFRvOiBjb250aWVudCBwbHVzIGRlIGRpeCBmb2lzIGxlIG3qbWUgbm9tIGRlIGRvbWFpbmUKbGFuZyBmciBkZXNjcmliZSBUT19NQUxGT1JNRUQJCUwnZW4tdOp0ZSBUbzogY29udGllbnQgdW5lIGFkcmVzc2UgbWFsIGZvcm3pZQpsYW5nIGZyIGRlc2NyaWJlIFRSQUNLRVJfSUQJCUNvbnRpZW50IHVuIG51belybyBwZXJtZXR0YW50IGRlIHZvdXMgaWRlbnRpZmllcgpsYW5nIGZyIGRlc2NyaWJlIFVOQ0xBSU1FRF9NT05FWSAgICAgICAgQXJnZW50IG5vbiBy6WNsYW3pOiBDaGFjdW4gc2FpdCBxdWUgYydlc3QgY291cmFudCA7LSkKbGFuZyBmciBkZXNjcmliZSBVUFBFUkNBU0VfNTBfNzUJTWVzc2FnZSBjb21wb3PpIGRlIDUwIOAgNzUlIGRlIG1hanVzY3VsZXMKbGFuZyBmciBkZXNjcmliZSBVUFBFUkNBU0VfNzVfMTAwCU1lc3NhZ2UgY29tcG9z6SBkZSA3NSDgIDEwMCUgZGUgbWFqdXNjdWxlcwpsYW5nIGZyIGRlc2NyaWJlIFVSR19CSVoJCUNvbnRpZW50IGxhIGZvcm11bGUgInVyZ2VudCBidXNpbmVzcyIKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0FMTF9TUEFNX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgImFsbF9zcGFtX3RvIiAoY29uZmlnIFNBIGxvY2FsZSkKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0JMQUNLTElTVAlFeHDpZGl0ZXVyIHN1ciBsYSBsaXN0ZSBub2lyZSAoY29uZmlnIFNBIGxvY2FsZSkKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0JMQUNLTElTVF9UTyAgIERlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgImJsYWNrbGlzdF90byIgKGNvbmZpZyBTQSBsb2NhbGUpCmxhbmcgZnIgZGVzY3JpYmUgVVNFUl9JTl9ERUZfV0hJVEVMSVNUCUV4cOlkaXRldXIgZGFucyBsYSBsaXN0ZSBPSyBwYXIgZOlmYXV0IGRlIFNwYW1Bc3Nhc3NpbgpsYW5nIGZyIGRlc2NyaWJlIFVTRVJfSU5fTU9SRV9TUEFNX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgIm1vcmVfc3BhbV90byIgKGNvbmZpZyBTQSBsb2NhbGUpCmxhbmcgZnIgZGVzY3JpYmUgVVNFUl9JTl9XSElURUxJU1QJRXhw6WRpdGV1ciBzdXIgbGEgbGlzdGUgYmxhbmNoZSAoT0spIChjb25maWcgU0EgbG9jYWxlKQpsYW5nIGZyIGRlc2NyaWJlIFVTRVJfSU5fV0hJVEVMSVNUX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgYmxhbmNoZSAoY29uZmlnIFNBKQpsYW5nIGZyIGRlc2NyaWJlIFVTX0RPTExBUlNfMyAgICAgICAgICAgRXNjcm9xLiBuaWfpcmllbm5lLCB2ZXJzaW9uIG1vZGlmaellLCBwaHJhc2UgY2zpICgkTk4sTk5OLE5OTi5OTikKbGFuZyBmciBkZXNjcmliZSBEUlVHX0VEX09OTElORSAgICAgICAgICBWZW50ZSBkZSBWaWFncmEgcGFyIGNvcnJlc3BvbmRhbmNlCmxhbmcgZnIgZGVzY3JpYmUgV0VJUkRfUE9SVAkJTGllbiBIVFRQIHZlcnMgdW4gbnVt6XJvIGRlIHBvcnQgbm9uIHN0YW5kYXJkCmxhbmcgZnIgZGVzY3JpYmUgV0VJUkRfUVVPVElORwkJVXRpbGlzYXRpb24g6XRyYW5nZSBkZSBzeW1ib2xlcyBkZSBjaXRhdGlvbnMKbGFuZyBmciBkZXNjcmliZSBXSVRIX0xDX1NNVFAJCVVuZSBsaWduZSBSZWNlaXZlZDogY29udGllbnQgdW4gc2lnbmUgZGUgc3BhbSAoInNtdHAiIGVuIG1pbnVzY3VsZXMpCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6QW50aVZpcnVzCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9TVVNQRUNUX05BTUUgICAgCUxlIG5vbSBkdSBmaWNoaWVyIGpvaW50IE1JTUUgc2VtYmxlIHN1c3BlY3QgKHZpcnVzID8pCmVuZGlmCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6RENDCmxhbmcgZnIgZGVzY3JpYmUgRENDX0NIRUNLCQlNZXNzYWdlIGxpc3TpIHBhciBEQ0M6IGh0dHA6Ly93d3cud3d3LmRjYy1zZXJ2ZXJzLm5ldC9kY2MvCmVuZGlmCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6UHl6b3IKbGFuZyBmciBkZXNjcmliZSBQWVpPUl9DSEVDSwkJTWVzc2FnZSBsaXN06SBwYXIgUHl6b3IsIHZvaXIgaHR0cDovL3B5em9yLnNmLm5ldC8KZW5kaWYKCmlmcGx1Z2luIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpUZXh0Q2F0CmxhbmcgZnIgZGVzY3JpYmUgQk9EWV84QklUUwkJQ29udGllbnQgcGx1c2lldXJzIGNhcmFjdOhyZXMgOC1iaXRzIGNvbnPpY3V0aWZzCmxhbmcgZnIgZGVzY3JpYmUgVU5XQU5URURfTEFOR1VBR0VfQk9EWQlNZXNzYWdlIGRhbnMgdW5lIGxhbmd1ZSBub24gZOlzaXLpZSAoY29uZmlnIGxvY2FsZSkKZW5kaWYKCmlmcGx1Z2luIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpBY2Nlc3NEQgpsYW5nIGZyIGRlc2NyaWJlIEFDQ0VTU0RCCQlDZSBtZXNzYWdlIGF1cmFpdCDpdOkgYmxvcXXpIHBhciBhY2Nlc3NkYgplbmRpZgoKbGFuZyBmciBkZXNjcmliZSBOT1JNQUxfSFRUUF9UT19JUCAgICAgVVJJOiBDb250aWVudCB1bmUgYWRyZXNzZSBJUCBlbiBub3RhdGlvbiBk6WNpbWFsZQoK