MjAwMy0wMy0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgKiBSRUFETUU6IHVkcGF0ZWQKCiAgICogUkVBRE1FLlVOWDogcmVtb3ZlZCAobm93IHJlcGxhY2VkIGJ5IGRvY3MvSU5TVEFMTC5VTlgpCgogICAqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiB0aGUgaGludGVyIG5vdyBwZXJmb3JtcyBhcyBpbiAyLjEuMyBhbmQKICAgd2lsbCBpZ25vcmUgc3RlbSBxdWFudGl6YXRpb24gb25seSB3aGVuIEZUX0xPQURfVEFSR0VUX1NNT09USCBpcyB1c2VkCgogICAqIHNyYy9iYXNlL2Z0b2Jqcy5jOiBjaGFuZ2VkIHRoZSBkZWZhdWx0IGNvbXB1dGF0aW9ucyB0byBpbmNsdWRlIHJvdW5kaW5nCiAgIGluIGFsbCBjYXNlcywgdGhpcyBpcyByZXF1aXJlZCB0byBwcm92aWRlIGFjY3VyYXRlIGtlcm5pbmcgZGF0YSB3aGVuCiAgIG5hdGl2ZSBUcnVlVHlwZSBoaW50aW5nIGlzIGVuYWJsZWQuCgogICAqIHNyYy90eXBlMS90MWxvYWQuYzogdGhlIFR5cGUgMSBsb2FkZXIgbm93IGFjY2VwdHMgbW9yZSBnZW5lcmFsIG5hbWVzCiAgIGFjY29yZGluZyB0byB0aGUgUG9zdHNjcmlwdCBzcGVjICh0aGUgcHJldmlvdXMgb25lIHdhcyB0b28gcmVzdHJpY3RpdmUpCgoyMDAzLTAzLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBkb2NzLyo6IHNlcmlvdXMgcmV3cml0aW5nIG9mIHRoZSBkb2N1bWVudGF0aW9uCgogICAgKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2JkZi9iZGZkcml2ci5jLAogICAgc3JjL3BjZi9wY2Zkcml2ZXIuYywgc3JjL3Bmci9wZnJzYml0LmMsIHNyYy9zZm50L3R0c2JpdC5jLAogICAgc3JjL3R5cGU0Mi90NDJvYmpzLmMsIHNyYy93aW5mb250cy93aW5mbnQuYzogaW50cm9kdWNlZCB0aHJlZSBuZXcgZnVuY3Rpb25zCiAgICB0byBkZWFsIHdpdGggZ2x5cGggYml0bWFwcyB3aXRoaW4gRlRfR2x5cGhTbG90IG9iamVjdHMuIHRoZXNlIGFyZToKCiAgICAgIGZ0X2dseXBoc2xvdF9mcmVlX2JpdG1hcAogICAgICBmdF9nbHlwaHNsb3RfYWxsb2NfYml0bWFwCiAgICAgIGZ0X2dseXBoc2xvdF9zZXRfYml0bWFwCgogICAgdGhlc2UgYXJlIG11Y2ggbW9yZSBjb252ZW5pZW50IHRvIHVzZSB0aGFuIG1hbmFnaW5nIHRoZSBGVF9HTFlQSF9PV05fQklUTUFQCiAgICBmbGFnIG1hbnVhbGx5LiB0aGUgZm9udCBkcml2ZXJzIGhhdmUgYmVlbiBtb2RpZmllZCB0byB1c2UgdGhlbSBhcyB3ZWxsLgoKICAgICogc3JjL2NhY2hlL2Z0bHJ1LmM6IGZpeGVkIGFuIGludmFsaWQgYXNzZXJ0aW9uIGNoZWNrCgogICAgKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5oLCBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jLCBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYywKICAgIHNyYy9hdXRvaGludC9haGhpbnQuYzogZml4ZWQgYmx1ZS1zY2FsZSBwcm9ibGVtCgogICAgKiBzcmMvY2FjaGUvZnRjY2FjaGUuYzogZml4ZWQgc21hbGwgYnVnIHRoYXQgY291bGQgY3Jhc2ggdGhlIGNhY2hlCiAgICBpbiByYXJlIGNpcmN1bXN0YW5jZXMgKG1vc3RseSB3aXRoIGJyb2tlbiBmb250cykKCgoyMDAzLTAzLTE1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBzcmMvdHJ1ZXR5b2UvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBmaXhlZCBhIHNtYWxsIHJvdW5kaW5nIGJ1Zy4KICAgIEFjdHVhbGx5LCBpdCBzZWVtcyB0aGF0IHByZXZpb3VzIHZlcnNpb25zIG9mIEZyZWVUeXBlIGRpZG4ndCBwZXJmb3JtCiAgICBUcnVlVHlwZSByb3VuZGluZyBleGFjdGx5IGFzIGFwcHJvcHJpYXRlLgoKMjAwMy0wMy0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmM6IGZpeGluZyB0aGUgc21hbGwgVHJ1ZVR5cGUgbmF0aXZlIHJlbmRlcmluZwogICAgZ2xpdGNoZXMsIHRoZXkgY2FtZSBmcm9tIGEgc21hbGwgcm91bmRpbmcgZXJyb3IuCgoyMDAzLTAzLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBzcmMvYmFzZS9mdGRiZ21lbS5jLCBkb2NzL0RFQlVHLlRYVDogYWRkZWQgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgdG8gY29udHJvbCBtZW1vcnkgZGVidWdnaW5nIHdpdGggRnJlZVR5cGUuIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YKICAgICJGVDJfREVCVUdfTUVNT1JZIiwgIkZUMl9BTExPQ19UT1RBTF9NQVgiIGFuZCAiRlQyX0FMTE9DX0NPVU5UX01BWCIKICAgIGluIERFQlVHLlRYVAoKICAgICogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMsIHNyYy9jYWNoZS9mdGNjbWFwLmMsIHNyYy9jYWNoZS9mdGNzYml0cy5jLAogICAgZnRscnUuYzogZml4ZWQgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gY29ycmVjdGx5IGRlYWwgd2l0aCBvdXQtb2YtbWVtb3J5CiAgICBjb25kaXRpb25zLgoKICAgICogc3JjL3Bmci9wZnJvYmpzLmMsIHNyYy9wZnIvcGZyc2JpdHMuYzogZml4aW5nIGNvbXBpbGVyIHdhcm5pbmdzIGFuZCBhCiAgICBzbWFsbCBtZW1vcnkgbGVhawoKICAgICogc3JjL3BzYXV4L3Bzb2Jqcy5jICh0MV9yZWFsbG9jYXRlX3RhYmxlKTogZml4ZWQgYSBidWcgKG1lbW9yeSBsZWFrKSB0aGF0CiAgICBvbmx5IGhhcHBlbmVkIHdoZW4gdHJ5aW5nIHRvIHJlc2l6ZSBhbiBhcnJheSB3b3VsZCBlbmQgaW4gYW4gT09NLgoKICAgICogc3JjL3Ntb290aC9mdGdyYXlzLmM6IHJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MgLyB2b2xhdGlsZSBidWcKCiAgICAqIHNyYy90cnVldHlwZS90dG9ianMuYzogcmVtb3ZlZCBzZWdtZW50YXRpb24gZmF1bHQgdGhhdCBoYXBwZW5lZCBpbgogICAgdGlnaHQgbWVtb3J5IGVudmlyb25tZW50cy4KCjIwMDMtMDItMjggIFBpeGVsICA8cGl4ZWxAbWFuZHJha2Vzb2Z0LmNvbT4KCiAgICAqIHNyYy9nemlwL2Z0Z3ppcC5jIChmdF9nemlwX2ZpbGVfZG9uZSk6IGZpeGVkIG1lbW9yeSBsZWFrLCB0aGUgWkxpYgogICAgc3RyZWFtIHdhcyBub3QgcHJvcGVybHkgZmluYWxpemVkCgoyMDAzLTAyLTI1ICBBbnRob255IEZvayAgPGFudGhvbnlAdGhpemxpbnV4LmNvbT4KCiAgICAqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IHRoZSBjbWFwIGNhY2hlIG5vdyBzdXBwb3J0cyBVQ1MtNCBjaGFybWFwcwogICAgd2hlbiBhdmFpbGFibGUgaW4gQXNpYW4gZm9udHMKCiAgICAqIHNyYy9zZm50L3R0bG9hZC5jLCBzcmMvYmFzZS9mdG9ianMuYzogY2hhbmdlZCAiYXNpYW4iIHRvICJBc2lhbiIgaW4KICAgIGNvbW1lbnRzCgoyMDAzLTAyLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBzcmMvZ3ppcC9mdGd6aXAuYzogZml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgRnJlZVR5cGUgdG8gbG9vcCBlbmRsZXNzbHkKICAgIHdoZW4gdHJ5aW5nIHRvIHJlYWQgY2VydGFpbiBjb21wcmVzc2VkIGd6aXAgZmlsZXMuIFRoZSBmb2xsb3dpbmcgdGVzdAogICAgY291bGQgYmUgdXNlZCB0byByZXZlYWwgdGhlIGJ1ZzoKCiAgICAgICB0b3VjaCAwMTIzNDU2Nzg5IDsgZ3ppcCAwMTIzNDU2Nzg5IDsgZnRkdW1wIDAxMjM0NTY3ODkuZ3oKCgogICAgKiBzcmMvcGZyL3Bmcm9ianMuYywgc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZydHlwZXMuaDogc2V2ZXJhbAogICAgZml4ZXMgdG8gdGhlIFBGUiBmb250IGRyaXZlcjoKCiAgICAgIC0gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGVtYmVkZGVkIGJpdG1hcHMgd2FzIG5vdCBjb3JyZWN0bHkgc2V0CiAgICAgICAgaW4gdGhlIHJvb3QgRlRfRmFjZVJlYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZmFjZQoKICAgICAgLSB0aGUgZ2x5cGggbG9hZGVyIGFsd2F5cyB0cmllZCB0byBsb2FkIHRoZSBvdXRsaW5lcyB3aGVuCiAgICAgICAgRlRfTE9BRF9TQklUU19PTkxZIHdhcyBzcGVjaWZpZWQKCiAgICAgIC0gdGhlIHRhYmxlIGxvYWRlZCBub3cgc2NhbnMgZm9yICp1bmRvY3VtZW50ZWQqIGVsZW1lbnRzIG9mIGEKICAgICAgICBwaHlzaWNhbCBmb250J3MgYXV4aWxpYXJ5IGRhdGEgcmVjb3JkLCB0aGlzIGlzIG5lY2Vzc2FyeSB0bwogICAgICAgIHJldHJpZXZlIHRoZSAicmVhbCIgZmFtaWx5IGFuZCBzdHlsZSBuYW1lcy4KCiAgICAgICAgTk9URSBUSEFUIFRISVMgQ0hBTkdFUyBUSEUgRkFNSUxZIE5BTUUgT0YgTUFOWSBQRlIgRk9OVFMgISEKCiAgICAqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChTZXRfQ2hhcl9TaXplcyk6IGZpeGVkIGEgcm91bmRpbmcgYnVnIHdoZW4KICAgIGNvbXB1dGluZyB0aGUgc2NhbGUgZmFjdG9ycyBmb3IgYSBnaXZlbiBjaGFyYWN0ZXIgc2l6ZSBpbiBwb2ludHMgd2l0aAogICAgcmVzb2x1dGlvbi4KCgoyMDAzLTAyLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5oLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCiAgICBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYywgc3JjL2Jhc2UvZnRvYmpzLmM6IGZpeGluZyB0aGUgc2xpZ2h0IGRpc3RvcnRpb24KICAgIHByb2JsZW0gdGhhdCBvY2N1cmVkIGR1ZSB0byB0aGUgbGF0ZXN0IGF1dG8taGludGVyIGNoYW5nZXMKCgogICAgKiBzcmMvYXV0b2hpbnQvYWhoaW50LmM6IGRpc2FibGVkIHRoZSBhZHZhbmNlIHdpZHRoICJjb3JyZWN0aW9uIiB3aGljaAogICAgc2VlbWVkIHRvIHByb3ZpZGUgbW9yZSB0cm91YmxlIHRoYW4gYmVuZWZpdHMuLgoKMjAwMy0wMi0xMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKICAgICogaW5jbHVkZS9mcmVldHlwZS9mdGluY3JlbS5oLCBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jaWQvY2lkZ2xvYWQuYywKICAgIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90eXBlMS90MWdsb2FkLmMKICAgIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSSBoYXZlIGNoYW5nZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcKICAgIGludGVyZmFjZSBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IHNpbXBsZXIgYW5kIGFsbG93cyBnbHlwaCBtZXRyaWNzIHRvCiAgICBiZSBjaGFuZ2VkIChlLmcuLCBieSBhZGRpbmcgYSBjb25zdGFudCwgYXMgcmVxdWlyZWQgYnkgQ0ZGIGZvbnRzKQogICAgcmF0aGVyIHRoYW4ganVzdCBvdmVycmlkZGVuLiBUaGlzIHdhcyByZXF1aXJlZCB0byBtYWtlIHRoZSBHaHNvdFNjcmlwdC0KICAgIHRvLUZyZWVUeXBlIGJyaWRnZSB3b3JrLgoKMjAwMy0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICogZG9jcy9DSEFOR0VTLCBkb2NzL1ZFUlNJT04uRExMLCBkb2NzL1RPRE86IHVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yCiAgICB0aGUgMi4xLjQgcmVsZWFzZQoKICAgICogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLCBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOgogICAgdXBkYXRpbmcgdGhlIHByb2plY3QgZmlsZSBmb3IgMi4xLjQKCiAgICAqIHNyYy9nemlwL2FkbGVyMzIuYywgc3JjL2d6aXAvZnRnemlwLmMsIHNyYy9nemlwL2luZmJsb2NrLmMsCiAgICBzcmMvZ3ppcC9pbmZjb2Rlcy5jLCBzcmMvZ3ppcC9pbmZsYXRlLmMsIHNyYy9nemlwL2luZnRyZWVzLmMsCiAgICBzcmMvZ3ppcC9pbmZ1dGlsLmM6IHJlbW92ZWQgb2xkLXN0eWxlIChLJlIpZnVuY3Rpb24gZGVmaW5pdGlvbnMuIFRoaXMKICAgIGF2b2lkcyB3YXJuaW5ncyB3aXRoIFZpc3VhbCBDKysgYXQgaXRzIG1vc3QgcGVkYW50aWMgbW9kZS4KCiAgICAqIHNyYy9wZnIvcGZyc2JpdC5jOiByZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzCgogICAgKiBzcmMvY2FjaGUvZnRjY21hcC5jOiBjaGFuZ2VkIGEgRlRfRVJST1IgaW50byBhIEZUX1RSQUNFMSBzaW5jZSB0aGUKICAgIGl0IGNhdXNlZCAiZnR2aWV3IiBhbmQgb3RoZXJzIHRvIGR1bXAgdG9vIG11Y2gganVuayB3aGVuIHRyeWluZyB0bwogICAgZGlzcGxheSBhIHdhdGVyZmFsbCB3aXRoIGEgZm9udCB3aXRob3V0IGEgVW5pY29kZSBjaGFybWFwIChlLmcuCiAgICBTWU1CT0wuVFRGKQoKICAgICogc3JjL2F1dG9oaW50L2FodHlwZXMuaCwgc3JjL2F1dG9oaW50L2FoaGludC5jLCBzcmMvYmFzZS9mdG9ianMuYywKICAgIHNyYy90cnVldHlwZS90dG9ianMuYzogaW1wbGVtZW50ZWQgRlRfQ09ORklHX0NIRVNURVJfQkxVRV9TQ0FMRSwKICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QgcGF0Y2ggZnJvbSBEYXZpZCBDaGVzdGVyLCBidXQgd2l0aCBhCiAgICBtdWNoIHNpbXBsZXIgKGFuZCBzYW5lcikgaW1wbGVtZW50YXRpb24uCgogICAgKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYzogaW1wcm92ZWQgdGhlIFBvc3RzY3JpcHQgaGludGVyLiBHZXR0aW5nIHJpZAogICAgb2Ygc3RlbSBzbmFwcGluZyBzZWVtcyB0byB3b3JrIHdlbGwgaGVyZSAodGhvdWdoIHRoZSBzdGVtcyBhcmUgc3RpbGwKICAgIHNsaWdodGx5IG1vdmVkIHRvIGluY3JlYXNlIGNvbnRyYXN0KS4KCiAgICBUSElTIElNUFJPVkVTIEFOVEktQUxJQVNFRCBSRU5ERVJJTkcsIEJVVCBNT05PQ0hST01FIEFORCBMQ0QgTU9ERVMKICAgIFNUSUxMIFNVQ0suLi4gSSBuZWVkIHRvIHdvcmsgdGhpcyBhIGJpdAoKMjAwMy0wMS0yMiAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKICAgICogc3JjL2F1dG9oaW50L2FoaGludC5jOiBzbWFsbCBmaXggdG8gdGhlIHN0ZW0gd2lkdGggb3B0aW1pc2F0aW9uCgoyMDAzLTAxLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgogICAgKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmRmLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvYmRmdHlwZXMuaCwKICAgIHNyYy9iYXNlL2Z0YmRmLmMsIHNyYy9iZGYvYmRmZHJpdnIuYywgc3JjL3BjZi9wY2Zkcml2ci5jLAogICAgc3JjL3BjZi9wY2ZyZWFkLmg6CgogICAgICBhZGRpbmcgYSBuZXcgQVBJLCBuYW1lZCBGVF9HZXRfQkRGX1Byb3BlcnR5IHRvIHJldHJpZXZlIHRoZSBCREYKICAgICAgcHJvcGVydGllcyBvZiBhIGdpdmVuIFBDRiBvciBCREYgZm9udAoKICAgICogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogcmVsYXhlZCB0aGUgImhlYWQiIHRhYmxlIHNpemUKICAgIHZlcmlmaWNhdGlvbiB0byBhY2NlcHQgYSBmZXcgYnJva2VuIGZvbnRzIHdobyBwYWQgdGhlIHNpemUgaW5jb3JyZWN0bHkKICAgICh0aGUgdGFibGUgc2hvdWxkIGJlIHBhZGRlZCwgYnV0IGl0cyAic2l6ZSIgZmllbGQgc2hvdWxkbid0IHBlciBzZQogICAgIHRoZSBzcGVjKQoKMjAwMy0wMS0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBSZWdlbmVyYXRlZCB3aXRoIGBsaWJ0b29saXplIC0tZm9yY2UKCS0tY29weScgZnJvbSBsaWJ0b29sIDEuNC4zLgoJKiBidWlsZHMvdW5peC9hY2xvY2FsLm00OiBSZWdlbmVyYXRlZCB3aXRoIGBhY2xvY2FsIC1JIC4nIGZyb20KCWF1dG9tYWtlIDEuNy4xLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkIHdpdGggYXV0b2NvbmYgMi41NC4KCSogYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzLCBidWlsZHMvdW5peC9jb25maWcuc3ViOiBVcGRhdGVkIGZyb20KCWBjb25maWcnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCSogYnVpbGRzL3VuaXgvaW5zdGFsbC1zaCwgYnVpbGRzL3VuaXgvbWtpbnN0YWxsZGlyczogVXBkYXRlZCBmcm9tCglgYXV0b21ha2UnIENWUyBtb2R1bGUgYXQgc3VidmVyc2lvbnMuZ251Lm9yZy4KCjIwMDMtMDEtMTUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4ZWQgZG9jdW1lbnRhdGlvbiBmb3IKCUZUX1NpemVfTWV0cmljcy4KCjIwMDMtMDEtMTUgIEphbWVzIFN1ICA8c3V6aGVAdHVyYm9saW51eC5jb20uY24+CgoJKiBzcmMvZ3ppcC9mdGd6aXAuYzogQnVnZml4OiBjb3VsZG4ndCByZWFkIGNlcnRhaW4gZ3ppcC1lZCBmb250CglmaWxlcy4KCjIwMDMtMDEtMTUgIEh1dyBEIE0gRGF2aWVzIDxoLmRhdmllczFAcGh5c2ljcy5veC5hYy51az4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnR3aW5mbnQuaCwKCXNyYy9iYXNlL3dpbmZudC5jLCBzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy9iYXNlL0phbWZpbGUsCglzcmMvYmFzZS9ydWxlcy5taywgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6IEFkZGVkIGEgV2luZG93cyAuRk5UCglzcGVjaWZpYyBBUEkgKG1vc3RseSBmb3IgV2luZSkuICBBbHNvIGZpeGVkIGEgbmFzdHkgYnVnIGluIHRoZQoJaGVhZGVyIGxvYWRlciB3aGljaCB3b3VsZCBjYXVzZSBpbnZhbGlkIG1lbW9yeSBvdmVyd3JpdGVzLgoKMjAwMy0wMS0xNCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmgsIHNyYy9iYXNlL2Z0Z2x5cGguYzogQWRkZWQgYGNvbnN0JyB0bwoJdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIEZUX01hdHJpeF9NdWx0aXBseSwgd2hpY2ggaXNuJ3QKCWNoYW5nZWQgLS0gdGhpcyBhZGRzIGRvY3VtZW50YXRpb24gYW5kIGNvbnZlbmllbmNlLgoKMjAwMy0wMS0xMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9tZXRyaWNzKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBUcnVlVHlwZSB0eXBlZmFjZXMgd2l0aG91dAoJaG9yaXpvbnRhbCBtZXRyaWNzICh3aXRob3V0IHRoZSBgaG10eCcgdGFibGUpIGFyZSBub3cgdG9sZXJhdGVkIGlmCglhbiBpbmNyZW1lbnRhbCBpbnRlcmZhY2UgaGFzIGJlZW4gc3BlY2lmaWVkIHRoYXQgaGFzIGEKCWdldF9nbHlwaF9tZXRyaWNzIGZ1bmN0aW9uLCBpbXBseWluZyB0aGF0IG1ldHJpY3Mgd2lsbCBiZSBzdXBwbGllZAoJZnJvbSBvdXRzaWRlLiAgVGhpcyBoYXBwZW5zIGZvciBjZXJ0YWluIFR5cGUgNDIgZm9udHMgcGFzc2VkIGZyb20KCUdob3N0U2NyaXB0LgoKMjAwMy0wMS0xMSAgRGF2aWQgQ2hlc3RlciAgPGRhdmlkY2hlc3RlckBxbXgubmV0PgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmgsCglzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYywgc3JjL2F1dG9oaW50L2FoZ2x5cGguYywKCXNyYy9hdXRvaGludC9haHR5cGVzLmg6IFBhdGNoZXMgdG8gdGhlIGF1dG8taGludGVyIGluIG9yZGVyIHRvCglzbGlnaHRseSBpbXByb3ZlIHRoZSBvdXRwdXQuICBOb3RlIHRoYXQgZXZlcnl0aGluZyBpcyBjb250cm9sbGVkCgl0aHJvdWdoIHRoZSBuZXcgRlRfQ09ORklHX09QVElPTl9DSEVTVEVSX0hJTlRTIGRlZmluZWQgYXQgdGhlIGVuZCBvZgoJImZ0b3B0aW9uLmgiLiAgVGhlcmUgYXJlIGFsc28gaW5kaXZpZHVhbCBGVF9DT05GSUdfQ0hFU1RFUl9YWFgKCW1hY3JvcyB0byBjb250cm9sIGluZGl2aWR1YWwgImZlYXR1cmVzIi4KCglOb3RlIHRoYXQgYWxsIGltcHJvdmVtZW50cyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgY2FuIGJlCgl0d2Vha2VkIGZvciBvcHRpbWl6YXRpb24gYW5kIHRlc3RpbmcgcHVycG9zZXMuICBUaGUgY29uZmlndXJhdGlvbgoJbWFjcm9zIHdpbGwgbW9zdCBsaWtlbHkgZGlzYXBwZWFyIGluIHRoZSBzaG9ydCBmdXR1cmUuCgoyMDAzLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ZudHR5cGVzLmg6IEZpeGVkIGEgc3RydWN0dXJlIGZpZWxkCglkZWZpbml0aW9uIHRvIGF2b2lkIG1lbW9yeSBvdmVyd3JpdGVzLgoKMjAwMy0wMS0wOCAgSHV3IERhd2llcyAgPGh1d0Bjb2Rld2VhdmVycy5jb20+CgoJKiBzcmMvd2luZm9udHMvd2luZm50LmM6IFJlYWQgMTYgYnl0ZXMgaW50byAicmVzZXJ2ZWQyIiwgbm90CgkicmVzZXJ2ZWQiLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKGZpbmRfdW5pY29kZV9jaGFybWFwKTogRml4ZWQgdGhlIGVycm9yIGNvZGUKCXJldHVybmVkIHdoZW4gdGhlIGZvbnQgZG9lc24ndCBjb250YWluIGEgVW5pY29kZSBjaGFybWFwLiAgVGhpcwoJYWxsb3dzIEZUMiB0byBsb2FkICJzeW1ib2wudHRmIiBhbmQgYSBmZXcgb3RoZXJzIGNvcnJlY3RseSBzaW5jZSB0aGUKCWxhc3QgcmVsZWFzZS4KCjIwMDMtMDEtMDggIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCwgc3JjL2F1dG9oaW50L2FoaGludC5jLAoJc3JjL3BzaGludGVyL3BzaGFsZ28zLmgsIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jOiBJbXBsZW1lbnRlZCB0aGUKCUZUX1JFTkRFUl9NT0RFX0xJR0hUIGhpbnRpbmcgbW9kZSBpbiB0aGUgYXV0byBhbmQgcG9zdHNjcmlwdAoJaGludGVycy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IEZpeGluZyB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIGhhbmRsZQoJaW52YWxpZCBjb21wb3NpdGVzIGNvcnJlY3RseSBieSBsaW1pdGluZyB0aGUgcmVjdXJzaW9uIGRlcHRoLgoKMjAwMy0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSmFtcnVsZXMsIEphbWZpbGUsIEphbWZpbGUuaW4sIHNyYy8qL0phbWZpbGU6IFNtYWxsIGNoYW5nZXMgdG8KCXN1cHBvcnQgdGhlIGNvbXBpbGF0aW9uIG9mIEZyZWVUeXBlIDIgYXMgcGFydCBvZiBsYXJnZXIgcHJvamVjdHMKCXdpdGggdGhlaXIgb3duIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyAob25seSB3aXRoIEphbSkuCgoyMDAzLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdHN0cm9rZXIuYzogUHJvYmFibHkgdGhlIGxhc3QgYnVnLWZpeGVzIHRvIHRoZSBzdHJva2VyOwoJdGhlIEFQSSBpcyBsaWtlbHkgdG8gY2hhbmdlLCBob3dldmVyLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfQW5nbGVfRGlmZik6IEZpeGluZyBmdW5jdGlvbjogSXQgcmV0dXJuZWQKCWludmFsaWQgdmFsdWVzIGZvciBsYXJnZSBuZWdhdGl2ZSBhbmdsZSBkaWZmZXJlbmNlcyAocmVzdWx0aW5nIGluCglpbmNvcnJlY3Qgc3Ryb2tlciBjb21wdXRhdGlvbnMsIGFtb25nIG90aGVyIHRoaW5ncykuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfdW5saW5rKTogUmVtb3ZpbmcgaW5jb3JyZWN0Cglhc3NlcnRpb24sIGFuZCBjaGFuZ2luZyBjb2RlIHRvIGF2b2lkIGhhc2ggdGFibGUgc2l6ZSBjb250cmFjdGlvbi4KCgkqIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rLCBzcmMvYmFzZS9kZXNjcmlwLm1tczogQWRkaW5nCgkiZnRzdHJva2VyLm9iaiIgdG8gZGVmYXVsdCBidWlsZCwgYXMgb3B0aW9uYWwgY29tcG9uZW50LgoKMjAwMi0xMi0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2d6aXAvYWRsZXIzMi5jLCBzcmMvZ3ppcC9pbmZibG9jay5jLCBzcmMvZ3ppcC9pbmZsYXRlLmMsCglzcmMvZ3ppcC9pbmZ0cmVlcy5jLCBzcmMvZ3ppcC96Y29uZi5oLCBzcmMvZ3ppcC96bGliLmgsCglzcmMvZ3ppcC96dXRpbC5oOiBVcGRhdGVzIHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGhvdXQgY29tcGlsZXIKCXdhcm5pbmdzIHdpdGggTENDLVdpbjMyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBkb2NzL1ZFUlNJT04uRExMLAoJYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZXMgZm9yIHRoZQoJdXBjb21pbmcgMi4xLjQgcmVsZWFzZS4KCjIwMDItMTItMjMgIEFudGhvbnkgRm9rICA8YW50aG9ueUB0aGl6bGludXguY29tPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBidWlsZHMvdW5peC91bml4LWNjLmluLAoJYnVpbGRzL3VuaXgvdW5peC1kZWYuaW46IFNtYWxsIGZpeCB0byBjb25maWd1cmUgc3ViLXN5c3RlbSBvbiBVbml4Cgl0byBhbGxvdyBvdGhlciBwcm9ncmFtcyB0byBjb3JyZWN0bHkgbGluayB3aXRoIHpsaWIgd2hlbiBuZWVkZWQuCgoyMDAyLTEyLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZmluZF91bmljb2RlX2NoYXJtYXApOiBBZGRlZCBzb21lIGNvbW1lbnRzIHRvCgliZXR0ZXIgZXhwbGFpbiB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKG9wZW5fZmFjZSk6IEluY2x1ZGVkIEdyYWhhbSBBc2hlcidzIGZpeCB0bwoJcHJldmVudCBmYWNlcyB3aXRob3V0IFVuaWNvZGUgY2hhcm1hcHMgZnJvbSBsb2FkaW5nLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBJbmNsdWRlZCBHZW9yZ2UgV2lsbGlhbXMncyBmaXggdG8gc3VwcG9ydAoJdmVyc2lvbiAyIGZvbnRzIGNvcnJlY3RseS4KCjIwMDItMTItMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IFVwZGF0aW5nIGRvY3VtZW50IHRvIGJldHRlciBleHBsYWluIHRoZQoJZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdGhyZWUgdmVyc2lvbiBudW1iZXJzIGJlaW5nIHVzZWQgb24gVW5peCwgYXMKCXdlbGwgYXMgcHJvdmlkaW5nIGFuIGF1dG9jb25mIGZyYWdtZW50IHByb3ZpZGVkIGJ5IExhcnMgQ2xhdXNlbi4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9jb25pYyk6IEZpeGVkIHNtYWxsIGJ1ZyB0aGF0CglwcmV2ZW50ZWQgYmV6aWVyIGFyY3Mgd2l0aCBuZWdhdGl2ZSB2ZXJ0aWNhbCBjb29yZGluYXRlcyB0byBiZQoJcmVuZGVyZWQgYXBwcm9wcmlhdGVseS4KCjIwMDItMTItMDIgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9ianMuYzogTW9kaWZpZWQgdGhlIGxvZ2ljIHRvIGdldCBVbmljb2RlIGNoYXJtYXBzLgoJTm93IGl0IGxvYWRzIFVDUy00IGNoYXJtYXBzIHdoZW4gdGhlcmUgaXMgb25lLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZmluZF91bmljb2RlX2NoYXJtYXApOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBSZWZlciB0byB0aGUgYWJvdmUgb25lLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2VsZWN0X0NoYXJtYXApOiBJZGVtLgoKMjAwMi0xMS0yOSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmg6IENvcnJlY3QgdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nCgltYWNybyAod2FzIF9fRlRYRjg2X0hfXyAuLi4pLgoKMjAwMi0xMS0yNyAgVmluY2VudCBDYXJvbiA8di5jYXJvbkB6ZXJvZGV1eC5uZXQ+CgoJKiBidWlsZHMvdW5peC91bml4LWRlZi5pbiwgYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluLAoJYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjLCBzcmMvZ3ppcC9ydWxlcy5taywgc3JjL2d6aXAvZnRnemlwLmM6CglBZGRpbmcgc3VwcG9ydCBmb3Igc3lzdGVtIHpsaWIgaW5zdGFsbGF0aW9ucyBpZiBhdmFpbGFibGUgb24gdGhlCgl0YXJnZXQgcGxhdGZvcm0gKFVuaXggb25seSkuCgoyMDAyLTExLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2NoYXJzZXJfbG9hZCk6IE1vZGlmaWVkIGNoYXJzZXQgbG9hZGVyIHRvCglhY2NlcHQgcHJlLWRlZmluZWQgY2hhcnNldHMsIGV2ZW4gd2hlbiB0aGUgZm9udCBjb250YWlucyBmZXdlcgoJZ2x5cGhzLiAgQWxzbyBlbmZvcmNlZCBtb3JlIGNoZWNrcyB0byBlbnN1cmUgdGhhdCB3ZSBuZXZlciBvdmVyZmxvdwoJdGhlIGNoYXJhY3RlciBjb2RlcyBhcnJheSBpbiB0aGUgZW5jb2RpbmcuCgoyMDAyLTExLTE4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMyBpcyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTExLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjc2JpdC5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0CgljYXVzZWQgcHJvYmxlbXMgd2l0aCBlbWJlZGRlZCBiaXRtYXBzLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGx5YW91dC9vdGxjb25mLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bHBhcnNlLmMsIHNyYy9vdGxheW91dC9vdGxwYXJzZS5oLAoJc3JjL290bGF5b3V0L290bHV0aWxzLmg6IFVwZGF0aW5nIHRoZSBPcGVuVHlwZSBMYXlvdXQgY29kZSwgYWRkaW5nCglzdXBwb3J0IGZvdCB0aGUgZmlyc3QgR1NVQiBsb29rdXBzLiAgTm90aGluZyB0aGF0IHJlYWxseSBjb21waWxlcwoJZm9yIG5vdyB0aG91Z2guCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmM6IERpc2FibGVkIHNlcmlmIHN0ZW0gd2lkdGggcXVhbnRpemF0aW9uLiAgSXQKCXByb2R1Y2VzIHNsaWdodGx5IGJldHRlciBzaGFwZXMgdGhvdWdoIHRoaXMgaXMgbm90IGRpc3Rpbmd1aXNoYWJsZQoJd2l0aCBtYW55IGZvbnRzLgoKMjAwMi0xMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwgc3JjL2d6aXAvZnRnemlwLmM6IEFkZGVkCglzdXBwb3J0IGZvciB0aGUgRlRfQ09ORklHX09QVElPTl9TWVNURU1fWkxJQiBvcHRpb24sIHVzZWQgdG8gc3BlY2lmeQoJdGhlIHVzZSBvZiBzeXN0ZW0td2lkZSB6bGliLgoKCU5vdGUgdGhhdCB0aGlzIG1hY3JvLCBhcyB3ZWxsIGFzCglGVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSLCBpcyBub3QgI3VuZGVmLWVkIGFueW1vcmUuCglUaGlzIGFsbG93cyB0aGUgYnVpbGQgc3lzdGVtIHRvIGRlZmluZSB0aGVtIGRlcGVuZGluZyBvbiB0aGUKCWNvbmZpZ3VyYXRpb24gKHR5cGljYWxseSBieSBhZGRpbmcgLUQgZmxhZ3MgYXQgY29tcGlsZSB0aW1lKS4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfZmFjZV9idWlsZF9jbWFwcyk6IFJlbW92ZWQgY29tcGlsZXIKCXdhcm5pbmdzIGluIG9wdGltaXplZCBtb2RlIHJlbGF0aXZlIHRvIHRoZSAidm9sYXRpbGUiIGxvY2FsCgl2YXJpYWJsZXMuICBUaGlzIHdhcyBub3QgYSBjb21waWxlciBidWcgYWZ0ZXIgYWxsLCBidXQgdGhlIGZhY3QgdGhhdAoJYSBwb2ludGVyIHRvIGEgdm9sYXRpbGUgdmFyaWFibGUgaXMgbm90IHRoZSBzYW1lIHRoYW4gYSB2b2xhdGlsZQoJcG9pbnRlciB0byBhIHZhcmlhYmxlIDotKQoKCVRoZSBmaXggd2FzIHRvIGNoYW5nZQoJICBgdm9sYXRpbGUgRlRfQnl0ZSogcCcKCWludG8KCSAgYEZUX0J5dGUqIHZvbGF0aWxlIHAnLgoKCSogc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL2d6aXAvaW5mdHJlZXMuYzoKCVJlbW92ZWQgY29tcGlsZXIgd2FybmluZ3MgaW4gb3B0aW1pemVkIG1vZGVzLgoKCSogc3JjL2d6aXAvKi5baGNdOiBNb2RpZmllZCBvdXIgemxpYiBjb3B5IGluIG9yZGVyIHRvIHByZXZlbnQKCWV4cG9ydGluZyBhbnkgemxpYiBmdW5jdGlvbiBuYW1lcyBvdXRzaWRlIG9mIHRoZSBjb21wb25lbnQuICBUaGlzCglwcmV2ZW50cyBsaW5raW5nIHByb2JsZW1zIG9uIHNvbWUgcGxhdGZvcm1zLCB3aGVuIGFwcGxpY2F0aW9ucyB3YW50Cgl0byBsaW5rIEZyZWVUeXBlIF9hbmRfIHpsaWIgdG9nZXRoZXIuCgoyMDAyLTExLTA1ICBKdWxpdXN6ICA8amNoQHBwcy5qdXNzaWV1LmZyPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChwc190YWJsZV9hZGQpOiBNb2RpZmllZCBpbmNyZW1lbnQgbG9vcCBpbgoJb3JkZXIgdG8gaW1wbGVtZW50IGV4cG9uZW50aWFsIGJlaGF2aW91ci4KCjIwMDItMTAtMzEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRnemlwLmgsIHNyYy9nemlwL2Z0Z3ppcC5jOiBBZGRpbmcgc3VwcG9ydCBmb3IKCWd6aXAgY29tcHJlc3NlZCBzdHJlYW1zLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYzogQWRkaW5nIGF1dG9tYXRpYyBzdXBwb3J0IGZvciBnemlwLWNvbXByZXNzZWQKCVBDRiBmaWxlcy4KCjIwMDItMTAtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEZyZWVUeXBlIDIuMS4zcmMzIHJlbGVhc2VkCgoyMDAyLTEwLTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRfUE9JTlRFUl9UT19VTE9ORyk6IE5ldyBtYWNyby4KCShGVENfRkFDRV9JRF9IQVNIKTogUmV3cml0dGVuLCB1c2luZyBGVF9QT0lOVEVSX1RPX1VMT05HLgoKMjAwMi0xMC0yMiAgR2l1c2VwcGUgR2hpYvIgPGdoaWJvQG1hbmRyYWtlc29mdC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VuY29kaW5nKTogRml4IGVudHJ5IGZvciBsYXRpbi0yLgoKMjAwMi0xMC0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9PcGVuX0ZhY2UpOiBVc2UgYGNvbnN0JyBmb3IgYGFyZ3MnCgkoc3VnZ2VzdGVkIGJ5IEdyYWhhbSkuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBVcGRhdGVkLgoJKGZ0X2lucHV0X3N0cmVhbV9uZXcpOiBEaXR0by4KCjIwMDItMTAtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgc3VwcG9ydCBmb3IgZW1iZWRkZWQgYml0bWFwcyB0byB0aGUgUEZSIGRyaXZlciwgYW5kIHJld3JpdGluZwoJaXRzIGtlcm5pbmcgbG9hZGVyL2hhbmRsZXIgdG8gdXNlIGFsbCBrZXJuaW5nIHBhaXJzIGluIGEgcGh5c2ljYWwKCWZvbnQgKGFuZCBub3QganVzdCB0aGUgZmlyc3QgaXRlbSkuCgoJKiBzcmMvcGZyL3Bmci5jOiBJbmNsdWRlIGBwZnJzYml0LmMnLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgYHBmcnNiaXQuaCcuCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbV9sb2FkX2tlcm5pbmdfcGFpcnMpOiBSZXdyaXR0ZW4uCgkocGZyX3BoeV9mb250X2RvbmUsIHBmcl9waHlfZm9udF9sb2FkKTogVXBkYXRlZC4KCSogc3JjL3Bmci9wZnJvYmtzLmM6IEluY2x1ZGUgYHBmcnNiaXQuaCcuCgkocGZyX2ZhY2VfaW5pdCk6IEhhbmRsZSBrZXJuaW5nIGFuZCBlbWJlZGRlZCBiaXRtYXBzLgoJKHBmcl9zbG90X2xvYWQpOiBMb2FkIGVtYmVkZGVkIGJpdG1hcHMuCgkoUEZSX0tFUk5fSU5ERVgpOiBSZW1vdmVkLgoJKHBmcl9mYWNlX2dldF9rZXJuaW5nKTogUmV3cml0dGVuLgoJKiBzcmMvcGZyL3BmcnNiaXQuYywgc3JjL3Bmci9wZnJzYml0Lmg6IE5ldyBmaWxlcy4KCSogc3JjL3Bmci9wZnJ0eXBlcy5oIChQRlJfS2Vybkl0ZW1SZWMpOiBOZXcgc3RydWN0dXJlLgoJKFBGUl9LRVJOX0lOREVYKTogTmV3IG1hY3JvLgoJKFBGUl9QaHlGb250UmVjKTogQWRkIGl0ZW1zIGZvciBrZXJuaW5nIGFuZCBlbWJlZGRlZCBiaXRtYXBzLgoJKiBzcmMvcGZyL0phbWZpbGUgKF9zb3VyY2VzKSBbRlQyX01VTFRJXTogQWRkIGBwZnJzYml0Jy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogRG9uJ3QgbG9hZCBiaXRtYXAgZm9udHMgaWYKCUZUX0xPQURfTk9fUkVDVVJTRSBpcyBzZXQuCglMb2FkIGVtYmVkZGVkIGJpdG1hcHMgb25seSBpZiBGVF9MT0FEX05PX0JJVE1BUCBpc24ndCBzZXQuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvY29udGVudC5weSwgc3JjL3Rvb2xzL2RvY21ha2VyL3NvdXJjZXMucHksCglzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5OiBGaXhpbmcgYSBmZXcgbmFzdHkgYnVncy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfdmFsaWRhdGUpOiBUaGUgdmFsaWRhdG9yIGZvciBmb3JtYXQgNAoJc3ViLXRhYmxlcyBpcyBub3cgY2FwYWJsZSBvZiBkZWFsaW5nIHdpdGggaW52YWxpZCAibGVuZ3RoIiBmaWVsZHMgYXQKCXRoZSBzdGFydCBvZiB0aGUgc3ViLXRhYmxlLiAgVGhpcyBhbGxvd3MgZm9udHMgbGlrZSAibWdfX19fX18udHRmIgoJKGkuZS4gIE1hcnJpYWdlKSB0byByZXR1cm4gYWNjdXJhdGUgY2hhcm1hcHMuCgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAyLTEwLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoU1VCUElYRUxTKTogQWRkIGNhc3QgdG8gYFRQb3MnLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKFRSVU5DKTogQWRkIGNhc3QgdG8gYFRDb29yZCcuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoVFJhc3Rlcik6IFVzZSBgVFBvcycgZm9yIG1pbl9leCwgbWF4X2V4LCBtaW5fZXksIG1heF9leSwgYW5kCglsYXN0X2V5LgoJVXBkYXRlIGFsbCBjYXN0cy4KCShncmF5X3JlbmRlcl9saW5lKTogRml4IGNhc3RzIGZvciBgcCcgYW5kIGBmaXJzdCcuCgoyMDAyLTEwLTAyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoYmRmX2xvYWRfZm9udCk6IEFsbG9jYXRlIHRoZSBfYmRmX3BhcnNlX3QKCXN0cnVjdHVyZSB3aXRoIEZUX0FMTE9DIGluc3RlYWQgb2YgdXNpbmcgdGhlIHN0YWNrLgoKMjAwMi0wOS0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChudW1fc2JpdF9zdHJpa2VzLAoJbnVtX3NiaXRfc2NhbGVzKTogVXNlIGBGVF9VTG9uZycuCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IFVwZGF0ZWQgYWNjb3JkaW5nbHkuCgkqIHNyYy9zZm50L3R0c2JpdC5jICh0dF9mYWNlX3NldF9zYml0X3N0cmlrZSk6IERpdHRvLgoJKGZpbmRfc2JpdF9pbWFnZSk6IFJlbW92ZSBjYXN0LgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBGaXggY2FzdC4KCjIwMDItMDktMjcgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX25hbWVzKTogVXNlIGNhc3QuCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX25leHQyKTogVXNlIGxvbmcgY29uc3RhbnQuCgkoY29kZV90b19pbmRleDQpOiBVc2UgY2FzdC4KCShjb2RlX3RvX2luZGV4OF8xMik6IEZpeCBjYXN0LgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X2NoYXJfbmV4dCwgdHRfY21hcDhfY2hhcl9pbmRleCwKCXR0X2NtYXAxMl9jaGFyX2luZGV4KTogVXNlIGNhc3QgZm9yIGByZXN1bHQnLgoJKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBVc2UgY2FzdC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV91Y3M0KTogVXNlIGNhc3QgZm9yCglgY29kZScuCgkoc2ZudF9sb2FkX2ZhY2UpOiBVc2UgRlRfSW50MzIgZm9yIGBmbGFncycuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUsIGdyYXlfcmVuZGVyX2xpbmUsCglncmF5X2NvbXB1dGVfY2JveCwgZ3JheV9jb252ZXJ0X2dseXBoLCBncmF5X3Jhc3Rlcl9yZXNldCk6IEFkZCBjYXN0cwoJdG8gYFRDb29yZCcgYW5kIGBpbnQnLgoJTW9yZSAxNmJpdCBmaXhlcy4KCXMvRlRfUG9zL1RQb3MvLgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IEFkZCBjYXN0cy4KCjIwMDItMDktMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0cG9zdC5jIChsb2FkX3Bvc3RfbmFtZXMsIHR0X2ZhY2VfZnJlZV9wc19uYW1lcywKCXR0X2ZhY2VfZ2V0X3BzX25hbWUpOiBSZXBsYWNlIHN3aXRjaCBzdGF0ZW1lbnQgd2l0aCBpZiBjbGF1c2VzIHRvCgltYWtlIGl0IG1vcmUgcG9ydGFibGUuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoY2ZmX2ZhY2VfaW5pdCk6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZHVsZS5oIChGVF9Nb2R1bGVfQ2xhc3MpOiBVc2UgYEZUX0xvbmcnIGZvcgoJYG1vZHVsZV9zaXplJy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oIChGVF9HbHlwaF9DbGFzc18pOiBVc2UgYEZUX0xvbmcnIGZvcgoJYGdseXBoX3NpemUnLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlbmRlcl9HbHlwaCk6IENoYW5nZSBzZWNvbmQgcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoJKEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IENoYW5nZSB0aGlyZCBwYXJhbWV0ZXIgdG8KCWBGVF9SZW5kZXJfTW9kZScuCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQ2hhbmdlIHNlY29uZCBwYXJhbWV0ZXIKCXRvIGBGVF9SZW5kZXJfTW9kZScuCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBDaGFuZ2UgdGhpcmQgcGFyYW1ldGVyCgl0byBgRlRfUmVuZGVyX01vZGUnLgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIsIGZ0X3Ntb290aF9yZW5kZXJfbGNkLAoJZnRfc21vb3RoX3JlbmRlcl9sY2Rfdik6IERpdHRvLgoJKGZ0X3Ntb290aF9yZW5kZXJfZ2VuZXJpYyk6IENoYW5nZSB0aGlyZCBhbmQgZmlmdGggcGFyYW1ldGVyIHRvCglgRlRfUmVuZGVyX01vZGUnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdGdseXBoLmg6IFVwZGF0ZWQuCgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKExvYWRfR2x5cGgpLCBzcmMvcGNmL3BjZmRyaXZlci5jCgkoUENGX0dseXBoX0xvYWQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCksCglzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9Mb2FkX0dseXBoKSwgc3JjL3Q0Mi90NDJvYmpzLmMKCShUNDJfR2x5cGhTbG90X0xvYWQpLCBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogQ2hhbmdlCglmb3VydGggcGFyYW1ldGVyIHRvIGBGVF9JbnQzMicuCgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IEFkZCB0d28gbWlzc2luZyBwYXJhbWV0ZXJzCglhbmQgZGVjbGFyZSB0aGVtIGFzIHVudXNlZC4KCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoQ0lEX1BhcnNlcik6IFVzZSBGVF9Mb25nIGZvciBgcG9zdHNjcmlwdF9sZW4nLgoKCSogc3JjL3BzbmFtZXMvcHNuYW1lcy5oIChQU19Vbmljb2RlX1ZhbHVlX0Z1bmMpOiBDaGFuZ2UgcmV0dXJuCgl2YWx1ZSB0byBGVF9VSW50MzIuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKHBzX3VuaWNvZGVfdmFsdWUsIHBzX2J1aWxkX3VuaWNvZGVfdGFibGUpOgoJVXBkYXRlZCBhY2NvcmRpbmdseS4KCjIwMDItMDktMjYgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKEdldF9LZXJuaW5nKTogVXNlIEZUX0xvbmcgZm9yIGBtaWRkbGUnLgoJKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IFVzZSBjYXN0IGZvciByZXN1bHQgb2YgZnRfc3RybGVuLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9yZWFsKTogVXNlciBjYXN0IGZvciBhc3NpZ25pbmcKCWBleHAnLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2luZGV4X2dldF9wb2ludGVycyk6IFVzZSBGVF9VTG9uZyBmb3IKCXNvbWUgbG9jYWwgdmFyaWFibGVzLgoJKGNmZl9jaGFyc2V0X2xvYWQsIGNmZl9lbmNvZGluZ19sb2FkKTogVXNlIGNhc3RzIHRvIEZUX1VJbnQgZm9yIHNvbWUKCXN3aXRjaCBzdGF0ZW1lbnRzLgoJKGNmZl9mb250X2xvYWQpOiBVc2UgY2FzdCBpbiBjYWxsIHRvIENGRl9Mb2FkX0ZEX1NlbGVjdC4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9zaXplX2luaXQpOiBVc2UgbW9yZSBjYXN0cy4KCShjZmZfZmFjZV9pbml0KTogVXNlIEZUX0ludDMyIGZvciBgZmxhZ3MnLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9vcGVyYXRvcl9zZWFjKTogVXNlIGNhc3QgZm9yIGFzc2lnbmluZwoJYGFkeCcgYW5kIGBhZHknLgoJKGNmZl9kZWNvZGVyX3BhcnNlX2NoYXJzdHJpbmdzKTogVXNlIEZUX1VMb25nIGZvciB0aGlyZCBwYXJhbWV0ZXIuCglVc2UgbW9yZSBjYXN0cy4KCSogc3JjL2NmZi9jZmZjbWFwLmMgKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCk6IFVzZSBjYXN0IGZvciBgY291bnQnLgoKCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9yZWFkX3N1YnJzKTogVXNlIEZUX1VMb25nIGZvciBgbGVuJy4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCk6IEFkZCBtaXNzaW5nIGNhc3QgZm9yCglgY2lkX2dldF9vZmZzZXQnLgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKHQxX2RlY29kZXJfcGFyc2VfY2hhcnN0cmluZ3MpIDwxOD46IFVzZQoJY2FzdCBmb3IgYG51bV9wb2ludHMnLgoJKHQxX2RlY29kZXJfaW5pdCk6IFVzZSBjYXN0IGZvciBhc3NpZ25pbmcgYGRlY29kZXItPm51bV9nbHlwaHMnLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jIChmdF9kZWJ1Z19pbml0KTogVXNlIEZUX0ludC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIChGVF9TbG90X0xvYWRGdW5jKTogVXNlCglgRlRfSW50MzInIGZvciBmb3VydGggcGFyYW1ldGVyLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAob3Blbl9mYWNlKTogVXNlIGNhc3QgZm9yIGNhbGxpbmcKCWNsYXp6LT5pbml0X2ZhY2UuCgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKFNldF9IaWdoX1ByZWNpc2lvbik6IFVzZSBgMScgaW5zdGVhZCBvZgoJYDFMJy4KCShGaW5hbGl6ZV9Qcm9maWxlX1RhYmxlLCBMaW5lX1VwLCBmdF9ibGFja19pbml0KTogVXNlIGNhc3RzLgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBEaXR0by4KCgkqIHNyYy9zZm50L3NmbnRfZGlyX2NoZWNrOiBDb21wYXJlIGBtYWdpYycgd2l0aCB1bnNpZ25lZCBsb25nCgljb25zdGFudC4KCjIwMDItMDktMjYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogVXBkYXRlZC4KCjIwMDItMDktMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hJTlRfTUVUUklDUyk6IERpc2FibGluZyBtZXRyaWNzCgloaW50aW5nIGluIHRoZSBhdXRvLWhpbnRlci4gIFRoaXMgcHJvZHVjZXMgbXVjaCBiZXR0ZXIgYW50aS1hbGlhc2VkCgl0ZXh0LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyB0aGUgY2hhbmdlcyBkb2N1bWVudGF0aW9uLgoKMjAwMi0wOS0yNSAgQW50aG9ueSBGb2sgIDxhbnRob255QHRoaXpsaW51eC5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKHR0X2NtYXA0X3ZhbGlkYXRlLCB0dF9jbWFwNF9jaGFyX2luZGV4LAoJdHRfY21hcDRfY2hhcl9uZXh0KTogQWRkZWQgc3VwcG9ydCBmb3Igb3BlbnNfX18udHRmIChpdCBjb250YWlucyBhCgljaGFybWFwIHRoYXQgdXNlcyBvZmZzZXQ9MHhGRkZGVSBpbnN0ZWFkIG9mIDB4MDAwMCB0byBpbmRpY2F0ZSBhCgltaXNzaW5nIGdseXBoKS4KCjIwMDItMDktMjEgIFdvbGZnYW5nIERvbXL2c2UgIDxwb3J0aG9zLmRvbXJvZXNlQGhhcnouZGU+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoTG9hZF9HbHlwaCk6IEZvdXJ0aCBwYXJhbWV0ZXIgbXVzdCBiZQoJRlRfSW50MzIuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmggKFRUX0xvYWRfR2x5cGgpOgoJRGl0dG8uCgoyMDAyLTA5LTE5ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCU1vcmUgMTZiaXQgZml4ZXMuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBVc2UgRlRfUG9zIGZvciBgc3dhcCcuCgkoYWhfaGludGVyX2NvbXB1dGVfd2lkdGhzKTogVXNlIEZUX1BvcyBmb3IgYGRpc3QnLgoJVXNlIEFIX01BWF9XSURUSFMuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfc2NhbGVfYmx1ZV9lZGdlcyk6IFVzZSBGVF9Qb3MKCWZvciBgZGVsdGEnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IFJlcGxhY2Ugc29tZSBpbnRzIHdpdGggRlRfSW50IGFuZAoJRlRfUG9zLgoJKGFoX3Rlc3RfZXh0cmVtYSk6IENsZWFuIHVwIGNvZGUuCgkoYWhfZ2V0X29yaWVudGF0aW9uKTogVXNlIDQgRlRfSW50IHZhcmlhYmxlcyBpbnN0ZWFkIG9mIEZUX0JCb3ggdG8KCWhvbGQgaW5kaWNlcy4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfU2VnbWVudFJlYyk6IENoYW5nZSB0eXBlIG9mIGBzY29yZScKCXRvIEZUX1Bvcy4KCjIwMDItMDktMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJcmVjZW50IHZlcnNpb25zLgoKMjAwMi0wOS0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xpYnJhcnlfVmVyc2lvbik6IEJ1Z2ZpeC4KCgkqIEZyZWVUeXBlIDIuMS4zcmMyIChyZWxlYXNlIGNhbmRpZGF0ZSAyKSBpcyByZWxlYXNlZCEKCjIwMDItMDktMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2Z0c3Ryb2tlci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzaW8uaCwKCWluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaCwgaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBVcGRhdGluZwoJdGhlIGluLXNvdXJjZSBkb2N1bWVudGF0aW9uLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyL3RvaHRtbC5weTogVXBkYXRpbmcgdGhlIEhUTUwgZm9ybWF0dGVyIGluIHRoZQoJRG9jTWFrZXIgdG9vbC4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogUmVtb3ZlZC4KCjIwMDItMDktMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNb3JlIDE2Yml0IGZpeGVzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChyZWFsbG9jYXRlX3QxX3RhYmxlKTogVXNlIEZUX0xvbmcgZm9yCglzZWNvbmQgcGFyYW1ldGVyLgoKMjAwMi0wOS0xNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCTE2Yml0IGZpeGVzIGZyb20gV29sZmdhbmcgRG9tcvZzZS4KCgkqIHNyYy90eXBlMS90MXBhcnNlLmggKFQxX1BhcnNlclJlYyk6IENoYW5nZSB0eXBlIG9mIGBiYXNlX2xlbicKCWFuZCBgcHJpdmF0ZV9sZW4nIHRvIEZUX0xvbmcuCgkqIHNyYy90eXBlMS90MXBhcnNlLmMgKFQxX0dldF9Qcml2YXRlX0RpY3QpOiBSZW1vdmUgY2FzdCBmb3IKCWBwcml2YXRlX2xlbicuCgkqIHNyYy90eXBlMS90MWxvYWQuYzogVXNlIEZUX0ludCBjYXN0IGZvciBtb3N0IGNhbGxzIG9mIFQxX1RvSW50LgoJVXNlIEZUX1B0ckRpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuCgkocGFyc2VfZW5jb2RpbmcpOiBVc2UgRlRfTG9uZyBmb3IgYGNvdW50JyBhbmQgYG4nLgoJKHJlYWRfYmluYXJ5X2RhdGEpOiBVc2UgRlRfTG9uZyogZm9yIHNlY29uZCBwYXJhbWV0ZXIuCgkqIHNyYy90eXBlMS90MWFmbS5jIChhZm1fYXRvaW5kZXgpOiBVc2UgRlRfUHRyRGlzdC4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBSZW1vdmUgdW51c2VkIGxhYmVsLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCjIwMDItMDktMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtpbmcgZnRncmF5cy5jIGNvbXBpbGUgc3RhbmQtYWxvbmUgYWdhaW4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogSW5jbHVkZSBmdDJidWlsZC5oIG9ubHkgaWYgX1NUQU5EQUxPTkVfCglpc24ndCBkZWZpbmVkLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyBbX1NUQU5EQUxPTkVfXTogRGVmaW5lIGZ0X21lbXNldCwKCUZUX0JFR0lOX0hFQURFUiwgRlRfRU5EX0hFQURFUi4KCShGVF9NRU1fWkVSTyk6IERlZmluZS4KCShUUmFzdGVyKSBbR1JBWVNfVVNFX0dBTU1BXTogVXNlIGB1bnNpZ25lZCBjaGFyJyBpbnN0ZWFkIG9mIEZUX0J5dGUuCgkoZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9pbml0X2dhbW1hKTogRG9uJ3QgdXNlIGBGVF9VSW50Jy4KCURvbid0IGNhc3Qgd2l0aCBgRlRfQnl0ZScuCgkoZ3JheXNfaW5pdF9nYW1tYSk6IERvbid0IHVzZSBgRlRfVUludCcuCgoyMDAyLTA5LTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGluaXQuYyAoRlRfQWRkX0RlZmF1bHRfTW9kdWxlcyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0ZhY2VfRG9uZSk6IEltcHJvdmUgdHJhY2luZyBtZXNzYWdlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9NQVhfTU9EVUxFUyk6IEluY3JlYXNlZAoJdG8gMzIuCgoyMDAyLTA5LTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWMgKHZlcnNpb25faW5mbyk6IFNldCB0byA5OjI6My4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCjIwMDItMDktMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyksCglzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMpOiBBZGRpbmcgZml4Cgl0byBwcmV2ZW50IHNlZyBmYXVsdCB3aGVuIGhpbnRzIGFyZSBwcm92aWRlZCBpbiBhbiBlbXB0eSBnbHlwaC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pIChHRU5fQ0FDSEVfTE9PS1VQKSBbRlRfREVCVUdfTEVWRUxfRVJST1JdOgoJUmVtb3ZlZCBjb25kaXRpb25hbCBjb2RlLiAgVGhpcyBmaXhlcyBhIGJ1ZyB0aGF0IHByZXZlbnRlZAoJY29tcGlsYXRpb24gaW4gZGVidWcgbW9kZSBvZiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IFJlbW92ZWQgaW5jb3JyZWN0ICJ6ZnRfIiBkZWZpbml0aW9ucwoJYW5kIHVwZGF0ZWQgY29uc3RhbnRzIGRvY3VtZW50YXRpb24gY29tbWVudHMuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZXJfcnVuKTogRml4ZWQgdGhlIENGRiB0YWJsZSBsb2FkZXIuCglJdCBkaWRuJ3QgYWNjZXB0IGVtcHR5IGFycmF5cywgYW5kIHRoaXMgcHJldmVudGVkIHRoZSBsb2FkaW5nIG9mCgljZXJ0YWluIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9GYWNlUmVjKTogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbgoJY29tbWVudC4gIFRoZSAiZGVzY2VuZGVyIiB2YWx1ZSBpcyBhbHdheXMgKm5lZ2F0aXZlKiwgbm90IHBvc2l0aXZlLgoKMjAwMi0wOS0wOSAgT3dlbiBUYXlsb3IgIDxvd2VuQHJlZGhhdC5jb20+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2x5cGhfTG9hZCk6IEZpeGluZyBpbmNvcnJlY3QgY29tcHV0YXRpb24KCW9mIGJpdG1hcCBtZXRyaWNzLgoKMjAwMi0wOS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVZhcmlvdXMgdXBkYXRlcyB0byBjb3JyZWN0bHkgc3VwcG9ydCBzdWItcGl4ZWwgcmVuZGVyaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaDogQWRkIHR3byByZW5kZXJlcnMgZm9yIExDRC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCgkqIHNyYy9zbW9vdGgvZnRzbW9vdGguYyAoZnRfc21vb3RoX3JlbmRlcl9sY2QsCglmdF9zbW9vdGhfcmVuZGVyX2xjZF92KTogU2V0IEZUX1BJWEVMX01PREVfTENEIGFuZAoJRlRfUElYRUxfTU9ERV9MQ0RfViwgcmVzcGVjdGl2ZWx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNpbWFnZS5oIChGVENfSW1hZ2VUeXBlUmVjKTogTmV3CglzdHJ1Y3R1cmUuCglVcGRhdGVkIGFsbCB1c2Vycy4KCShGVENfSW1hZ2VEZXNjKTogUmVtb3ZlZC4KCShGVENfSW1hZ2VDYWNoZV9Mb29rdXApOiBTZWNvbmQgcGFyYW1ldGVyIGlzIG5vdyBvZiB0eXBlCglgRlRDX0ltYWdlVHlwZScuCglVcGRhdGVkIGFsbCB1c2Vycy4KCShGVENfSU1BR0VfREVTQ19DT01QQVJFKTogVXBkYXRlZCBhbmQgcmVuYW1lZCB0by4uLgoJKEZUQ19JTUFHRV9UWVBFX0NPTVBBUkUpOiBUaGlzLgoJKEZUQ19JTUFHRV9ERVNDX0hBU0gpOiBVcGRhdGVkIGFuZCByZW5hbWVkIHRvLi4uCgkoRlRDX0lNQUdFX1RZUEVfSEFTSCk6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y3NiaXRzLmggKEZUQ19TQml0UmVjKTogRmllbGQgYG51bV9ncmF5cycKCXJlcGxhY2VkIHdpdGggYG1heF9ncmF5cycuCglgcGl0Y2gnIGlzIG5vdyBGVF9TaG9ydC4KCShGVENfU0JpdENhY2hlX0xvb2t1cCk6IFNlY29uZCBwYXJhbWV0ZXIgaXMgbm93IG9mIHR5cGUKCWBGVENfSW1hZ2VUeXBlJy4KCVVwZGF0ZWQgYWxsIHVzZXJzLgoKCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKEZUQ19JbWFnZVF1ZXJ5UmVjLCBGVENfSW1hZ2VGYW1pbHlSZWMpOgoJVXBkYXRlZC4KCShmdGNfaW1hZ2Vfbm9kZV9pbml0KTogVXBkYXRlZC4KCU1vdmVkIGNvZGUgdG8gY29udmVydCB0eXBlIGZsYWdzIHRvIGxvYWQgZmxhZ3MgdG8uLi4KCShGVENfSW1hZ2VfQ2FjaGVfTG9va3VwKTogVGhpcyBmdW5jdGlvbi4KCShmdGNfaW1hZ2VfZmFtaWx5X2luaXQpOiBVcGRhdGVkLgoKCSogc3JjL2NhY2hlL2Z0Y3NiaXQuYyAoRlRDX1NCaXRRdWVyeVJlYywgRlRDX1NCaXRGYW1pbHlSZWMpOgoJVXBkYXRlZC4KCShmdGNfc2JpdF9ub2RlX2xvYWQpOiBVcGRhdGVkLgoJTW92ZWQgY29kZSB0byBjb252ZXJ0IHR5cGUgZmxhZ3MgdG8gbG9hZCBmbGFncyB0by4uLgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogVGhpcyBmdW5jdGlvbi4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlclJlYyk6IFJlcGxhY2UgYG5vXypfaGludHMnIHdpdGgKCWBkb18qX3NuYXBwaW5nJy4KCVVwZGF0ZSBhbGwgdXNlcnMgKHdpdGggbmVnYXRpb24pLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IEZpeCB0aHJlc2hvbGQgZm9yCglgZGlzdCcgZm9yIGBkZWx0YScgPCA0MC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oIChQU0gzX0dseXBoUmVjKTogUmVwbGFjZSBgbm9fKl9oaW50cycgd2l0aAoJYGRvXypfc25hcHBpbmcnLgoJVXBkYXRlIGFsbCB1c2VycyAod2l0aCBuZWdhdGlvbikuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIChwc2gzX2RpbWVuc2lvbl9xdWFudGl6ZV9sZW4pOiBOZXcKCWZ1bmN0aW9uLgoJKHBzaDNfaGludF9hbGlnbik6IFVzZSBpdC4KCUltcHJvdmUgaGludGluZyBjb2RlLgoJW1NUUk9OR0VSXTogUmVtb3ZlZC4KCShTVFJPTkdFUik6IFJlbW92ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX1NldF9IaW50X0ZsYWdzLCBGVF9ISU5UXyopOgoJUmVtb3ZlZC4KCjIwMDItMDktMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfU2l6ZV9Jbml0KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zaXplX2luaXQpOiBUaGlzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0J1aWxkZXJfQWRkX1BvaW50MSk6IFJlbmFtZWQgdG8uLi4KCSh0MV9idWlsZGVyX2FkZF9wb2ludDEpOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X2FsaWduKTogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Db21wdXRlX01heF9BZHZhbmNlKTogRGl0dG8uCgoyMDAyLTA5LTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IENvcnJlY3RlZCB0aGUgZGVmaW5pdGlvbiBvZgoJZnRfZW5jb2Rpbmdfc3ltYm9sIHRvIGJlIEZUX0VOQ09ESU5HX01TX1NZTUJPTCAoaW5zdGVhZCBvZgoJdGhlIGVycm9uZW91cyBGVF9FTkNPRElOR19TWU1CT0wpLgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKGRhdGFkaXIpOiBJbml0aWFsaXplIGl0ICh0aGFua3MgdG8KCUFudGhvbnkgRm9rKS4KCjIwMDItMDgtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTbGlnaHQgbW9kaWZpY2F0aW9uIHRvIHRoZSBQb3N0c2NyaXB0IGhpbnRlciB0byBzbGlnaHRseSBpbmNyZWFzZQoJdGhlIGNvbnRyYXN0IG9mIHNtb290aCBoaW50aW5nLiAgVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gd2hhdCB0aGUKCWF1dG8taGludGVyIGRvZXMgd2hlbiBpdCBjb21lcyB0byBzdGVtIHdpZHRoIGNvbXB1dGF0aW9ucy4gIEhvd2V2ZXIsCglpdCBwcm9kdWNlcyBiZXR0ZXIgcmVzdWx0cyB3aXRoIHdlbGwtaGludGVkIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oIChUMV9EZWNvZGVyX0Z1bmNzUmVjKTogQWRkIGhpbnQKCW1vZGUgdG8gYGluaXQnIG1lbWJlciBmdW5jdGlvbi4KCShUMV9EZWNvZGVyUmVjKTogQWRkIGhpbnQgbW9kZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzIChUMV9IaW50c19BcHBseUZ1bmMsCglUMl9IaW50c19BcHBseUZ1bmMpOiBQYXNzIGBoaW50X21vZGUnLCBub3QgYGhpbnRfZmxhZ3MnLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAodDFfZGVjb2Rlcl9pbml0KTogQWRkIGhpbnQgbW9kZSBhcmd1bWVudC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzMV9oaW50c19hcHBseSk6IFBhc3MgaGludCBtb2RlLCBub3QKCWhpbnQgZmxhZ3MuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwczJfaGludHNfYXBwbHkpOiBEaXR0by4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzM19oaW50c19hcHBseSk6IERpdHRvLgoJKFNUUk9OR0VSKTogTmV3IG1hY3JvLgoJKHBzaDNfaGludF9hbGlnbiwgcHNoM19oaW50X3RhYmxlX2FsaWduX2hpbnRzKTogUGFzcyBgZ2x5cGgnIGluc3RlYWQKCW9mIGBoaW50X2ZsYWdzJy4KCUltcGxlbWVudCBhbm5vdW5jZWQgY2hhbmdlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmggKFBTSDNfR2x5cGhSZWMpOiBBZGQgZmxhZ3MgdG8gY29udHJvbAoJdmVydGljYWwgYW5kIGhvcml6b250YWwgaGludHMgYW5kIHNuYXBwaW5nLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGZvciB0aGUgMi4xLjMgcmVsZWFzZS4KCjIwMDItMDgtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIE1hc3NpdmUgcmUtZm9ybWF0dGluZyBjaGFuZ2VzIHRvIG1hbnksIG1hbnkgc291cmNlIGZpbGVzLiAgSSBkb24ndAoJd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUuICBUaGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgd2VyZSBhbGwKCWxvZ2ljYWwgdHJhbnNmb3JtYXRpb25zIG9mIHRoZSBzb3VyY2VzOgoKCS0gdHJ5aW5nIHRvIGNvbnZlcnQgYWxsIGVudW1zIGFuZCBjb25zdGFudHMgdG8gQ0FQSVRBTElaRURfU1RZTEUsCgkgICN3aXRoIGRlZmluZSBkZWZpbml0aW9ucyBsaWtlCgoJICAgICNkZWZpbmUgbXlfb2xkX2NvbnN0YW50cyAgIE1ZX05FV19DT05TVEFOVAoKCS0gYmlnLCBiaWcgdXBkYXRlIG9mIHRoZSBkb2N1bWVudGF0aW9uIGNvbW1lbnRzCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jLAoJc3JjL3Ntb290aC9mdHNtb290aC5jLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogQWRkaW5nIHN1cHBvcnQKCWZvciBMQ0Qtb3B0aW1pemVkIHJlbmRlcmluZyB0aG91Z2ggdGhlIG5ldyBjb25zdGFudHMvZW51bXM6CgoJICBGVF9SRU5ERVJfTU9ERV9MQ0QsIEZUX1JFTkRFUl9NT0RFX0xDRF9WCgkgIEZUX1BJWEVMX01PREVfTENELCAgRlRfUElYRUxfTU9ERV9MQ0RfVgoKCVRoaXMgaXMgc3RpbGwgd29yayBpbiBwcm9ncmVzcywgZG9uJ3QgZXhwZWN0IGV2ZXJ5dGhpbmcgdG8gd29yawoJY29ycmVjdGx5IHRob3VnaCBtb3N0IG9mIHRoZSBmZWF0dXJlcyBoYXZlIGJlZW4gaW1wbGVtZW50ZWQuCgoJKiBBZGRpbmcgbmV3IEZUX0xPQURfWFhYIGZsYWdzLCB1c2VkIHRvIHNwZWNpZnkgYm90aCBoaW50aW5nIGFuZAoJcmVuZGVyaW5nIHRhcmdldHM6CgoJICBGVF9MT0FEX1RBUkdFVF9OT1JNQUwgOjogYW50aS1hbGlhc2VkIGhpbnRpbmcgJiByZW5kZXJpbmcKCSAgRlRfTE9BRF9UQVJHRVRfTU9OTyAgIDo6IG1vbm9jaHJvbWUgYml0bWFwcwoJICBGVF9MT0FEX1RBUkdFVF9MQ0QgICAgOjogaG9yaXpvbnRhbCBSR0IvQkdSIGRlY2ltYXRlZAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludGluZyAmIHJlbmRlcmluZwoJICBGVF9MT0FEX1RBUkdFVF9MQ0RfViAgOjogdmVydGljYWwgUkdCL0JHUiBkZWNpbWF0ZWQKCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbnRpbmcgJiByZW5kZXJpbmcKCglOb3RlIHRoYXQgRlRfTE9BRF9UQVJHRVRfTk9STUFMIGlzIDAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRlZmF1bHQKCWJlaGF2aW91ciBvZiB0aGUgZm9udCBlbmdpbmUgaXMgX3VuY2hhbmdlZF8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaAoJKEZUX091dGxpbmVfe01vdmUsTGluZSxDb25pYyxDdWJpY31Ub19GdW5jKTogUmVuYW1lZCB0by4uLgoJKEZUX091dGxpbmVfe01vdmUsTGluZSxDb25pYyxDdWJpY31Ub0Z1bmMpOiBUaGlzLgoJKEZUX1Jhc3Rlcl9TcGFuX0Z1bmMpOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1NwYW5GdW5jKTogVGhpcy4KCShGVF9SYXN0ZXJfe05ldyxEb25lLFJlc2V0LFNldF9Nb2RlLFJlbmRlcn1fRnVuYyk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfUmFzdGVyX3tOZXcsRG9uZSxSZXNldCxTZXRNb2RlLFJlbmRlcn1GdW5jfTogVGhpcy4KCglVcGRhdGVkIGFsbCBhZmZlY3RlZCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHJlbmRlci5oCgkoRlRfR2x5cGhfe0luaXQsRG9uZSxUcmFuc2Zvcm0sQkJveCxDb3B5LFByZXBhcmV9X0Z1bmMpOiBSZW5hbWVkCgl0byAuLi4KCShGVF9HbHlwaF97SW5pdCxEb25lLFRyYW5zZm9ybSxHZXRCQm94LENvcHksUHJlcGFyZX1GdW5jKTogVGhpcy4KCShGVFJlbmRlcmVyX3tyZW5kZXIsdHJhbnNmb3JtLGdldENCb3gsc2V0TW9kZX0pOiBSZW5hbWVkIHRvIC4uLgoJKEZUX1JlbmRlcmVyX3tSZW5kZXJGdW5jLFRyYW5zZm9ybUZ1bmMsR2V0Q0JveEZ1bmMsU2V0ZU1vZGVGdW5jfSk6CglUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9Qb2ludCwgQUhfU2VnbWVudCwgQUhfRWRnZSwgQUhfR2xvYmFscywKCUFIX0ZhY2VfR2xvYmFscywgQUhfT3V0bGluZSwgQUhfSGludGVyKTogVGhlc2UgdHlwZWRlZnMgYXJlIG5vdwoJcG9pbnRlcnMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYCpSZWMnIHN0cnVjdHVyZXMuICBBbGwgc291cmNlIGZpbGVzCgloYXZlIGJlZW4gdXBkYXRlZCBhY2NvcmRpbmdseS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2RlY29kZXJfaW5pdCk6IEFkZCBoaW50IG1vZGUgYXMgcGFyYW1ldGVyLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmggKENGRl9EZWNvZGVyKTogQWRkIGBoaW50X21vZGUnIGVsZW1lbnQuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlKTogUmVuYW1lZCB0by4uLgoJKGNpZF9mYWNlX2NvbXB1dGVfbWF4X2FkdmFuY2UpOiBUaGlzLgoJKENJRF9Mb2FkX0dseXBoKTogUmVuYW1lZCB0by4uLgoJKGNpZF9zbG90X2xvYWRfZ2x5cGgpOiBUaGlzLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoQ0lEX09wZW5fRmFjZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV9vcGVuKTogVGhpcy4KCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9HbHlwaFNsb3Rfe0RvbmUsSW5pdH0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3Nsb3Rfe2RvbmUsaW5pdH0pOiBUaGlzLgoJKENJRF9TaXplX3tHZXRfR2xvYmFsc19GdW5jcyxEb25lLFJlc2V0KTogUmVuYW1lZCB0by4uLgoJKGNpZF9zaXplX3tnZXRfZ2xvYmFsc19mdW5jcyxkb25lLHJlc2V0KTogVGhpcy4KCShDSURfRmFjZV97RG9uZSxJbml0fSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfZmFjZV97ZG9uZSxpbml0fSk6IFRoaXMuCgkoQ0lEX0RyaXZlcl97RG9uZSxJbml0fTogUmVuYW1lZCB0by4uLgoJKGNpZF9kcml2ZXJfe2RvbmUsaW5pdH06IFRoaXMuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoQ0lEX3tOZXcsRG9uZX1fUGFyc2VyKTogUmVuYW1lZCB0by4uLgoJKGNpZF9wYXJzZXJfe25ldyxkb25lfSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkcGFyc2UuaCAoQ0lEX1NraXBfe1NwYWNlcyxBbHBoYX0pOiBSZW5hbWVkIHRvLi4uCgkoY2lkX3BhcnNlcl9za2lwX3tzcGFjZXMsYWxwaGF9KTogVGhpcy4KCShDSURfVG97SW50LEZpeGVkLENvb3JkQXJyYXksRml4ZWRBcnJheSxUb2tlbixUb2tlbkFycmF5fSk6IFJlbmFtZWQKCXRvLi4uCgkoY2lkX3BhcnNlcl90b197aW50LGZpeGVkLGNvb3JkX2FycmF5LGZpeGVkX2FycmF5LHRva2VuLHRva2VuX2FycmF5fSk6CglUaGlzLgoJKENJRF9Mb2FkX3tGaWVsZCxGaWVsZF9UYWJsZSk6IFJlbmFtZWQgdG8uLi4KCShjaWRfcGFyc2VyX2xvYWRfe2ZpZWxkLGZpZWxkX3RhYmxlfSk6IFRoaXMuCgkqIHNyYy9jaWQvY2lkcml2ZXIuYyAoQ0lEX0dldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoY2lkX2dldF9pbnRlcmZhY2UpOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlXyopOiBSZW5hbWVkIHRvLi4uCgkocHNfdGFibGVfKik6IFRoaXMuCgkoVDFfQnVpbGRlcl8qKTogUmVuYW1lZCB0by4uLgoJKHQxX2J1aWxkZXJfKik6IFRoaXMuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyXyopOiBSZW5hbWVkIHRvLi4uCgkodDFfZGVjb2Rlcl8qKTogVGhpcy4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTXyopOiBSZW5hbWVkIHRvLi4uCgkocHNfKik6IFRoaXMuCgoJVXBkYXRlZCBhbGwgYWZmZWN0ZWQgY29kZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyIChTRk5UX0dldF9JbnRlcmZhY2UpOiBSZW5hbWVkIHRvLi4uCgkoc2ZudF9nZXRfaW50ZXJmYWNlKTogVGhpcy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfKik6IFJlbmFtZWQgdG8uLi4KCShzZm50XyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF97TG9hZCxGcmVlfSk6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlX3tsb2FkLGZyZWV9X2NoYXJtYXApOiBUaGlzLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogUmVuYW1lZCB0by4uLgoJKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBUaGlzLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dHBvc3QuYyAoVFRfUG9zdF9EZWZhdWx0X05hbWVzKTogUmVuYW1lZCB0by4uLgoJKHR0X3Bvc3RfZGVmYXVsdF9uYW1lcyk6IFRoaXMuCgkoTG9hZF8qKTogUmVuYW1lZCB0by4uLgoJKGxvYWRfKik6IFRoaXMuCgkoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfKik6IFJlbmFtZWQgdG8uLi4KCSh0dF9mYWNlXyopOiBUaGlzLgoJKHtGaW5kLExvYWQsQ3JvcH1fKik6IFJlbmFtZWQgdG8uLi4KCSh7ZmluZCxsb2FkLGNyb3B9XyopOiBUaGlzLgoKCVVwZGF0ZWQgYWxsIGFmZmVjdGVkIGNvZGUuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIpOiBSZW5hbWVkIHRvLi4uCgkoZnRfc21vb3RoX3JlbmRlcl9nZW5lcmljKTogVGhpcy4KCU1ha2UgZnVuY3Rpb24gbW9yZSBnZW5lcmljIGJ5IGFkZGluZyB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY2FsaW5nCglmYWN0b3JzLgoJKGZ0X3Ntb290aF9yZW5kZXIsIGZ0X3Ntb290aF9yZW5kZXJfbGNkLCBmdF9zbW9vdGhfcmVuZGVyX2xjZF92KToKCU5ldyBmdW5jdGlvbnMuCgoJKGZ0X3Ntb290aF9sb2NkX3JlbmRlcmVyX2NsYXNzLCBmdF9zbW9vdGhfbGNkdl9yZW5kZXJlcl9jbGFzcyk6IE5ldwoJY2xhc3Nlcy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAoVFRfe0RvbmUsTmV3fV9HbHlwaFpvbmUpOiBSZW5hbWVkIHRvLi4uCgkodHRfZ2x5cGh6b25lX3tkb25lLG5ld30pOiBUaGlzLgoJKFRUX3tGYWNlLFNpemUsRHJpdmVyfV8qKTogUmVuYW1lZCB0by4uLgoJKHR0X3tmYWNlLHNpemUsZHJpdmVyfV8qKTogVGhpcy4KCSogc3JjL3RydWV0eXBlL3R0cGxvYWQuYyAoVFRfTG9hZF9Mb2NhdGlvbnMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9sb2FkX2xvY2EpOiBUaGlzLgoJKFRUX0xvYWRfUHJvZ3JhbXMpOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV9sb2FkX2ZwZ20pOiBUaGlzLgoJKFRUXyopOiBSZW5hbWVkIHRvLi4uCgkodHRfZmFjZV8qKTogVGhpcy4KCjIwMDItMDgtMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvVkVSU0lPTi5ETEw6IE5ldyBmaWxlLgoKMjAwMi0wOC0yMyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfb3BlcmF0b3Jfc2VhYykKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogSW5jcmVtZW50YWwgZm9udHMgKGFjdHVhbGx5IG5vdAoJaW5jcmVtZW50YWwgaW4gdGhlIGNhc2Ugb2YgQ0ZGIGJ1dCBqdXN0IHVzaW5nIGNhbGxiYWNrcyB0byBnZXQgZ2x5cGgKCXJlY2lwZXMpIHBhc3MgdGhlIGNoYXJhY3RlciBjb2RlLCBub3QgdGhlIGdseXBoIGluZGV4LCB0byB0aGUKCWdldF9nbHlwaF9kYXRhIGZ1bmN0aW9uOyB0aGV5IGhhdmUgbm8gdmFsaWQgY2hhcnNldCB0YWJsZS4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfZm9udF9sb2FkKTogUmVtb3ZlZCBzcGVjaWFsIGNhc2VzIGZvcgoJRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCwgd2hpY2ggYXJlIG5vIGxvbmdlciBuZWNlc3Nhcnk7IENGRgoJZm9udHMgcHJvdmlkZWQgdmlhIHRoZSBpbmNyZW1lbnRhbCBpbnRlcmZhY2Ugbm93IGhhdmUgdG8gY29uZm9ybQoJbW9yZSBjbG9zZWx5IHRvIHRoZSBDRkYgZm9udCBmb3JtYXQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCAoY2ZmX2ZvbnRfbG9hZCk6IFJlbW92ZWQgYXJndW1lbnQgbm93IHVubmVlZGVkLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpOiBDaGFuZ2VkIGNhbGwgdG8gY2ZmX2ZvbnRfbG9hZAoJdG8gY29uZm9ybSB3aXRoIG5ldyBzaWduYXR1cmUuCgoyMDAyLTA4LTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdHN5bnRoLmMsIHNyYy9iYXNlL2Z0c3Ryb2tlci5jLAoJc3JjL2JkZi9iZGZkcml2ci5jOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wOC0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMgKHBzaDNfZ2x5cGhfY29tcHV0ZV9pbmZsZWN0aW9ucywKCXBzaDNfZ2x5cGhfY29tcHV0ZV9leHRyZW1hLCBwc2gzX2hpbnRfdGFibGVfZmluZF9zdHJvbmdfcG9pbnQpOiBGaXgKCWNvbXBpbGVyIHdhcm5pbmdzIGFuZCByZXNvbHZlIHNoYWRvd2luZyBvZiBsb2NhbCB2YXJpYWJsZXMuCgoyMDAyLTA4LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVGhlIGF1dG9tYXRpYyBhbmQgUG9zdHNjcmlwdCBoaW50ZXIgbm93IGF1dG9tYXRpY2FsbHkgZGV0ZWN0CglpbmZsZWN0aW9uIHBvaW50cyBpbiBnbHlwaCBvdXRsaW5lcyBhbmQgdHJlYXRzIHRoZW0gc3BlY2lhbGx5LiAgVGhpcwoJaXMgdmVyeSB1c2VmdWwgdG8gcHJldmVudCBuYXN0eSBlZmZlY3QgbGlrZSB0aGUgZGlzYXBwZWFyaW5nCglkaWFnb25hbHMgb2YgIlMiIGFuZCAicyIgaW4gbWFueSwgbWFueSBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKGFoX2ZsYWdfaW5mbGVjdGlvbik6IE5ldyBtYWNyby4KCSogc3JjL2F1dG9oaW50L2FoYW5nbGVzLmMgKGFoX2FuZ2xlX2RpZmYpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9hdXRvaGludC9haGFuZ2xlcy5oOiBVcGRhdGVkLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfaW5mbGVjdGlvbnMpOiBOZXcKCWZ1bmN0aW9uLgoJKGFoX291dGxpbmVfZGV0ZWN0X2ZlYXR1cmVzKTogVXNlIGl0LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzKQoJWyFBSF9PUFRJT05fTk9fV0VBS19JTlRFUlBPTEFUSU9OXTogSGFuZGxlIGluZmxlY3Rpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvZG9jbWFrZXIucHksIHNyYy90b29scy9kb2NtYWtlci91dGlscy5weSwKCXNyYy90b29scy9kb2NtYWtlci90b2h0bWwucHk6IFVwZGF0aW5nIHRoZSBEb2NNYWtlciB0b29sLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBDaGFuZ2luZyB0aGUgdHlwZSBvZiB0aGUgImxvYWRfZmxhZ3MiCglwYXJhbWV0ZXIgZnJvbSAiRlRfSW50IiB0byAiRlRfSW50MzIiLCB0aGlzIGluIG9yZGVyIHRvIHN1cHBvcnQgbW9yZQoJb3B0aW9ucy4gIFRoaXMgc2hvdWxkIG9ubHkgYnJlYWsgYmluYXJ5IGFuZC9vciBzb3VyY2UgY29tcGF0aWJpbGl0eQoJb24gMTYtYml0IHBsYXRmb3JtcyAoQXRhcmk/KS4KCShGVF9MT0FEX05PX0FVVE9ISU5UKTogTmV3IG1hY3JvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVcGRhdGVkLgoJSGFuZGxlIEZUX0xPQURfTk9fQVVUT0hJTlQuCgkoRlRfTG9hZF9DaGFyKTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jLCBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRvYmplY3QuYywKCXNyYy9hdXRvaGludC9haGdseXBoLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRml4aW5nIHR5cG9zCglhbmQgcmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAyLTA4LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9HZXRfTWV0cmljcyk6IEFkZCBndWFyZCBmb3IgayA9IDAuCgoyMDAyLTA4LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyBbREVCVUdfSElOVEVSXTogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MKCShvbmx5IHVzZWQgaW4gZGV2ZWxvcG1lbnQgYnVpbGRzIGFueXdheSkuCgoJSW1wcm92ZSBzdXBwb3J0IG9mIGxvY2FsIGV4dHJlbWEgYW5kIHN0ZW0gZWRnZSBwb2ludHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuaCAoUFNIM19IaW50X1RhYmxlUmVjKTogVXNlIFBTSDNfWm9uZVJlYwoJZm9yIGB6b25lcycuCgkoUFNIM19ESVJfVVAsIFBTSDNfRElSX0RPV04pOiBFeGNoYW5nZSB2YWx1ZXMuCgkoUFNIM19ESVJfSE9SSVpPTlRBTCwgUFNIM19ESVJfVkVSVElDQUwpOiBOZXcgbWFjcm9zLgoJKFBTSDNfRElSX0NPTVBBUkUsIFBTSDNfRElSX0lTX0hPUklaT05UQUwsIFBTSDNfSVNfVkVSVElDQUwpOiBOZXcKCW1hY3Jvcy4KCShQU0gzX1BPSU5UX0lORkxFWCk6IE5ldyBlbnVtLgoJKHBzaDNfcG9pbnRfe2lzLHNldH1fe29mZixpbmZsZXh9KTogTmV3IG1hY3Jvcy4KCShQU0gzX1BPSU5UX3tFWFRSRU1VTSxQT1NJVElWRSxORUdBVElWRSxFREdFX01JTixFREdFX01BWCk6IE5ldwoJZW51bSB2YWx1ZXMuCgkocHNoM19wb2ludF97aXMsc2V0fV97ZXh0cmVtdW0scG9zaXRpdmUsbmVnYXRpdmUsZWRnZV9taW4sZWRnZV9tYXh9KToKCU5ldyBtYWNyb3MuCgkoUFNIM19Qb2ludFJlYyk6IE5ldyBtZW1iZXJzIGBmbGFnczInIGFuZCBgb3JnX3YnLgoJKFBTSDNfUE9JTlRfRVFVQUxfQVJHLCBQU0gzX1BPSU5UX0FOR0xFKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5jIFtERUJVR19ISU5URVJdOiBSZW1vdmluZyBjb21waWxlcgoJd2FybmluZ3MuCgkoQ09NUFVURV9JTkZMRVhTKTogTmV3IG1hY3JvLgoJKHBzaDNfaGludF9hbGlnbik6IFNpbXBsaWZ5IHNvbWUgYmFzaWMgYXJpdGhtZXRpYyBjb21wdXRhdGlvbnMuCgkocHNoM19wb2ludF9pc19leHRyZW11bSk6IFJlbW92ZWQuCgkocHNoM19nbHlwaF9jb21wdXRlX2luZmxlY3Rpb25zKSBbQ09NUFVURV9JTkZMRVhTXTogTmV3IGZ1bmN0aW9uLgoJKHBzaDNfZ2x5cGhfaW5pdCkgW0NPTVBVVEVfSU5GTEVYU106IFVzZSBpdC4KCShwc2gzX2dseXBoX2NvbXB1dGVfZXh0cmVtYSk6IE5ldyBmdW5jdGlvbi4KCShQU0gzX1NUUk9OR19USFJFU0hPTEQpOiBJbmNyZWFzZWQgdG8gMzAuCgkocHNoM19oaW50X3RhYmxlX2ZpbmRfc3Ryb25nX3BvaW50KTogSW1wcm92ZWQuCgkocHNoM19nbHlwaF9maW5kX3N0cm9uZ19wb2ludHMsCglwc2gzX2dseXBoX2ludGVycG9sYXRlX3N0cm9uZ19wb2ludHMpOiBVcGRhdGVkLgoJKHBzaDNfaGludHNfYXBwbHkpOiBVc2UgcHNoM19nbHlwaF9jb21wdXRlX2V4dHJlbWEuCgoJKiB0ZXN0L2d2aWV3LmMgKGRyYXdfcHMzX2hpbnQsIHBzM19kcmF3X2NvbnRyb2xfcG9pbnRzKTogTmV3CglmdW5jdGlvbnMuCglPdGhlciBzbWFsbCB1cGRhdGVzLgoKCSogSmFtZmlsZTogU21hbGwgdXBkYXRlcy4KCjIwMDItMDgtMTggIEFya2FkaXVzeiBNaXNraWV3aWN6ICA8bWlzaWVrQHBsZC5PUkcuUEw+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChpbnN0YWxsLCB1bmluc3RhbGwpOiBBZGQgJChERVNURElSKSB0bwoJbWFrZSBsaWZlIGVhc2llciBmb3IgcGFja2FnZSBtYWludGFpbmVycy4KCjIwMDItMDgtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HbHlwaF9Mb2FkKTogRml4IGNvbXB1dGF0aW9uIG9mCglob3JpQmVhcmluZ1guCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoTG9hZCk6IEZpeCBjb21wdXRhdGlvbiBvZgoJaG9yaUJlYXJpbmdZLgoKMjAwMi0wOC0xNiAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJQWRkIHN1cHBvcnQgZm9yIEFwcGxlIGNvbXBvc2l0ZSBnbHlwaHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoVFRfQ09ORklHX09QVElPTl9DT01QT05FTlRfT0ZGU0VUX1NDQUxFRCk6IE5ldyBtYWNyby4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKE9WRVJMQVBfQ09NUE9VTkQsIFNDQUxFRF9DT01QT05FTlRfT0ZGU0VULAoJVU5TQ0FMRURfQ09NUE9ORU5UX09GRlNFVCk6IE5ldyBtYWNyb3MgZm9yIGFkZGl0aW9uYWwgT3BlblR5cGUKCWdseXBoIGxvYWRpbmcgZmxhZ3MuCgkobG9hZF90cnVldHlwZV9nbHlwaCk6IEltcGxlbWVudCBpdC4KCjIwMDItMDgtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2ZyZWVfZ2x5cGhfZGF0YSksCglzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IFVzZSBGVF9VTlVTRUQuCgoyMDAyLTA4LTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEluaXRpYWxpemUgYGVycm9yJy4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTA4LTE1ICBHcmFoYW0gQXNoZXIgIDxncmFoYW0uYXNoZXJAYnRpbnRlcm5ldC5jb20+CgoJSW1wbGVtZW50ZWQgdGhlIGluY3JlbWVudGFsIGZvbnQgbG9hZGluZyBzeXN0ZW0gZm9yIHRoZSBDRkYgZHJpdmVyLgoJVGVzdGVkIHVzaW5nIHRoZSBHaG9zdFNjcmlwdC10by1GcmVlVHlwZSBicmlkZ2UgKHVuZGVyIGRldmVsb3BtZW50KS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoY2ZmX2dldF9nbHlwaF9kYXRhLCBjZmZfZnJlZV9nbHlwaF9kYXRhKTogTmV3CglmdW5jdGlvbnMuCgkoY2ZmX29wZXJhdG9yX3NlYWMsIGNmZl9jb21wdXRlX21heF9hZHZhbmNlLCBjZmZfc2xvdF9sb2FkKTogVXNlCgl0aGVtLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfbG9hZCk6IEFkZCBgZmFjZScgcGFyYW1ldGVyLgoJTG9hZCBjaGFyc2V0IGFuZCBlbmNvZGluZyBvbmx5IGlmIHRoZXJlIGFyZSBnbHlwaHMuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEluY3JlbWVudGFsIGZvbnRzIGRvbid0IG5lZWQKCWNoYXJhY3RlciByZWNpcGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZvYmpzLmM6IFVwZGF0ZWQuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBDb3JyZWN0ZWQgdGhlIGluY3JlbWVudGFsIGZvbnQKCWxvYWRpbmcgaW1wbGVtZW50YXRpb24gdG8gdXNlIHRoZSBuZXcgc3lzdGVtIGludHJvZHVjZWQgb24KCTIwMDItMDgtMDEuCgoyMDAyLTA4LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmNtYXAuYzogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYywgc3JjL2NhY2hlL2Z0Y2NhY2hlLmksCglzcmMvcGZyL3BmcmxvYWQuYywgc3JjL3Bmci9wZnJnbG9hZC5jOiBzL2luZGV4L2lkeC8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBzL3NlbGVjdC9mZHNlbGVjdC8uCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogcy93YWl0L3dhaXRpbmcvLgoKMjAwMi0wOC0wMSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChUMV9PcGVuX0ZhY2UpOiBUb2xlcmF0ZSBhIGZhY2Ugd2l0aCBubwoJY2hhcnN0cmluZ3MgaWYgdGhlcmUgaXMgYW4gaW5jcmVtZW50YWwgbG9hZGluZyBpbnRlcmZhY2UuICBUeXBlIDEKCWZhY2VzIHN1cHBsaWVkIGJ5IFBvc3RTY3JpcHQgaW50ZXJwcmV0ZXJzIGxpa2UgR2hvc3RTY3JpcHQgd2lsbAoJdHlwaWNhbGx5IG5vdCBwcm92aWRlIGFueSBjaGFyc3RyaW5ncyBhdCBsb2FkIHRpbWUsIHNvIHRoaXMgaXMKCWVzc2VudGlhbCBpZiB0aGV5IGFyZSB0byB3b3JrLgoKMjAwMi0wOC0wMSAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCU1vZGlmaWVkIGluY3JlbWVudGFsIGxvYWRpbmcgaW50ZXJmYWNlIHRvIGJlIGNsb3NlciB0byBEYXZpZCdzCglwcmVmZXJlbmNlcy4gIFRoZSBoZWFkZXIgZnJlZXR5cGUuaCBpcyBub3Qgbm93IGFmZmVjdGVkLCB0aGUKCWludGVyZmFjZSBpcyBzcGVjaWZpZWQgdmlhIGFuIEZUX1BhcmFtZXRlciwgdGhlIHBvaW50ZXIgdG8gdGhlCglpbnRlcmZhY2UgaXMgaGlkZGVuIGluIGFuIGludGVybmFsIHBhcnQgb2YgdGhlIGZhY2UgcmVjb3JkLCBhbmQgYWxsCgl0aGUgZGVmaW5pdGlvbnMgYXJlIGluIGZ0aW5jcmVtLmguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWVldHlwZS5oIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCVJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOgoJSW5jbHVkZSBGVF9JTkNSRU1FTlRBTF9ILgoJKEZUX0ZhY2VfSW50ZXJuYWxSZWMpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkCglgaW5jcmVtZW50YWxfaW50ZXJmYWNlJy4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UsIEZUX09wZW5fRmFjZSkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06CglVcGRhdGVkLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzLCBUVF9Mb2FkX0dseXBoKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBVcGRhdGVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0ZhY2VfSW5pdCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX1BhcnNlX0dseXBoX0FuZF9HZXRfQ2hhcl9TdHJpbmcpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVwZGF0ZWQuCgkoVDFfUGFyc2VfR2x5cGgpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogVXBkYXRlZC4KCUZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEZyZWUgbG9hZGVkIGdseXBoIGRhdGEgcHJvcGVybHkuCgoyMDAyLTA3LTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW5jcmVtLmg6IEFkZGluZyBuZXcgZXhwZXJpbWVudGFsIGhlYWRlciBmaWxlCgl0byBkZW1vbnN0cmF0ZSBhICJjbGVhbmVyIiBBUEkgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBmb250IGxvYWRpbmcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9JTkNSRU1FTlRBTF9IKTogTmV3IG1hY3JvLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLyo6IEFkZGluZyBuZXcgKG1vcmUgYWR2YW5jZWQpIHZlcnNpb24gb2YKCXRoZSBEb2NNYWtlciB0b29sLCB1c2luZyBQeXRob24ncyBzb3BoaXN0aWNhdGVkIHJlZ2V4cHMuCgoyMDAyLTA3LTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJcy9mdF9tZW1zZXQvRlRfTUVNX1NFVC8uCglzL0ZUX01FTV9TRVQvRlRfTUVNX1pFUk8vIHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwMi0wNy0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTWFrZSBpdCB3b3JrIHdpdGggVFRDcy4KCjIwMDItMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IHMvbWVtc2V0L2Z0X21lbXNldC8uCgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRfZWRnZXNfMyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2VuY29kaW5nX2xvYWQpOiBSZW1vdmUgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmY21hcC5jIChjZmZfY21hcF9lbmNvZGluZ19pbml0KTogUmVtb3ZlIGBwc25hbWVzJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgc3RhdGVtZW50Cgl3aXRob3V0IGVmZmVjdC4KCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyIChHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbW92ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHNoM19oaW50X3RhYmxlX3JlY29yZCwKCXBzaDNfaGludF90YWJsZV9pbml0LCBwc2gzX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IEZpeCBlcnJvcgoJbWVzc2FnZS4KCjIwMDItMDctMjQgIEdyYWhhbSBBc2hlciAgPGdyYWhhbS5hc2hlckBidGludGVybmV0LmNvbT4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRml4IGZvciBidWcgcmVwb3J0ZWQgYnkgU3ZlbiBOZXVtYW5uCglbc3ZlbkBnaW1wLm9yZ10gb24gdGhlIEZyZWVUeXBlIGRldmVsb3BtZW50IGZvcnVtOiAiSWYKCUZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwgaXMgdW5kZWZpbmVkICh0aGlzIGlzIHRoZSBkZWZhdWx0KSwgdGhlCglUcnVlVHlwZSBsb2FkZXIgY3Jhc2hlcyBpbiBsaW5lIDg1MiBvZiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIHdoZW4KCWl0IHRyaWVzIHRvIGFjY2VzcyBmYWNlLT5nbHlwaF9sb2NhdGlvbnMuIgoKMjAwMi0wNy0xOCAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCUFkZGVkIHR5cGVzIGFuZCBzdHJ1Y3R1cmVzIHRvIHN1cHBvcnQgaW5jcmVtZW50YWwgdHlwZWZhY2UgbG9hZGluZy4KCVRoZSBGVF9JbmNyZW1lbnRhbF9JbnRlcmZhY2Ugc3RydWN0dXJlLCBkZWZpbmVkIGluIGZyZWV0eXBlLmgsIGlzCglkZXNpZ25lZCB0byBiZSBwYXNzZWQgdG8gRlRfT3Blbl9GYWNlIHRvIHByb3ZpZGUgY2FsbGJhY2sgZnVuY3Rpb25zCgl0byBvYnRhaW4gZ2x5cGggcmVjaXBlcyBhbmQgbWV0cmljcywgZm9yIGZvbnRzIGxpa2UgdGhvc2UgcGFzc2VkCglmcm9tIFBvc3RTY3JpcHQgdGhhdCBkbyBub3QgbmVjZXNzYXJpbHkgcHJvdmlkZSBhbGwsIG9yIGFueSwgZ2x5cGgKCWluZm9ybWF0aW9uLCB3aGVuIGZpcnN0IG9wZW5lZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUwpOgoJTmV3IGNvbmZpZ3VyYXRpb24gbWFjcm8gdG8gZW5hYmxlIGluY3JlbWVudGFsIGZhY2UgbG9hZGluZy4gIEJ5CglkZWZhdWx0IGl0IGlzIG5vdCBkZWZpbmVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9CYXNpY19HbHlwaF9NZXRyaWNzLAoJRlRfR2V0X0dseXBoX0RhdGFfRnVuYywgRlRfR2V0X0dseXBoX01ldHJpY3NfRnVuYywKCUZUX0luY3JlbWVudGFsX0ludGVyZmFjZV9GdW5jcywgRlRfSW5jcmVtZW50YWxfSW50ZXJmYWNlKQoJW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcuCgkoRlRfT3Blbl9BcmdzLCBGVF9GYWNlUmVjKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IE5ldyBmaWVsZAoJYGluY3JlbWVudGFsX2ludGVyZmFjZScuCgkoRlRfT3Blbl9GbGFncykgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBOZXcgZW51bQoJYGZ0X29wZW5faW5jcmVtZW50YWwnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IEluY2x1ZGUgRlRfQ09ORklHX0NPTkZJR19ILgoJKEZUX0RhdGEpOiBOZXcgc3RydWN0dXJlIHRvIHJlcHJlc2VudCBiaW5hcnkgZGF0YS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUFkZCBwYXJhbWV0ZXIgZm9yIGluY3JlbWVudGFsIGxvYWRpbmcuCgkoRlRfT3Blbl9GYWNlKSBbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IFVzZSBpbmNyZW1lbnRhbAoJaW50ZXJmYWNlLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIFRydWVUeXBlIGRyaXZlci4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZXR1cm4gRlRfRXJyb3IuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IENoZWNrIGZvciBvdmVycmlkaW5nIG1ldHJpY3MuCgkoVFRfTG9hZF9HbHlwaCkgW0ZUX0NPTkZJR19PUFRJT05fSU5DUkVNRU5UQUxdOiBEb24ndCBsb29rIGZvcgoJdGhlIGdseXBoIHRhYmxlIHdoaWxlIGhhbmRsaW5nIGFuIGluY3JlbWVudGFsIGZvbnQuCglHZXQgZ2x5cGggb2Zmc2V0LgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9GYWNlX0luaXQpCglbRlRfQ09ORklHX09QVElPTl9JTkNPUkVNRU5UQUxdOiBBZGRlZCB0aGUgaW5jcmVtZW50YWwgbG9hZGluZwoJc3lzdGVtIGZvciB0aGUgVHJ1ZVR5cGUgZHJpdmVyLgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChjaWRfbG9hZF9nbHlwaCkKCVtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXTogQWRkZWQgdGhlIGluY3JlbWVudGFsIGxvYWRpbmcgc3lzdGVtCglmb3IgdGhlIENJRCBkcml2ZXIuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpIFtGVF9DT05GSUdfT1BUSU9OX0lOQ1JFTUVOVEFMXToKCUNoYW5nZXMgdG8gc3VwcG9ydCBpbmNyZW1lbnRhbCBUeXBlIDQyIGZvbnRzOiBBc3N1bWUgYSBmb250IGhhcwoJZ2x5cGhzIGlmIGl0IGhhcyBhbiBpbmNyZW1lbnRhbCBpbnRlcmZhY2Ugb2JqZWN0LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfUGFyc2VfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDFfUGFyc2VfR2x5cGhfQW5kX0dldF9DaGFyX1N0cmluZyk6IFRoaXMuCglbRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTF06IEFkZGVkIHN1cHBvcnQgZm9yIGluY3JlbWVudGFsbHkKCWxvYWRlZCBUeXBlIDEgZmFjZXMuCgkoVDFfUGFyc2VfR2x5cGgpOiBOZXcgZnVuY3Rpb24uCgkoVDFfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCgoyMDAyLTA3LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQ2xlYW5pbmcgdXAgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gY29kZTsgbGluZWFyIGhhc2hpbmcgaXMgbm93IHRoZQoJZGVmYXVsdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaCwgc3JjL2NhY2hlL2Z0Y2NhY2hlLmksCglzcmMvY2FjaGUvZnRjY2FjaGUuYyBbIUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOiBSZW1vdmVkLgoJKEZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkc6IFJlbW92ZWQgYWxzby4KCglGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQUyBpcyBub3cgdGhlIGRlZmF1bHQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmggKEZUX0RyaXZlcl9DbGFzc1JlYyk6IFJlbW92ZQoJYGdldF9jaGFyX2luZGV4JyBhbmQgYGdldF9uZXh0X2NoYXInLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oLCBzcmMvYmFzZS9mdG9ianMuYywKCXNyYy9iZGYvYmRmZHJpdnIuYywgc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9wY2YvcGNmZHJpdnIuYywKCXNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL3NmbnQvc2ZvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywKCXNyYy9zZm50L3R0Y21hcDAuaCwgc3JjL3NmbnQvdHRsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlNDIvdDQyb2Jqcy5jLCBzcmMvd2luZm9udHMvd2luZm50LmMKCVshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBSZW1vdmVkLiAgVGhlIG5ldyBjbWFwIGNvZGUgaXMgbm93Cgl0aGUgZGVmYXVsdC4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jIChUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KToKCVJlbW92ZWQuCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5oOiBVcGRhdGVkLgoKCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X0NoYXJfSW5kZXgsIENpZF9HZXRfTmV4dF9DaGFyKToKCVJlbW92ZWQuCgkodDFfY2lkX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jICh0dF9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAoR2V0X0NoYXJfSW5kZXgsIEdldF9OZXh0X0NoYXIpOiBSZW1vdmVkCgkodDFfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jICh0NDJfZHJpdmVyX2NsYXNzKTogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChvcGVuX2ZhY2UpOiBTZWxlY3QgVW5pY29kZSBjbWFwIGJ5IGRlZmF1bHQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9TRk5UX0hlYWRlcik6IEZpeGVkIGEgcmVjZW50IGJ1ZyB0aGF0CglwcmV2ZW50ZWQgT3BlblR5cGUgZm9udHMgdG8gYmUgcmVjb2duaXplZCBieSBGcmVlVHlwZS4KCjIwMDItMDctMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDaGFuZ2luZyB0aGUgU0ZOVCBsb2FkZXIgdG8gY2hlY2sgZm9yIFNGTlQtYmFzZWQgZm9udCBmaWxlcwoJZGlmZmVyZW50bHkuICBXZSBub3cgaWdub3JlIHRoZSByYW5nZSAiaGVscGVyIiBmaWVsZHMgYW5kIGNoZWNrIHRoZQoJImhlYWQiIHRhYmxlJ3MgbWFnaWMgbnVtYmVyIGluc3RlYWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoU0ZOVF9IZWFkZXJSZWMpOiBBZGQgYG9mZnNldCcKCWZpZWxkLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogTmV3IGZ1bmN0aW9uLgoJKFRUX0xvYWRfU0ZOVF9IZWFkZXJSZWMpOiBSZW5hbWVkIHRvLi4uCgkoVFRfTG9hZF9TRk5UX0hlYWRlcik6IFRoaXMuCglJbXBsZW1lbnQgbmV3IGZ1bmN0aW9uYWxpdHkuCgkqIHNyYy9zZm50L3R0bG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2ludGVyZmFjZSk6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9iamVjdC5jLCBzcmMvYmFzZS9mdGhhc2guYzogVXBkYXRlZCBvYmplY3Qgc3ViLXN5c3RlbQoJYW5kIGR5bmFtaWMgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiAoc3RpbGwgZXhwZXJpbWVudGFsLCBkb24ndAoJdXNlKS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGhhc2guaDogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTGlicmFyeVJlYyk6IE5ldyBtZW1iZXIKCWBtZXRhX2NsYXNzJy4KCglGaXhpbmcgYSBidWcgaW4gdGhlIFR5cGUgMSBsb2FkZXIgdGhhdCBwcmV2ZW50ZWQgdmFsaWQgZm9udCBib3VuZGluZwoJYm94ZXMgdG8gYmUgbG9hZGVkIGZyb20gbXVsdGlwbGUgbWFzdGVyIGZvbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oIChQU19CbGVuZFJlYyk6IEFkZCBgYmJveGVzJyBmaWVsZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRmllbGRUeXBlKTogQWRkCglgVDFfRklFTERfVFlQRV9CQk9YJy4KCShUMV9GaWVsZExvY2F0aW9uKTogQWRkIGBUMV9GSUVMRF9MT0NBVElPTl9CQk9YJy4KCShUMV9GSUVMRF9CQk9YKTogTmV3IG1hY3JvLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19QYXJzZXJfTG9hZEZpZWxkKTogSGFuZGxlIFQxX0ZJRUxEX1RZUEVfQkJPWC4KCSogc3JjL3R5cGUxL3QxbG9hZC5jICh0MV9hbGxvY2F0ZV9ibGVuZCk6IENyZWF0ZSBibGVuZC0+YmJveGVzLgoJKFQxX0RvbmVfQmxlbmQpOiBGcmVlIGJsZW5kLT5iYm94ZXMuCgkodDFfbG9hZF9rZXl3b3JkKTogSGFuZGxlIFQxX0ZJRUxEX0xPQ0FUSU9OX0JCT1guCgkocGFyc2VfZm9udF9iYm94KTogQ29tbWVudGVkIG91dC4KCSh0MV9rZXl3b3Jkcyk6IENvbW1lbnQgb3V0IGBwYXJzZV9mb250X2Jib3gnLgoJKiBzcmMvdHlwZTEvdDF0b2tlbnMuaDogRGVmaW5lIGBGb250QkJveCcgZmllbGQuCgoyMDAyLTA3LTEwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogU21hbGwgZml4IHRvIHNlbGVjdCB0aGUgVW5pY29kZSBjaGFybWFwIGJ5CglkZWZhdWx0IHdoZW4gbmVlZGVkLgoJU21hbGwgZml4IHRvIGFsbG93IE9wZW5UeXBlIGZvbnRzIHRvIHN1cHBvcnQgQWRvYmUgY2hhcm1hcHMgd2hlbgoJbmVlZGVkLgoKCSogc3JjL2NmZi9jZmZjbWFwLmMsIHNyYy9jZmYvY2ZmY21hcC5oOiBOZXcgZmlsZXMgdG8gc3VwcG9ydAoJY2hhcm1hcHMgZm9yIENGRiBmb250cy4KCgkqIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvSmFtZmlsZSwgc3JjL2NmZi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0VuY29kaW5nUmVjKTogVXNlCglmaXhlZC1sZW5ndGggYXJyYXlzIGZvciBgc2lkcycgYW5kIGBjb2RlcycuICBBZGQgYGNvdW50JyBtZW1iZXIuCgkoQ0ZGX0ZvbnRSZWMpOiBBZGQgYHBzbmFtZXMnIG1lbWJlci4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmbG9hZC5oLAoJc3JjL2NmZi9jZmZvYmpzLmMsIHNyYy9jZmYvY2Zmb2Jqcy5oLCBzcmMvY2ZmL2NmZnBhcnNlLmMsCglzcmMvY2ZmcGFyc2UuaCwgc3JjL2NmZi9jZmZnbG9hZC5jLCBzcmMvY2ZmL2NmZmdsb2FkLmg6IEFkZGluZwoJc3VwcG9ydCBmb3IgQ0ZGIGNoYXJtYXBzLCByZWZvcm1hdHRpbmcgdGhlIHNvdXJjZXMsIGFuZCByZW1vdmluZwoJc29tZSBidWdzIGluIHRoZSBFbmNvZGluZyBhbmQgQ2hhcnNldCBsb2FkZXJzLgoJTWFueSBmb250cyByZW5hbWVkIHRvIHVzZSBsb3dlcmNhc2Ugb25seToKCgkgIENGRl9CdWlsZGVyX0luaXQgLT4gY2ZmX2J1aWxkZXJfaW5pdAoJICBDRkZfQnVpbGRlcl9Eb25lIC0+IGNmZl9idWlsZGVyX2RvbmUKCSAgQ0ZGX0luaXRfRGVjb2RlciAtPiBjZmZfZGVjb2Rlcl9pbml0CgkgIENGRl9QYXJzZV9DaGFyU3RyaW5ncyAtPiBjZmZfZGVjb2Rlcl9wYXJzZV9jaGFyc3RyaW5ncwoJICBDRkZfTG9hZF9HbHlwaCAtPiBjZmZfc2xvdF9sb2FkCgkgIENGRl9Jbml0X0RlY29kZXIgLT4gY2ZmX2RlY29kZXJfaW5pdAoJICBDRkZfUHJlcGFyZV9EZWNvZGVyIC0+IGNmZl9kZWNvZGVyX3ByZXBhcmUKCSAgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZyAtPiBjZmZfZ2V0X3N0YW5kYXJkX2VuY29kaW5nCgkgIENGRl9BY2Nlc3NfRWxlbWVudCAtPiBjZmZfaW5kZXhfYWNjZXNzX2VsZW1lbnQKCSAgQ0ZGX0ZvcmdldF9FbGVtZW50IC0+IGNmZl9pbmRleF9mb3JnZXRfZWxlbWVudAoJICBDRkZfR2V0X05hbWUgLT4gY2ZmX2luZGV4X2dldF9uYW1lCgkgIENGRl9HZXRfU3RyaW5nIC0+IGNmZl9pbmRleF9nZXRfc2lkX3N0cmluZwoJICBDRkZfR2V0X0ZEIC0+IGNmZl9mZF9zZWxlY3RfZ2V0CgkgIENGRl9Eb25lX0NoYXJzZXQgLT4gY2ZmX2NoYXJzZXRfZG9uZQoJICBDRkZfTG9hZF9DaGFyc2V0IC0+IGNmZl9jaGFyc2V0X2xvYWQKCSAgQ0ZGX0RvbmVfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2RvbmUKCSAgQ0ZGX0xvYWRfRW5jb2RpbmcgLT4gY2ZmX2VuY29kaW5nX2xvYWQKCSAgQ0ZGX0RvbmVfU3ViRm9udCAtPiBjZmZfc3ViZm9udF9kb25lCgkgIENGRl9Mb2FkX0ZvbnQgLT4gY2ZmX2ZvbnRfbG9hZAoJICBDRkZfRG9uZV9Gb250IC0+IGNmZl9mb250X2RvbmUKCSAgQ0ZGX1NpemVfR2V0X0dsb2JhbF9GdW5jcyAtPiBjZmZfc2l6ZV9nZXRfZ2xvYmFsX2Z1bmNzCgkgIENGRl9TaXplX0RvbmUgLT4gY2ZmX3NpemVfZG9uZQoJICBDRkZfU2l6ZV9Jbml0IC0+IGNmZl9zaXplX2luaXQKCSAgQ0ZGX1NpemVfUmVzZXQgLT4gY2ZmX3NpemVfcmVzZXQKCSAgQ0ZGX0dseXBoU2xvdF9Eb25lIC0+IGNmZl9zbG90X2RvbmUKCSAgQ0ZGX0dseXBoU2xvdF9Jbml0IC0+IGNmZl9zbG90X2luaXQKCSAgQ0ZGX1N0ckNvcHkgLT4gY2ZmX3N0cmNweQoJICBDRkZfRmFjZV9Jbml0IC0+IGNmZl9mYWNlX2luaXQKCSAgQ0ZGX0ZhY2VfRG9uZSAtPiBjZmZfZmFjZV9kb25lCgkgIENGRl9Ecml2ZXJfSW5pdCAtPiBjZmZfZHJpdmVyX2luaXQKCSAgQ0ZGX0RyaXZlcl9Eb25lIC0+IGNmZl9kcml2ZXJfZG9uZQoJICBDRkZfUGFyc2VyX0luaXQgLT4gY2ZmX3BhcnNlcl9pbml0CgkgIENGRl9QYXJzZXJfUnVuIC0+IGNmZl9wYXJzZXJfcnVuCgoJICBhZGRfcG9pbnQgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50CgkgIGFkZF9wb2ludDEgLT4gY2ZmX2J1aWxkZXJfYWRkX3BvaW50MQoJICBhZGRfY29udG91ciAtPiBjZmZfYnVpbGRlcl9hZGRfY29udG91cgoJICBjbG9zZV9jb250b3VyIC0+IGNmZl9idWlsZGVyX2Nsb3NlX2NvbnRvdXIKCSAgY2ZmX2V4cGxpY2l0X2luZGV4IC0+IGNmZl9pbmRleF9nZXRfcG9pbnRlcnMKCjIwMDItMDctMDkgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogRml4ZWQgYSBidWcgdGhhdAoJcHJldmVudGVkIHRoZSBoaW50ZXIgZnJvbSB1c2luZyBjb3JyZWN0IHN0YW5kYXJkIHdpZHRoIGFuZCBoZWlnaHQKCXZhbHVlcywgcmVzdWx0aW5nIGluIGhpbnRpbmcgYnVncyB3aXRoIGNlcnRhaW4gZm9udHMgKGUuZy4gVXRvcGlhKS4KCjIwMDItMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogQWRkZWQgY29kZSB0byByZXR1cm4KCXN1Y2Nlc3NmdWxseSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIGJpdG1hcCBnbHlwaCAodGhlCglwcmV2aW91cyBjb2RlIHNpbXBseSByZXR1cm5lZCB3aXRoIGFuIGVycm9yKS4KCgkqIGRvY3MvREVCVUcuVFhUOiBBZGRpbmcgZGVidWdnaW5nIHN1cHBvcnQgZG9jdW1lbnRhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0ZGVidWcuYyAoZnRfZGVidWdfaW5pdCksIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmMKCShmdF9kZWJ1Z19pbml0KSwgYnVpbGRzL2FtaWdhL3NyYy9mdGRlYnVnLmMgKGZ0X2RlYnVnX2luaXQpOiBDaGFuZ2VkCgl0aGUgc3ludGF4IG9mIHRoZSBGVDJfREVCVUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdXNlZCB0byBjb250cm9sCglkZWJ1Z2dpbmcgb3V0cHV0IChpLmUuIGxvZ2dpbmcgYW5kIGVycm9yIG1lc3NhZ2VzKS4gIEl0IG11c3Qgbm93Cglsb29rIGxpa2U6CgoJICBhbnk6NiBtZW1vcnk6NCBpbzozICAgb3IKCSAgYW55OjYsbWVtb3J5OjQsaW86MyAgIG9yCgkgIGFueTo2O21lbW9yeTo0O2lvOjMKCjIwMDItMDctMDcgIE93ZW4gVGF5bG9yICA8b3dlbkByZWRoYXQuY29tPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IEFkZGluZyBzdXBwb3J0IGZvcgoJYmx1ZSBmdXp6LgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBBZGQgYGJsdWVfZnV6eicgZmllbGQuCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoVDFfT3Blbl9GYWNlKTogSW5pdGlhbGl6ZSBgYmx1ZV9mdXp6Jy4KCglBZGRpbmcgc3VwcG9ydCBmb3IgaGludGVyLXNwZWNpZmljIGJpdCBmbGFncywgYW5kIHRoZSBuZXcKCUZUX1NldF9IaW50X0ZsYWdzIGhpZ2gtbGV2ZWwgQVBJLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCShGVF9ISU5UX05PX0lOVEVHRVJfU1RFTSwgRlRfSElOVF9OT19IU1RFTV9BTElHTiwKCUZUX0hJTlRfTk9fVlNURU1fQUxJR04pOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfRmFjZV9JbnRlcm5hbFJlYyk6IEFkZAoJYGhpbnRfZmxhZ3MnIG1lbWJlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9TZXRfSGludF9GbGFncyk6IE5ldyBmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfRGVjb2RlclJlYyk6IEFkZCBgaGludF9mbGFncycKCW1lbWJlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNoaW50cy5oIChUMV9IaW50c19BcHBseUZ1bmMsCglUMl9IaW50c19BcHBseUZ1bmMpOiBBZGQgcGFyYW1ldGVyIHRvIHBhc3MgaGludCBmbGFncy4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzLAoJVDFfRGVjb2Rlcl9Jbml0KTogVXNlIGRlY29kZXItPmhpbnRfZmxhZ3MuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaCAoQ0ZGX0J1aWxkZXIpOiBBZGQgYGhpbnRfZmxhZ3MnIGZpZWxkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9CdWlsZGVyX0luaXQpOiBTZXQgYnVpbGRlci0+aGludF9mbGFncy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAocHMxX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MgKHVudXNlZCkuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oOiBVcGRhdGVkLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzMuYyAocHMzX2hpbnRzX2FwcGx5KTogQWRkIHBhcmFtZXRlciB0byBoYW5kbGUKCWhpbnQgZmxhZ3MuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBVcGRhdGVkLgoKMjAwMi0wNy0wNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9zbG90X2xvYWQpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IHJldHVybmVkCglpbmNvcnJlY3QgYWR2YW5jZXMgd2hlbiB0aGUgb3V0bGluZSByZXNvbHV0aW9uIHdhcyBkaWZmZXJlbnQgZnJvbQoJdGhlIG1ldHJpY3MgcmVzb2x1dGlvbi4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jOiBzL0ZUX01FTV9TRVQvRlRfWkVSTy8gd2hlcmUgYXBwcm9wcmlhdGUuCgkoYWhfb3V0bGluZV9saW5rX3NlZ21lbnRzKTogU2xpZ2h0IGltcHJvdmVtZW50cyB0byB0aGUgc2VyaWYKCWRldGVjdGlvbiBjb2RlLiAgTW9yZSB3b3JrIGlzIG5lZWRlZCB0aG91Z2guCgoyMDAyLTA3LTAzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJU21hbGwgaW1wcm92ZW1lbnRzIHRvIHRoZSBhdXRvbWF0aWMgaGludGVyLiAgVW5ldmVuIHN0ZW0td2lkdGhzIGhhdmUKCW5vdyBkaXNhcHBlYXJlZCBhbmQgZXZlcnl0aGluZyBsb29rcyBtdWNoIGJldHRlciwgZXZlbiBpZiB0aGVyZSBhcmUKCXN0aWxsIGlzc3VlcyB3aXRoIHNlcmlmZWQgZm9udHMuCgoJKiBzcmMvYXV0b2hpbnQvYWh0eXBlcy5oIChBSF9HbG9iYWxzKTogQWRkZWQgYHN0ZHMnIGFycmF5LgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKE9QVElNX1NURU1fU05BUCk6IE5ldyAjZGVmaW5lLgoJKGFoX3NuYXBfd2lkdGgpOiBDb21tZW50ZWQgb3V0LgoJKGFoX2FsaWduX2xpbmtlZF9lZGdlKTogUmVuYW1lZCB0by4uLgoJKGFoX2NvbXB1dGVfc3RlbV93aWR0aCk6IFRoaXMuCglEb24ndCBhbGxvdyB1bmV2ZW4gc3RlbS13aWR0aHMuCgkoYWhfYWxpZ25fbGlua2VkX2VkZ2UpOiBOZXcgZnVuY3Rpb24uCgkoYWhfYWxpZ25fc2VyaWZlZF9lZGdlKTogRG9uJ3Qgc3RyZW5ndGhlbiBzZXJpZnMuCgkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfc2NhbGVfZ2xvYmFscyk6IFVwZGF0ZWQuCgoyMDAyLTA3LTAzICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCglBZGRpbmcgbmV3IGFsZ29yaXRobSBiYXNlZCBvbiBPd2VuIFRheWxvcidzIHJlY2VudCB3b3JrLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28zLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMy5oOiBOZXcgZmlsZXMuCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvLmg6IFVwZGF0ZWQuCglVc2UgcHNoYWxnbzMgYnkgZGVmYXVsdC4KCSogc3JjL3BzaGludGVyL3BzaGludGVyLmM6IEluY2x1ZGUgcHNoYWxnbzMuYy4KCgkqIHNyYy9wc2hpbnRlci9KYW1maWxlLCBzcmMvcHNoaW50ZXIvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAyLTA3LTAxICBPd2VuIFRheWxvciAgPG93ZW5AcmVkaGF0LmNvbT4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2dseXBoX2ZpbmRfc3Ryb25nX3BvaW50cyk6IEZpeCBhIGJ1ZwoJd2hlcmUsIGlmIGEgZ2x5cGggaGFzIG1vcmUgdGhhbiBoaW50IG1hc2ssIHRoZSBzZWNvbmQgbWFzayBnZXRzCglhcHBsaWVkIHRvIHBvaW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY292ZXJlZCBieSB0aGUgZmlyc3QgbWFzay4KCjIwMDItMDctMDEgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDhfY2hhcl9uZXh0LCB0dF9jbWFwMTJfY2hhcl9uZXh0KToKCUZpeGluZyB0aGUgY21hcCA4IGFuZCAxMiBwYXJzaW5nIHJvdXRpbmVzLgoKMjAwMi0wNy0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKEZUX091dGxpbmVfRW1ib2xkZW4pOiBSZW5hbWVkIHRvLi4uCgkoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogVGhpcy4KCVVwZGF0ZWQgdG8gbmV3IHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zLgoJKEZUX091dGxpbmVfT2JsaXF1ZSk6IFJlbmFtZWQgdG8uLi4KCShGVF9HbHlwaFNsb3RfT2JsaXF1ZSk6IFRoaXMuCgkoZnRfbm9ybSk6IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzeW50aC5oOiBVcGRhdGVkLgoKMjAwMi0wNi0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9iamVjdC5oOiBVcGRhdGluZyB0aGUgb2JqZWN0CglzdWItc3lzdGVtIGRlZmluaXRpb25zIChzdGlsbCBleHBlcmltZW50YWwpLgoKCSogc3JjL2Jhc2UvZnRoYXNoLmMgKGZ0X2hhc2hfcmVtb3ZlKTogRml4aW5nIGEgc21hbGwgcmVhbGxvY2F0aW9uCglidWcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9WZWN0b3JfRnJvbV9Qb2xhciwgRlRfQW5nbGVfRGlmZik6IE5ldwoJZnVuY3Rpb25zLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmg6IFVwZGF0ZWQuCgoKCUFkZGluZyBwYXRoIHN0cm9rZXIgY29tcG9uZW50ICh3b3JrIGluIHByb2dyZXNzKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzdHJva2VyLmgsIHNyYy9iYXNlL2Z0c3Ryb2tlci5jOiBOZXcgZmlsZXMuCgkqIHNyYy9iYXNlL0phbWZpbGU6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9TVFJPS0VSX0gpOiBOZXcgbWFjcm8uCgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9Db21wb3NpdGVfR2x5cGgpLAoJc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4ZWQgV2VybmVyJ3MgbGF0ZXN0IGZpeC4KCUZUX1ZlY3Rvcl9UcmFuc2Zvcm0gd2Fzbid0IGJ1Z2d5LCB0aGUgVHJ1ZVR5cGUgY29tcG9zaXRlIGxvYWRlciB3YXMuCgoyMDAyLTA2LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogU2V0IHRvIDMuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA2LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3Q0MnR5cGVzLmggKFQ0Ml9Gb250KTogUmVtb3ZlZCBzaW5jZQoJaXQgaXMgYWxyZWFkeSBpbiB0NDJvYmpzLmguCgkoVDQyX0ZhY2UpOiBVc2UgVDFfRm9udFJlYy4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfR2V0X1BTX0ZvbnRfSW5mbyk6IFVwZGF0ZWQuCgkoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogQ2hlY2sgZm9yIHR5cGU0MiBkcml2ZXIgbmFtZSBhbHNvLgoJKiBzcmMvdHlwZTQyL3Q0Mm9ianMuaDogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCShUNDJfRmFjZSk6IFJlbW92ZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBpbiB0NDJ0eXBlcy5oLgoKMjAwMi0wNi0yMSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnJnbG9hZC5jIChwZnJfZ2x5cGhfbG9hZF9jb21wb3VuZCk6IEZpeCBsb2FkaW5nIG9mIGNvbXBvc2l0ZQoJZ2x5cGhzLgoKMjAwMi0wNi0yMSAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBjb252ZXJnZW5jZS5kZT4KCgkqIHNyYy9wcmYvcGZydHlwZXMuaCAoUEZSX0tlcm5QYWlyKTogTmV3IHN0cnVjdHVyZS4KCShQRlJfUGh5Rm9udCk6IFVzZSBpdC4KCShQRlJfS2VybkZsYWdzKTogTmV3IGVudW1lcmF0aW9uLgoJKiBzcmMvcGZyL3BmcmxvYWQuYyAocGZyX2V4dHJhX2l0ZW1fbG9hZF9rZXJuaW5nX3BhaXJzKTogTmV3CglmdW5jdGlvbi4KCShwZnJfcGh5X2ZvbnRfZXh0cmFfaXRlbXMpOiBVc2UgaXQuCgkocGZyX3BoeV9mb250X2RvbmUpOiBVcGRhdGVkLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCk6IFNldCBrZXJuaW5nIGZsYWcgY29uZGl0aW9uYWxseS4KCShwZnJfZmFjZV9nZXRfa2VybmluZyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL3Bmci9wZnJvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9wZnIvcGZyZHJpdnIuYyAocGZyX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoyMDAyLTA2LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIHRoZSAyLjEuMiByZWxlYXNlLgoKMjAwMi0wNi0xOSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFNDJfVFlQRVNfSC4KCSh0MV9mYWNlX2NoZWNrX2Nhc3QpOiBSZW1vdmVkLgoJKEZUX0dldF9QU19Gb250X0luZm8pOiBNYWtlIGl0IHdvcmsgd2l0aCBDSUQgYW5kIFR5cGUgNDIgZHJpdmVycwoJYWxzby4KCjIwMDItMDYtMTkgIFNlYmFzdGllbiBCQVJSRSAgPHNlYmFzdGllbkBiYXJyZS5ub20uZnI+CgoJKiBzcmMvdHlwZTQyL3Q0MnBhcnNlLmMgKHQ0Ml9wYXJzZV9zZm50cyk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMi0wNi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9WZWN0b3JfVHJhbnNmb3JtKTogRml4IHNlcmlvdXMgdHlwbwoJKHh5IDwtPiB5eCkuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZXBsYWNlIGB8JyB3aXRoCglgfHwnIHRvIG1ha2UgY29kZSBlYXNpZXIgdG8gcmVhZC4KCjIwMDItMDYtMTggIFJvYmVydG8gQWxhbWVkYSAgPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvdDQyb2Jqcy5jICh0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UpOiBSZW1vdmVkLgoJKFQ0Ml9TaXplX1NldENoYXJzLCBUNDJfU2l6ZV9TZXRQaXhlbHMpOiBVc2UgRlRfQWN0aXZhdGVfU2l6ZQoJaW5zdGVhZC4KCShUNDJfR2x5cGhTbG90X0xvYWQpOiBSZW1vdmUgY2FsbCB0byB0NDJfY2hlY2tfc2l6ZV9jaGFuZ2UuCgoyMDAyLTA2LTE4ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX2N1c3RvbV9jaGFyX2luZGV4LAoJdDFfY21hcF9jdXN0b21fY2hhcl9uZXh0KTogRml4IGluZGV4IGNvbXB1dGF0aW9uIC0tIGluZGljZXMgc3RhcnQKCXdpdGggMCBhbmQgbm90IHdpdGggY21hcC0+Zmlyc3QuCgoJUHJvdmlkZSBkZWZhdWx0IGNoYXJtYXBzLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfRmFjZV9Jbml0KSwgc3JjL3BjZi9wY2Zkcml2ZXIuYwoJKFBDRl9GYWNlX0luaXQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCksCglzcmMvdHlwZTEvdDFvYmpzIChUMV9GYWNlX0luaXQpLCBzcmMvd2luZm9udHMvd2luZm50LmMKCShGTlRfRmFjZV9Jbml0KTogSW1wbGVtZW50IGl0LgoKMjAwMi0wNi0xNyAgU3ZlbiBOZXVtYW5uICA8c3ZlbkBnaW1wLm9yZz4KCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IHR5cG8uCgoyMDAyLTA2LTE2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJVXBkYXRlZCBXaW4zMi9WQysrIHByb2plY3RzIHRvIGluY2x1ZGUgdGhlIG5ldyBQRlIgZHJpdmVyLgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wNi0xNiAgQW50aG9ueSBGb2sgIDxmb2tAZGViaWFuLm9yZz4KCglJbnN0YWxsIGZyZWV0eXBlMi5tNC4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwsIHVuaW5zdGFsbCk6IEhhbmRsZSBpdC4KCjIwMDItMDYtMTYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJU2FtZSBmaXggZm9yIFBGUiBkcml2ZXIuCgoJKiBzcmMvcGZyL3BmcmNtYXAuYyAocGZyX2NtYXBfY2hhcl9pbmRleCwgcGZyX2NtYXBfY2hhcl9uZXh0KToKCUluY3JlYXNlIHJldHVybiB2YWx1ZSBieSAxLgoJKiBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX3Nsb3RfbG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgoyMDAyLTA2LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCUZpeCBnbHlwaCBpbmRpY2VzIHRvIG1ha2UgaW5kZXggemVybyBhbHdheXMgdGhlIHVuZGVmaW5lZCBnbHlwaC4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoYmRmX2NtYXBfaW5pdCk6IERvbid0IGRlY3JlYXNlCgljbWFwLT5udW1fZW5jb2RpbmdzLgoJKGJkZl9jbWFwX2NoYXJfaW5kZXgsIGJkZl9jbWFwX2NoYXJfbmV4dCwgQkRGX0dldF9DaGFyX0luZGV4KToKCUluY3JlYXNlIHJlc3VsdCBieSAxIGZvciBub3JtYWwgY2FzZXMuCgkoQkRGX0dseXBoX0xvYWQpOiBEZWNyZWFzZSBpbmRleCBieSAxLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAocGNmX2NtYXBfY2hhcl9pbmRleCwgcGNmX2NtYXBfY2hhcl9uZXh0LAoJUENGX0NoYXJfR2V0X0luZGV4KTogSW5jcmVhc2UgcmVzdWx0IGJ5IDEgZm9yIG5vcm1hbCBjYXNlcy4KCShQQ0ZfR2x5cGhfTG9hZCk6IERlY3JlYXNlIGluZGV4IGJ5IDEuCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IERvbid0IGRlY3JlYXNlIGogZm9yCglhbGxvY2F0aW5nIGBlbmNvZGluZycuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfTG9hZF9HbHlwaCwgRlRfR2V0X0dseXBoX05hbWUpOiBGaXgKCWJvdW5kaW5nIHRlc3RzLgoKMjAwMi0wNi0xNCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCglBZGQgbmV3IGNtYXAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jIChCREZfQ01hcFJlYykgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXToKCU5ldyBzdHJ1Y3R1cmUuCgkoYmRmX2NtYXBfaW5pdCwgYmRmX2NtYXBfZG9uZSwgYmRmX2NtYXBfY2hhcl9pbmRleCwKCWJkZl9jbWFwX2NoYXJfbmV4dCkgW0ZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTXTogTmV3IGZ1bmN0aW9ucy4KCShCREZfR2V0X0NoYXJfSW5kZXgpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOiBVc2Ugb25seQoJY29uZGl0aW9uYWxseS4KCShCREZfRmFjZV9Jbml0KTogSGFuZGxlIGBBVkVSQUdFX1dJRFRIJyBhbmQgYFBPSU5UX1NJWkUnIGtleXdvcmRzLgoJSW1wbGVtZW50IG5ldyBjbWFwIGhhbmRsaW5nLgoJKGJkZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKMjAwMi0wNi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogTWFrZWZpbGUsIGNvbmZpZ3VyZSwgKi8qLm1rLCBidWlsZHMvdW5peC91bml4LWRlZi5pbiwKCWRvY3MvQ0hBTkdFUywgZG9jcy9JTlNUQUxMOiBzL1RPUC9UT1BfRElSLy4KCjIwMDItMDYtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IHMvRlRfU2hvcnQvc2hvcnQvIGZvciBjb25zaXN0ZW5jeS4KCjIwMDItMDYtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9mdGRlYnVnLmM6IEFkZGVkIGEgbWlzc2luZyAjZW5kaWYuCgoJKiBzcmMvc2ZudC90dGxvYWQuYywgc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJUmVtb3ZlZCB0aGUgYnVnIGluIFR5cGUgNDIgZHJpdmVyIHRoYXQgcHJldmVudGVkIHVuLWhpbnRlZCBvdXRsaW5lcwoJdG8gYmUgbG9hZGVkLgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBDYWxsIEZUX0RvbmVfU2l6ZS4KCShUNDJfU2l6ZV9Jbml0KTogQ2FsbCBGVF9BY3RpdmF0ZV9TaXplLgoJKHQ0Ml9jaGVja19zaXplX2NoYW5nZSk6IE5ldyBmdW5jdGlvbi4KCShUNDJfU2l6ZV9TZXRDaGFycywgVDQyX1NpemVfU2V0UGl4ZWxzKTogVXNlIGl0LgoJKGZ0X2dseXBoc2xvdF9jbGVhcik6IFJlcGxhY2UgRlRfTUVNX1NFVCB3aXRoIEZUX1pFUk8uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVXNlIHQ0Ml9jaGVja19zaXplX2NoYW5nZS4KCUluaXRpYWxpemUgbW9yZSBmaWVsZHMgb2YgYGdseXBoJy4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDYtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMS4xIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDYtMDggIEp1bGl1c3ogQ2hyb2JvY3playAgPGpjaEBwcHMuanVzc2lldS5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9hdXRvaGludC9haGdseXBoLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRG9uJ3QKCXVzZSBgc2V0am1wJywgYGxvbmdqbXAnLCBhbmQgYGptcF9idWYnIGJ1dCBgZnRfc2V0am1wJywgYGZ0X2xvbmdqbXAnLAoJYW5kIGBmdF9qbXBfYnVmJy4KCVJlbW92ZWQgZGlyZWN0IHJlZmVyZW5jZXMgdG8gPHN0ZGlvLmg+IGFuZCA8c2V0am1wLmg+IHdoZW4KCWFwcHJvcHJpYXRlLCB0byBldmVudHVhbGx5IHJlcGxhY2UgdGhlbSB3aXRoIGEKCUZUX0NPTkZJR19TVEFOREFSRF9MSUJSQVJZX0guICBVc2VmdWwgZm9yIHRoZSBYRnJlZTg2IEZvbnQgU2VydmVyCgliYWNrZW5kIGJhc2VkIG9uIEZUMi4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYyAoRlRfSGFzX1BTX0dseXBoX05hbWVzKTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKHBjZl9jbWFwX2NoYXJfbmV4dCk6IEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkCgl0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIGludmFsaWQgdmFsdWVzLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmk6IFJlbW92aW5nIGEgdHlwbyB0aGF0IHByZXZlbnRlZAoJdGhlIHNvdXJjZSdzIGNvbXBpbGF0aW9uLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2hhc2hfdW5saW5rKTogRml4ZWQgYQoJYnVnIHRoYXQgY2F1c2VkIG5hc3R5IG1lbW9yeSBvdmVyd3JpdGVzLiAgVGhlIGhhc2ggdGFibGUncwoJYnVja2V0cyBhcnJheSB3YXNuJ3QgY29ycmVjdGx5IHJlc2l6ZWQgd2hlbiBzaHJpbmtlZC4KCjIwMDItMDYtMDggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc21ha2VmaWxlLCBidWlsZHMvYW1pZ2EvbWFrZWZpbGU6IFVwZGF0ZWQuCgoyMDAyLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfaGFzaF91bmxpbmssIGZ0Y19ub2RlX2hhc2hfbGluaykKCVtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRml4IHJldHVybmVkIGVycm9yIGNvZGUuCglGaXggZGVidWdnaW5nIG1lc3NhZ2VzLgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuaSAoR0VOX0NBQ0hFX0xPT0tVUCk6IE1vdmUgZGVjbGFyYXRpb24gb2YKCWBmYW1pbHknIGFuZCBgaGFzaCcgdXAgdG8gbWFrZSBpdCBjb21waWxhYmxlIHdpdGggZysrLgoKCSogc3JjL3R5cGU0Mi90NDJlcnJvci5oOiBOZXcgZmlsZS4KCSogc3JjL3R5cGU0Mi90NDJkcml2ci5jLCBzcmMvdHlwZTQyL3Q0Mm9ianMuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuYzogVXNlIHQ0MiBlcnJvciBjb2Rlcy4KCSogc3JjL3R5cGU0Mi9ydWxlcy5tazogVXBkYXRlZC4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9TVFJFQU1fSC4KCjIwMDItMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEdFTl9DQUNIRV9GQU1JTFlfQ09NUEFSRSwKCUdFTl9DQUNIRV9OT0RFX0NPTVBBUkUsIEdFTl9DQUNIRV9MT09LVVApIFtGVENfQ0FDSEVfVVNFX0lOTElORV06CglOZXcgbWFjcm9zLgoJKGZ0Y19jbWFwX2NhY2hlX2xvb2t1cCkgWyFGVENfQ0FDSEVfVVNFX0lOTElORV06IFR5cGVkZWYgdG8KCWZ0Y19jYWNoZV9sb29rdXAuCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBVcGRhdGVkLgoKCUFkZGluZyB2YXJpb3VzIGV4cGVyaW1lbnRhbCBvcHRpbWl6YXRpb25zIHRvIHRoZSBjYWNoZSBtYW5hZ2VyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjYWNoZS5oIChGVENfQ0FDSEVfVVNFX0lOTElORSwKCUZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkcpOiBOZXcgb3B0aW9ucy4KCShGVENfQ2FjaGVSZWMpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogTmV3IGVsZW1lbnRzIGBwJywKCWBtYXNrJywgYW5kIGBzbGFjaycuCgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoRlRDX0hBU0hfTUFYX0xPQUQsIEZUQ19IQVNIX01JTl9MT0FELAoJRlRDX0hBU0hfU1VCX0xPQUQpIFtGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HLAoJRlRDX0hBU0hfSU5JVElBTF9TSVpFXTogTmV3IG1hY3Jvcy4KCShmdGNfbm9kZV9tcnVfbGluaywgZnRjX25vZGVfbXJ1X3VwKTogT3B0aW1pemVkLgoJKGZ0Y19ub2RlX2hhc2hfdW5saW5rLCBmdGNfbm9kZV9oYXNoX2xpbmspCglbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IE5ldyB2YXJpYW50cy4KCShGVENfUFJJTUVTX01JTiwgRlRDX1BSSU1FU19NQVgsIGZ0Y19wcmltZXMsIGZ0Y19wcmltZV9jbG9zZXN0LAoJRlRDX0NBQ0hFX1JFU0laRV9URVNULCBmdGNfY2FjaGVfcmVzaXplKQoJWyFGVENfQ0FDSEVfVVNFX0xJTkVBUl9IQVNISU5HXTogRGVmaW5lIGl0IGNvbmRpdGlvbmFsbHkuCgkoZnRjX2NhY2hlX2luaXQsIGZ0Y19jYWNoZV9jbGVhcikgW0ZUQ19DQUNIRV9VU0VfTElORUFSX0hBU0hJTkddOgoJVXBkYXRlZC4KCShmdGNfY2FjaGVfbG9va3VwKSBbRlRDX0NBQ0hFX1VTRV9MSU5FQVJfSEFTSElOR106IEltcGxlbWVudCBpdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5pOiBOZXcgZmlsZS4KCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChHRU5fQ0FDSEVfRkFNSUxZX0NPTVBBUkUsCglHRU5fQ0FDSEVfTk9ERV9DT01QQVJFLCBHRU5fQ0FDSEVfTE9PS1VQKSBbRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOgoJTmV3IG1hY3Jvcy4KCShmdGNfc2JpdF9jYWNoZV9sb29rdXApIFshRlRDX0NBQ0hFX1VTRV9JTkxJTkVdOiBUeXBlZGVmIHRvCglmdGNfY2FjaGVfbG9va3VwLgoJKEZUQ19TQml0Q2FjaGVfTG9va3VwKTogVXBkYXRlZC4KCgkqIHNyYy90eXBlNDIvdDQycGFyc2UuYzogUmVtb3ZpbmcgZHVwbGljYXRlIGZ1bmN0aW9uLgoKMjAwMi0wNi0wNyAgR3JhaGFtIEFzaGVyICA8Z3JhaGFtLmFzaGVyQGJ0aW50ZXJuZXQuY29tPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IENoYW5nZWQgZGVmaW5pdGlvbgoJZnJvbSBGVF9FWFBPUlRfREVGIHRvIEZUX0JBU0VfREVGLgoKMjAwMi0wNi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBidWcgdGhhdCBwcmV2ZW50ZWQgdGhlIGNvcnJlY3QgZGlzcGxheSBvZiBmb250cyB3aXRoCgkiZnR2aWV3Ii4KCgkqIHNyYy90eXBlNDIvdDQyZHJpdnIuYzogU3BsaXQgaW50by4uLgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmgsIHNyYy90eXBlNDIvdDQycGFyc2UuYywKCXNyYy90eXBlNDIvdDQycGFyc2UuaCwgc3JjL3R5cGU0Mi90NDJvYmpzLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLAoJc3JjL3R5cGU0Mi90eXBlNDIuYzogTmV3IGZpbGVzLgoKCSh0NDJfZ2V0X2dseXBoX25hbWUsIHQ0Ml9nZXRfcHNfbmFtZSwgdDQyX2dldF9uYW1lX2luZGV4KTogVXNlCglgZmFjZS0+dHlwZTEnLgoKCShHZXRfSW50ZXJmYWNlKTogUmVuYW1lZCB0by4uLgoJKFQ0Ml9HZXRfSW50ZXJmYWNlKTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX09wZW5fRmFjZSwgVDQyX0ZhY2VfRG9uZSk6IFVwZGF0ZWQuCgkoVDQyX0ZhY2VfSW5pdCk6IEFkZCBuZXcgY21hcCBzdXBwb3J0LgoJVXBkYXRlZC4KCShUNDJfRHJpdmVyX0luaXQsIFQ0Ml9Ecml2ZXJfRG9uZSwgVDQyX1NpemVfSW5pdCwgVDQyX1NpemVfRG9uZSwKCVQ0Ml9HbHlwaFNsb3RfSW5pdCwgVDQyX0dseXBoU2xvdF9Eb25lKTogVXBkYXRlZC4KCShHZXRfQ2hhcl9JbmRleCwgR2V0X05leHRfQ2hhcik6IFJlbmFtZWQgdG8uLi4KCShUNDJfQ01hcF9DaGFySW5kZXgsIFQ0Ml9DTWFwX0NoYXJOZXh0KTogVGhpcy4KCVVwZGF0ZWQuCgkoVDQyX0NoYXJfU2l6ZSwgVDQyX1BpeGVsX1NpemUpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX1NpemVfU2V0Q2hhcnMsIFQ0Ml9TaXplX1NldFBpeGVscyk6IFRoaXMuCgkoVDQyX0xvYWRfR2x5cGgpOiBSZW5hbWVkIHRvLi4uCgkoVDQyX0dseXBoU2xvdF9Mb2FkKTogVGhpcy4KCgkodDQyX2luaXRfbG9hZGVyLCB0NDJfZG9uZV9sb2FkZXIpOiBSZW5hbWVkIHRvLi4uCgkodDQyX2xvYWRlcl9pbml0LCB0NDJfbG9hZGVyX2RvbmUpOiBUaGlzLgoJKFQ0Ml9OZXdfUGFyc2VyLCBUNDJfRmluYWxpemVfUGFyc2VyKTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZXJfaW5pdCwgdDQyX3BhcnNlcl9kb25lKTogVGhpcy4KCShwYXJzZV9kaWN0KTogUmVuYW1lZCB0by4uLgoJKHQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCShpc19hbHBoYSwgaXNfc3BhY2UsIGhleHZhbCk6IFJlbmFtZWQgdG8uLi4KCSh0NDJfaXNfYWxwaGEsIHQ0Ml9pc19zcGFjZSwgdDQyX2hleHZhbCk6IFRoaXMuCgkocGFyc2VfZm9udF9uYW1lLCBwYXJzZV9mb250X2Jib3gsIHBhcnNlX2ZvbnRfbWF0cml4LAoJcGFyc2VfZW5jb2RpbmcsIHBhcnNlX3NmbnRzLCBwYXJzZV9jaGFyc3RyaW5ncywgcGFyc2VfZGljdCk6CglSZW5hbWVkIHRvLi4uCgkodDQyX3BhcnNlX2ZvbnRfbmFtZSwgdDQyX3BhcnNlX2ZvbnRfYmJveCwgdDQyX3BhcnNlX2ZvbnRfbWF0cml4LAoJdDQyX3BhcnNlX2VuY29kaW5nLCB0NDJfcGFyc2Vfc2ZudHMsIHQ0Ml9wYXJzZV9jaGFyc3RyaW5ncywKCXQ0Ml9wYXJzZV9kaWN0KTogVGhpcy4KCVVwZGF0ZWQuCgoJKHQ0Ml9rZXl3b3Jkcyk6IFVwZGF0ZWQuCgoJKiBzcmMvdHlwZTQyL0phbWZpbGUsIHNyYy90eXBlNDIvZGVzY3JpcC5tbXM6IFVwZGF0ZWQuCgoyMDAyLTA2LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkIDhicHAgc3VwcG9ydCB0byBCREYgZHJpdmVyLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9zdGFydCk6IEhhbmRsZSA4YnBwLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9HbHlwaF9Mb2FkKTogRGl0dG8uCgkqIHNyYy9iZGYvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMi0wNi0wMiAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfcGh5X2ZvbnRfZG9uZSk6IEZyZWUgYGJsdWVfdmFsdWVzJyBhcnJheS4KCjIwMDItMDUtMjkgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3JlYWRzdHJlYW0pOiBBbGxvY2F0ZSBgYnVmJyBkeW5hbWljYWxseS4KCShfYmRmX3BhcnNlX2dseXBocyk6IFVzZSBjb3JyZWN0IHNpemUgZm9yIGFsbG9jYXRpbmcKCWBmb250LT51bmVuY29kZWQnLgoJKGJkZl9sb2FkX2ZvbnQpOiBGcmVlIGFycmF5IGNvbmRpdGlvbmFsbHkuCglSZXR1cm4gcHJvcGVyIGVycm9yIGNvZGUgaW4gY2FzZSBvZiBmYWlsdXJlLgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9GYWNlX0luaXQpOiBNYWtlIGl0IG1vcmUgcm9idXN0IGFnYWluc3QKCXVudXN1YWwgZm9udHMuCgoyMDAyLTA1LTI5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmRmL2Rlc2NyaXAubW1zLCBzcmMvdHlwZTQyL2Rlc2NyaXAubW1zOiBOZXcgZmlsZXMuCgkqIGRlc2NyaXAubW1zIChhbGwpOiBVcGRhdGVkLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBGaXggdHlwbyB3aGljaCBwcmV2ZW50ZWQKCWNvbXBpbGF0aW9uLgoJKiBzcmMvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDUtMjggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGUsCglhbWlnYS9pbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBVcGRhdGVkIHRvIGluY2x1ZGUKCXN1cHBvcnQgZm9yIEJERiBhbmQgVHlwZTQyIGRyaXZlcnMuCgoJKiBkb2NzL21vZHVsZXMudHh0OiBVcGRhdGVkLgoKMjAwNS0wNS0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGluZyBmaWxlIGZvciBuZXh0IHJlbGVhc2UgKDIuMS4xKS4KCgkqIHNyYy9iZGYvYmRmbGliLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHhmODYuaCwgc3JjL2Jhc2UvZnR4Zjg2LmM6IE5ldyBmaWxlcy4KCVRoZXkgcHJvdmlkZSBhIG5ldyBBUEkgKEZUX0dldF9YMTFfRm9udF9Gb3JtYXQpIHRvIHJldHJpZXZlIGFuCglYMTEtY29tcGF0aWJsZSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZm9udCBmb3JtYXQgb2YgYSBnaXZlbiBmYWNlLgoJVGhpcyB3YXMgcHV0IGluIGEgbmV3IG9wdGlvbmFsIGJhc2Ugc291cmNlIGZpbGUsIGNvcnJlc3BvbmRpbmcgdG8gYQoJbmV3IHB1YmxpYyBoZWFkZXIgKG5hbWVkIEZUX1hGUkVFODZfSCBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNob3VsZAoJb25seSBiZSB1c2VkIHdpdGhpbiB0aGUgWEZyZWU4NiBmb250IHNlcnZlciBJTU8pLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfWEZSRUU4Nl9IKTogTmV3IG1hY3JvIChub3QKCWRvY3VtZW50ZWQgeWV0KS4KCgkqIHNyYy9iYXNlL2Z0dHlwZTEuYzogTmV3IGZpbGUsIHByb3ZvZGluZyB0d28gbmV3IEFQSSBmdW5jdGlvbnMKCShGVF9HZXRfUFNfRm9udF9JbmZvIGFuZCBGVF9IYXNfUFNfR2x5cGhfTmFtZXMpLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5taywgc3JjL2Jhc2UvZGVzY3JpcC5tbXM6CglVcGRhdGluZyBidWlsZCBjb250cm9sIGZpbGVzIGZvciB0aGUgbmV3IGZpbGVzICJmdHhmODYuYyIgYW5kCgkiZnR0eXBlMS5jIiBpbiBzcmMvYmFzZS4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9ibHVlc19zY2FsZV96b25lcyk6IEZpeGVkIGEgYnVnIHRoYXQKCXByZXZlbnRlZCBmYW1pbHkgYmx1ZSB6b25lcyBzdWJzdGl0dXRpb24gZnJvbSBoYXBlbm5pbmcgY29ycmVjdGx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGJkZi5oIEZUX0dldF9CREZfQ2hhcnNldF9JRCk6IEFkZGluZwoJZG9jdW1lbnRhdGlvbiBjb21tZW50LgoKMjAwMi0wNS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRuYW1lcy5jIChGVF9HZXRfU2ZudF9OYW1lKTogRG9uJ3QgdXNlIEZUX1NUUkVBTV9SRUFEX0FUCglidXQgRlRfU1RSRUFNX1JFQUQuCglEZWNsYXJlIGBzdHJlYW0nIHZhcmlhYmxlLgoKCSogc3JjL2JkZi9iZGZsaWIuYyAoX2JkZl9wYXJzZV9nbHlwaHMpOiBSZXBsYWNlIGZsb2F0aW5nIHBvaW50IG1hdGgKCXdpdGggY2FsbHMgdG8gYEZUX011bERpdicuCgoyMDAyLTA1LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4aW5nIHRoZSBTRk5UIG5hbWUgdGFibGUgbG9hZGVyIHRvIHN1cHBvcnQgdmFyaW91cyBidWdneSBmb250cy4KCUl0IG5vdyBpZ25vcmVzIGVtcHR5IG5hbWUgZW50cmllcywgZW50cmllcyB3aXRoIGludmFsaWQgcG9pbnRlcgoJT2Zmc2V0cyBhbmQgY2VydGFpbiBmb250cyBjb250YWluaW5nIHRhYmxlcyB3aXRoIGJyb2tlbgoJInN0b3JhZ2VPZmZzZXQiIGZpZWxkcy4KCglOYW1lIHN0cmluZ3MgYXJlIG5vdyBsb2FkZWQgb24gZGVtYW5kLCB3aGljaCByZWR1Y2VzIHRoZSBtZW1vcnkKCXJlcXVpcmVtZW50cyBmb3IgYSBnaXZlbiBGVF9GYWNlIHRyZW1lbmRvdXNseSAoZm9yIGV4YW1wbGUsIHRoZSBuYW1lCgl0YWJsZSBvZiBBcmlhbC50dGYgaXMgYWJvdXQgMTBLYiBhbmQgY29udGFpbnMgNzAgbmFtZXMpLgoKCVRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4LiAgVGhlIHdob2xlIG5hbWUgdGFibGUgbG9hZGVyIGFuZCBpbnRlcmZhY2UKCXdpbGwgYmUgcmV3cml0dGVuIGluIGEgbXVjaCBtb3JlIGNsZWFubHkgd2F5IHNob3J0bHksIG9uY2UgQ1NFSCBoYXZlCgliZWVuIGludHJvZHVjZWQgaW4gdGhlIHNvdXJjZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfTmFtZUVudHJ5UmVjKTogQ2hhbmdlCgl0eXBlIG9mIGBzdHJpbmdPZmZzZXQnIHRvIEZUX1VMb25nLgoJKFRUX05hbWVUYWJsZVJlYyk6IENoYW5nZSB0eXBlIG9mIGBudW1OYW1lUmVjb3JkcycgYW5kCglgc3RvcmFnZU9mZnNldCcgdG8gRlRfVUludC4KCVJlcGxhY2UgYHN0b3JhZ2UnIHdpdGggYHN0cmVhbScuCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IExvYWQgbmFtZSBvbiBkZW1hbmQuCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IERpdHRvLgoJTWFrZSBjb2RlIG1vcmUgcm9idXN0LgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoVFRfTmFtZUVudHJ5X0NvbnZlcnRGdW5jKTogTmV3IHR5cGVkZWYuCgkodHRfZmFjZV9nZXRfbmFtZSk6IFVzZSBpdC4KCU1ha2UgY29kZSBtb3JlIHJvYnVzdC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBVc2UgYHN0YXRpYycgZm9yIGFycmF5cy4KCUhhbmRsZSBpbnZhbGlkIGBzdG9yYWdlT2Zmc2V0JyBkYXRhIGJldHRlci4KCVNldCBsZW5ndGggZmllbGRzIHRvIHplcm8gZm9yIGludmFsaWQgb3IgaWdub3JlZCBkYXRhLgoJUmVtb3ZlIGNvZGUgd2l0aGluIEZUX0RFQlVHX0xFVkVMX1RSQUNFLgoJKFRUX0ZyZWVfTmFtZXMpOiBVcGRhdGVkLgoKMjAwMi0wNS0yNCAgVGltIE1vb25leSAgPGVuY2hhbnRlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBidWlsZHMvdW5peC9mdC1tdW5tYXAubTQ6IE5ldyBmaWxlLCBleHRyYWN0ZWQgRlRfTVVOTUFQX0RFQ0wgYW5kCglGVF9NVU5NQVBfUEFSQU0gZnJvbSBhY2xvY2FsLm00IGludG8gaGVyZSwgc28gYWNsb2NhbC5tNCBjYW4gYmUKCXJlYnVpbHQgZnJvbSBzb3VyY2VzLiAgU2V0IG1hY3JvIHNlcmlhbCB0byAxLCBhbmQgdXNlIHRoaXJkIGFyZ3VtZW50Cgl0byBBQ19ERUZJTkUgZm9yIG91ciB0d28gY3VzdG9tIHN5bWJvbHMsIHNvIGZ0Y29uZmlnLmluIGNvdWxkIG9uZSBkYXkKCWJlIHJlYnVpbHQgd2l0aCBhdXRvaGVhZGVyIChub3QgcmVjb21tZW5kZWQgbm93LCBmdGNvbmZpZy5pbiBpcyBhCgljdXN0b20gc291cmNlIGZpbGUpCgoyMDAyLTA1LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9CRVpJRVJfSCk6IFJlbW92ZWQuCgkoRlRfQkRGX0gpOiBOZXcgbWFjcm8gZm9yIGFjY2Vzc2luZyBgZnRiZGYuaCcuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IEZpeCB0eXBvLgoKMjAwMi0wNS0yMSAgTWFydGluIE11c2tlbnMgIDxtbXVza2Vuc0BhdXJlbG9uLmNvbT4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFSYWRpeCk6IE5ldyBmdW5jdGlvbi4KCSh0MV90b2ludCk6IFVzZSBpdCB0byBoYW5kbGUgbnVtYmVycyBpbiByYWRpeCBmb3JtYXQuCgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEFkZCBkdW1teQoJZm9yIHVuZG9jdW1lbnRlZCwgb2Jzb2xldGUgb3Bjb2RlIDE1LgoKMjAwMi0wNS0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2JkZi9iZGZsaWIuYzogUmVtb3ZlZCBjb21waWxlciB3YXJuaW5nLCBhbmQgY2hhbmdlZCBhbGwgdGFibGVzCgl0byB0aGUgInN0YXRpYyBjb25zdCIgc3RvcmFnZSBzcGVjaWZpZXIgKGluc3RlYWQgb2Ygc2ltcGx5Cglgc3RhdGljJykuCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMgKGhleHZhbCk6IFVzZSBtb3JlIGVmZmljaWVudCBjb2RlLgoJUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9iZGYvYmRmZHJpdnIuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0YmRmLmgsIHNyYy9iYXNlL2Z0YmRmLmMsCglzcmMvYmFzZS9kZXNjcmlwLm1tcywgc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWsKCShGVF9HZXRfQkRGX0NoYXJzZXRfSUQpOiBOZXcgQVBJIHRvIHJldHJpZXZlIEJERi1zcGVjaWZpYyBzdHJpbmdzCglmcm9tIGEgZmFjZS4gIFRoaXMgaXMgbXVjaCBjbGVhbmVyIHRoYW4gYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCB0eXBlcwoJIkJERl9QdWJsaWNfRmFjZSIgZGVmaW5lZCBpbiBGVF9JTlRFUk5BTF9CREZfVFlQRVNfSC4KCjIwMDItMDUtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iZGYvUkVBRE1FOiBNZW50aW9uIE1pY3Jvc29mdCdzIFNCSVQgdG9vbC4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLAoJc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMsIHNyYy90eXBlMS90MWRyaXZlci5jLAoJc3JjL3dpbmZvbnRzL3dpbmZudC5jLCBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsIHNyYy9iZGYvYmRmZHJpdnIuYwoJW0ZUX0NPTkZJR19PUFRJT05fRFlOQU1JQ19EUklWRVJTXTogQ29tcGxldGVseSByZW1vdmVkLiAgSXQgaGFzCgliZWVuIG5ldmVyIHVzZWQuCgoyMDAyLTA1LTIxICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4uCgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IHMvVDQyX0VOQ09ESU5HX1RZUEVfL1QxX0VOQ09ESU5HX1RZUEVfLy4KCShwYXJzZV9mb250X21hdHJpeCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlLgoJKHBhcnNlX3NmbnRzKTogSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcy4KCSh0NDJfZHJpdmVyX2NsYXNzKSBbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFVzZQoJZnRfbW9kdWxlX2RyaXZlcl9oYXNfaGludGVyIGNvbmRpdGlvbmFsbHkuCglNb3ZlZCBzb21lIHR5cGUgNDIgc3BlY2lmaWMgc3RydWN0dXJlIGRlZmluaXRpb25zIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDQydHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfVDQyX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNzYml0cy5oIChGVENfU0JpdCk6IEFkZGVkIGEgbmV3IGZpZWxkCglgbnVtX2dyYXlzJyBmb3Igc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHVzZWQgZ3JheSBsZXZlbHMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX2xvYWQpOiBJbml0aWFsaXplIGl0LgoKMjAwMi0wNS0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUFkZGluZyBhIGRyaXZlciBmb3IgQkRGIGZvbnRzIHdyaXR0ZW4gYnkgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpCgk8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4uICBIZWF2aWx5IG1vZGlmaWVkIGJ5IG1lIHRvCgliZXR0ZXIgYWRhcHQgaXQgdG8gRnJlZVR5cGUsIHJlbW92aW5nIHVubmVlZGVkIHN0dWZmLiAgQWRkaXRpb25hbGx5LAoJaXQgbm93IHN1cHBvcnRzIE1hcmsgTGVpc2hlcidzIEJERiBleHRlbnNpb24gZm9yIGFudGktYWxpYXNlZAoJYml0bWFwIGdseXBocyB3aXRoIDIgYW5kIDQgYnBwLgoKCSogc3JjL2JkZi8qOiBOZXcgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2JkZnR5cGVzLmg6IE5ldyBmaWxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogQWRkZWQgQkRGIGRyaXZlciBjb21wb25lbnRzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyZGVmLmg6IEFkZGVkIGVycm9yIGNvZGVzIGZvciBCREYgZHJpdmVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvSmFtZmlsZTogVXBkYXRlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oIChGVF9JTlRFUk5BTF9CREZfVFlQRVNfSCk6CglOZXcgbWFjcm8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oIChmdF9zcHJpbnRmKTogTmV3IGFsaWFzIGZvcgoJc3ByaW50Zi4KCjIwMDItMDUtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnR0cmFjZS5oOiBBZGRlZCBUeXBlIDQyIGRyaXZlcgoJY29tcG9uZW50LgoJKiBzcmMvdHlwZTQyL3Q0MmRyaXZyLmM6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfUENGX1RZUEVTX0gpOgoJTmV3IG1hY3JvLgoKMjAwMi0wNS0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3R5cGU0Mi9KYW1maWxlOiBOZXcgZmlsZS4KCjIwMDItMDUtMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGRpbmcgYSBkcml2ZXIgZm9yIFR5cGU0MiBmb250cyB3cml0dGVuIGJ5IFJvYmVydG8gQWxhbWVkYQoJPG9qYW5jYW5vQGdlZWttYWlsLmRlPi4KCgkqIHNyYy90eXBlNDIvKjogTmV3IGRyaXZlci4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRtb2R1bGUuaCwgc3JjL0phbWZpbGU6IFVwZGF0ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmggKGZ0X3hkaWdpdCwgZnRfbWVtY21wLAoJZnRfYXRvaSk6IE5ldyBhbGlhc2VzIGZvciB4ZGlnaXQsIG1lbWNtcCwgYW5kIGF0b2ksIHJlc3BlY3RpdmVseS4KCjIwMDItMDUtMTIgIE93ZW4gVGF5bG9yICA8b3RheWxvckByZWRoYXQuY29tPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvb2tVcF9UYWJsZSk6IFByb3RlY3QgYWdhaW5zdCB0YWJsZXMKCXdpdGggYSB6ZXJvIGxlbmd0aCB2YWx1ZS4KCjIwMDItMDUtMTIgIE1pY2hhZWwgUGZlaWZmZXIgIDxtaWNoYWVsLnBmZWlmZmVyQHV0YW5ldC5hdD4KCgkqIGJ1aWxkcy9iZW9zL2Jlb3MubWs6IEluY2x1ZGUgYGxpbmstc3RkLm1rJy4KCjIwMDItMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuaCAoVDFfTG9hZGVyKTogUmVuYW1lZCB0by4uLgoJKFQxX0xvYWRlclJlYyk6IFRoaXMuCgkoVDFfTG9hZGVyKTogTm93IHBvaW50ZXIgdG8gVDFfTG9hZGVyUmVjLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmM6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCwgc3JjL3R5cGUxL3QxbG9hZC5jLAoJc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJcy9UMV9FTkNPRElOR19UWVBFX0VYUE9SVC9UMV9FTkNPRElOR19UWVBFX0VYUEVSVC8uCgoyMDAyLTA1LTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUU6IEFkZCBhIG5vdGUgcmVnYXJkaW5nIGxpYnR0ZiB2cy4gbGliZnJlZXR5cGUuCgoyMDAyLTA1LTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJRnJlZVR5cGUgMiBjYW4gbm93IGJlIGJ1aWx0IGluIGFuIGV4dGVybmFsIGRpcmVjdG9yeSB3aXRoIHRoZQoJY29uZmlndXJlIHNjcmlwdCBhbHNvLgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChJTkNMVURFUyk6IEFkZCBgT0JKX0RJUicuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWsgKGhhdmVfbWspOiBOZXcgdmFyaWFibGUgdG8gdGVzdCBmb3IKCWV4dGVybmFsIGJ1aWxkLgoJKHVuaXgtZGVmLm1rKTogRGVmaW5lZCBhY2NvcmRpbmcgdG8gdmFsdWUgb2YgYGhhdmVfbWsnLgoJKiBidWlsZHMvdW5peC91bml4Lm1rIChoYXZlX21rKTogTmV3IHZhcmlhYmxlIHRvIHRlc3QgZm9yCglleHRlcm5hbCBidWlsZC4KCVNlbGVjdCBpbmNsdWRlIHBhdGhzIGZvciB1bml4LWRlZi5tayBhbmQgdW5peC1jYy5tayBhY2NvcmRpbmcKCXRvIHZhbHVlIG9mIGBoYXZlX21rJy4KCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW4gKE9CSl9CVUlMRCk6IE5ldyB2YXJpYWJsZS4KCShESVNUQ0xFQU4pOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKExJQlRPT0wpOiBEZWZpbmUgZGVmYXVsdCB2YWx1ZSBvbmx5CglpZiBub3QgeWV0IGRlZmluZWQuCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBVc2UgYE9CSl9CVUlMRCcgZm9yIGluc3RhbGxpbmcKCWZyZWV0eXBlLWNvbmZpZy4KCgkqIGNvbmZpZ3VyZTogRG9uJ3QgZGVwZW5kIG9uIGJhc2ggZmVhdHVyZXMuCgkoZnQyX2RpciwgYWJzX2N1cnJfZGlyLCBhYnNfZnQyX2Rpcik6IE5ldyB2YXJpYWJsZXMgKGNvZGUKCXBhcnRpYWxseSB0YWtlbiBmcm9tIEF1dG9jb25mKS4KCUJ1aWxkIGEgZHVtbXkgTWFrZWZpbGUgaWYgbm90IGJ1aWxkaW5nIGluIHNvdXJjZSB0cmVlLgoKCSogZG9jcy9JTlNUQUxMOiBEb2N1bWVudCBpdC4KCjIwMDItMDUtMDQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpOiBGaW5hbGx5IGZpeGluZyB0aGUgbGFzdAoJYnVnIHRoYXQgcHJldmVudGVkIEZyZWVUeXBlIDIueCBhbmQgRnJlZVR5cGUgMS54IHRvIHByb2R1Y2UKCWJpdC1ieS1iaXQgaWRlbnRpY2FsIG1vbm9jaHJvbWUgZ2x5cGggYml0bWFwcyB3aXRoIG5hdGl2ZSBUcnVlVHlwZQoJaGludGluZy4gIFRoZSBjdWxwcml0IHdhcyBhIHNpbmdsZS1iaXQgZmxhZyB0aGF0IHdhc24ndCBzZXQKCWNvcnJlY3RseSBieSB0aGUgVHJ1ZVR5cGUgZ2x5cGggbG9hZGVyLgoKCSogc3JjL290bGF5b3V0L290bGF5b3V0LmgsIHNyYy9vdGxheW91dC9vdGxiYXNlLmMsCglzcmMvb3RsYXlvdXQvb3RsYmFzZS5oLCBzcmMvb3RsYXlvdXQvb3RsY29uZi5oLAoJc3JjL290bGF5b3V0L290bGdkZWYuYywgc3JjL290bGF5b3V0L290bGdkZWYuaCwKCXNyYy9vdGxheW91dC9vdGxncG9zLmMsIHNyYy9vdGxheW91dC9vdGxncG9zLmgsCglzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5jLCBzcmMvb3RsYXlvdXQvb3RsZ3N1Yi5oLAoJc3JjL290bGF5b3V0L290bGpzdGYuYywgc3JjL290bGF5b3V0L290bGpzdGYuaCwKCXNyYy9vdGxheW91dC9vdGx0YWJsZS5jLCBzcmMvb3RsYXlvdXQvb3RsdGFibGUuaCwKCXNyYy9vdGxheW91dC9vdGx0YWdzLmg6IE5ldyBPcGVuVHlwZSBMYXlvdXQgc291cmNlIGZpbGVzLiAgVGhlCgltb2R1bGUgaXMgc3RpbGwgaW5jb21wbGV0ZS4KCjIwMDItMDUtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAodHRfY21hcDRfY2hhcl9pbmRleCk6IEZpeCBzZXJpb3VzIHR5cG8KCSgweEZGRlUgLT4gMHhGRkZGVSkuCgoyMDAyLTA1LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0lOU1RBTEw6IEZpeCBVUkwgb2YgbWFrZXBwLgoKMjAwMi0wNS0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X2ZhY2VfZ2V0X25hbWUpOiBGaXhpbmcgYSBidWcgdGhhdCBjYXVzZWQKCUZyZWVUeXBlIHRvIGNyYXNoIHdoZW4gY2VydGFpbiBicm9rZW4gZm9udHMgKGUuZy4gImh5YTZnYi50dGYiKQoJd2VyZSBvcGVuZWQuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9OYW1lcyk6IEFwcGxpZWQgYSBzbWFsbCB3b3JrLWFyb3VuZCB0bwoJbWFuYWdlIGZvbnRzIGNvbnRhaW5pbmcgYSBicm9rZW4gbmFtZSB0YWJsZSAoZS5nLiAiaHlhNmdiLnR0ZiIpLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF92YWxpZGF0ZSk6IEZpeGVkIG92ZXItcmVzdHJpY3RpdmUKCXZhbGlkYXRpb24gdGVzdC4gIFRoZSBjaGFybWFwIHZhbGlkYXRvciBub3cgYWNjZXB0cyBvdmVybGFwcGluZwoJcmFuZ2VzIGluIGZvcm1hdCA0IGNoYXJtYXBzLgoKCSogc3JjL3NmbnQvdHRjbWFwMC5jICh0dF9jbWFwNF9jaGFyX2luZGV4KTogU3dpdGNoZWQgdG8gYSBiaW5hcnkKCXNlYXJjaCBhbGdvcml0aG0uICBDZXJ0YWluIGZvbnRzIGNvbnRhaW4gbW9yZSB0aGFuIDE3MCBkaXN0aW5jdAoJc2VnbWVudHMhCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdHN0ZGxpYi5oOiBBZGRpbmcgYW4gYWxpYXMgZm9yIHRoZSBgZXhpdCcKCWZ1bmN0aW9uLiAgVGhpcyB3aWxsIGJlIHVzZWQgaW4gdGhlIG5lYXIgZnV0dXJlIHRvIHBhbmljIGluIGNhc2Ugb2YKCXVuZXhwZWN0ZWQgZXhjZXB0aW9uICh3aGljaCBzaG91bGRuJ3QgaGFwcGVuIGluIHRoZW9yeSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0aGFzaC5oLCBzcmMvYmFzZS9mdGhhc2guYzogTmV3IGZpbGVzLgoJVGhpcyBpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIG9mIGR5bmFtaWMgaGFzaCB0YWJsZXMgdXNpbmcgYSBsaW5lYXIKCWFsZ29yaXRobSAodG8gZ2V0IHJpZCBvZiBgc3RhbGxzJyBkdXJpbmcgcmVzaXplcykuICBJbiB0aGUgZnV0dXJlCgl0aGlzIHdpbGwgYmUgdXNlZCBpbiBhdCBsZWFzdCB0aHJlZSBwYXJ0cyBvZiB0aGUgbGlicmFyeTogdGhlIGNhY2hlCglzdWItc3lzdGVtLCB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0sIGFuZCB0aGUgbWVtb3J5IGRlYnVnZ2VyLgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCAoRlRfSU5URVJOQUxfSEFTSF9ILAoJRlRfSU5URVJOQUxfT0JKRUNUX0gpOiBOZXcgbWFjcm9zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNvcmUuaDogTmV3IGZpbGUgdG8gZ3JvdXAgYWxsIG5ldwoJZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBleGNlcHRpb24gaGFuZGxpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiAgSXQKCWlzIHZlcnkgbGlrZWx5IHRoYXQgdGhpcyBmaWxlIHdpbGwgZGlzYXBwZWFyIG9yIGJlIHJlbmFtZWQgaW4gdGhlCglmdXR1cmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2JqZWN0LmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzeXNtZW0uaDoKCUFkZGluZyBjb21tZW50cyB0byBiZXR0ZXIgZXhwbGFpbiB0aGUgb2JqZWN0IHN1Yi1zeXN0ZW0gYXMgd2VsbCBhcwoJdGhlIG5ldyBtZW1vcnkgbWFuYWdlciBpbnRlcmZhY2UuCgoyMDAyLTA0LTMwICBXZW5saW4gSW5zdGl0dXRlIChUb20gQmlzaG9wKSAgPHdlbmxpbkB3ZW5saW4uY29tPgoKCSogc3JjL2Jhc2UvZnRtYWMuYyAocDJjX3N0cik6IFJlbW92ZWQuCgkoZmlsZV9zcGVjX2Zyb21fcGF0aCkgW1RBUkdFVF9BUElfTUFDX0NBUkJPTl06IEFkZGVkIHN1cHBvcnQgZm9yCglPUyBYLgoJKGlzX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yIE9TIFguCglIYW5kbGUgYG5hbWVMZW4nIDw9IDYgYWxzby4KCShwYXJzZV9mb25kKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmFtZV90YWJsZScuCglVc2UgZnVuY3Rpb25hbGl0eSBvZiBvbGQgcDJjX3N0ciBkaXJlY3RseS4KCUFkZCBzYWZldHkgY2hlY2tzLgoJKHJlYWRfbHdmbik6IEluaXRpYWxpemUgYHNpemVfcCcuCglDaGVjayBmb3Igc2l6ZV9wID09IE5VTEwuCgkobmV3X21lbW9yeV9zdHJlYW0sIG9wZW5fZmFjZV9mcm9tX2J1ZmZlcik6IFVwZGF0ZWQgdG8gRnJlZVR5cGUgMi4xLgoJKEZUX05ld19GYWNlX0Zyb21fTFdGTik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG1lbW9yeScuCglSZW1vdmUgc29tZSBkZWFkIGNvZGUuCgkoRlRfTmV3X0ZhY2VfRnJvbV9TRk5UKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3RyZWFtJy4KCShGVF9OZXdfRmFjZV9Gcm9tX2Rmb250KSBbVEFSR0VUX0FQSV9NQUNfQ0FSQk9OXTogRGVmaW5lIG9ubHkgZm9yCglPUyBYLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGVycm9yJy4KCShSZXNvdXJjZUZvcmtTaXplKTogTmV3IGZ1bmN0aW9uLgoJKEZUX05ld19GYWNlKTogVXNlIGl0LgoJSGFuZGxlIGVtcHR5IHJlc291cmNlIGZvcmtzLgoJQ29uZGl0aW9uYWxpemUgc29tZSBjb2RlIGZvciBPUyBYLgoJQWRkIGNvZGUgdG8gY2FsbCBub3JtYWwgbG9hZGVyIGFzIGEgZmFsbGJhY2suCgoyMDAyLTA0LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJYGludGVyZmFjZScgaXMgcmVzZXJ2ZWQgb24gdGhlIE1hYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCXNyYy9iYXNlL2Z0b3V0bG4uYzogcy9pbnRlcmZhY2UvZnVuY19pbnRlcmZhY2UvLgoJKiBzcmMvYmFzZS9mdGJib3guYyAoRlRfT3V0bGluZV9HZXRfQkJveCk6CglzL2ludGVyZmFjZS9iYm94X2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZmxvYWQuaDoKCXMvaW50ZXJmYWNlL3BzbmFtZXNfaW50ZXJmYWNlLy4KCSogc3JjL2NpZC9jaWRyaXZlci5jOiBzL2ludGVyZmFjZS9jaWRfaW50ZXJmYWNlLy4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogcy9pbnRlcmZhY2UvbW9kdWxlX2ludGVyZmFjZS8uCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBzL2ludGVyZmFjZS9mdW5jX2ludGVyZmFjZS8uCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jOiBzL2ludGVyZmFjZS90dF9pbnRlcmZhY2UvLgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYzogcy9pbnRlcmZhY2UvdDFfaW50ZXJmYWNlLy4KCglTb21lIG1vcmUgdmFyaWFibGUgcmVuYW1lcyB0byBhdm9pZCB0cm91YmxlcyBvbiB0aGUgTWFjLgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOgoJcy9Vbmtub3dufEFzY2VuZGluZ3xEZXNjZW5kaW5nfEZsYXQvXDFfU3RhdGUvLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogcy9UU2Nhbi9UQ29vcmQvLgoKCU90aGVyIGNoYW5nZXMgZm9yIHRoZSBNYWMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBEZWZpbmUgRlRfTUFDSU5UT1NIIGZvcgoJTWFjIHBsYXRmb3Jtcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IHMvbWFjaW50b3NoL0ZUX01BQ0lOVE9TSC8uCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBNYWtlIGBwaXRjaCcgYWx3YXlzCglhbiBldmVuIG51bWJlci4KCjIwMDItMDQtMjkgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGRlc2NyaXAubW1zIChhbGwpOiBBZGQgcGZyIGRyaXZlci4KCjIwMDItMDQtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZyZXJyb3IuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRtb2RlcnIuaDogQWRkIFBGUiBlcnJvciBjb2Rlcy4KCSogc3JjL3Bmci9wZnJnbG9hZC5jOiBJbmNsdWRlIHBmcmVycm9yLmguCglVc2UgUENGIGVycm9yIGNvZGVzLgoJKHBmcl9leHRyYV9pdGVtX2xvYWRfc3RlbV9zbmFwcyk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoJKiBzcmMvcGZyL3Bmcmdsb2FkLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2V4dHJhX2l0ZW1fbG9hZF9iaXRtYXBfaW5mbywgcGZyX2dseXBoX2xvYWRfc2ltcGxlLAoJcGZyX2dseXBoX2xvYWRfY29tcG91bmQpOiBGaXggZGVidWcgbWVzc2FnZS4KCSogc3JjL3Bmci9wZnJvYmpzLmM6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCVVzZSBQQ0YgZXJyb3IgY29kZXMuCgkocGZyX2ZhY2VfaW5pdCk6IFJldHVybiBQRlJfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQuCgkqIHNyYy9wZnIvcnVsZXMubWsgKFBGUl9EUlZfSCk6IEluY2x1ZGUgcGZyZXJyb3IuaC4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9GYWNlX0luaXQpIFshRlRfQ09ORklHX09QVElPTl9VU0VfQ01BUFNdOgoJYHJvb3QnIC0+IGBmYWNlLT5yb290Jy4KCSogc3JjL3NmbnQvdHRjbWFwMC5jIChUVF9CdWlsZF9DTWFwcykgWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9DTUFQU106CglSZW1vdmVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERlY2xhcmUgVFRfQnVpbGRfQ01hcHMgb25seSBmb3IKCUZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLgoKMjAwMi0wNC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19jYWNoZV9sb29rdXApLAoJc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfZmFtaWx5X2luaXQpLAoJc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MpLAoJc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKEZUQ19TQml0X0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCglzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCk6IFVzZSBGVENfRXJyXyouCgkoRlRDX0ltYWdlQ2FjaGVfTG9va3VwKTogRml4IGhhbmRsaW5nIG9mIGludmFsaWQgYXJndW1lbnRzLgoKMjAwMi0wNC0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBTZXQgYHZlcnNpb25faW5mbycgdG8gOToxOjMgKEZUMgoJdmVyc2lvbiAyLjAuOSBoYXMgOTowOjMpLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkICh1c2luZyBhdXRvY29uZiAyLjUzKS4KCjIwMDItMDQtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wZnIvcGZybG9hZC5jIChwZnJfZXh0cmFfaXRlbXNfZmFyc2UpOiBGaXggZGVidWcgbWVzc2FnZS4KCShwZnJfcGh5X2ZvbnRfbG9hZCk6IHMvc2l6ZS9TaXplLyBmb3IgbG9jYWwgdmFyaWFibGUgdG8gYXZvaWQKCWNvbXBpbGVyIHdhcm5pbmcuCgkqIHNyYy9wZnIvcGZyb2Jqcy5jIChwZnJfZmFjZV9pbml0KTogRml4IGRlYnVnIG1lc3NhZ2UuCgkocGZyX3Nsb3RfbG9hZCk6IFJlbW92ZSByZWR1bmRhbnQgbG9jYWwgdmFyaWFibGUuCgoyMDAyLTA0LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkaW5nIGEgUEZSIGZvbnQgZHJpdmVyIHRvIHRoZSBGcmVlVHlwZSBzb3VyY2VzLiAgTm90ZSB0aGF0IGl0Cglkb2Vzbid0IHN1cHBvcnQgZW1iZWRkZWQgYml0bWFwcyBvciBrZXJuaW5nIHRhYmxlcyB5ZXQuCgoJc3JjL3Bmci8qOiBOZXcgZmlsZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmgsIHNyYy9KYW1lZmlsZTogVXBkYXRlZC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmggKFQxX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCk6IEZpeGVkIGluY29ycmVjdCBwYXJhbWV0ZXIgc2lnbi1uZXNzIGluIGNhbGxiYWNrCglmdW5jdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCAoRlRfTUVNX1pFUk8sIEZUX1pFUk8pOiBOZXcKCW1hY3Jvcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfTkVYVF9PRkYzLCBGVF9ORVhUX1VPRkYzLAoJRlRfTkVYVF9PRkYzX0xFLCBGVF9ORVhUX1VPRkYzX0xFKTogTmV3IG1hY3JvcyB0byBwYXJzZSBpbi1tZW1vcnkKCTI0LWJpdCBpbnRlZ2Vycy4KCjIwMDItMDQtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jLAoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0ZGVidWcuYzogVmVyc2lvbiAyLjEuMCBjb3VsZG4ndCBiZSBsaW5rZWQKCWFnYWluc3QgYXBwbGljYXRpb25zIGluIFdpbjMyIGFuZCBBbWlnYSBidWlsZHMgZHVlIHRvIGNoYW5nZXMgdG8KCSJzcmMvYmFzZS9mdGRlYnVnLmMiIHRoYXQgd2VyZSBub3QgcHJvcGVybHkgcHJvcGFnYXRlZCB0bwoJImJ1aWxkcy93aW4zMiIgYW5kICJidWlsZHMvYW1pZ2EiLiAgVGhpcyBoYXMgYmVlbiBmaXhlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmplY3QuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleGNlcHQuaCwgaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLAoJaW5jbHVkZS9mcmVldHlwZS9mdHN5c2lvLmgsIHNyYy9iYXNlL2Z0c3lzbWVtLmMsIHNyYy9iYXNlL2Z0c3lzaW8uYzoKCU5ldyBleHBlcmltZW50YWwgZmlsZXMuCgoyMDAyLTA0LTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjEuMCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAyLTA0LTE3ICBNaWNoYWVsIEphbnNzb24gIDxtamFuQGVtMi1zb2x1dGlvbnMuY29tPgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfQ29tcHV0ZV9NYXhfQWR2YW5jZSk6IEZpeGVkIGEgc21hbGwgYnVnCgl0aGF0IHByZXZlbnRlZCB0aGUgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBjb3JyZWN0IHZhbHVlLgoKMjAwMi0wNC0xNiAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmcmVhZCAocGNmX2dldF9hY2NlbGwpOiBGaXggcGFyc2luZyBvZiBhY2NlbGVyYXRvcgoJdGFibGVzLgoKMjAwMi0wNC0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9GVEwudHh0OiBGb3JtYXR0aW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogUmVkdWNlIHRoZSBzaXplIG9mIHRoZQoJcmVuZGVyIHBvb2wgZnJvbSAzMmtCeXRlIHRvIDE2a0J5dGUuCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX3NlZWtfdG9fdGFibGVfdHlwZSk6IFJlbW92ZSBjb21waWxlcgoJd2FybmluZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX01BWF9FWFRFTlNJT05TKTogUmVtb3ZlZC4KCgkqIGRvY3MvQ0hBTkdFUzogUHJlcGFyaW5nIDIuMS4wIHJlbGVhc2UuCgoyMDAyLTA0LTEzICBXZXJuZXIgTEVNQkVSRyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IHMvcmFuZC9SYW5kLyB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCjIwMDItMDQtMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIFJFQURNRS5VTlg6IFVwZGF0ZWQgdGhlIFVuaXgtc3BlY2lmaWMgcXVpY2stY29tcGlsYXRpb24gZ3VpZGUgdG8KCXdhcm4gYWJvdXQgdGhlIEdOVSBNYWtlIHJlcXVpcmVtZW50IGF0IGNvbXBpbGUgdGltZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0c3RkbGliLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oLAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCgoJc3JjL2F1dG9oaW50L2Fob3B0aW0uYywKCglzcmMvYmFzZS9mdGRiZ21lbS5jLCBzcmMvYmFzZS9mdGRlYnVnLmMsIHNyYy9iYXNlL2Z0bWFjLmMsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzeXN0ZW0uYywKCglzcmMvY2FjaGUvZnRjaW1hZ2UuYywgc3JjL2NhY2hlL2Z0Y3NiaXRzLmMsCgoJc3JjL2NmZi9jZmZkcml2ZXIuYywgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLAoKCXNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvY2lkL2NpZHBhcnNlLmMsIHNyYy9jaWQvY2lkcml2ZXIuYywKCglzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCglzcmMvcHNhdXgvdDFjbWFwLmMsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoKCXNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywKCglzcmMvcHNuYW1lcy9wc21vZHVsZS5jLAoKCXNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywKCglzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvc2ZudC90dGxvYWQuYywKCglzcmMvc21vb3RoL2Z0Z3JheXMuYywKCglzcmMvdHlwZTEvdDFhZm0uYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsCglzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGUxL3QxcGFyc2UuYywKCglidWlsZHMvdW5peC9mdGNvbmZpZy5pbiwgYnVpbGRzL3Ztcy9mdGNvbmZpZy5oLAoKCWJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdGRlYnVnLmM6CgoJQWRkZWQgdGhlIG5ldyBjb25maWd1cmF0aW9uIGZpbGUgImZ0c3RkbGliLmgiIHVzZWQgdG8gZGVmaW5lCglhbGlhc2VzIGZvciBhbGwgSVNPIEMgbGlicmFyeSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgZW5naW5lCgkoZS5nLiBzdHJsZW4sIHFzb3J0LCBzZXRqbXAsIGV0Yy4pLgoKCVRoaXMgZWFzZXMgdGhlIHBvcnRpbmcgb2YgRnJlZVR5cGUgMiB0byBlbnZpcm9ubWVudHMgbGlrZQoJWEZyZWU4NiBtb2R1bGVzL2V4dGVuc2lvbnMuCgoJQWxzbyByZW1vdmVkIG1hbnkgI2luY2x1ZGUgPHN0cmluZy5oPiwgI2luY2x1ZGUgPHN0ZGxpYi5oPiwgZXRjLgoJZnJvbSB0aGUgZW5naW5lJ3Mgc291cmNlcyB3aGVyZSB0aGV5IGFyZSBub3QgbmVlZGVkLgoKCSogc3JjL3NmbnQvdHRwb3N0LmM6IFVzZSBtYWNybyBuYW1lIGZvciBwc25hbWVzLmguCgoyMDAyLTA0LTEyICBWaW5jZW50IENhcm9uICA8di5jYXJvbkB6ZXJvZGV1eC5uZXQ+CgoJKiBjb25maWd1cmUsIGJ1aWxkcy9kZXRlY3QubWs6IFVwZGF0ZWQgdGhlIGJ1aWxkIHN5c3RlbSB0byBwcmludAoJYSB3YXJuaW5nIG1lc3NhZ2UgaW4gY2FzZSBHTlUgTWFrZSBpc24ndCB1c2VkIHRvIGJ1aWxkIHRoZSBsaWJyYXJ5LgoKMjAwMi0wNC0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVMsIEphbWZpbGUuaW46IFVwZGF0ZXMgZm9yIHRoZSAyLjEuMCByZWxlYXNlLgoKCSogZG9jcy9GVEwudHh0OiBVcGRhdGVkIGxpY2Vuc2UgdGV4dCB0byBwcm92aWRlIGEgcHJlZmVycmVkCglkaXNjbGFpbWVyIGFuZCBhZGp1c3QgY29weXJpZ2h0IGRhdGVzL2V4dGVudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2dseXBoLmg6IFJlbW92aW5nIG9ic29sZXRlIChhbmQKCWNvbmZ1c2luZykgY29tbWVudC4KCgkqIEphbWZpbGUuaW46IE5ldyBmaWxlLgoKMjAwMi0wNC0xMSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9obGluZSk6IE1pbm9yIG9wdGltaXphdGlvbi4KCjIwMDItMDQtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglGaXhlcyBmcm9tIHRoZSBzdGFibGUgYnJhbmNoOgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MpOgoJUmVtb3ZlZC4KCVtGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDU106IFJlbW92ZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgsIHNyYy9iYXNlL2Z0Y2FsYy5jCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkLgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoRlRfVmVjdG9yX0xlbmd0aCk6IENoYW5nZSBhbGdvcml0aG0gdG8gbWF0Y2gKCW91dHB1dCBvZiBGcmVlVHlwZSAxLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfc2NhbGVfd2lkdGhzKTogRml4ZWQgYSBzbWFsbAoJYnVnIHRoYXQgY3JlYXRlZCB1bi1ldmVuIHN0ZW0gd2lkdGhzIHdoZW4gaGludGluZyBQb3N0c2NyaXB0IGZvbnRzLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MXBhcnNlLmM6IDE2Yml0IGZpeGVzLgoKMjAwMi0wNC0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYzogMTZiaXQgZml4ZXMuCgkoVFRfTG9hZF9TaW1wbGVfR2x5cGgpOiBJbXByb3ZlIGRlYnVnIG1lc3NhZ2VzLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogMTZiaXQgZml4ZXMuCgkqIHNyYy90cnVldHlwZS90dG9ianMuYzogRGl0dG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLAoJc3JjL2NmZi9jZmZsb2FkLmgsIHNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3RydWV0eXBlL3R0aW50ZXJwLltjaF0sCglzcmMvc2ZudC90dHBvc3QuaDogcy9pbmRleC9pZHgvLgoKMjAwMi0wMy0zMSAgWWFvIFpoYW5nICA8eWFvekB2aWRhci5uaWFhYS5uaWguZ292PgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5jIChUVF9TaXplX0luaXQpOiBGaXggdHlwby4KCjIwMDItMDMtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdGxheW91dC9vdGxjb21tbi5jLCBzcmMvb3RsYXlvdXQvb3RsY29tbW4uaDogcy9pbmRleC9pZHgvLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmM6IERpdHRvLgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IERpdHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoVFRfR290b19UYWJsZV9GdW5jKTogUmVuYW1lZCB0byAuLi4KCShUVF9Mb2FkZXJfR290b1RhYmxlRnVuYyk6IFRoaXMuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRml4IGRlYnVnCgltZXNzYWdlcy4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNuYW1lc19pbnRlcmZhY2UpCglbIUZUX0NPTkZJR19PUFRJT05fQURPQkVfR0xZUEhfTElTVF06IEZpeCB0eXBvLgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF90YWJsZSk6IDE2Yml0IGZpeC4KCSogc3JjL3NmbnQvdHRjbWFwLmM6IDE2Yml0IGZpeGVzICgweEZGRkYgLT4gMHhGRkZGVSkuCgkqIHNyYy9zZm50L3R0Y21hcDAuYzogMTZiaXQgZml4ZXMuCgkoVFRfQnVpbGRfQ01hcHMpOiBTaW1wbGlmeSBkZWJ1ZyBtZXNzYWdlcy4KCSh0dF9jbWFwMTJfY2hhcl9uZXh0KTogRml4IG9mZnNldC4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMsIFRUX0xvYWRfQ01hcCk6IEZpeCBkZWJ1ZwoJbWVzc2FnZXMuCgkoVFRfTG9hZF9PUzIpOiAxNmJpdCBmaXguCgoyMDAyLTAzLTMwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaDogQWRkaW5nIGNvbW1lbnRzIHRvIHNvbWUgb2YKCXRoZSBUVF9GYWNlUmVjIGZpZWxkcy4KCgkqIHNyYy9zZm50L3R0Y21hcDAuYyAoVFRfQnVpbGRfQ01hcHMpOiBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHR0X25hbWVfZW50cnlfYXNjaWlfZnJvbV97dXRmMTYsdWNzNCxvdGhlcn06CglOZXcgZnVuY3Rpb25zLgoJKHR0X2ZhY2VfZ2V0X25hbWUpOiBVc2UgdGhlbSB0byBwcm9wZXJseSBleHRyYWN0IGFuIGFzY2lpIGZvbnQgbmFtZS4KCjIwMDItMDMtMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaCAodDFfYmxlbmRfbWF4KTogRml4IHR5cG8uCgkqIHNyYy9iYXNlL2Z0c3RyZWFtLmM6IFNpbXBsaWZ5IEZUX0VSUk9SIGNhbGxzLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfZ2x5cGhfbmFtZSk6IEZpeCBkZWJ1ZyBtZXNzYWdlLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Ecml2ZXJfSW5pdCwgQ0ZGX0RyaXZlcl9Eb25lKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IFJlbW92ZWQuCgkqIHNyYy9jZmYvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKQoJW1RUX0NPTkZJR19PUFRJT05fRVhURU5EX0VOR0lORV06IERpdHRvLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRHJpdmVyLCBUVF9Eb25lX0RyaXZlcikKCVtUVF9DT05GSUdfT1BUSU9OX0VYVEVORF9FTkdJTkVdOiBEaXR0by4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMsCglzcmMvdHJ1ZXR5cGUvdHRvYmpzLmg6IFJlbmFtaW5nIGRyaXZlciBmdW5jdGlvbnMgdG8gdGhlCglGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgVFRfSW5pdF9Ecml2ZXIgPT4gVFRfRHJpdmVyX0luaXQKCSAgVFRfRG9uZV9Ecml2ZXIgPT4gVFRfRHJpdmVyX0RvbmUKCSAgVFRfSW5pdF9GYWNlICAgPT4gVFRfRmFjZV9Jbml0CgkgIFRUX0RvbmVfRmFjZSAgID0+IFRUX0ZhY2VfRG9uZQoJICBUVF9Jbml0X1NpemUgICA9PiBUVF9TaXplX0luaXQKCSAgVFRfRG9uZV9TaXplICAgPT4gVFRfU2l6ZV9Eb25lCgkgIFRUX1Jlc2V0X1NpemUgID0+IFRUX1NpemVfUmVzZXQKCjIwMDItMDMtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaDogUmVuYW1lIExPQ0FMX0RFRiBhbmQgTE9DQUxfRlVOQyB0bwoJRlRfTE9DQUwgYW5kIEZUX0xPQ0FMX0RFRiwgcmVzcGVjdGl2ZWx5LCBhcyB3aXRoIG90aGVyIGZ0Y29uZmlnLmgKCWZpbGVzLgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQWRkIGFyZ3VtZW50IHRvIEZUX0xPQ0FMIGFuZAoJRlRfTE9DQUxfREVGLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogcy9GVF9Bc3NlcnQvRlRfQVNTRVJULy4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUZW1wb3JhcmlseSBkZWFjdGl2YXRlIGNyZWF0aW9uIG9mCgkuLi8uLi9KYW1maWxlLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFVwZGF0ZWQuCgoyMDAyLTAzLTI4ICBLVVNBTk8gVGFrYXl1a2kgIDxBRTVULUtTTkBhc2FoaS1uZXQub3IuanA+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBGaXggc2VyaW91cyB0eXBvcy4KCjIwMDItMDMtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNBdXhfU2VydmljZVJlYyk6IEZpeAoJY29tcGlsZXIgd2FybmluZ3MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9GYWNlUmVjKTogVXNlIGBjb25zdCcgZm9yCglzb21lIG1lbWJlcnMuCgkqIHNyYy9iYXNlL2Z0YXBpLmMgKEZUX05ld19NZW1vcnlfU3RyZWFtKTogRml4IHR5cG9zLgoJKiBzcmMvcHNhdXgvdDFjbWFwLmMgKHQxX2NtYXBfc3RkX2luaXQsIHQxX2NtYXBfdW5pY29kZV9pbml0KTogQWRkCgljYXN0LgoJKHQxX2NtYXBfe3N0YW5kYXJkLGV4cGVydCxjdXN0b20sdW5pY29kZX1fY2xhc3NfcmVjKTogVXNlCglgRlRfQ0FMTEJBQ0tfVEFCTEVfREVGJy4KCSogc3JjL3BzYXV4L3QxY21hcC5oOiBVcGRhdGVkLgoJKiBzcmMvc2ZudC90dGNtYXAwLmMgKFRUX0J1aWxkX0NNYXBzKTogVXNlIGBmdF9lbmNvZGluZ19ub25lJwoJaW5zdGVhZCBvZiB6ZXJvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFVzZSBjYXN0cy4KCjIwMDItMDMtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3Nmb2Jqcy5jLCBzcmMvc2ZudC90dGNtYXAwLmM6CglGaXhlZCBhIHNtYWxsIGJ1ZyBpbiB0aGUgRlRfQ01hcHMgc3VwcG9ydCBjb2RlLgoKMjAwMi0wMy0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmMgKE5vcm0pOiBSZXBsYWNlZCB3aXRoLi4uCgkoVFRfVmVjTGVuKTogVGhpcy4KCShUVF9NdWxGaXgxNCwgVFRfRG90Rml4MTQpOiBOZXcgZnVuY3Rpb25zLgoJKFByb2plY3QsIER1YWxfUHJvamVjdCwgRnJlZV9Qcm9qZWN0LCBDb21wdXRlX1BvaW50X0Rpc3BsYWNlbWVudCwKCUluc19TSFBJWCwgSW5zX01JQVAsIEluc19NSVJQKTogVXNlIHRoZW0uCglbRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1NdOiBSZW1vdmVkIGFsbCBjb2RlLgoKMjAwMi0wMy0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9zZm50L3R0Y21hcDAuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOgoJVmFyaW91cyBmaXhlcyB0byBtYWtlIHRoZSBGVF9DTWFwcyBzdXBwb3J0IHdvcmsgY29ycmVjdGx5IChtb3JlCgl0ZXN0cyBhcmUgc3RpbGwgbmVlZGVkKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9zZm50L0phbWZpbGUsCglzcmMvc2ZudC9ydWxlcy5taywgc3JjL3NmbnQvc2ZudC5jLCBzcmMvc2ZudC9zZm9ianMuYywKCXNyYy9zZm50L3R0bG9hZC5jLCBzcmMvc2ZudC90dGNtYXAwLmMsIHNyYy9zZm50L3R0Y21hcDAuaDogVXBkYXRlZAoJdGhlIFNGTlQgY2hhcm1hcCBzdXBwb3J0IHRvIHVzZSBGVF9DTWFwcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJkZWYuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaDogSW5jbHVkZSBpdC4gIEl0IGNvbnRhaW5zIGFsbCBlcnJvcgoJY29kZXMuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0VSUk9SX0RFRklOSVRJT05TX0gpOiBOZXcKCW1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBhbmQgYSBsb3Qgb2Ygb3RoZXIgZmlsZXM6CglDaGFuZ2VkIHRoZSBuYW1lcyBvZiBtZW1vcnkgbWFjcm9zLiAgRXhhbXBsZXM6CgoJICBNRU1fU2V0ICAgPT4gRlRfTUVNX1NFVAoJICBNRU1fQ29weSAgPT4gRlRfTUVNX0NPUFkKCSAgTUVNX01vdmUgID0+IEZUX01FTV9NT1ZFCgoJICBBTExPQyAgICAgPT4gRlRfQUxMT0MKCSAgRlJFRSAgICAgID0+IEZUX0ZSRUUKCSAgUkVBTExPQyAgID0gPkZUX1JFQUxMT0MKCglGVF9ORVcgd2FzIGludHJvZHVjZWQgdG8gYWxsb2NhdGUgYSBuZXcgb2JqZWN0IGZyb20gYSBfdHlwZWRfCglwb2ludGVyLgoKCU5vdGUgdGhhdCBBTExPQ19BUlJBWSBhbmQgUkVBTExPQ19BUlJBWSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkKCUZUX05FV19BUlJBWSBhbmQgRlRfUkVORVdfQVJSQVkgd2hpY2ggdGFrZSBfdHlwZWRfIHBvaW50ZXIKCWFyZ3VtZW50cy4KCglUaGlzIHJlc3VsdHMgaW4gX2xvdHNfIG9mIHNvdXJjZXMgYmVpbmcgY2hhbmdlZCwgYnV0IG1ha2VzIHRoZSBjb2RlCgltb3JlIGdlbmVyaWMgYW5kIGxlc3MgZXJyb3ItcHJvbmUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0c3RyZWFtLmgsIHNyYy9iYXNlL2Z0c3RyZWFtLmMsCglzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL3BjZi9wY2ZyZWFkLmMsIHNyYy9zZm50L3R0Y21hcC5jLAoJc3JjL3NmbnQvdHRjbWFwMC5jLCBzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRwb3N0LmMsCglzcmMvc2ZudC90dHNiaXQuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0cGxvYWQuYywKCXNyYy93aW5mb250cy93aW5mbnQuYzogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbnMgb2Ygc3RyZWFtIG1hY3Jvcy4KCUV4YW1wbGVzOgoKCSAgTkVYVF9CeXRlICAgICA9PiBGVF9ORVhUX0JZVEUKCSAgTkVYVF9TaG9ydCAgICA9PiBGVF9ORVhUX1NIT1JUCgkgIE5FWFRfVVNob3J0TEUgPT4gRlRfTkVYVF9VU0hPUlRfTEUKCSAgUkVBRF9TaG9ydCAgICA9PiBGVF9SRUFEX1NIT1JUCgkgIEdFVF9Mb25nICAgICAgPT4gRlRfR0VUX0xPTkcKCSAgZXRjLgoKCUFsc28gaW50cm9kdWNlZCB0aGUgRlRfUEVFS19YWFhYIGZ1bmN0aW9ucy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfQnVpbGRfVW5pY29kZV9DaGFybWFwKTogUmVtb3ZlZCBjb21tZW50ZWQKCW91dCBmdW5jdGlvbi4KCShmaW5kX2VuY29kaW5nKTogUmVtb3ZlZC4KCShDRkZfRmFjZV9Jbml0KTogUmVtb3ZlIGNoYXJtYXAgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmggKEZUX0NPTkZJR19PUFRJT05fVVNFX0NNQVBTLAoJVFRfQ09ORklHX0NNQVBfRk9STUFUezAsMiw0LDYsOCwxMCwxMn0pOiBOZXcgbWFjcm9zIHRvIGZpbmUtdHVuZQoJc3VwcG9ydCBvZiBjbWFwcy4KCjIwMDItMDMtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jLCBzcmMvcGNmL3BjZmRyaXZlci5jLCBzcmMvcGNmL3BjZnJlYWQuYzogVXBkYXRlZAoJdG8gbmV3IEZUX0NNYXAgZGVmaW5pdGlvbnMuCgoJKiBzcmMvcHNhdXgvdDFjbWFwLmgsIHNyYy9wc2F1eC90MWNtYXAuYywgc3JjL3R5cGUxL3QxY21hcC5oLAoJc3JjL3R5cGUxL3QxY21hcC5jOiBVcGRhdGluZyBhbmQgbW92aW5nIHRoZSBUeXBlIDEgRlRfQ01hcCBzdXBwb3J0Cglmcm9tICJzcmMvdHlwZTEiIHRvICJzcmMvcHNhdXgiIHNpbmNlIGl0IGlzIGdvaW5nIHRvIGJlIHNoYXJlZCBieQoJdGhlIFR5cGUgMSBhbmQgQ0lEIGZvbnQgZHJpdmVycy4KCgkqIHNyYy9wc2F1eC9KYW1maWxlLCBzcmMvcHNhdXgvcHNhdXguYywgc3JjL3BzYXV4L3BzYXV4bW9kLmMsCglzcmMvcHNhdXgvcnVsZXMubWssIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogQWRkZWQgc3VwcG9ydAoJZm9yIFR5cGUgMSBGVF9DTWFwcy4KCjIwMDItMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2xvYWRyLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrU3ViR2x5cGhzKTogRml4ZWQgYQoJbWVtb3J5IGFsbG9jYXRpb24gYnVnIHRoYXQgd2FzIGR1ZSB0byB1bi1jYXJlZnVsIHJlbmFtaW5nIG9mIHRoZQoJRlRfU3ViR2x5cGggdHlwZS4KCgkqIHNyYy9iYXNlL2Z0ZGJnbWVtLmMgKGZ0X21lbV90YWJsZV9kZXN0cm95KTogRml4ZWQgYSBzbWFsbCBidWcgdGhhdAoJY2F1c2VkIHRoZSBsaWJyYXJ5IHRvIGNyYXNoIHdpdGggRWxlY3RyaWMgRmVuY2Ugd2hlbiBtZW1vcnkKCWRlYnVnZ2luZyBpcyB1c2VkLgoKCSogUmVuYW1pbmcgc3RyZWFtIG1hY3Jvcy4gIEV4YW1wbGVzOgoKCSAgRklMRV9Ta2lwICAgID0+IEZUX1NUUkVBTV9TS0lQCgkgIEZJTEVfUmVhZCAgICA9PiBGVF9TVFJFQU1fUkVBRAoJICBBQ0NFU1NfRnJhbWUgPT4gRlRfRlJBTUVfRU5URVIKCSAgRk9SR0VUX0ZyYW1lID0+IEZUX0ZSQU1FX0VYSVQKCSAgZXRjLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgbWVtb3J5IGxlYWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oOiBDaGFuZ2luZyB0aGUgZGVmaW5pdGlvbiBvZgoJRlRfQ01hcF9DaGFyTmV4dEZ1bmMgc2xpZ2h0bHkuCgoJKiBzcmMvY2ZmLyouYzogVXBkYXRpbmcgQ0ZGIHR5cGUgZGVmaW5pdGlvbnMuCgoyMDAyLTAzLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2F1dG9oaW50LmgsIHNyYy9hdXRvaGludC9haG1vZHVsZS5jLAoJc3JjL2Jhc2UvZnRhcGkuYywgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0aW5nIHRoZSB0eXBlIGRlZmluaXRpb25zCglmb3IgdGhlIGF1dG8taGludGVyIG1vZHVsZS4KCgkgIEZUX0F1dG9IaW50ZXJfSW50ZXJmYWNlICA9PiBGVF9BdXRvSGludGVyX1NlcnZpY2VSZWMKCSAgRlRfQXV0b0hpbnRlcl9JbnRlcmZhY2UqID0+IEZUX0F1dG9IaW50ZXJfU2VydmljZQoJICBldGMuCgoJICBGVF9BdXRvSGludGVyX0dldF9HbG9iYWxfRnVuYyAgPT4gRlRfQXV0b0hpbnRlcl9HbG9iYWxHZXRGdW5jCgkgIEZUX0F1dG9IaW50ZXJfRG9uZV9HbG9iYWxfRnVuYyA9PiBGVF9BdXRvSGludGVyX0dsb2JhbERvbmVGdW5jCgkgIGV0Yy4KCgkqIGFobG9hZGVyLmggW19TVEFOREFMT05FX106IFJlbW92ZWQgYWxsIGNvbmRpdGlvbmFsIGNvZGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmgsIHNyYy9jZmYvKi5jOiBVcGRhdGluZyB0aGUKCXR5cGUgZGVmaW5pdGlvbnMgb2YgdGhlIENGRiBmb250IGRyaXZlci4KCgkgIENGRl9Gb250ICA9PiBDRkZfRm9udFJlYwoJICBDRkZfRm9udCogPT4gQ0ZGX0ZvbnQKCSAgZXRjLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mbnR0eXBlcy5oLCBzcmMvd2luZm9udHMvKi5jOiBVcGRhdGluZwoJdHlwZSBkZWZpbml0aW9ucyBvZiB0aGUgV2luZG93cyBGTlQgZm9udCBkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdGFwaS5jLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmZkcml2ci5oLAoJc3JjL2NpZC9jaWRyaXZlci5jLCBzcmMvY2lkL2NpZHJpdmVyLmgsIHNyYy9wY2YvcGNmZHJpdmVyLmMsCglzcmMvcGNmL3BjZmRyaXZlci5oLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywKCXNyYy90cnVldHlwZS90dGRyaXZlci5oLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmgsCglzcmMvd2luZm9udHMvd2luZm50LmMsIHNyYy93aW5mb250cy93aW5mbnQuaDogVXBkYXRpbmcgdHlwZQoJZGVmaW5pdGlvbnMgZm9yIGZvbnQgZHJpdmVycy4KCgkgIEZURHJpdmVyX2luaXRGYWNlICAgICAgPT4gRlRfRmFjZV9Jbml0RnVuYwoJICBGVERyaXZlcl9pbml0R2x5cGhTbG90ID0+IEZUX1Nsb3RfSW5pdEZ1bmMKCSAgZXRjLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwgc3JjL2Jhc2UvZnRvYmpzLmM6IFVwZGF0ZWQgYQoJZmV3IGZhY2UgbWV0aG9kIGRlZmluaXRpb25zOgoKCSAgRlRfUFNOYW1lX1JlcXVlc3RlciAgICAgPT4gRlRfRmFjZV9HZXRQb3N0c2NyaXB0TmFtZUZ1bmMKCSAgRlRfR2x5cGhfTmFtZV9SZXF1ZXN0ZXIgPT4gRlRfRmFjZV9HZXRHbHlwaE5hbWVGdW5jCgkgIEZUX05hbWVfSW5kZXhfUmVxdWVzdGVyID0+IEZUX0ZhY2VfR2V0R2x5cGhOYW1lSW5kZXhGdW5jCgoJKiBzcmMvYmFzZS9mdGFwaS5jOiBOZXcgZmlsZS4gIEl0IGNvbnRhaW5zIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CglmdW5jdGlvbnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9jaWQvY2lkbG9hZC5jLAoJc3JjL2NpZHRva2VuLmgsIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3Bzb2Jqcy5oLAoJc3JjL3BzYXV4L3QxZGVjb2RlLmMsIHN0Yy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3QxdG9rZW5zLmg6CglVcGRhdGVkIGNvbW1vbiBQb3N0U2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMuCglSZW5hbWVkIGFsbCBlbnVtZXJhdGlvbiB2YWx1ZXMgbGlrZSB0byB1cHBlcmNhc2UgdmFyaWFudHM6CgoJICB0MV90b2tlbl9hbnkgICAgICA9PiBUMV9UT0tFTl9UWVBFX0FOWQoJICB0MV9maWVsZF9jaWRfaW5mbyA9PiBUMV9GSUVMRF9MT0NBVElPTl9DSURfSU5GTwoJICBldGMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFscy5oOiBSZW1vdmVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwgc3JjL3BzaGludGVyL3BzaGdsb2IuaDoKCVVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLCBzcmMvYmFzZS9mdG5hbWVzLmMsCglzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9zZm50LyouYywgc3JjL3RydWV0eXBlLyouYzogVXBkYXRlZAoJU0ZOVC9UcnVlVHlwZSB0eXBlIGRlZmluaXRpb25zLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Z2xvYWRyLmg6CglVcGRhdGluZyB0eXBlIGRlZmludGlpb25zIGZvciB0aGUgZ2x5cGggbG9hZGVyLgoKMjAwMi0wMy0xMyAgQW50b2luZSBMZWNhICA8YW50b2luZUBvcmlvbG5ldC5jb20+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBhdXRvbWF0aWMKCWRldGVjdGlvbiBvZiBNaWNyb3NvZnQgQyBjb21waWxlcnMgdG8gYXV0b21hdGljYWxseSBzdXBwb3J0IDY0LWJpdAoJaW50ZWdlcnMgb25seSBzaW5jZSByZXZpc2lvbiA5LjAwIChpLmUuID49IFZpc3VhbCBDKysgMi4wKS4KCjIwMDItMDMtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0dXRpbC5jIChGVF9SZWFsbG9jKTogVXNlIE1FTV9TZXQgaW5zdGVhZCBvZiBtZW1zZXQuCgoyMDAyLTAzLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfcmVzaXplLCBmdF9tZW1fdGFibGVfbmV3LAoJZnRfbWVtX3RhYmxlX3NldCwgZnRfbWVtX2RlYnVnX2FsbG9jLCBmdF9tZW1fZGVidWdfZnJlZSwKCWZ0X21lbV9kZWJ1Z19yZWFsbG9jLCBmdF9tZW1fZGVidWdfZG9uZSwgRlRfQWxsb2NfRGVidWcsCglGVF9SZWFsbG9jX0RlYnVnLCBGVF9GcmVlX0RlYnVnKTogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU2l6ZV9HZXRfR2xvYmFsX0Z1bmNzLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX0dseXBoU2xvdF9Jbml0KTogRGl0dG8uCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfR2x5cGhTbG90X0luaXQsCglDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcyk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX1NpemVfR2V0X0dsb2JhbHNfRnVuY3MsIFQxX0dseXBoU2xvdF9Jbml0KToKCURpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNobW9kLmMgKHBzaGludGVyX2ludGVyZmFjZSk6IFVzZSBgc3RhdGljIGNvbnN0Jy4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoVDFfQnVpbGRlcl9GdW5jcyk6IFJlbmFtZWQKCXRvLi4uCgkoVDFfQnVpbGRlcl9GdW5jc1JlYyk6IFRoaXMuCgkoVDFfQnVpbGRlcl9GdW5jcyk6IE5ldyB0eXBlZGVmLgoJKFBTQXV4X0ludGVyZmFjZSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL3BzYXV4L3BzYXV4bW9kLmMgKHQxX2J1aWxkZXJfZnVuY3MpLCBzcmMvcHNhdXgvcHNvYmpzLmgKCSh0MV9idWlsZGVyX2Z1bmNzKTogVXBkYXRlZC4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9CbHVlX0FsaWduKTogUmVwbGFjZWQgd2l0aCAuLi4KCShQU0hfQkxVRV9BTElHTl97Tk9ORSxUT1AsQk9UfSk6IE5ldyBkZWZpbmVzLgoJKFBTSF9BbGlnbm1lbnRSZWMpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfQ2hhciwgR0VUX0J5dGUpOiBGaXgKCXR5cG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfU3ViR2x5cGgpOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRzdHJlYW0gKEZUX0dldF9DaGFyKTogUmVuYW1lIHRvLi4uCgkoRlRfU3RyZWFtX0dldF9DaGFyKTogVGhpcy4KCgkqIHNyYy9iYXNlL2Z0bmFtZXMuYyAoRlRfR2V0X1NmbnRfTmFtZSk6IHMvaW5kZXgvaWR4LyAtLSBgaW5kZXgnIGlzCglhIGJ1aWx0LWluIGZ1bmN0aW9uIGluIGdjYywgY2F1c2luZyB3YXJuaW5nIG1lc3NhZ2VzIHdpdGggZ2NjIDMuMC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfb3V0bGluZV9sb2FkKTogRGl0dG8uCgkqIHNyYy9hdXRvaGludC9haGdsb2JhbC5jIChhaF9oaW50ZXJfY29tcHV0ZV9ibHVlcyk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfRG9uZSwgRlRDX01hbmFnZXJfUmVnaXN0ZXJfQ2FjaGUpOgoJRGl0dG8uCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChjZmZfbmV3X2luZGV4LCBjZmZfZG9uZV9pbmRleCwKCWNmZl9leHBsaWNpdF9pbmRleCwgQ0ZGX0FjY2Vzc19FbGVtZW50LCBDRkZfRm9yZ2V0X0VsZW1lbnQsCglDRkZfR2V0X05hbWUsIENGRl9HZXRfU3RyaW5nLCBDRkZfTG9hZF9TdWJGb250LCBDRkZfTG9hZF9Gb250LAoJQ0ZGX0RvbmVfRm9udCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCwgUFNfUGFyc2VyX0xvYWRGaWVsZCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGVzdF9iaXQsIHBzX21hc2tfY2xlYXJfYml0LAoJcHNfbWFza19zZXRfYml0LCBwc19kaW1lbnNpb25fYWRkX3Qxc3RlbSwgcHNfaGludHNfdDFzdGVtMywKCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9yZWNvcmQsCglwc2gxX2hpbnRfdGFibGVfcmVjb3JkX21hc2ssIHBzaDFfaGludF90YWJsZV9hY3RpdmF0ZV9tYXNrKTogRGl0dG8uCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfcmVjb3JkLAoJcHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrLCBwc2gyX2hpbnRfdGFibGVfYWN0aXZhdGVfbWFzayk6IERpdHRvLgoJKiBzcmMvc2ZudC90dHBvc3QuYyAoTG9hZF9Gb3JtYXRfMjAsIExvYWRfRm9ybWF0XzI1LAoJVFRfR2V0X1BTX05hbWUpOiBEaXR0by4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfR2V0X01ldHJpY3MsIEdldF9ITWV0cmljcywKCWxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9zdWJycywgVDFfT3Blbl9GYWNlKTogRGl0dG8uCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9HZXRfS2VybmluZyk6IERpdHRvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IERpdHRvLgoKMjAwMi0wMy0wNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9GYWNlX0luaXQpLCBzcmMvY2lkL2NpZG9ianMuYwoJKENJRF9GYWNlX0luaXQpOiBGaXhlZCBhbm90aGVyIGJ1ZyByZWxhdGVkIHRvIHRoZQoJYXNjZW5kZXIvZGVzY2VuZGVyL3RleHQgaGVpZ2h0IG9mIFBvc3RzY3JpcHQgZm9udHMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHJpbnRfem9uZSk6IFJlbmFtZWQgdG8gLi4uCgkocHNoMl9wcmludF96b25lKTogVGhpcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHByaW50X3pvbmUpOiBSZW5hbWVkIHRvIC4uLgoJKHBzaDFfcHJpbnRfem9uZSk6IFRoaXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYzogQWRkaW5nIHRoZSBuZXcgRlRfTGlicmFyeV9WZXJzaW9uIEFQSSB0byByZXR1cm4KCXRoZSBsaWJyYXJ5J3MgY3VycmVudCB2ZXJzaW9uIGluIGR5bmFtaWMgbGlua3MuCgkqIHNyYy9iYXNlL2Z0aW5pdC5jIChGVF9Jbml0X0ZyZWVUeXBlKTogVXBkYXRlZC4KCjIwMDItMDMtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmggKFBTSF9EaW1lbnNpb25SZWMpOiBzL3N0ZC9zdGR3Ly4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbF9zY2FsZV93aWR0aHMsCglwc2hfZGltZW5zaW9uX3NuYXBfd2lkdGgsIHBzaF9nbG9iYWxzX2Rlc3Ryb3ksIHBzaF9nbG9iYWxzX25ldyk6CglEaXR0by4KCjIwMDItMDMtMDUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KSwgc3JjL2NmZi9jZmZvYmpzLmMKCShDRkZfRmFjZV9Jbml0KSwgc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0luaXQpOiBSZW1vdmluZyB0aGUgYnVnCgl0aGF0IHJldHVybmVkIGdsb2JhbCBCQm94IHZhbHVlcyBpbiAxNi4xNiBmaXhlZCBmb3JtYXQgKGluc3RlYWQgb2YKCWludGVnZXIgZm9udCB1bml0cykuCgoJKiBzcmMvY2lkL2NpZHJpdmVyLmMgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgYSBidWcgdGhhdAoJY2F1c2VkIHRoZSBDSUQgZHJpdmVyIHRvIHJldHVybiBQb3N0c2NyaXB0IGZvbnQgbmFtZXMgd2l0aCBhIGxlYWRpbmcKCXNsYXNoICgiLyIpIGFzIGluICIvTU9FS2FpLVJlZ3VsYXIiLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpLCBzcmMvc2ZudC9zZm9ianMuYyAoR2V0X05hbWUpLAoJc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRml4ZWQgdGhlIGxvYWRlciBzbwoJdGhhdCBpdCBhY2NlcHRzIGJyb2tlbiBmb250cyBsaWtlICJmb3hqdW1wLnR0ZiIsIHdoaWNoIG1hZGUgRnJlZVR5cGUKCWNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvYWQgdGhlbS4KCglBbHNvIGltcHJvdmVkIHRoZSBuYW1lIHRhYmxlIHBhcnNlciB0byBiZSBhYmxlIHRvIGxvYWQKCVdpbmRvd3MtZW5jb2RlZCBlbnRyaWVzIGJlZm9yZSBNYWNpbnRvc2ggb3IgVW5pY29kZSBvbmVzLCBzaW5jZSBpdAoJc2VlbXMgc29tZSBmb250cyBkb24ndCBoYXZlIHJlbGlhYmxlIHZhbHVlcyBoZXJlIGFueXdheS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgdHlwZWRlZiBmb3IKCWBQU05hbWVzX1NlcnZpY2UnLgoKMjAwMi0wMy0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvYWNsb2NhbC5tNCwgYnVpbGRzL3VuaXgvbHRtYWluLnNoOiBVcGRhdGUgdG8gbGlidG9vbAoJMS40LjIuCglBcHBseSBhIHNtYWxsIHBhdGNoIGZvciBBSVggdG8gbWFrZSBzaGFyZWQgbGlicmFyaWVzIHdvcmsgKHRoaXMKCXBhdGNoIGlzIGFscmVhZHkgaW4gdGhlIENWUyB2ZXJzaW9uIG9mIGxpYnRvb2wpLgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLnN1YiwgYnVpbGRzL3VuaXgvY29uZmlnLmd1ZXNzOiBVcGRhdGVkIHRvCglyZWNlbnQgdmVyc2lvbnMuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCB0eXBvCgkoQUNfQ09ORklHX0ZJTEUtPkFDX0NPTkZJR19GSUxFUykuCgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMi0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNvbmZpZy5oOiBDaGFuZ2VkIGBGVF9MT0NBTCB4eHh4JyB0bwoJYEZUX0xPQ0FMKCB4eHh4ICknIGV2ZXJ5d2hlcmUgaW4gdGhlIHNvdXJjZS4gIFRoZSBzYW1lIGdvZXMgZm9yCglgRlRfTE9DQUxfREVGIHh4eHgnIHdoaWNoIGlzIHRyYW5zbGF0ZWQgdG8gYEZUX0xPQ0FMX0RFRiggeHh4eHggKScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX01JTk9SLCBGUkVFVFlQRV9QQVRDSCk6CglDaGFuZ2luZyB2ZXJzaW9uIHRvIDIuMS4wIHRvIGluZGljYXRlIGFuIHVuc3RhYmxlIGJyYW5jaC4KCUFkZGVkIHRoZSBkZWNsYXJhdGlvbnMgb2YgRlRfR2V0X0ZpcnN0X0NoYXIgYW5kIEZUX0dldF9OZXh0X0NoYXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW1wbGVtZW50IEZUX0dldF9GaXJzdF9DaGFyIGFuZAoJRlRfR2V0X05leHRfQ2hhci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdDF0YWJsZXMuaDogUmVuYW1pbmcgc3RydWN0dXJlIHR5cGVzLiAgVGhpcwoKCSAgdHlwZWRlZiAgVDFfU3RydWN0XwoJICB7CgkgIH0gVDFfU3RydWN0OwoKCWJlY29tZXMKCgkgIHR5cGVkZWYgIFBTX1N0cnVjdFJlY18KCSAgewoJICB9IFBTX1N0cnVjdFJlYywgKlBTX1N0cnVjdDsKCgkgIHR5cGVkZWYgUFNfU3RydWN0UmVjICBUMV9TdHJ1Y3Q7ICAvKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSAqLwoKCUhlbmNlLCB3ZSBpbmNyZWFzZSB0aGUgY29oZXJlbmN5IG9mIHRoZSBzb3VyY2UgY29kZSBieSBlZmZlY3RpdmVseQoJdXNpbmcgdGhlIGBSZWMnIHByZWZpeCBmb3Igc3RydWN0dXJlIHR5cGVzLgoKMjAwMi0wMi0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTmFtZXMpOiBTaW1wbGlmeWluZyBhbmQgc2VjdXJpbmcgdGhlCgluYW1lcyB0YWJsZSBsb2FkZXIuICBJbnZhbGlkIGluZGl2aWR1YWwgbmFtZSBlbnRyaWVzIGFyZSBub3cgaGFuZGxlZAoJY29ycmVjdGx5LiAgVGhpcyBhbGxvd3MgdGhlIGxvYWRpbmcgb2YgdmVyeSBidWdneSBmb250cyBsaWtlCgkiZm94anVtcC50dGYiIHdpdGhvdXQgYWxsb2NhdGluZyB0b25zIG9mIG1lbW9yeSBhbmQgY2F1c2luZyBjcmFzaGVzLgoKCSogc3JjL290bGF5b3V0L290bGNvbW1vbi5oLCBzcmMvb3RsYXlvdXQvb3RsY29tbW9uLmM6IEFkZGluZyAoc3RpbGwKCWV4cGVyaW1lbnRhbCkgY29kZSBmb3IgT3BlblR5cGUgTGF5b3V0IHRhYmxlcyB2YWxpZGF0aW9uIGFuZAoJcGFyc2luZy4KCgkqIHNyYy90eXBlMS90MWNtYXAuaCwgc3JjL3R5cGUxL3QxY21hcC5jOiBBZGRpbmcgKHN0aWxsCglleHBlcmltZW50YWwpIGNvZGUgZm9yIFR5cGUgMSBjaGFybWFwIHByb2Nlc3NpbmcuCgoJKiBzcmMvc2ZudC90dGNtYXAwLmM6IE5ldyBmaWxlLiAgSXQgY29udGFpbnMgYSBuZXcsIHN0aWxsCglleHBlcmltZW50YWwgU0ZOVCBjaGFybWFwIHByb2Nlc3Npbmcgc3VwcG9ydC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IEFkZGluZyB2YWxpZGF0aW9uIHN1cHBvcnQgYXMKCXdlbGwgYXMgaW50ZXJuYWwgY2hhcm1hcCBvYmplY3QgZGVmaW5pdGlvbnMgKEZUX0NNYXAgIT0gRlRfQ2hhck1hcCkuCgoyMDAyLTAyLTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSZW5hbWluZyBzdHJlYW0gZnVuY3Rpb25zIHRvIHRoZSBGVF88U3ViamVjdD5fPEFjdGlvbj4gc2NoZW1lOgoKCSAgRlRfU2Vla19TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NlZWsKCSAgRlRfU2tpcF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1NraXAKCSAgRlRfUmVhZF9TdHJlYW0gICAgPT4gRlRfU3RyZWFtX1JlYWQKCSAgRlRfUmVhZF9TdHJlYW1fQXQgPT4gRlRfU3RyZWFtX1JlYWRfQXQKCSAgRlRfQWNjZXNzX0ZyYW1lICAgPT4gRlRfU3RyZWFtX0VudGVyX0ZyYW1lCgkgIEZUX0ZvcmdldF9GcmFtZSAgID0+IEZUX1N0cmVhbV9FeGl0X0ZyYW1lCgkgIEZUX0V4dHJhY3RfRnJhbWUgID0+IEZUX1N0cmVhbV9FeHRyYWN0X0ZyYW1lCgkgIEZUX1JlbGVhc2VfRnJhbWUgID0+IEZUX1N0cmVhbV9SZWxlYXNlX0ZyYW1lCgkgIEZUX0dldF9YWFhYICAgICAgID0+IEZUX1N0cmVhbV9HZXRfWFhYWAoJICBGVF9SZWFkX1hYWFggICAgICA9PiBGVF9TdHJlYW1fUmVhZF9YWFhYCgoJICBGVF9OZXdfU3RyZWFtKCBmaWxlbmFtZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbiggc3RyZWFtLCBmaWxlbmFtZSApCgoJICAgIChUaGUgZnVuY3Rpb24gZG9lc24ndCBjcmVhdGUgdGhlIEZUX1N0cmVhbSBzdHJ1Y3R1cmUsIGl0IHNpbXBseQoJICAgIGluaXRpYWxpemVzIGl0IGZvciByZWFkaW5nLikKCgkgIEZUX05ld19NZW1vcnlfU3RyZWFtKCBsaWJyYXJ5LCBGVF9CeXRlKiAgYmFzZSwgc2l6ZSwgc3RyZWFtICkgPT4KCSAgICBGVF9TdHJlYW1fT3Blbl9NZW1vcnkoIHN0cmVhbSwgY29uc3QgRlRfQnl0ZSogYmFzZSwgc2l6ZSApCgoJICBGVF9Eb25lX1N0cmVhbSAgPT4gRlRfU3RyZWFtX0Nsb3NlCgkgIEZUX1N0cmVhbV9JTyAgICA9PiBGVF9TdHJlYW1fSU9GdW5jCgkgIEZUX1N0cmVhbV9DbG9zZSA9PiBGVF9TdHJlYW1fQ2xvc2VGdW5jCgoJICBmdF9jbG9zZV9zdHJlYW0gPT4gZnRfYW5zaV9zdHJlYW1fY2xvc2UgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoJICBmdF9pb19zdHJlYW0gICAgPT4gZnRfYW5zaV9zdHJlYW1faW8gICAgKGluIGJhc2UvZnRzeXN0ZW0uYyBvbmx5KQoKCSogc3JjL2Jhc2UvZnR1dGlsLmM6IE5ldyBmaWxlLiAgQ29udGFpbnMgYWxsIG1lbW9yeSBhbmQgbGlzdAoJbWFuYWdlbWVudCBjb2RlIChwcmV2aW91c2x5IGluICJmdG9ianMuYyIgYW5kICJmdGxpc3QuYyIsCglyZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogTW92aW5nIGFsbCBjb2RlIHJlbGF0ZWQgdG8KCWdseXBoIGxvYWRlcnMgdG8gLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvImludGVybmFsL2Z0Z2xvYWRyLmg6IFRoaXMgbmV3IGZpbGUuCgkiRlRfR2x5cGhMb2FkZXIiIGlzIG5vdyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZQoJIkZUX0dseXBoTG9hZGVyUmVjIi4KCShmdF9nbHlwaF9vd25fYml0bWFwKTogUmVuYW1lZCB0byAuLi4KCShGVF9HTFlQSF9PV05fQklUTUFQKTogVGhpcy4KCSogc3JjL2Jhc2UvZnRvYmpzLmM6IE1vdmluZyBhbGwgY29kZSByZWxhdGVkIHRvIGdseXBoIGxvYWRlcnMKCXRvIC4uLgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jOiBUaGlzIG5ldyBmaWxlLgoKMjAwMi0wMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogUmVtb3ZlIGNvbW1hIGluCgllbnVtIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMi0wMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBkZWJ1ZyBzdWItc3lzdGVtIGluaXRpYWxpemF0aW9uLiAgVHJhY2UgbGV2ZWxzIGNhbiBub3cKCWJlIHNwZWNpZmllZCB3aXRoaW4gdGhlICJGVDJfREVCVUciIGVudmlyb25tZW50IHZhcmlhYmxlLiAgU2VlIHRoZQoJY29tbWVudHMgd2l0aGluICJmdGRlYnVnLmMiIGZvciBtb3JlIGRldGFpbHMuCgoJKiBzcmMvYmFzZS9mdGRlYnVnLmM6IChGVF9TZXRUcmFjZUxldmVsKTogUmVtb3ZlZC4KCShmdF9kZWJ1Z19pbml0KTogTmV3IGZ1bmN0aW9uLgoJKGZ0X2RlYnVnX2R1bW15KTogUmVtb3ZlZC4KCVVwZGF0ZWQgdG8gY2hhbmdlcyBpbiBmdGRlYnVnLmgKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBbHdheXMgZGVmaW5lCglGVF9ERUJVR19MRVZFTF9FUlJPUiBpZiBGVF9ERUJVR19MRVZFTF9UUkFDRSBpcyBkZWZpbmVkLgoJKEZUX0Fzc2VydCk6IFJlbmFtZWQgdG8gLi4uCgkoRlRfQVNTRVJUKTogVGhpcy4KCVNvbWUgc3R1ZmYgZnJvbSBmdGRlYnVnLmggaGFzIGJlZW4gbW92ZWQgdG8gLi4uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogTmV3IGZpbGUsIHRvIGRlZmluZSB0aGUgdHJhY2UKCWxldmVscyB1c2VkIGZvciBkZWJ1Z2dpbmcuICBJdCBpcyB1c2VkIGJvdGggdG8gZGVmaW5lIGVudW1zIGFuZAoJdG9nZ2xlIG5hbWVzIGZvciBGVDJfREVCVUcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYywgc3JjL2Jhc2UvZnRzdHJlYW0uYzogVXBkYXRlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRleHRlbmQuaCwgc3JjL2Jhc2UvZnRleHRlbmQuYzoKCVJlbW92ZWQuICBCb3RoIGZpbGVzIGFyZSBub3cgY29tcGxldGVseSBvYnNvbGV0ZS4KCSogc3JjL2Jhc2UvSmFtZmlsZSwgc3JjL2Jhc2UvcnVsZXMubWs6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmg6IEFkZGluZyAiI3VuZGVmIEZUX0VSUl9DQVQiIGFuZAoJYCN1bmRlZiBGVF9FUlJfWENBVCIgdG8gYXZvaWQgd2FybmluZ3Mgd2l0aCBjZXJ0YWluIGNvbXBpbGVycyAobGlrZQoJTENDKS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwcmludF96b25lKTogUmVuYW1lZCB0byAuLi4KCShwc2gyX3ByaW50X3pvbmUpOiBUaGlzIHRvIGF2b2lkIGVycm9ycyBkdXJpbmcgY29tcGlsYXRpb24gb2YgZGVidWcKCWxpYnJhcnkuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoRlRfQ09NUE9ORU5UKTogQ2hhbmdlIGRlZmluaXRpb24gdG8gYXMKCWB0cmFjZV9zbW9vdGgnLgoKMjAwMi0wMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FOiBBZGRpbmcgImRldmVsQGZyZWV0eXBlLm9yZyIgYWRkcmVzcyBmb3IgYnVnIHJlcG9ydHMuCgoyMDAyLTAyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rIChjaGVjayk6IE5ldyBkdW1teSB0YXJnZXQuCgkoLlBIT05ZKTogQWRkIGl0LgoKMjAwMi0wMi0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChGVF9DRkxBR1MpOiBVc2UgJChJTkNMVURFX0ZMQUdTKSBmaXJzdC4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfY2FjaGVfcmVzaXplKTogTWFyayBgZXJyb3InIGFzIHVudXNlZAoJdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RyaW5nKTogRGl0dG8uCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfU3RyQ29weSk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0RvbmUpOiBEaXR0by4KCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBEaXR0by4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoZ2V0X3NmbnRfcG9zdHNjcmlwdF9uYW1lKTogRGl0dG8uCgkocGNmX2dldF9iaXRtYXBzKTogVGhlIHNhbWUgZm9yIGBzaXplYml0bWFwcycuCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVfUGFyc2VfQ2hhcnN0cmluZ3MpOiBUaGUgc2FtZSBmb3IKCWBvcmlnX3knLgoJKHQxb3BlcmF0b3Jfc2VhYyk6IENvbW1lbnQgb3V0IG1vcmUgZGVhZCBjb2RlLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHMyX2hpbnRzX2FwcGx5KTogQWRkIGBERUJVR19ISU5URVInCgljb25kaXRpb25hbC4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGgsCglsb2FkX3RydWV0eXBlX2dseXBoKTogQWRkIGBUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSJwoJY29uZGl0aW9uYWwuCgoyMDAyLTAyLTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IFVzZSBGVF9VTlVTRUQgaW5zdGVhZAoJb2YgVU5VU0VELgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYyAoZnRfYXV0b2hpbnRlcl9yZXNldCk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX21hc2tfdGFibGVfbWVyZ2UpOiBGaXggdHlwbyBpbiB2YXJpYWJsZQoJc3dhcHBpbmcgY29kZS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuaCAoUFNIX0JsdWVfQWxpZ24pOiBBZGQgUFNIX0JMVUVfQUxJR05fTk9ORS4KCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NuYXBfc3RlbSk6IFVzZSBpdC4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9vcHRpbWl6ZSk6IERpdHRvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X2FsaWduKTogRGl0dG8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKFVOVVNFRCk6IFJlbW92ZWQuCgoyMDAyLTAyLTEwICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCglBZGQgc3VwcG9ydCBmb3IgSVNPTGF0aW4xIFBTIGVuY29kaW5nLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChmdF9lbmNvZGluZ19sYXRpbl8xKTogTmV3IHRhZwoJKGBsYXQxJykuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oIChUMV9FbmNvZGluZ19UeXBlKTogQWRkCglgdDFfZW5jb2RpbmdfaXNvbGF0aW4xJy4KCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKEdldF9DaGFyX0luZGV4LCBHZXRfTmV4dF9DaGFyKTogSGFuZGxlCglmdF9lbmNvZGluZ19sYXRpbl8xLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogSGFuZGxlIGBJU09MYXRpbjFFbmNvZGluZycuCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogSGFuZGxlIGB0MV9lbmNvZGluZ19pc29sYXRpbjEnLgoKMjAwMi0wMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBGaXggdHlwby4KCSogZG9jcy9DSEFOR0VTOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC44IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIDIuMC44LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBTZXR0aW5nIGBQQVRDSF9MRVZFTCcgdG8gOCBhbmQKCXJlbW92aW5nIGBGVF9HZXRfTmV4dF9DaGFyJyBmcm9tIHRoZSBBUEkgKHRlbXBvcmFyaWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkaW5nIGNvbW1lbnRzIHRvIEZUX0dldF9OZXh0X0NoYXI7Cglub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtaWdodCB0ZW1wb3JhcmlseSBiZSByZW1vdmVkIGZvciB0aGUgMi4wLjgKCXJlbGVhc2UuCgoyMDAyLTAyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFJlbW92ZWQgaW1tYXR1cmUgc3VwcG9ydCBvZgoJdGhlIEFWRVJBR0VfV0lEVEggcHJvcGVydHkuCgoyMDAyLTAyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTaW5jZSBtYW55IGZvbnRzIGVtYmVkZGVkIGluCglQREYgZG9jdW1lbnRzIGRvIG5vdCBpbmNsdWRlICdjbWFwJywgJ3Bvc3QnIGFuZCAnbmFtZScgdGFibGVzLCB0aGUKCVNGTlQgZmFjZSBsb2FkZXIgaGFzIGJlZW4gY2hhbmdlZCB0byBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IGFuCgllcnJvciBpZiB0aGVzZSBhcmUgbm90IHByZXNlbnQuCgoJTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIF9yZXF1aXJlc18gdGhlc2UgdGFibGVzLCBidXQgQWRvYmUKCXNlZW1zIHRvIGlnbm9yZSBpdCBjb21wbGV0ZWx5LgoKCSogc3JjL3NmbnQvdHRjbWFwLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9yZWFkX1RPQyk6IFVzZSBGVF9VSW50LgoJKHBjZl9wYXJzZV9tZXRyaWMsIHBjZl9wYXJzZV9jb21wcmVzc2VkX21ldHJpYyk6IFJlbW92ZWQuICBDb2RlCglpcyBub3cgaW4gLi4uCgkocGNmX2dldF9tZXRyaWMpOiBIZXJlLgoJKHBjZlNlZWtUb1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShwY2ZIYXNUeXBlKTogUmVuYW1lZCB0byAuLi4KCShwY2ZfaGFzX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShmaW5kX3Byb3BlcnR5KTogUmVuYW1lZCB0byAuLi4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZl9nZXRfYml0bWFwcywgcGNmX2dldF9lbmNvZGluZ3MpOiBIYW5kbGUgaW52YWxpZCBQQ0YgZm9udHMKCWJldHRlciAoZGVsYXlpbmcgZm9ybWF0IGNoZWNrcyBvdXQgb2YgRlRfQWNjZXNzX0ZyYW1lIC4uCglGVF9Gb3JnZXRfRnJhbWUgYmxvY2tzIHRvIGF2b2lkIGxlYXZpbmcgdGhlIHN0cmVhbSBpbiBhbiBpbmNvcnJlY3QKCXN0YXRlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgUENGIGZvbnQpLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoUENGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfSW5pdCk6IFRoaXMuCgkoUENGX0dldF9DaGFyX0luZGV4KTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBUaGlzLgoJKFBDRl9HZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfTmV4dCk6IFRoaXMuCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZi5oIChQQ0ZfRG9uZV9GYWNlKTogUmVtb3ZlZC4KCjIwMDItMDItMDYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChGVF9Eb25lX0ZhY2UpOiBGaXhlZCBzbWFsbCBtZW1vcnkgbGVhay4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogTm93IGhhbmRsZXMgdGhlICJBVkVSQUdFX1dJRFRIIgoJcHJvcGVydHkgdG8gcmV0dXJuIGNvcnJlY3QgY2hhcmFjdGVyIHBpeGVsICh3aWR0aC9oZWlnaHQpIHBhaXJzIGZvcgoJZW1iZWRkZWQgYml0bWFwcy4KCjIwMDItMDItMDQgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCglBZGRpbmcgdGhlIGZ1bmN0aW9uIGBGVF9HZXRfTmV4dF9DaGFyJywgZG9pbmcgdGhlIG9idmlvdXMgdGhpbmcKCXcuci50LiB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkIHByb3RvdHlwZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oOiBBZGQgYEZURHJpdmVyX2dldE5leHRDaGFyJwoJdHlwZWRlZi4KCShGVF9Ecml2ZXJfQ2xhc3MpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgYFBTX05leHRfVW5pY29kZV9GdW5jJwoJdHlwZWRlZi4KCShQU05hbWVzX0ludGVyZmFjZSk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZCBgVFRfQ2hhck5leHRfRnVuYycKCXR5cGVkZWYuCgkoVFRfQ01hcFRhYmxlKTogVXNlIGl0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24sIGltcGxlbWVudGluZwoJaGlnaC1sZXZlbCBBUEkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uZXh0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MWNpZF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX05leHRfVW5pY29kZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX2ludGVyZmFjZSk6IEFkZCBpdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDAsIGNvZGVfdG9fbmV4dDIsIGNvZGVfdG9fbmV4dDQsCgljb2RlX3RvX25leHQ2LCBjb2RlX3RvX25leHRfOF8xMiwgY29kZV90b19uZXh0XzEwKTogTmV3IGF1eGlsaWFyeQoJZnVuY3Rpb25zLgoJKFRUX0NoYXJNYXBfTG9hZCk6IFVzZSB0aGVtLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0dF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3dpbmZudC93aW5mbnQuYyAoRk5UX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24uCgkod2luZm50X2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogRm9yIG5vdywgcmVwb3J0IFVuaWNvZGUgZm9yCglVbmljb2RlIGFuZCBMYXRpbiAxIGVuY29kaW5ncy4KCjIwMDItMDItMDIgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogQWRkIG1pc3NpbmcgYGZpJy4KCgoJKiBWZXJzaW9uIDIuMC43IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogSW5jcmVhc2luZyBGUkVFVFlQRV9QQVRDSCB0byA3Cglmb3IgdGhlIG5ldyByZWxlYXNlLgoKMjAwMi0wMS0zMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogUkVBRE1FLCBSRUFETUUuVU5YLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIHRoZQoJMi4wLjcgcmVsZWFzZS4KCjIwMDItMDEtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIElOU1RBTEw6IE1vdmVkIHRvIC4uLgoJKiBkb2NzL0lOU1RBTEw6IEhlcmUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlICJpbnN0YWxsIiBzY3JpcHQgb24KCVdpbmRvd3MsIHdoZXJlIHRoZSBmaWxlc3lzdGVtIGRvZXNuJ3QgcHJlc2VydmUgY2FzZS4KCjIwMDItMDEtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGNvbmZpZ3VyZTogRml4ZWQgdGhlIHNjcmlwdC4gIEl0IHByZXZpb3VzbHkgZGlkbid0IGFjY2VwdCBtb3JlCgl0aGFuIG9uZSBhcmd1bWVudCBjb3JyZWN0bHkuICBGb3IgZXhhbXBsZSwgd2hlbiB0eXBpbmc6CgoJICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS1ubHMKCgl0aGUgIi0tZGlzYWJsZS1ubHMiIHdhcyBpbmNvcnJlY3RseSBzZW50IHRvIHRoZSAibWFrZSIgcHJvZ3JhbS4KCjIwMDItMDEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIFJFQURNRS5VTlg6IEZpeCB0eXBvLgoJKiBidWlsZHMvdW5peC9pbnN0YWxsLm1rICh1bmluc3RhbGwpOiBGaXggbGlicmFyeSBuYW1lIGZvciBsaWJ0b29sLgoKMjAwMi0wMS0yOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBGaXggaW5jb3JyZWN0IGRlc3RydWN0aW9uIG9mCgl0aGUgZmFjZSBvYmplY3QgKGZhY2UtPnRvYy50YWJsZXMsIGZhY2UtPnJvb3QuZmFtaWx5X25hbWUsCglmYWNlLT5yb290LmF2YWlsYWJsZV9zaXplLCBmYWNlLT5jaGFyc2V0X2VuY29kaW5nLAoJZmFjZS0+Y2hhcnNldF9yZWdpc3RyeSBhcmUgbm93IGZyZWVkKS4gIFRoYW5rcyB0byBOaWVscyBNb3NlbGV5LgoKMjAwMi0wMS0yOCAgUm9iZXJ0byBBbGFtZWRhICA8b2phbmNhbm9AZ2Vla21haWwuZGU+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogU2V0IGBsb2FkZXItPm51bV9jaGFycycuCgoyMDAyLTAxLTI4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX3N1YnJzLCBwYXJzZV9jaGFyc3RyaW5ncyk6IFVzZSBjb3B5CglvZiBgYmFzZScgc3RyaW5nIGZvciBkZWNyeXB0aW5nIHRvIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIGRhdGEuCglCYXNlZCBvbiBhIHBhdGNoIGJ5IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC5vcmcucGw+LgoKMjAwMi0wMS0yNyAgR2l1bGlhbm8gUG9jaGluaSAgPHBvY2hpbmlAc2hpbnkuaXQ+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc2NhbmxpbmUpOiBGaXggYnVnIHdoaWNoIGNhdXNlZAoJYmFkIHJlbmRlcmluZyBvZiB0aGluIGxpbmVzIChsZXNzIHRoYW4gb25lIHBpeGVsIHRoaWNrKS4KCjIwMDItMDEtMjUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTWFrZSBsYXN0IHBhdGNoIHdvcmsKCWFjdHVhbGx5LgoKMjAwMi0wMS0yNSAgTWFydGluIFppbnNlciAgPHppbnNlckBkZWN1cy5kZT4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kb25lLCBmdGNfbm9kZV9kZXN0cm95KTogRml4Cgljb21waWxhdGlvbiB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZGVzY3JpcC5tbXMgKE9CSlMpOiBBZGQgYGZ0bW0ub2JqJy4KCSogc3JjL2NhY2hlL2Rlc2NyaXAubW1zIChmdGNhY2hlLm9iaik6IERlcGVuZGVuY2llcyBhZGRlZC4KCjIwMDItMDEtMjUgIFdBTkcgWWkgIDx3YW5neWlAZm91bmRlci5jb20uY24+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9nZXRfbmFtZV9pbmRleCk6IEZpeCBkZWFsbG9jYXRpb24gYnVnLgoKMjAwMi0wMS0yMSAgQW50b2luZSBMZWNhICA8QW50b2luZS1GcmVldHlwZUBMZWNhLU1hcnRpLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogVHlwbyBmaXhlZCAodGhhbmtzIHRvIERldGxlZiAiSGF3a2V5ZSIgV/xya25lcikgaW4KCXRoZSBVUkwgZm9yIHRoZSBvbmxpbmUgcmVzb3VyY2UuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL2Z0ZGVidWcuYzogTmV3IGZpbGUuCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcDogVXBkYXRlZC4KCjIwMDItMDEtMTggIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRzeXN0ZW0uYzogVXBkYXRlZCBmb3IgQW1pZ2FPUyAzLjkuCgkqIGJ1aWxkcy9hbWlnYS9SRUFETUU6IFVwZGF0ZWQuCgoyMDAyLTAxLTE4ICBJYW4gQnJvd24gIDxpYW4uYnJvd25AcHJpbnRzb2Z0LmRlPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBUaGUgc2NyaXB0IHdhcyBzdGlsbCBidWdneS4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBNYWtlIGl0IHJlYWxseSB3b3JrIGZvciBhbnkgaW5zdGFsbAoJcHJlZml4LgoKMjAwMi0wMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmE0OiBGaXggc29tZSBzZXJpb3VzIGJ1Z3MuCgoyMDAyLTAxLTA5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEJ1aWxkIHRvcC1sZXZlbCBKYW1maWxlLgoKMjAwMi0wMS0wOSAgTWF4aW0gU2hlbWFuYXJldiAgPG1jc2VlbWFnZ0B5YWhvby5jb20+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfbGluZSk6IFNtYWxsIG9wdGltaXphdGlvbiB0bwoJdGhlIHNtb290aCBhbnRpLWFsaWFzZWQgcmVuZGVyZXIgdGhhdCBkZWFscyB3aXRoIHZlcnRpY2FsIHNlZ21lbnRzLgoJVGhpcyByZXN1bHRzIGluIGEgNS03JSBzcGVlZHVwIGluIHJlbmRlcmluZyBzcGVlZC4KCjIwMDItMDEtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRlZCBzb21lIHdyYXBwZXIgc2NyaXB0cyB0byBtYWtlIHRoZSBpbnN0YWxsYXRpb24gbW9yZQoJVW5peC1mcmllbmRseS4KCgkqIGNvbmZpZ3VyZSwgaW5zdGFsbDogTmV3IGZpbGVzLgoKCSogSU5TVEFMTCwgUkVBRE1FLlVOWDogVXBkYXRlZCBpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlvbiB0byB1c2UgdGhlCgluZXcgJ2NvbmZpZ3VyZScgYW5kICdpbnN0YWxsJyBzY3JpcHRzLgoKMjAwMi0wMS0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjYgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogZG9jcy9CVUdTLCBkb2NzL0NIQU5HRVM6IFVwZGF0aW5nIGRvY3VtZW50YXRpb24gZm9yIDIuMC42IHJlbGVhc2UuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHk6IEZpeGVkIEhUTUwgcXVvdGluZyBpbiBzb3VyY2VzLgoJKGh0bWxfZm9ybWF0KTogUmVwbGFjZWQgd2l0aCAuLi4KCShodG1sX3F1b3RlKTogTmV3IGZ1bmN0aW9uLgoJKGh0bWxfcXVvdGUwKTogTmV3IGZ1bmN0aW9uLgoJKERvY0NvZGU6OmR1bXBfaHRtbDogU21hbGwgaW1wcm92ZW1lbnQuCgkoRG9jUGFyYWdyYXBoOjpkdW1wLCBEb2NCbG9jazo6aHRtbCk6IFVzZSBodG1sX3F1b3RlMCBhbmQgaHRtbF9xdW90ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFNldHRpbmcgZGVmYXVsdCBvcHRpb25zIGZvcgoJYSByZWxlYXNlIGJ1aWxkIChkZWJ1Z2dpbmcgb2ZmLCBieXRlY29kZSBpbnRlcnByZXRlciBvZmYpLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b3V0bG4uYywgc3JjL2NhY2hlL2Z0Y2NtYXAuYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRzYml0LmM6IFJlbW92aW5nIHNtYWxsIGNvbXBpbGVyCgl3YXJuaW5ncyAoaW4gcGVkYW50aWMgY29tcGlsYXRpb24gbW9kZXMpLgoKMjAwMi0wMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE1vZGlmaWVkIGNvbXB1dGF0aW9uCglvZiBhdXRvLWhpbnRlZCBzdGVtIHdpZHRoczsgdGhpcyBhdm9pZHMgY29sb3IgZnJpbmdlcyBpbgoJIkNsZWFyVHlwZS1saWtlIiByZW5kZXJpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoX0hlYWRlciwKCVRUX0xvYWRfU2ltcGxlX0dseXBoLCBUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCwgbG9hZF90cnVldHlwZV9nbHlwaCk6CglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIG1ha2UgaXQgbW9yZSBwYXJhbm9pZDsgdGhpcyBhdm9pZHMKCW5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhlIGNhc2Ugb2YgaW52YWxpZCBnbHlwaCBkYXRhIChhcwoJZW5jb3VudGVyZWQgaW4gdGhlIG91dHB1dCBvZiBzb21lIGJ1Z2d5IGZvbnQgY29udmVydGVycykuCgoyMDAyLTAxLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBBZGRlZCBzcGVjaWFsIFJFQURNRSBmaWxlIGZvciBVbml4IHVzZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEZpeGVkIHR5cG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogQWRkZWQgI2luY2x1ZGUgRlRfT1VUTElORV9IIHRvIGdldCByaWQKCW9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX0NoZWNrKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTAxLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEFkZCBjYXN0IHRvIGF2b2lkIGNvbXBpbGVyCgl3YXJuaW5nLgoKMjAwMi0wMS0wMyAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEFkZGVkIGEgZml4IHRvIGVuc3VyZSB0aGF0CglhbGwgRnJlZVR5cGUgaW5wdXQgc3RyZWFtcyBhcmUgY2xvc2VkIGluIGNoaWxkIHByb2Nlc3NlcyBvZiBhICJmb3JrIgoJb24gVW5peCBzeXN0ZW1zLiAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgKHBvdGVudGlhbCkgYWNjZXNzCgljb250cm9sIGlzc3Vlcy4KCjIwMDItMDEtMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogRml4ZWQgYSBidWcgdGhhdCBjcmFzaGVkIHRoZQoJbGlicmFyeSB3aGVuIGRlYWxpbmcgd2l0aCBjZXJ0YWluIHdlaXJkIGZvbnRzIGxpa2UgIlN0YWxpbmdyYWQiLCBpbgoJInNhZG4ucGZiIiAodGhpcyBmb250IGhhcyBubyBmdWxsIGZvbnQgbmFtZSBlbnRyeSkuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PdXRsaW5lX0NoZWNrKToKCU5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGUgY29uc2lzdGVuY3kgb2Ygb3V0bGluZSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVc2UgYEZUX091dGxpbmVfQ2hlY2snIHRvCgllbnN1cmUgdGhhdCBsb2FkZWQgZ2x5cGhzIGFyZSB2YWxpZC4gIFRoaXMgYWxsb3dzIGNlcnRhaW4gZm9udHMgbGlrZQoJInR0MTA5NW1fLnR0ZiIgdG8gYmUgbG9hZGVkIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdGhleSBjb250YWluCglyZWFsbHkgZnVua3kgZ2x5cGhzLgoKCVRoZXJlIHN0aWxsIGlzIGEgYnVnIHRoZXJlLCB0aG91Z2guCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCjIwMDEtMTItMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBGaXggYWR2YW5jZSB3aWR0aAoJY29tcHV0YXRpb24gb2YgYXV0by1oaW50ZWQgZ2x5cGhzLiAgVGhpcyBub3RpY2VhYmx5IGltcHJvdmVzIHRoZQoJc3BhY2luZyBvZiBsZXR0ZXJzIGluIEtERSBhbmQgR25vbWUuCgoyMDAxLTEyLTI1ICBBbnRvaW5lIExlY2EgPEFudG9pbmUtRnJlZXR5cGVATGVjYS1NYXJ0aS5vcmc+CgoJKiBidWlsZHMvZG9zL2RldGVjdC5tazogQ29ycmVjdGluZyB0aGUgb3JkZXIgZm9yIEJvcmxhbmQgY29tcGlsZXJzOgoJMTYtYml0IGJjYyB3YXMgbmV2ZXIgc2VsZWN0ZWQsIGFsd2F5cyBvdmVycmlkZGVuIGJ5IDMyLWJpdCBiY2MzMi4KCjIwMDEtMTItMjIgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGZjL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IEhhbmRsZSBwcm9wZXJ0eSBgUE9JTlRfU0laRScKCWFuZCBmaXggaW5jb3JyZWN0IGNvbXB1dGF0aW9uIG9mIGBhdmFpbGFibGVfc2l6ZXMnLgoKMjAwMS0xMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfbG9hZCk6IEF1dG8taGludGVkIGdseXBocyBoYWQgYW4KCWluY29ycmVjdCBnbHlwaCBhZHZhbmNlIGluIHRoZSBjYXNlIG9mIG1vbm8td2lkdGggZm9udHMgKGxpa2UKCUNvdXJpZXIsIEFuZGFsZSBNb25vLCBhbmQgb3RoZXJzKS4KCjIwMDEtMTItMjIgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvKjogQWRhcHRhdGlvbnMgdG8gbGF0ZXN0IGNoYW5nZXMuCglTdXBwb3J0IGFkZGVkIGZvciBNb3JwaE9TLgoKMjAwMS0xMi0yMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChGVF9DT01QT05FTlQpOiBSZWRlZmluZSB0byBgdHJhY2VfcHNocmVjJy4KCShwc19tYXNrX3RhYmxlX21lcmdlLCBwc19oaW50c19vcGVuLCBwc19oaW50c19zdGVtLAoJcHNfaGludHNfdDFzdGVtMywgcHNfaGludHNfdDJtYXNrLCBwc19oaW50c190MmNvdW50ZXIpOiBGaXgKCUZUX0VSUk9SIG1lc3NhZ2VzLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzEnLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoRlRfQ09NUE9ORU5UKTogRGVmaW5lIGFzCglgdHJhY2VfcHNoYWxnbzInLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2UpOiBVcGRhdGVkLgoKCSogZG9jcy9tb2R1bGVzLnR4dDogTmV3IGZpbGUuCgoyMDAxLTEyLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHBzX2hpbnRzX3QybWFzaywgcHNfaGludHNfdDJjb3VudGVyKToKCUlnbm9yZSBpbnZhbGlkICJoaW50bWFzayIgYW5kICJjbnRybWFzayIgb3BlcmF0b3JzIChpbnN0ZWFkIG9mCglyZXR1cm5pbmcgYW4gZXJyb3IpLiAgR2x5cGggMjAyOCBvZiB0aGUgQ0ZGIGZvbnQgIk1TdW5nLUxpZ2h0LUFjcm8iCgljb3VsZG4ndCBiZSByZW5kZXJlZCBvdGhlcndpc2UgKGl0IHNlZW1zIGl0cyBjaGFyc3RyaW5nIGlzIGJ1Z2d5LAoJdGhvdWdoIHRoaXMgcmVxdWlyZXMgbW9yZSBhbmFseXNpcykuCgkoRlRfQ09NUE9ORU5UKTogRGVmaW5lLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfUGFyc2VfQ2hhclN0cmluZ3MpLCBzcmMvcHNhdXgvdDFkZWNvZGUuYwoJKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAoKiksIEZpeGVkIGEKCWJ1ZyB3aGVyZSB0aGUgWCBhbmQgWSBheGlzIHdoZXJlIGludmVyc2VkIGluIHRoZSBwb3N0c2NyaXB0IGhpbnRlci4KCVRoaXMgY2F1c2VkIHByb2JsZW0gd2hlbiBkaXNwbGF5aW5nIG9uIG5vbi1zcXVhcmUgc3VyZmFjZXMuCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogcy92ZXJ0aWNhbC9kaW1lbnNpb24vLgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2dsb2JhbHNfbmV3KTogUmVwbGFjZWQgYSBmbG9hdGluZwoJcG9pbnQgY29uc3RhbnQgd2l0aCBhIGZpeGVkLWZsb2F0IGVxdWl2YWxlbnQuICBGb3Igc29tZSByZWFzb25zIG5vdAoJYWxsIGNvbXBpbGVycyBhcmUgY2FwYWJsZSBvZiBkaXJlY3RseSBjb21wdXRpbmcgYSBmbG9hdGluZyBwb2ludGVyCgljb25zdGFudCBjYXN0ZWQgdG8gRlRfRml4ZWQsIGFuZCB3aWxsIGxpbmsgYSBtYXRoIGxpYnJhcnkgaW5zdGVhZC4KCjIwMDEtMTItMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95LCBmdGNfY2FjaGVfbG9va3VwKTogRml4Cgl0cmFjaW5nIHN0cmluZ3MuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogRGl0dG8uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChmdGNfZmFtaWx5X3RhYmxlX2FsbG9jLAoJZnRjX2ZhbWlseV90YWJsZV9mcmVlLCBGVENfTWFuYWdlcl9DaGVjayk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogRGl0dG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9MaWJyYXJ5KTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAxLTEyLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJQWRkZWQgUG9zdFNjcmlwdCBoaW50ZXIgc3VwcG9ydCB0byB0aGUgQ0ZGIGFuZCBDSUQgZHJpdmVycy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaCAoQ0ZGX0ZvbnQpOiBOZXcgbWVtYmVyCglgcHNoaW50ZXInLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZyk6IE5ldyBmdW5jdGlvbi4KCSogc3JjL2NmZi9jZmZsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0luaXRfQnVpbGRlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0J1aWxkZXJfSW5pdCk6IFRoaXMuCglBZGRlZCBuZXcgYXJndW1lbnQgYGhpbnRpbmcnLgoJKENGRl9Eb25lX0J1aWxkZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9CdWlsZGVyX0RvbmUpOiBUaGlzLgoJKENGRl9Jbml0X0RlY29kZXIpOiBBZGRlZCBuZXcgYXJndW1lbnQgYGhpbnRpbmcnLgoJKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IEltcGxlbWVudCB2c3RlbSBzdXBwb3J0LgoJKENGRl9Mb2FkX0dseXBoKTogVXBkYXRlZC4KCUFkZCBoaW50aW5nIHN1cHBvcnQuCgkoY2ZmX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSk6IFVzZSBDRkZfR2V0X1N0YW5kYXJkX0VuY29kaW5nKCkuCgkoY2ZmX2FyZ3VtZW50X2NvdW50cyk6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuaDogVXBkYXRlZC4KCSogc3JjL2NmZi9jZmZvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENGRl9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLCBDRkZfU2l6ZV9Eb25lLCBDRkZfU2l6ZV9Jbml0LAoJQ0ZGX1NpemVfUmVzZXQsIENGRl9HbHlwaFNsb3RfRG9uZSwgQ0ZGX0dMeXBoU2xvdF9Jbml0KTogTmV3CglmdW5jdGlvbnMuCgkoQ0ZGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0ZhY2VfSW5pdCk6IFRoaXMuCglBZGQgaGludGVyIHN1cHBvcnQuCgkoQ0ZGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoQ0ZGX0luaXRfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfRHJpdmVyX0luaXQpOiBUaGlzLgoJKENGRl9Eb25lX0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0RyaXZlcl9Eb25lKTogVGhpcy4KCSogc3JjL2NmZi9jZmZvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxdHlwZXMuaCAoQ0lEX0ZhY2VSZWMpOiBOZXcgbWVtYmVyCglgcHNoaW50ZXInLgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Mb2FkX0dseXBoKTogQWRkIGhpbnRlciBzdXBwb3J0LgoJKiBzcmMvY2lkL2NpZG9ianMuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0lEX0dseXBoU2xvdF9Eb25lLCBDSURfR2x5cGhTbG90X0luaXQsIENJRF9TaXplX0dldF9HbG9iYWxzX0Z1bmNzLAoJQ0lEX1NpemVfRG9uZSwgQ0lEX1NpemVfSW5pdCwgQ0lEX1NpemVfUmVzZXQpOiBOZXcgZnVuY3Rpb25zLgoJKENJRF9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9GYWNlX0RvbmUpOiBUaGlzLgoJKENJRF9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9GYWNlX0luaXQpOiBUaGlzLgoJQWRkIGhpbnRpbmcgc3VwcG9ydC4KCShDSURfSW5pdF9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENJRF9Ecml2ZXJfSW5pdCk6IFRoaXMuCgkoQ0lEX0RvbmVfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDSURfRHJpdmVyX0RvbmUpOiBUaGlzLgoJKiBzcmMvY2lkL2NpZG9ianMuaDogVXBkYXRlZC4KCSogc3JjL2NpZHJpdmVyLmM6IFVwZGF0ZWQuCgoJKiBzcmMvcHNoaW50ZXIvcHNocmVjLmMgKHQyX2hpbnRfc3RlbXMpOiBGaXhlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX0xpYnJhcnkpOiBGaXhlZCBhIHN0dXBpZCBidWcgdGhhdAoJY3Jhc2hlZCB0aGUgbGlicmFyeSBvbiBleGl0LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IEVuYWJsZSBmb250IG1hdHJpeAoJdHJhbnNmb3JtYXRpb24gb2YgaGludGVkIGdseXBocy4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IEZpeCBlcnJvciBjb25kaXRpb24uCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0ZhY2VfRG9uZSk6IEZpeGVkIGEgbWVtb3J5IGxlYWs7IHRoZSBzdWJycwoJcm91dGluZXMgd2VyZSBuZXZlciByZWxlYXNlZCB3aGVuIENJRCBmYWNlcyB3ZXJlIGRlc3Ryb3llZC4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oLCBzcmMvY2ZmL2NmZmxvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5jOiBVcGRhdGVkCgl0byBtb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGVuY29kaW5nIHRhYmxlcyBiYWNrIHdpdGhpbiAiY2ZmbG9hZC5jIgoJaW5zdGVhZCBvZiBtYWtpbmcgdGhlbSBwYXJ0IG9mIGEgc2hhcmVkIGhlYWRlciAoY2F1c2luZyBwcm9ibGVtcyBpbgoJIm11bHRpIiBidWlsZHMpLiAgVGhpcyByZXZlcnRzIGNoYW5nZSAyMDAxLTA4LTA4LgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkIGZvciAyLjAuNiByZWxlYXNlLgoJKiBkb2NzL1RPRE86IEFkZGVkICJzdGVtMyBhbmQgY291bnRlciBoaW50cyBzdXBwb3J0IiB0byB0aGUgVE9ETwoJbGlzdCBmb3IgdGhlIFBvc3RzY3JpcHQgaGludGVyLgoJKiBkb2NzL0JVR1M6IENsb3NlZCB0aGUgQVVUT0hJTlQtTk8tU0JJVFMgYnVnLgoKMjAwMS0xMi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNhY2hlLmg6IEFkZGVkIGNvbW1lbnRzIHRvIGluZGljYXRlIHRoYXQKCXNvbWUgb2YgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyBzaG91bGQgb25seSBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucwoJdGhhdCBuZWVkIHRvIGltcGxlbWVudCBjdXN0b20gY2FjaGUgdHlwZXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChjdXJfdG9fb3JnLCBvcmdfdG9fY3VyKTogRml4ZWQgYSBuYXN0eSBidWcKCXRoYXQgcHJldmVudGVkIGNvbXBvc2l0ZXMgZnJvbSBsb2FkaW5nIGNvcnJlY3RseSwgZHVlIHRvIG1pc3NpbmcKCXBhcmVudGhlc2VzIGFyb3VuZCBtYWNybyBwYXJhbWV0ZXJzLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKFNGTlRfTG9hZF9GYWNlKTogTWFrZSB0aGUgInBvc3QiIGFuZCAibmFtZSIKCXRhYmxlcyBvcHRpb25hbCB0byBsb2FkIFBDTCBmb250cyBwcm9wZXJseS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvYmFzZS9mdG9ianMuYwoJKEZUX0xvYWRfR2x5cGgpLCBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0xPQURfU0JJVFNfT05MWSk6CgkiRml4ZWQiIHRoZSBidWcgdGhhdCBwcmV2ZW50ZWQgZW1iZWRkZWQgYml0bWFwcyB0byBiZSBsb2FkZWQgd2hlbgoJdGhlIGF1dG8taGludGVyIGlzIHVzZWQuICBUaGlzIGFjdHVhbGx5IGlzIGEgaGFjayBidXQgd2lsbCBiZSBlbm91Z2gKCXVudGlsIHRoZSBpbnRlcm5hbCByZS1kZXNpZ24gc2NoZWR1bGVkIGZvciBGcmVlVHlwZSAyLjEuCgoJKiBzcmMvcmFzdGVyL2Z0cmVuZDEuYyAoZnRfcmFzdGVyMV9yZW5kZXIpOiBGaXhlZCBhIG5hc3R5IG91dGxpbmUKCXNoaWZ0aW5nIGJ1ZyBpbiB0aGUgbW9ub2Nocm9tZSByZW5kZXJlci4KCgkqIFJFQURNRTogVXBkYXRlZCB2ZXJzaW9uIG51bWJlcnMgdG8gMi4wLjYuCgoyMDAxLTEyLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IHRlc3QgZm9yIGludmFsaWQKCWdseXBoIGhlYWRlci4KCjIwMDEtMTItMTUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVENfTm9kZV9VbnJlZik6IFJlbW92ZWQuICBJdCBpcwoJYWxyZWFkeSBpbiBmdGNtYW5hZy5oLgoJKiBzcmMvY2FjaGUvZnRjc2JpdHMuYyAoZnRjX3NiaXRfbm9kZV9sb2FkKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGdmYW0nLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCSogZnRjX2ZhbWlseV90YWJsZV9mcmVlKTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaDogVXBkYXRlZC4KCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3kpOiBVc2UgRlRfRVhQT1JUX0RFRi4KCSogc3JjL2NhY2hlL2Z0Y2NtYXAuYyAoZnRjX2NtYXBfbm9kZV9pbml0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQoJYGNmYW0nLgoJUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgkoZnRjX2NtYXBfZmFtaWx5X2luaXQpOiBEaXR0by4KCShGVENfQ01hcENhY2hlX0xvb2t1cCk6IERpdHRvLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA4OjA6Mi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMTItMTQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkLgoKMjAwMS0xMi0xNCAgU2NvdHQgTG9uZyAgPHNjb3R0QHN3aWZ0dmlldy5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4aW5nIGNyYXNoIHdoZW4KCWRlYWxpbmcgd2l0aCBpbnZhbGlkIGZvbnRzIChpLmUuIGdseXBoIHNpemUgPCAxMCBieXRlcykuCgoyMDAxLTEyLTE0ICBTYW0gTGF0aW5nYSA8c2xvdWtlbkBkZXZvbHV0aW9uLmNvbT4KCgkqIGJ1aWxkcy9tYWMvZnJlZXR5cGUubWFrZTogQSBuZXcgTWFrZWZpbGUgdG8gYnVpbGQgd2l0aCBNUFcgb24KCU1hY09TIGNsYXNzaWMuCgoyMDAxLTEyLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYwoJKFQxX0xvYWRfR2x5cGgpLCBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Mb2FkX0dseXBoKSwKCXNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBGaXhlZCBhIHNlcmlvdXMgYnVnIGNvbW1vbiB0bwoJYWxsIGZvbnQgZHJpdmVycyAodGhlIGFkdmFuY2Ugd2lkdGggd2FzIG5ldmVyIGhpbnRlZCB3aGVuIGl0CglzaG91bGQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGUkVFVFlQRV9QQVRDSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZGVidWdfbWVtX2R1bW15KSBbIUZUX0RFQlVHX01FTU9SWV06IERvbid0Cgl1c2UgYGV4dGVybicga2V5d29yZC4KCjIwMDEtMTItMTIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnQvcHNoZ2xvYi5jIChwc2hfYmx1ZXNfc2NhbGVfem9uZXMsIHBzaF9ibHVlc19zbmFwX3N0ZW0KCXBzaF9nbG9iYWxzX25ldyk6IEFkZGluZyBjb3JyZWN0IEJsdWVTY2FsZS9CbHVlU2hpZnQgc3VwcG9ydCwgcGx1cwoJZmFtaWx5IGJsdWVzIHByb2Nlc3NpbmcuCgkqIHNyYy9wc2hpbnQvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBVcGRhdGVkLgoKCVN0YXJ0ZWQgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlciBpbiB0aGUgQ0ZGIG1vZHVsZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IGl0LgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IFNvbWUgcG9ydGFiaWxpdHkgZml4ZXMuCgoyMDAxLTEyLTExICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBmdGRlYnVnLm9iai4KCjIwMDEtMTItMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0dlbmVyaWNfSGVhZGVyKTogVHlwb3MuCgoyMDAxLTEyLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1vZGlmaWVkIHRoZSBzY3JpcHQgdG8gcHJldmVudAoJcGFzc2luZyAiLUwvdXNyL2xpYiIgdG8gZ2NjLgoKCSogZG9jcy9GVEwuVFhUOiBTaW1wbGUgZml4IChjaGFuZ2UgIkxJQ0VOU0UuVFhUIiB0byAiRlRMLlRYVCIpLgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBOZXcgZmlsZSBmb3IgY2hlY2tpbmcgY29uZmlndXJlIHBhdGhzLgoJV2UgbmVlZCB0byBpbnN0YWxsIGl0IGluICQocHJlZml4KS9zaGFyZS9hY2xvY2FsL2ZyZWV0eXBlMi5tNCBidXQgSQoJZGlkbid0IG1vZGlmeSBidWlsZHMvdW5peC9pbnN0YWxsLm1rIHlldC4KCgkqIElOU1RBTEw6IFVwZGF0ZWQgdGhlIGluc3RydWN0aW9ucyB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHdpdGgKCUphbS4gIFRoZXkgd2VyZSBzaW1wbHkgd3JvbmcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9Db3MpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IGNhdXNlZAoJc2xpZ2h0bHkgaW1wcm9wZXIgcmVzdWx0cyBmb3IgYEZUX0NvcycgYW5kIGBGVF9TaW4nIChleGFtcGxlOgoJRlRfU2luKDApID09IC0xISkuCgoyMDAxLTEyLTExICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfTG9uZ0xFLCBHRVRfVUxvbmdMRSk6CglGaXhlZCBpbmNvcnJlY3QgYXJndW1lbnQgdHlwZXMuCgoyMDAxLTEyLTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0luaXRfRmFjZSk6IEFsbG93IFhmdCB0byB1c2UgUENGIGZvbnRzCglieSBzZXR0aW5nIHRoZSAiZmFjZS0+bWV0cmljcy5tYXhfYWR2YW5jZSIgY29ycmVjdGx5LgoKMjAwMS0xMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjbWFwLmgsIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEFkZGVkIG5ldwoJY2hhcm1hcCBjYWNoZS4KCSogc3JjL2NhY2hlL2Z0Y2FjaGUuYzogVXBkYXRlZC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBzL1VOVVNFRC9GVF9VTlVTRUQvLgoKMjAwMS0xMi0wNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlYWRpbmcgLmRmb250IGZpbGVzIG9uIE1hYyBPUyBYLiAgQWxzbyBhZGRlZCBhCgluZXcgcm91dGluZSB3aGljaCBsb29rcyB1cCBhIGdpdmVuIGZvbnQgYnkgbmFtZSBpbiB0aGUgTWFjIE9TIGFuZAoJcmV0dXJucyB0aGUgZGlzayBmaWxlIHdoZXJlIGl0IHJlc2lkZXMuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBJbmNsdWRlIDxGaWxlcy5oPiBhbmQgPFRleHRVdGlscy5oPi4KCShpc19kZm9udCk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2VfRnJvbV9kZm9udCk6IE5ldyBmdW5jdGlvbi4KCShGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUpOiBOZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2UpOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvSmFtZmlsZSwgc3JjL2NhY2hlL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogU21hbGwgdXBkYXRlLgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZS1vcmRlcmVkIGNvZGUgZm9yCglkZWJ1Z2dpbmcgcHVycG9zZXMuCglDb21tZW50IG91dCB1c2Ugb2YgYG9yaWdpbicuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIpOiBGaXhlZCBhIG5hc3R5IGhpZGRlbiBidWcKCXdoZXJlIG91dGxpbmUgc2hpZnRpbmcgd2Fzbid0IGNvcnJlY3RseSB1bmRvbmUgYWZ0ZXIgYml0bWFwCglyYXN0ZXJpemF0aW9uLiAgVGhpcyBjcmVhdGVkIHByb2JsZW1zIHdpdGggY2VydGFpbiBnbHlwaHMgKGxpa2UgJyInCglvZiBjZXJ0YWluIGZvbnRzKSBhbmQgdGhlIGNhY2hlIHN5c3RlbS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCShwczJfaGludHNfYXBwbHkpOiBTbWFsbCBmaXguCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLCBzcmMvY2FjaGUvKjoKCVlldCBhbm90aGVyIG1hc3NpdmUgcmV3cml0ZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIGluIG9yZGVyIHRvCglib3RoIGluY3JlYXNlIHBlcmZvcm1hbmNlIGFuZCBhbGxvdyBzaW1wbGVyIGNhY2hlIHN1Yi1jbGFzc2luZy4gIEFzCglhbiBleGFtcGxlLCB0aGUgY29kZSBmb3IgdGhlIGltYWdlIGFuZCBzYml0IGNhY2hlcyBpcyBub3cgbXVjaAoJc2ltcGxlci4KCglJIHN0aWxsIG5lZWQgdG8gdXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGluCgl3d3cvZnJlZXR5cGUyL2RvY3MvY2FjaGUuaHRtbCB0byByZWZsZWN0IHRoZSBuZXcgZGVzaWduIHRob3VnaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0NBQ0hFX0NIQVJNQVBfSCk6IE5ldwoJbWFjcm8uCgkoRlRfQ0FDSEVfSU5URVJOQUxfQ0FDSEVfSCk6IFVwZGF0ZWQuCgoyMDAxLTEyLTA1ICBEYXZpZCBLcmF1c2UgIDxmcmVldHlwZUBkYXZpZGtyYXVzZS5jb20+CgoJKiBkb2NzL2xpY2Vuc2UudHh0OiBzL1ggV2luZG93cy9YIFdpbmRvdyBTeXN0ZW0vLgoKMjAwMS0xMi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBGaXggZGVmaW5pdGlvbiBjb25kaXRpb24gb2YgTUVNX1NldCgpLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoTV9ZKTogQ2hhbmdlIHZhbHVlIHRvIDE5Mi4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2Rlc3Ryb3kpOiBGaXggcHJpbnRmKCkgcGFyYW1ldGVyLgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKGZ0Y19pbWFnZV9ub2RlX2luaXQsCglmdGNfaW1hZ2Vfbm9kZV9jb21wYXJlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX3dlaWdodCk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlLgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKE1FTV9TZXQpOiBNb3ZlIGRlZmluaXRpb24gZG93biB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IFVzZSBVTlVTRUQoKSB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9wY2YvcGNmcmVhZC5jICh0YWJsZU5hbWVzKTogVXNlIGBjb25zdCcuCgkocGNmX3JlYWRfVE9DKTogQ2hhbmdlIGNvdW50ZXIgbmFtZSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoJVXNlIGBjb25zdCcuCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfY2xvc2UpOiBSZW1vdmUgcmVkdW5kYW50CglkZWNsYXJhdGlvbi4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVuYW1lIHZhcmlhYmxlcwoJdG8gYXZvaWQgc2hhZG93aW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5oOiBSZW1vdmUgZG91YmxlIGRlY2xhcmF0aW9ucyBvZiBgVDFfU2l6ZV9Jbml0KCknCglhbmQgYFQxX1NpemVfRG9uZSgpJy4KCjIwMDEtMTEtMjAgIEFudG9pbmUgTGVjYSAgPGFudG9pbmVsZWNhQG11bHRpbWFuaWEuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBNU0ROIChQYXNzcG9ydCBTREspLiAgQWxzbyBhZGRlZAoJY29tbWVudHMgYWJvdXQgdGhlIG1lYW5pbmcgb2YgYml0IDU3IG9mIHRoZSBgT1MvMicgdGFibGUKCShUVF9VQ1JfU1VSUk9HQVRFUykgd2hpY2ggKHdpdGggT3BlblR5cGUgdi4xLjMpIG5vdyBtZWFucyAidGhlcmUgaXMKCWEgY2hhcmFjdGVyIGJleW9uZCAweEZGRkYgaW4gdGhpcyBmb250Ii4gIFRoYW5rcyB0byBEZXRsZWYgV/xya25lcgoJPFRldGlTb2Z0QGFwZy5sYWhuLmRlPiBmb3Igbm90aWNpbmcgdGhpcy4KCjIwMDEtMTEtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci97cHNoYWxnbzIuYywgcHNoYWxnbzEuY306IEZpeGVkIHN0dXBpZCBidWcgaW4gc29ydGluZwoJcm91dGluZSB0aGF0IGNyZWF0ZWQgbmFzdHkgYWxpZ25tZW50IGFydGVmYWN0cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYywgdGVzdHMvZ3ZpZXcuYzogRGVidWdnaW5nIHVwZGF0ZXMuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRGUtYWN0aXZhdGVkIGV4cGVyaW1lbnRhbCBnYW1tYSBzdXBwb3J0LgoJQXBwYXJlbnRseSwgYG9wdGltYWwnIGdhbW1hIHRhYmxlcyBkZXBlbmQgb24gdGhlIG1vbml0b3IgdHlwZSwKCXJlc29sdXRpb24gYW5kIGdlbmVyYWwga2FybWEsIHNvIGl0J3MgYmV0dGVyIHRvIGNvbXB1dGUgdGhlbSBvdXRzaWRlCglvZiB0aGUgcmFzdGVyaXplciBpdHNlbGYuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGB2b2xhdGlsZScga2V5d29yZC4KCjIwMDEtMTAtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgZXhwZXJpbWVudGFsIGBnYW1tYScgc3VwcG9ydC4gIFRoaXMgcHJvZHVjZXMgc21vb3RoZXIgZ2x5cGhzCglhdCBzbWFsbCBzaXplcyBmb3IgdmVyeSBsaXR0bGUgY29zdC4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19pbml0X2dhbW1hKTogTmV3IGZ1bmN0aW9uLgoJKGdyYXlfcmFzdGVyX25ldyk6IFVzZSBpdC4KCglWYXJpb3VzIGZpeGVzIHRvIHRoZSBhdXRvLWhpbnRlci4gIFRoZXkgbWVyZWx5IGltcHJvdmUgdGhlIG91dHB1dCBvZgoJc2Fucy1zZXJpZiBmb250cy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc3RpbGwgcHJvYmxlbXMgd2l0aCBzZXJpZmVkCglmb250cyBhbmQgY29tcG9zaXRlcyAoYWNjZW50ZWQgY2hhcmFjdGVycykuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQsCglhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfb3V0bGluZV9zYXZlLCBhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMpOiBGaXggdHlwb3MuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IE5ldyBhcmd1bWVudAoJYHZlcnRpY2FsJy4gIEltcGxlbWVudCBpbXByb3ZlbWVudC4KCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzLCBhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBGaXgKCXR5cG9zLgoJKGFoX2hpbnRlcl9sb2FkKTogU2V0IGBhaF9kZWJ1Z19oaW50ZXInIGlmIERFQlVHX0hJTlRFUiBpcyBkZWZpbmVkLgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIERFQlVHX0hJTlRFUiBtYWNyby4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaDogRGl0dG8uCgkoQUhfSGludGVyKTogUmVtb3ZlIGBkaXNhYmxlX2hvcnpfZWRnZXMnIGFuZCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJwoJKG1ha2luZyB0aGVtIGdsb2JhbCBhcyBgYWhfZGVidWdfZGlzYWJsZV9ob3J6JyBhbmQKCWBhaF9kZWJ1Z19kaXNhYmxlX3ZlcnQnKS4KCUZpeCB0eXBvcy4KCgkqIHRlc3RzL2d2aWV3LmM6IFVwZGF0ZWQgdGhlIGRlYnVnZ2luZyBnbHlwaCB2aWV3ZXIgdG8gc2hvdyB0aGUKCWhpbnRzIGdlbmVyYXRlZCBieSB0aGUgImF1dG9oaW50IiBtb2R1bGUuCgoyMDAxLTEwLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2h1bmsuYyAoZnRjX2NodW5rX2NhY2hlX2xvb2t1cCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNvbnNpZGVyYWJseSBsb3dlcmVkIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWJzdHJhY3QgY2h1bmsgY2FjaGUuCgoyMDAxLTEwLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmgsCglzcmMvY2FjaGUvKi5jOiBNYWpvciByZS1kZXNpZ24gb2YgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gcHJvdmlkZQoJYmV0dGVyIHBlcmZvcm1hbmNlIGFzIHdlbGwgYXMgYW4gIkFjcXVpcmUiLyJSZWxlYXNlIiBBUEkuICBTZWVtcyB0bwoJd29yayB3ZWxsIGhlcmUsIGJ1dCBwcm9iYWJseSBuZWVkcyBhIGJpdCBtb3JlIHRlc3RpbmcuCgoyMDAxLTEwLTI2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZCB0byByZWZsZWN0IG15IHRha2luZyBvdmVyIHRoZSBwcm9qZWN0CglhbmQgdGhhdCBpcyBub3cgYmVpbmcgYWN0aXZlbHkgbWFpbnRhaW5lZC4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHBhcnNlX2ZvbmQpOiBBcHBsaWVkIHBhdGNoZXMgZnJvbSBQYXVsIE1pbGxlcgoJPHBhdWxtQHByb2ZvdW5kZWZmZWN0cy5jb20+IHRvIHN1cHBvcnQgbG9hZGluZyBhIGZhY2Ugb3RoZXIgdGhhbiB0aGUKCWZpcnN0IGZyb20gYSBGT05EIHJlc291cmNlLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTI1ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL2Z0bGliLnByajogVXBkYXRlIG9mIENvZGVXYXJyaW9yIHByb2plY3QgZmlsZSBmb3IgTWFjCglPUyBmb3IgbGF0ZXN0IHZlcnNpb24gKDcpIG9mIENXUHJvIGFuZCBmb3IgcmVjZW50IGNoYW5nZXMgdG8gdGhlIEZUCglzb3VyY2UgdHJlZS4KCjIwMDEtMTAtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFVwZGF0ZWQgY29tbWVudHMgdG8gZXhwbGFpbgoJcHJlY2lzZWx5IGhvdyB0byB1c2UgcHJvamVjdC1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB3aXRob3V0Cgltb2RpZnlpbmcgdGhpcyBmaWxlIG1hbnVhbGx5LgoKCShGVF9DT05GSUdfRk9SQ0VfSU5UNjQpOiBEZWZpbmUuCgoJKEZUX0RFQlVHX01FTU9SWSk6IE5ldyBtYWNyby4KCjIwMDEtMTAtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5KTogQWRkZWQgYSBtaXNzaW5nIGB7Jy4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCUltcHJvdmVtZW50cyB0byB0aGUgbWVtb3J5IGRlYnVnZ2VyIHRvIHJlcG9ydCBtb3JlIGluZm9ybWF0aW9uIGluCgljYXNlIG9mIGVycm9ycy4gIEFsc28sIHNvbWUgYWxsb2NhdGlvbnMgdGhhdCBvY2N1cmVkIHRocm91Z2ggUkVBTExPQwoJY291bGRuJ3QgYmUgcHJldmlvdXNseSBjYXRjaGVkIGNvcnJlY3RseS4KCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmMgKGFoX291dGxpbmVfY29tcHV0ZV9zZWdtZW50cywKCWFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyksIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfbmV3KSwKCXNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zcGFuLCBncmF5X3Jhc3Rlcl9uZXcpOiBSZXBsYWNlZAoJbGliZXJhbCB1c2VzIG9mIG1lbXNldCgpIGJ5IHRoZSBNRU1fU2V0KCkgbWFjcm8uCgoyMDAxLTEwLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKFVwZGF0ZSk6IFJlbW92ZWQgdG8gYmUgaW5saW5lZCBpbiAuLi4KCShTb3J0KTogVXBkYXRlZC4KCjIwMDEtMTAtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCWJ1aWxkcy92bXMvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJYnVpbGRzL2FtaWdhL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCXNyYy9iYXNlL2Z0ZGJnbWVtLmM6IFVwZGF0ZWQgdGhlIG1lbW9yeSBkZWJ1Z2dlciBhbmQKCXBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiBgZnRzeXN0ZW0nIGluIG9yZGVyIHRvIGJlIGFibGUKCXRvIGRlYnVnIG1lbW9yeSBhbGxvY2F0aW9ucyBvbiBVbml4LCBWTVMgYW5kIEFtaWdhIHRvbyEKCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jIChwc2gyX2hpbnRfdGFibGVfcmVjb3JkX21hc2spOiBSZW1vdmVkCglzb21lIGJvZ3VzIHdhcm5pbmdzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oLCBzcmMvYmFzZS9mdGRiZ21lbS5jOgoJTW9kaWZpZWQgdGhlIGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlciB0byByZXBvcnQgdGhlIGxvY2F0aW9uIChzb3VyY2UKCWZpbGUgbmFtZSArIGxpbmUgbnVtYmVyKSB3aGVyZSBsZWFrZWQgbWVtb3J5IGJsb2NrcyBhcmUgYWxsb2NhdGVkIGluCgl0aGUgc291cmNlIGZpbGUuCgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jOiBOZXcgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyLiAgWW91IG11c3QKCWRlZmluZSB0aGUgRlRfREVCVUdfTUVNT1JZIG1hY3JvIGluICJmdG9wdGlvbi5oIiB0byBlbmFibGUgaXQuICBJdAoJd2lsbCByZWNvcmQgZXZlcnkgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhbmQgcmVwb3J0IHNpbXBsZSBlcnJvcnMKCWxpa2UgbWVtb3J5IGxlYWtzIGFuZCBkb3VibGUgZGVsZXRlcy4KCgkqIHNyYy9iYXNlL0phbWZpbGU6IEluY2x1ZGUgZnRkYmdtZW0uCgkqIHNyYy9iYXNlL3J1bGVzLm1rOiBEaXR0by4KCSogc3JjL2Jhc2UvZnRiYXNlLmM6IEluY2x1ZGUgZnRkYmdtZW0uYy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IEFkZGVkIHRoZSBGVF9ERUJVR19NRU1PUlkKCW1hY3JvIGRlZmluaXRpb24uCgoJKiBzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSk6IE1vZGlmaWVkIHRoZQoJYmFzZSBjb21wb25lbnQgdG8gdXNlIHRoZSBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIgd2hlbiB0aGUgbWFjcm8KCUZUX0RFQlVHX01FTU9SWSBpcyBkZWZpbmVkLgoKMjAwMS0xMC0yMSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfRG9uZV9Gb250KTogRnJlZSBzdWJmb250cyBhcnJheSBvbmx5IGlmCgl3ZSBhcmUgd29ya2luZyB3aXRoIGEgQ0lEIGtleWVkIENGRiBmb250LiAgT3RoZXJ3aXNlLCBhIHZhcmlhYmxlCgl0aGF0IHdhcyBuZXZlciBhbGxvY2F0ZWQgbWVtb3J5IG1pZ2h0IGZyZWVkLiAgVGhpcyBpcyBhIGNvcnJlY3Rpb24KCXRvIHRoZSBwcmV2aW91cyBwYXRjaCBmb3IgZnJlZWluZyBzdWJmb250cy4KCjIwMDEtMTAtMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0RvbmVfRm9udCk6IEZyZWUgdGhlIHN1YmZvbnRzIGFycmF5IHRvCglhdm9pZCBhIG1lbW9yeSBsZWFrLgoKMjAwMS0xMC0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jLAoJc3JjL3BzaGludGVyL3BzaGdsb2IuYzogUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MgaW4gcGVkYW50aWMgbW9kZXMKCShpbiBtdWx0aS1vYmplY3QgY29tcGlsYXRpb24gbW9kZSwgbWFpbmx5KS4KCjIwMDEtMTAtMjAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2VuY29kaW5nKTogQWRkIGEgdGVzdCB0byBtYWtlIHN1cmUKCXRoYXQgY3VzdG9tIGVuY29kaW5ncyAoaS5lLiwgbmVpdGhlciBTdGFuZGFyZEVuY29kaW5nIG5vcgoJRXhwZXJ0RW5jb2RpbmcpIGFyZSBub3QgbG9hZGVkIHR3aWNlIHdoZW4gdGhlIFR5cGUgMSBmb250IGlzCglzeW50aGV0aWMuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbmFtZSwgcGFyc2Vfc3VicnMpOiBBZGRlZCBhIHRlc3QKCWZvciB3aGVuIGxvYWRpbmcgc3ludGhldGljIGZvbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmb250IG5hbWUKCWFuZCBzdWJyb3R1aW5lcyBhcmUgbm90IGxvYWRlZCB0d2ljZS4gIFRoaXMgaXMgdG8gcmVtb3ZlIGEgbWVtb3J5CglsZWFrIHRoYXQgb2NjdXJlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCBtZW1vcnkgYmxvY2tzIGZvciB0aGVzZQoJb2JqZWN0cyB3ZXJlIG5vdCBkZWFsbG9jYXRlZCB3aGVuIHRoZSBvYmplY3RzIHdlcmUgcGFyc2VkIHRoZQoJc2Vjb25kIHRpbWUuCgoyMDAxLTEwLTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hyZWMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IEdldHRpbmcgcmlkIG9mCgljb21waWxlciB3YXJuaW5ncy4KCgkqIHNyYy9wc2hpbnRlci9tb2R1bGUubWssIHNyYy9wc2hpbnRlci9ydWxlcy5tazogQWRkaW5nIGNvbnRyb2wKCWZpbGVzIHRvIGJ1aWxkIHRoZSBQb3N0U2NyaXB0IGhpbnRlciB3aXRoIHRoZSAib2xkIiBidWlsZCBzeXN0ZW0uCgoyMDAxLTEwLTE5ICBKYWNvYiBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogZGVzY3JpcC5tbXMsIHNyYy9wc2hpbnRlci9kZXNjcmlwLm1tczogVXBkYXRlcyB0byB0aGUgVk1TIGJ1aWxkCglmaWxlcy4KCjIwMDEtMTAtMTggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmgsIHNyYy90b29scy9nbG5hbWVzLnB5OiBSZXdyb3RlIHRoZQoJImdsbmFtZXMucHkiIHNjcmlwdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSAicHN0YWJsZXMuaCIgaGVhZGVyIGZpbGUuCglUaGUgb2xkIG9uZSBjb250YWluZWQgYSBzZXJpb3VzIGJ1ZyB0aGF0IG1hZGUgRnJlZVR5cGUgcmV0dXJuCglpbmNvcnJlY3QgZ2x5cGggbmFtZXMgZm9yIGNlcnRhaW4gZ2x5cGhzLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogQ2hhbmdpbmcgY29tcHV0YXRpb24gb2YKCXBpeGVsIHNpemUgZnJvbSBjaGFyYWN0ZXIgc2l6ZSB0byB1c2Ugcm91bmRpbmcuICBUaGlzIGlzIGFuCglleHBlcmltZW50IHRvIHNlZSB3aGV0aGVyIHRoaXMgZ2l2ZXMgdmFsdWVzIHNpbWlsYXIgdG8gV2luZG93cyBmb3IKCXNjYWxlZCBhc2NlbnQvZGVzY2VudC9ldGMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2NjRieTMyKTogQ2hhbmdlZCB0aGUgaW1wbGVtZW50YXRpb24KCXNsaWdodGx5IHNpbmNlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBtaXMtY29tcGlsZWQgb24gTWFjIG1hY2hpbmVzCgl1c2luZyB0aGUgTVBXIEMgY29tcGlsZXIuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfUmVhbGxvYyk6IFdoZW4gYSBtZW1vcnkgYmxvY2sgd2FzIGdyb3duCgl0aHJvdWdoIEZUX1JlYWxsb2MoKSwgdGhlIG5ldyBieXRlcyB3ZXJlIG5vdCBzZXQgdG8gMCwgd2hpY2ggY3JlYXRlZAoJc29tZSBzdHJhbmdlIGJ1Z3MgaW4gdGhlIFBvc3RTY3JpcHQgaGludGVyLgoJKGRlc3Ryb3lfZmFjZSk6IERvbid0IGRlYWxsb2NhdGUgdW5jb25kaXRpb25hbGx5LgoKCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfQ29tcHV0ZV9NYXhfQWR2YW5jZSwgQ0lEX0xvYWRfR2x5cGgpOgoJQWRkaW5nIHN1cHBvcnQgdG8gbmV3IFBvc3RTY3JpcHQgaGludGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2dsb2JhbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2hpbnRzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oLCBzcmMvcHNoaW50ZXIvSmFtZmlsZSwKCXNyYy9wc2hpbnRlci9wc2hhbGdvLmgsIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMsIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5oLAoJc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsIHNyYy9wc2hpbnRlci9wc2hnbG9iLmgsCglzcmMvcHNoaW50ZXIvcHNoZ2xvYi5jLCBzcmMvcHNoaW50ZXIvcHNoaW50ZXIuYywKCXNyYy9wc2hpbnRlci9wc2htb2QuYywgc3JjL3BzaGludGVyL3BzaG1vZC5oLCBzcmMvcHNoaW50ZXIvcHNocmVjLmMsCglzcmMvcHNoaW50ZXIvcHNocmVjLmg6IEFkZGluZyBuZXcgUG9zdFNjcmlwdCBoaW50ZXIgbW9kdWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLCBzcmMvcHNhdXgvcHNvYmpzLmMsCglzcmMvcHNhdXgvcHNvYmpzLmgsIHNyYy9wc2F1eC90MWRlY29kZS5oLCBzcmMvcHNhdXgvdDFkZWNvZGUuYywKCXNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFvYmpzLmg6IFVwZGF0ZXMgdG8gdXNlIHRoZSBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiB0ZXN0cy9KYW1maWxlLCB0ZXN0cy9ndmlldy5jOiBBZGRpbmcgYSBuZXcgZ2x5cGggaGludGluZwoJdmlld2VyL2RlYnVnZ2VyIHRvIHRoZSBzb3VyY2UgdHJlZS4gIE5vdGUgdGhhdCB5b3Ugd2lsbCBfbm90XyBiZQoJYWJsZSB0byBjb21waWxlIGl0IHNpbmNlIGl0IGRlcGVuZHMgb24gYW4gdW5hdmFpbGFibGUgZ3JhcGhpY3MKCWxpYnJhcnkgbmFtZWQgIk5pcnZhbmEiIHRvIHJlbmRlciB2ZWN0b3IgaW1hZ2VzLgoKMjAwMS0xMC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjUgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ludGVybmFsL2Z0b2Jqcy5oLAoJc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy90eXBlMS90MWRyaXZlci5jOiBBZGRpbmcgYSBuZXcgZnVuY3Rpb24gbmFtZWQKCSdGVF9HZXRfUG9zdHNjcmlwdF9OYW1lJyB0byByZXRyaWV2ZSB0aGUgUG9zdFNjcmlwdCBuYW1lIG9mIGEgZ2l2ZW4KCWZvbnQuICBTaG91bGQgd29yayB3aXRoIGFsbCBmb3JtYXRzIGV4Y2VwdCBwdXJlIENGRi9DRUYgZm9udHMgKHRoaXMKCXdpbGwgYmUgYWRkZWQgc29vbikuCgoJKiBzcmMvY2lkL2NpZHJpdmVyIChjaWRfZ2V0X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShDSURfR2V0X0ludGVyZmFjZSk6IEhhbmRsZSBgcG9zdHNjcmlwdF9uYW1lJyBpbnRlcmZhY2UuCgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChnZXRfc2ZudF9wb3N0c2NyaXB0X25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoU0ZOVF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfcHNfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShHZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIFJFQURNRSwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkIGZvciAyLjAuNSByZWxlYXNlLgoKMjAwMS0xMC0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIGEgYnVnIGluIGBnbG5hbWVzLnB5JyB0aGF0IHByZXZlbnRlZCBpdCBmcm9tIGdlbmVyYXRpbmcKCWNvcnJlY3QgZ2x5cGggbmFtZXMgdGFibGVzLiAgVGhpcyByZXN1bHRlZCBpbiB0aGUgdW5hdmFpbGFiaWxpdHkgb2YKCWNlcnRhaW4gZ2x5cGhzIGxpa2UgYENhY3V0ZScsIGBjYWN1dGUnIGFuZCBgbHNsYXNoJyBpbiBVbmljb2RlCgljaGFybWFwcywgZXZlbiBpZiB0aGVzZSB3ZXJlIHByZXNlbnQgaW4gdGhlIGZvbnQgKGNhdXNpbmcgcHJvYmxlbXMKCWZvciBQb2xpc2ggdXNlcnMpLgoKCSogc3JjL3Rvb2xzL2dsbmFtZXMucHkgKG1hY19zdGFuZGFyZF9uYW1lcyk6IEZpeGVkLgoJKHQxX3N0YW5kYXJkX3N0cmluZ3MpOiBTb21lIGZpeGVzIGFuZCByZW5hbWVkIHRvIC4uLgoJKHNpZF9zdGFuZGFyZF9uYW1lcyk6IFRoaXMuCgkodDFfZXhwZXJ0X2VuY29kaW5nKTogRml4ZWQuCgkodGhlX2Fkb2JlX2dseXBoX2xpc3QpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX25hbWVzKTogVGhpcy4KCSh0aGVfYWRvYmVfZ2x5cGhzKTogUmVuYW1lZCB0byAuLi4KCShhZG9iZV9nbHlwaF92YWx1ZXMpOiBUaGlzLgoJKGR1bXBfbWFjX2luZGljZXMsIGR1bXBfZ2x5cGhfbGlzdCwgZHVtcF91bmljb2RlX3ZhbHVlcywgbWFpbik6CglVcGRhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc3RhYmxlcy5oOiBSZWdlbmVyYXRlZC4KCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAoUFNfVW5pY29kZV9WYWx1ZSk6IEZpeCBvZmZzZXQuCglGaXggcmV0dXJuIHZhbHVlLgoJVXNlIGBzaWRfc3RhbmRhcmRfdGFibGUnIGFuZCBgcHNfbmFtZXNfdG9fdW5pY29kZScgaW5zdGVhZCBvZgoJYHQxX3N0YW5kYXJkX2dseXBocycgYW5kIGBuYW1lc190b191bmljb2RlJy4KCShQU19NYWNpbnRvc2hfTmFtZSk6IFVzZSBgcHNfZ2x5cGhfbmFtZXMnIGluc3RlYWQgb2YKCWBzdGFuZGFyZF9nbHlwaF9uYW1lcycuCgkoUFNfU3RhbmRhcmRfU3RyaW5ncyk6IFVzZSBgc2lkX3N0YW5kYXJkX25hbWVzJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJy4KCgkqIGRvYy9CVUdTLCBkb2MvVE9ETzogTmV3IGRvY3VtZW50cy4KCjIwMDEtMTAtMDcgIFJpY2hhcmQgQmFyYmVyICA8cmljaEBzb2x1dGlvbnVrLmNvbT4KCgkqIHNyYy9jYWNoZS9mdGxydS5jIChGVF9McnVfTG9va3VwX05vZGUpOiBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZAoJY29ycmVjdCBMUlUgYmVoYXZpb3VyLgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCXNldGptcCgpIGFuZCBsb25nam1wKCkgYXJlIG5vdyB1c2VkIGZvciByb2xsYmFjayAoaS5lLiB3aGVuIG1lbW9yeQoJcG9vbCBvdmVyZmxvdyBvY2N1cnMpLgoKCUZ1bmN0aW9uIG5hbWVzIGFyZSBub3cgYWxsIHVuaWZvcm1seSBwcmVmaXhlZCB3aXRoIGBncmF5XycuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogSW5jbHVkZSA8c2V0am1wLmg+LgoJKEVyclJhc3Rlcl9NZW1vcnlPdmVyZmxvdyk6IE5ldyBtYWNyby4KCShUQXJlYSk6IE5ldyB0eXBlIHRvIHN0b3JlIGFyZWEgdmFsdWVzIGluIGVhY2ggY2VsbCAodXNpbmcgYGludCcgd2FzCgl0b28gc21hbGwgb24gMTYtYml0IHN5c3RlbXMpLiAgPGxpbWl0cy5oPiBpcyBpbmNsdWRlZCB0byBwcm9wZXJseQoJZ2V0IHRoZSBuZWVkZWQgZGF0YSB0eXBlLgoJKFRDZWxsLCBUUmFzdGVyKTogVXNlIGl0LgoJKFRSYXN0ZXIpOiBOZXcgZWxlbWVudCBganVtcF9idWZmZXInLgoJKGdyYXlfY29tcHV0ZV9jYm94KTogVXNlIGBSQVNfQVJHJyBhcyB0aGUgb25seSBwYXJhbWV0ZXIgYW5kIGdldAoJYG91dGxpbmUnIGZyb20gaXQuCgkoZ3JheV9yZWNvcmRfY2VsbCk6IFVzZSBsb25nam1wKCkuCgkoZ3JheV9zZXRfY2VsbCk6IFVzZSBncmF5X3JlY29yZF9jZWxsKCkgZm9yIGVycm9yIGhhbmRsaW5nLgoJKGdyYXlfcmVuZGVyX2xpbmUsIGdyYXlfcmVuZGVyX2NvbmljLCBncmF5X3JlbmRlcl9jdWJpYyk6IFNpbXBsaWZ5LgoJKGdyYXlfY29udmVydF9nbHlwaF9pbm5lcik6IE5ldyBmdW5jdGlvbiwgdXNpbmcgc2V0am1wKCkuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGl0LgoKMjAwMS0xMC0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVByb3ZpZGUgYSBwdWJsaWMgQVBJIHRvIG1hbmFnZSBtdWx0aXBsZSBzaXplIG9iamVjdHMgZm9yIGEgZ2l2ZW4KCUZUX0ZhY2UgaW4gdGhlIG5ldyBoZWFkZXIgZmlsZSBgZnRzaXplcy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRzaXplcy5oOiBOZXcgaGVhZGVyIGZpbGUsCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmg6IFVzZSBpdC4KCVJlbW92ZSBkZWNsYXJhdGlvbnMgb2YgRlRfTmV3X1NpemUgYW5kIEZUX0RvbmVfU2l6ZSAobW92ZWQgdG8KCWZ0c2l6ZXMuaCkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX1NJWkVTX0gpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9BY3RpdmF0ZV9TaXplKTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYzogSW5jbHVkZSBmdHNpemVzLmguCgkoZnRjX21hbmFnZXJfaW5pdF9zaXplLCBmdGNfbWFuYWdlcl9mbHVzaF9zaXplKTogVXNlCglGVF9BY3RpdmF0ZV9TaXplLgoKMjAwMS0wOS0yMCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS8qOiBBZGRlZCBwb3J0IHRvIEFtaWdhIHdpdGggdGhlIFNBUy9DIGNvbXBpbGVyLgoKMjAwMS0wOS0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9Eb25lX0FGTSk6IEZyZWUgYGFmbScuCgoyMDAxLTA5LTEwICBZYW8gWmhhbmcgIDx5emhhbmdAc2hhcmVtZWRpYS5jb20+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoY29kZV90b19pbmRleDIpOiBIYW5kbGUgY29kZSB2YWx1ZXMgd2l0aAoJaGktYnl0ZSA9PSAwIGNvcnJlY3RseS4KCjIwMDEtMDktMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9saW5rLXN0ZC5tayAoJChQUk9KRUNUX0xJQlJBUlkpKTogRml4IHR5cG8uCgoyMDAxLTA4LTMwICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEEgbmV3IHdheSB0byBjb21wdXRlIHRoZQoJdW5pdHMgcGVyIEVNIHdpdGggZ3JlYXRlciBhY2N1cmFjeSAoaW1wb3J0YW50IGZvciBlbWJlZGRlZCBUMSBmb250cwoJaW4gUERGIGRvY3VtZW50cyB0aGF0IHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBUcnVlVHlwZQoJb25lcykuCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTm93IHN1cHBvcnRzICIrIiBpbiBmb250IG5hbWVzOwoJdGhpcyBpcyB1c2VkIGluIGVtYmVkZGVkIGZvbnRzLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jIChQU19UYWJsZV9BZGQpOiBGaXhlZCBhIHJlYWxsb2NhdGlvbiBidWcgdGhhdAoJZ2VuZXJhdGVkIGEgZGFuZ2xpbmcgcG9pbnRlciByZWZlcmVuY2UuCgoyMDAxLTA4LTMwICBBbnRob255IEZlaWsgIDxhZmVpY2tAaG90bWFpbC5jb20+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfUmVhZF9BZm0pOiBOb3cgY29ycmVjdGx5IHNldHMgdGhlIGZsYWcKCUZUX0ZBQ0VfRkxBR19LRVJOSU5HIHdoZW4gYXBwcm9wcmlhdGUgZm9yIFR5cGUxICsgQUZNIGZpbGVzLgoKMjAwMS0wOC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfQ01hcCk6IEZpeCBmcmFtZSBsZW5ndGggb2YKCWBjbWFwX3JlY19maWVsZHMnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIFshRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SU106CglVbmRlZmluZSBGVF9FUlJfQkFTRSBiZWZvcmUgZGVmaW5pbmcgYWdhaW4uCgoyMDAxLTA4LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaDogRml4IHByb3RvdHlwZSBvZiBUVF9Nb3ZlX0Z1bmMuCgoyMDAxLTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvZG9zL2Rvcy1kZWYubWsgKE5PX09VVFBVVCk6IERvbid0IHVzZSBgJj4nIGJ1dCBgPicuCgoyMDAxLTA4LTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBDaGFuZ2VkIHRoZSBkZWZhdWx0IHNldHRpbmcKCWZvciBGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTIHRvIHVuZGVmaW5lZCwgc2luY2UgaXQgYnJlYWtzCglzb3VyY2UgY29tcGF0aWJpbGl0eSBpbiBhIGZldyBjYXNlcy4gIFVwZGF0ZWQgdGhlIGNvbW1lbnQgdG8gZXhwbGFpbgoJdGhhdCB0b28uCgoyMDAxLTA4LTE3ICBNYXJ0aW4gTXVza2VucyAgPG1tdXNrZW5zQGF1cmVsb24uY29tPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX011bERpdik6IEZpeGVkIHNlcmlvdXMgdHlwby4KCjIwMDEtMDgtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBPcGVuVHlwZSAxLjMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfQ01hcDAsIFRUX0NNYXAyLCBUVF9DTWFwNCwKCVRUX0NNYXA2KTogQWRkaW5nIGZpZWxkIGBsYW5ndWFnZScuCgkoVFRfQ01hcFRhYmxlKTogUmVtb3ZpbmcgZmllbGQgYGxhbmd1YWdlJy4KCVR5cGUgb2YgYGxlbmd0aCcgZmllbGQgY2hhbmdlZCB0byBGVF9VTG9uZy4KCUFkZGluZyBmaWVsZHMgZm9yIGNtYXBzIGZvcm1hdCA4LCAxMCwgYW5kIDEyLgoJKFRUX0NNYXBHcm91cCk6IE5ldyBhdXhpbGlhcnkgc3RydWN0dXJlLgoJKFRUX0NNYXA4XzEyLCBUVF9DTWFwMTApOiBOZXcgc3RydWN0dXJlcy4KCSogaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyLCBUVF9WZXJ0SGVhZGVyKToKCVJlbW92ZWQgbGFzdCBlbGVtZW50IG9mIGBSZXNlcnZlZCcgYXJyYXkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaCAoVFRfUExBVEZPUk1fQ1VTVE9NLCBUVF9NU19JRF9VQ1NfNCwKCVRUX05BTUVfSURfQ0lEX0ZJTkRGT05UX05BTUUpOiBOZXcgbWFjcm9zLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMgKFRUX0NoYXJNYXBfTG9hZCk6IFVwZGF0ZWQgbG9hZGluZyBvZiBgbGFuZ3VhZ2UnCglmaWVsZCB0byB0aGUgbmV3IHN0cnVjdHVyZXMuCglGaXhlZCBmcmVlaW5nIG9mIGFycmF5cyBpbiBjYXNlIG9mIHVuc3VjY2Vzc2Z1bCBsb2Fkcy4KCUFkZGVkIHN1cHBvcnQgZm9yIGxvYWRpbmcgZm9ybWF0IDgsIDEwLCBhbmQgMTIgY21hcHMuCgkoVFRfQ2hhck1hcF9GcmVlKTogQWRkZWQgc3VwcG9ydCBmb3IgZnJlZWluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMgoJY21hcHMuCgkoY29kZV90b19pbmRleDQpOiBTbWFsbCBpbXByb3ZlbWVudC4KCShjb2RlX3RvX2luZGV4Nik6IERpdHRvLgoJKGNvZGVfdG9faW5kZXg4XzEyLCBjb2RlX3RvX2luZGV4MTApOiBOZXcgZnVuY3Rpb25zLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzX0hlYWRlcik6IFVwZGF0ZWQgdG8gbmV3CglzdHJ1Y3R1cmUuCgkoVFRfTG9hZF9DTWFwKTogRGl0dG8uCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAodHRfZW5jb2RpbmdzKTogQWRkIE1TIFVDUzQgdGFibGUgKGJlZm9yZSBNUwoJVW5pY29kZSkuCgoyMDAxLTA4LTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFkcml2ZXIuYyAodDFfZ2V0X25hbWVfaW5kZXgpOiBGaXggY29tcGlsZXIgd2FybmluZy4KCjIwMDEtMDgtMDkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGdldF9jZmZfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8KCWNmZl9nZXRfZ2x5cGhfbmFtZSBmb3IgY29uc2lzdGVuY3kuCgoJKGNmZl9nZXRfZ2x5cGhfaW5kZXgpOiBNaW5vciBkb2N1bWVudGF0aW9uIGNoYW5nZS4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IE5ldyBmdW5jdGlvbiB1c2VkIGluCglHZXRfSW50ZXJmYWNlIGFzIHRoZSBmdW5jdGlvbiByZXR1cm5lZCB3aGVuIHRoZSAibmFtZV9pbmRleCIKCWZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkoZ2V0X3QxX2dseXBoX25hbWUpOiBSZW5hbWVkIHRvIHQxX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCjIwMDEtMDgtMDggIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYzogUmVtb3ZlZCBkZWZpbml0aW9ucyBvZiBjZmZfaXNvYWRvYmVfY2hhcnNldCwKCWNmZl9leHBlcnRfY2hhcnNldCwgY2ZmX2V4cGVydHN1YnNldF9jaGFyc2V0LCBjZmZfc3RhbmRhcmRfZW5jb2RpbmcsCglhbmQgY2ZmX2V4cGVydF9lbmNvZGluZyBhcnJheXMgdG8gY2ZmbG9hZC5oLgoKCSogc3JjL2NmZi9jZmZsb2FkLmg6IEFkZGVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cy4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uLCByZXR1cm5lZAoJd2hlbiBgY2ZmX2dldF9pbnRlcmZhY2UnIGlzIGNhbGxlZCB3aXRoIGEgcmVxdWVzdCBmb3IgdGhlCgkibmFtZV9pbmRleCIgZnVuY3Rpb24uCgoJKGNmZl9nZXRfaW50ZXJmYWNlKTogTW9kaWZpZWQgc28gdGhhdCBpdCByZXR1cm5zIHRoZSBmdW5jdGlvbgoJYGNmZl9nZXRfbmFtZV9pbmRleCcgd2hlbiB0aGUgIm5hbWVfaW5kZXgiIGZ1bmN0aW9uIGlzIHJlcXVlc3RlZC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9HZXRfTmFtZV9JbmRleCk6IE5ldyBmdW5jdGlvbiwgdXNlZCB0bwoJcmV0dXJuIGEgZ2x5cGggaW5kZXggZm9yIGEgZ2l2ZW4gZ2x5cGggbmFtZSBvbmx5IGlmIHRoZSBkcml2ZXIKCXN1cHBvcnRzIGdseXBoIG5hbWVzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTmFtZV9JbmRleF9SZXF1ZXN0ZXIpOgoJTmV3IGZ1bmN0aW9uIHBvaW50ZXIgdHlwZSBkZWZpbnRpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24KCUZUX0dldF9OYW1lX0luZGV4LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9HZXRfTmFtZV9JbmRleCk6IEFkZGVkCglkb2N1bWVudGF0aW9uIGFuZCBwcm90b3R5cGUuCgoyMDAxLTA3LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvY3lnd2luLyo6IFJlbW92ZWQuICBVc2UgdGhlIHVuaXggc3R1ZmYgaW5zdGVhZC4KCjIwMDEtMDctMjYgIEpvdWsgSmFuc2VuICA8am91a2pAaHJlbS5zdG0udHVkZWxmdC5ubD4KCgkqIGJ1aWxkcy92bXMvZnRjb25maWcuaCAoRlRfQ0FMTEJBQ0tfREVGKTogVXBkYXRlZCB0byBjaGFuZ2UgZGF0ZWQKCTIwMDEtMDYtMjcuCgoyMDAxLTA3LTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTX1RhYmxlKTogVXNlIEZUX09mZnNldCBmb3IKCWBjdXJzb3InIGFuZCBgY2FwYWNpdHknLgoJKiBzcmMvcHNhdXgvcHNvYmpjLmMgKHJlYWxsb2NhdGVfdDFfdGFibGUpOiBVc2UgRlRfTG9uZyBmb3Igc2Vjb25kCglwYXJhbWV0ZXIuCgkoUFNfVGFibGVfQWRkKTogVXNlIEZUX09mZnNldCBmb3IgYG5ld19zaXplJy4KCglBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiAwLjUgbWF4cCB0YWJsZXMuCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NYXhQcm9maWxlKTogSW1wbGVtZW50IGl0LgoJKFRUX0xvYWRfT1MyKTogSW5pdGlhbGl6ZSBzb21lIHZhbHVlcy4KCjIwMDEtMDctMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYzogSW5jbHVkZSBmdGNhbGMuaCB1bmNvbmRpdGlvbmFsbHkuCgoyMDAxLTA3LTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYywgc3JjL3BjZi9wY2ZyZWFkOgoJUmVtb3ZlZCBwZWRhbnRpYyBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBieXRlY29kZSBpbnRlcnByZXRlciBpcwoJY29tcGlsZWQgaW4uCgoyMDAxLTA3LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBlZGdlcycuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcyBgb2xkX3dpZHRoJyBhbmQKCWBuZXdfd2lkdGgnLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX2RlY3J5cHQpOiBVc2UgYFUnIGZvciBjb25zdGFudCAoYWdhaW4pLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfR2V0X1ByaXZhdGVfRGljdCk6IERpdHRvLgoKMjAwMS0wNi0yOCAgRGF2aWQgVHVybmVyIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ludGVybmFsL2Z0c3RyZWFtLmg6IE1vZGlmaWVkIHRoZSBkZWZpbml0aW9ucwoJb2YgdGhlIEZUX0dFVF9YWFhYIGFuZCBORVhUX1hYWFggbWFjcm9zIGZvciAxNi1iaXQgY29ycmVjdG5lc3MuCgoyMDAxLTA2LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL2NpZC9jaWRsb2FkLmggKGNpZF9kZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTQXV4X0ludGVyZmFjZSk6IFVwZGF0ZWQuCgoyMDAxLTA2LTI3ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvcHNvYmpzLmggKFQxX0RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgoKCSogVmVyc2lvbiAyLjAuNCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA2LTI3ICBEYXZpZCBUdXJuZXIgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHRoZQoJRlRfQ0FMTEJBQ0tfREVGIG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGNvbmZpZy5oLCBzcmMvKi8qLmM6IENoYW5nZWQgdGhlIGRlZmluaXRpb24gYW5kCgl1c2Ugb2YgdGhlIEZUX0NBTExCQUNLX0RFRiBtYWNybyBpbiBvcmRlciB0byBzdXBwb3J0IDE2LWJpdAoJY29tcGlsZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRjb25maWcuaW46IENoYW5nZWQgdGhlIGRlZmluaXRpb24gb2YgdGhlCglGVF9DQUxMQkFDS19ERUYgbWFjcm8uCgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogVGhlIGtlcm4gdGFibGUgbG9hZGVyIG5vdyBlbnN1cmVzCgl0aGF0IHRoZSBrZXJuaW5nIHRhYmxlIGlzIGNvcnJlY3RseSBzb3J0ZWQgKHNvbWUgcHJvYmxlbSBmb250cyBkb24ndAoJaGF2ZSBhIGNvcnJlY3Qga2VybiB0YWJsZSkuCgoyMDAxLTA2LTI2ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfT0ZGM19MRSk6IEZpeCB0eXBvLgoKMjAwMS0wNi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKGZ0X2RpdjY0YnkzMik6IEZpeGVkIHRoZSBzb3VyY2UgdG8gd29yawoJY29ycmVjdGx5IG9uIDE2LWJpdCBzeXN0ZW1zLgoKMjAwMS0wNi0yMyAgQW50aG9ueSBGb2sgIDxmb2tAZGViaWFuLm9yZz4KCgkqIGRlYmlhbi8qOiBBZGRlZCBEZWJpYW4gcGFja2FnZSBidWlsZCBkaXJlY3RvcnkgZm9yIDIuMC40LgoKMjAwMS0wNi0yMiAgRGF2aWQgVHVybmVyIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL1BBVEVOVFM6IEFkZGVkIHBhdGVudHMgZGlzY2xhaW1lci4gIFRoaXMgb25lIHdhcyBtaXNzaW5nIQoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL3RvZG86IFVwZGF0ZWQgZm9yIHRoZSB1cGNvbWluZyAyLjAuNCByZWxlYXNlLgoKMjAwMS0wNi0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRjb25maWcuaDogQWRkIHR3byBtb3JlIGBMJ3MgdG8KCWNvbnN0YW50cy4KCUFkZCBtaXNzaW5nIHNlbWljb2xvbnMuCgoJKiBidWlsZHMvdG9wbGV2ZWwubWs6IERvIHNpbWlsYXIgY2hhbmdlIGFzIGZvcgoJYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9FTkNfVEFHKTogTmV3IHZlcnNpb24gdG8gbWFrZSBpdAoJZWFzaWVyIHRvIHJlZGVmaW5lLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGl0dG8uCgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2dldF9lbmNvZGluZ3MpOiBBZGQgY2FzdC4KCjIwMDEtMDYtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2ZyZWV0eXBlLmRzcCwgYnVpbGRzL3dpbjMyL3Zpc3VhbGMvaW5kZXguaHRtbDoKCVVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCAoZm9yIHRoZSAyLjAuNCByZWxlYXNlKS4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tazogQWRkZWQgcnVsZSBmb3IgQUlYIGRldGVjdGlvbiAod2hpY2ggdXNlcwoJL3Vzci9zYmluL2luaXQgaW5zdGVhZCBvZiAvc2Jpbi9pbml0KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCwgc3JjLyovKmVyciouaDogVXBkYXRlZCBzb21lIG9mIHRoZQoJZXJyb3IgbWFjcm9zIHRvIHNpbXBsaWZ5IGhhbmRsaW5nIG9mIG5ldyBlcnJvciBzY2hlbWUuCgoyMDAxLTA2LTE5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaCAoRlRfRVJST1JfTU9EVUxFKTogTmV3IG1hY3JvLgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCVJlbW92aW5nIF9sb3RzXyBvZiBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRoZSBtb3N0IHBlZGFudGljIHdhcm5pbmcKCWxldmVscyBvZiBWaXN1YWwgQysrIGFuZCBCb3JsYW5kIEMrKyBhcmUgdXNlZC4gIFRvbyBtYW55IGZpbGVzIHRvIGJlCglsaXN0ZWQgaGVyZSwgYnV0IEZUMiBub3cgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5ncyB3aXRoIFZDKysgYW5kIHRoZQoJIi9XNCIgd2FybmluZyBsZXZlbCAobGludC1zdHlsZSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX05ld19NZW1vcnlfRmFjZSk6IFVwZGF0ZWQKCWRvY3VtZW50YXRpb24uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9CT09MKTogTmV3IG1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQWRkICNwcmFnbWEgZm9yIFZpc3VhbCBDKysKCXRvIHN1cHByZXNzIHdhcm5pbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX1NIT1JUX3tCRSxMRX0sCglGVF9HRVRfT0ZGM197QkUsTEV9LCBGVF9HRVRfTE9OR197QkUsTEV9KTogTmV3IG1hY3Jvcy4KCShORVhUXyopOiBVc2UgdGhlbS4KCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfREVCVUdfSC4KCShGVF9OZXdfTWVtb3J5X0ZhY2UpOiBBZGQgYGNvbnN0JyB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCjIwMDEtMDYtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNaW5vciBjbGVhbnVwcyB0byByZW1vdmUgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmggKEZUQ19NQVhfQllURVNfREVGQVVMVCk6IFVzZQoJYEwnIGZvciBjb25zdGFudC4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfUkVOREVSX1BPT0xfU0laRSk6IERpdHRvLgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfR2V0X0NCb3gpOiBSZW1vdmUgYGVycm9yJyB2YXJpYWJsZS4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoZnRfdHJpZ19hcmN0YW5fdGFibGUpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Eb25lX1NpemUpOiBGaXggcmV0dXJuIHZhbHVlLgoJKEZUX1NldF9DaGFyX1NpemUsIEZUX1NldF9QaXhlbF9TaXplcywgRlRfR2V0X0tlcm5pbmcpOiBSZW1vdmUKCXVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYyAoYWhfZ2V0X29yaWVudGF0aW9uKTogVXNlIGBMJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludF9lZGdlc18zLAoJYWhfaGludGVyX2FsaWduX2VkZ2VfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgYmVmb3JlJyBhbmQgYGFmdGVyJwoJdmFyaWFibGVzLgoJKGFoX2hpbnRlcl9hbGlnbl93ZWFrX3BvaW50cyk6IFJlbW92ZSB1bnVzZWQgYGVkZ2VfbGltaXQnIHZhcmlhYmxlLgoJKGFoX2hpbnRlcl9sb2FkKTogUmVtb3ZlIHVudXNlZCBgbmV3X2FkdmFuY2UnLCBgc3RhcnRfY29udG91cicsCglhbmQgYG1ldHJpY3MnIHZhcmlhYmxlcy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0VuY29kaW5nKTogUmVtb3ZlIGRlYWQgY29kZSB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBSZW1vdmUgdW51c2VkIGBiYXNlX29mZnNldCcKCXZhcmlhYmxlLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9QYXJzZV9DaGFyU3RyaW5ncyk6IFJlbW92ZSB1bnVzZWQKCWBvdXRsaW5lJyB2YXJpYWJsZS4KCShjZmZfY29tcHV0ZV9iaWFzKTogVXNlIGBVJyBmb3IgY29uc3RhbnQuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFQxX0RlY3J5cHQpOiBEaXR0by4KCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhclN0cmluZ3MpOiBEaXR0by4KCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFJlbW92ZSB1bnVzZWQgYHZlcnNpb24nCgl2YXJpYWJsZS4KCSogc3JjL3NmbnQvdHRzYml0LmMgKFRUX0xvYWRfU0JpdF9JbWFnZSk6IFJlbW92ZSB1bnVzZWQgYHRvcCcKCXZhcmlhYmxlLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogUmVtb3ZlIHVudXNlZAoJYG51bV9jb250b3VycycgYW5kIGBpbnNfb2Zmc2V0JyB2YXJpYWJsZXMuCgkoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogUmVtb3ZlIHVudXNlZCBgVG9wJyBhbmQgYHhfc2NhbGUnCgl2YXJpYWJsZXMuCgkoVFRfTG9hZF9HbHlwaCk6IFJlbW92ZSB1bnVzZWQgYG1lbW9yeScgdmFyaWFibGUuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19yYXN0ZXJfcmVuZGVyKTogVXNlIGBMJyBmb3IgY29uc3RhbnRzLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1ha2UgdGhlIG5ldyBlcnJvciBzY2hlbWUgc291cmNlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBGVCB2ZXJzaW9ucwoJYnkgaW50cm9kdWNpbmcgYW5vdGhlciBsYXllci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfRVJST1JERUZfLCBGVF9OT0VSUk9SREVGXyk6IE5ldwoJbWFjcm9zLgoJKEZUX05PRVJST1JERUYpOiBSZW1vdmVkLgoJKiBpbmNsdWRlLyovKmVyciouaDogVXNlIEZUX0VSUk9SREVGXyBhbmQgRlRfTk9FUlJPUkRFRl8uCgoyMDAxLTA2LTE2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgbWFjcm8uCgkoRlRfRW5jb2RpbmdfKTogVXNlIGl0LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfSU1BR0VfVEFHKTogRGVmaW5lIGl0Cgljb25kaXRpb25hbGx5LgoKMjAwMS0wNi0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vZGlmaWVkIHRoZSBUcnVlVHlwZSBpbnRlcnByZXRlciB0byBsZXQgaXQgdXNlIHRoZSBuZXcKCXRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHByb3ZpZGVkIGluICJmdHRyaWdvbi5oIi4gIFRoaXMgZ2V0cyByaWQgb2YKCXNvbWUgb2xkIDY0LWJpdCBjb21wdXRhdGlvbiByb3V0aW5lcywgYXMgd2VsbCBhcyBtYW55IHdhcm5pbmdzIHdoZW4KCWNvbXBpbGluZyB0aGUgbGlicmFyeSB3aXRoIHRoZSAibG9uZyBsb25nIiA2NC1iaXQgaW50ZWdlciB0eXBlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaDogVW5kZWZpbmUKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBSZWFycmFuZ2UgdXNlIG9mCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEFkZCBkZWNsYXJhdGlvbiBvZiBGVF9JbnQ2NCBpZgoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QgZGVmaW5lZC4KCSogc3JjL3RydWV0eXBlL3R0aW50ZXJwLmM6IFVzZSBGVF9UUklHT05PTUVUUllfSC4KCShOb3JtKTogQWRkIGEgc3BlY2lhbCB2ZXJzaW9uIGlmIEZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTIGlzbid0CglkZWZpbmVkLgoJKEN1cnJlbnRfUmF0aW8sIE5vcm1hbGl6ZSk6IFNpbXBsaWZ5IGNvZGUuCgoyMDAxLTA2LTExICBNaWtlIE93ZW5zICA8TU93ZW5zQGFtdGRhdGFzb3V0aC5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9EaXZGaXgsIEZUX1NxcnQ2NCk6IFJlbW92ZQoJY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTA2LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IFJlbmFtZWQgdG8gLi4uCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogVGhpcyB0byBtYWtlIHN1cmUgdGhhdCBhdXRvY29uZiAyLjUwIGlzCgluZWVkZWQuCglSdW4gYGF1dG91cGRhdGUnIG9uIGl0LgoJSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gNzowOjEuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTA2LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkX2dseXBoKTogRml4ZWQgYSBidWcgdGhhdAoJY29ycnVwdGVkIHRyYW5zZm9ybWVkIGdseXBocyB0aGF0IHdlcmUgYXV0by1oaW50ZWQgKHRoZSB0cmFuc2Zvcm0KCXdhcyBhcHBsaWVkIHR3aWNlKS4KCglGaXhlZCBhIGJ1ZyB0aGF0IHJldHVybmVkIGFuIGludmFsaWQgbGluZWFyIHdpZHRoIGZvciBjb21wb3NpdGUKCVRydWVUeXBlIGdseXBocy4KCgkqIGluY2x1ZGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9Mb2FkZXJfKTogVHdvIG5ldyBlbGVtZW50cyBgbGluZWFyJwoJYW5kIGBsaW5lYXJfZGVmJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCwKCWNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFVzZSBpdC4KCgkqIGluY2x1ZGUvZnR0eXBlcy5oIChGVF9FUlJPUl9CQVNFKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfT3Blbl9GYWNlLCBGVF9SZW5kZXJfR2x5cGhfSW50ZXJuYWwpOiBVc2UgaXQKCXRvIG1ha2Ugc291cmNlIGNvZGUgd29yayB3aXRoIHRoZSBuZXcgZXJyb3Igc2NoZW1lIGltcGxlbWVudGVkIGJ5CglXZXJuZXIuCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT3V0bGluZV9SZW5kZXIpOiBEaXR0by4KCjIwMDEtMDYtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglVcGRhdGluZyB0byBsaWJ0b29sIDEuNC4wIGFuZCBhdXRvY29uZiAyLjUwLgoKCSogYnVpbGRzL3VuaXgvbHRjb25maWc6IFJlbW92ZWQuCgkqIGJ1aWxkcy91bml4L2x0bWFpbi5zaCwgYnVpbGRzL3VuaXgvY29uZmlndXJlLmluLAoJYnVpbGRzL3VuaXgvYWNsb2NhbC5tNDogVXBkYXRlZC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglDb21wbGV0ZSByZWRlc2lnbiBvZiBlcnJvciBjb2Rlcy4gIFBsZWFzZSBjaGVjayBmdG1vZGVyci5oIGZvciBtb3JlCglkZXRhaWxzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IFJlbW92ZWQuICBSZXBsYWNlZCB3aXRoIGZpbGVzCglsb2NhbCB0byB0aGUgbW9kdWxlLiAgQWxsIGV4dHJhIGVycm9yIGNvZGVzIGhhdmUgYmVlbiBtb3ZlZCB0bwoJYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL3NmbnQvdHRwb3N0Lmg6IE1vdmUgZXJyb3IgY29kZXMgdG8gYGZ0ZXJyb3JzLmgnLgoKCSogc3JjL2F1dG9oaW50L2FoZXJyb3JzLmgsIHNyYy9jYWNoZS9mdGNlcnJvci5oLCBzcmMvY2ZmL2NmZmVycnMuaCwKCXNyYy9jaWQvY2lkZXJycy5oLCBzcmMvcGNmL3BjZmVycm9yLmgsIHNyYy9wc2F1eC9wc2F1eGVyci5oLAoJc3JjL3BzbmFtZXMvcHNuYW1lcnIuaCwgc3JjL3Jhc3Rlci9yYXN0ZXJycy5oLCBzcmMvc2ZudC9zZmVycm9ycy5oLAoJc3JjL3Ntb290aC9mdHNtZXJycy5oLCBzcmMvdHJ1ZXR5cGUvdHRlcnJvcnMuaCwKCXNyYy90eXBlMS90MWVycm9ycy5oLCBzcmMvd2luZm9udHMvZm50ZXJycy5oOiBOZXcgZmlsZXMgZGVmaW5pbmcgdGhlCgllcnJvciBuYW1lcyBmb3IgdGhlIG1vZHVsZSBpdCBiZWxvbmdzIHRvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGVyci5oOiBOZXcgZmlsZSwgZGVmaW5pbmcgdGhlIG1vZHVsZSBlcnJvcgoJb2Zmc2V0cy4gIEl0cyBzdHJ1Y3R1cmUgaXMgc2ltaWxhciB0byBgZnRlcnJvcnMuaCcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggKEZUX05PRVJST1JERUYpOiBOZXcgbWFjcm8uCgkoRlRfRVJST1JERUYpOiBSZWRlZmluZWQgdG8gdXNlIG1vZHVsZSBlcnJvciBvZmZzZXRzLgoJQWxsIGludGVybmFsIGVycm9yIGNvZGVzIGFyZSBub3cgcHVibGljOyB1bnVzZWQgZXJyb3IgY29kZXMgaGF2ZQoJYmVlbiByZW1vdmVkLCBzb21lIGFyZSBuZXcuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9NT0RVTEVfRVJST1JTX0gpOiBOZXcKCW1hY3JvLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oCgkoRlRfQ09ORklHX09QVElPTl9VU0VfTU9EVUxFX0VSUk9SUyk6IE5ldyBtYWNyby4KCglBbGwgb3RoZXIgc291cmNlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbmV3IGVycm9yIGNvZGVzOwoJc29tZSBhbHJlYWR5IGV4aXN0aW5nIChpbnRlcm5hbCkgZXJyb3IgY29kZXMgbG9jYWwgdG8gYSBtb2R1bGUgaGF2ZQoJYmVlbiByZW5hbWVkIHRvIGdpdmUgdGhlbSB0aGUgc2FtZSBuYW1lIGFzIGluIHRoZSBiYXNlIG1vZHVsZS4KCglBbGwgbWFrZSBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byBpbmNsdWRlIHRoZSBsb2NhbCBlcnJvciBmaWxlcy4KCjIwMDEtMDYtMDYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkdG9rZW5zLmg6IFJlcGxhY2VkIHdpdGguLi4KCSogc3JjL2NpZC9jaWR0b2tlbi5oOiBUaGlzIGZpbGUgZm9yIDgrMyBjb25zaXN0ZW5jeS4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYzogVXNlIG1hY3JvcyBmb3IgaGVhZGVyIGZpbGUgbmFtZXMuCgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS90dHRhYmxlcy5oIChUVF9Ib3JpSGVhZGVyXywgVFRfVmVydEhlYWRlcl8pOgoJRml4IGxlbmd0aCBvZiBgUmVzZXJ2ZWQnIGFycmF5LiAgTm90ZSB0aGF0IHRoaXMgaXNuJ3QgdGhlIHJlYWwgZml4CglzaW5jZSByZWNlbnQgT3BlblR5cGUgc3BlY3MgaGF2ZSBpbnRyb2R1Y2VkIGEgYENhcmV0T2Zmc2V0JyBmaWVsZAoJaW5zdGVhZCBvZiB0aGUgZmlyc3QgcmVzZXJ2ZWQgYnl0ZS4KCjIwMDEtMDUtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IE1pbm9yIGZpeGVzLgoKCgkqIFZlcnNpb24gMi4wLjMgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wNS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTCwgZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwMS0wNS0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCU1vdmVkIHNldmVyYWwgZG9jdW1lbnRzIGZyb20gdGhlIHRvcC1sZXZlbCB0byB0aGUgImRvY3MiIGRpcmVjdG9yeS4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXZGaXgpOiBTbWFsbCBmaXggdG8gcmV0dXJuIHZhbHVlLgoKMjAwMS0wNS0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGVkIGEgYnVnIGluIHRoZQoJY29tcG9zaXRlIGxvYWRlci4gIFNwb3R0ZWQgYnkgS2VpdGggUGFja2FyZC4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dseXBoTG9hZGVyX0NoZWNrX1BvaW50cywKCUZUX0dseXBoTG9hZGVyX0NoZWNrX1N1YmdseXBocyk6IERpdHRvLgoKMjAwMS0wNS0xNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUZpeGVkIHRoZSBpbmNvcnJlY3QgYmx1ZSB6b25lIGNvbXB1dGF0aW9ucywgYW5kIGltcHJvdmVkIHRoZQoJY29tcG9zaXRlIHN1cHBvcnQuICBOb3RlIHRoYXQgdGhlc2UgY2hhbmdlcyByZXN1bHQgaW4gaW1wcm92ZWQKCXJlbmRlcmluZywgd2hpbGUgc29tZXRpbWVzIGludHJvZHVjaW5nIHRoZWlyIG93biBhcnRlZmFjdHMuICBUaGlzIGlzCglwcm9iYWJseSB0aGUgbGFzdCBiaWcgY2hhbmdlIHRvIHRoZSBhdXRvaGludGVyIGJlZm9yZSB0aGUKCWludHJvZHVjdGlvbiBvZiBhIGNvbXBsZXRlIHJlcGxhY2VtZW50LgoKCSogc3JjL2F1dG9oaW50L2FoZ2xvYmFsLmMgKHNvcnRfdmFsdWVzKTogRml4IGxvb3AuCgkqIHNyYy9hdXRvaGludC9haGdseXBoLmM6IFJlbW92ZWQgc29tZSBvYnNvbGV0ZSBjb2RlLgoJKGFoX291dGxpbmVfY29tcHV0ZV9lZGdlcyk6IE1vZGlmeSBjb2RlIHRvIHNldCB0aGUgYWhfZWRnZV9yb3VuZAoJZmxhZy4KCShhaF9vdXRsaW5lX2NvbXB1dGVfYmx1ZV9lZGdlcyk6IEFkZCBjb2RlIHRvIGNvbXB1dGUgYWN0aXZlIGJsdWUKCXpvbmVzLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9nbHlwaF9sb2FkKTogQ2hhbmdlIGxvYWRfZmxhZ3MKCXZhbHVlLgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IEZpeGVkIGEgYnVnIGluIHRoZSA2NC1iaXQgY29kZSB0aGF0CgljcmVhdGVkIGluY29ycmVjdCBzY2FsZSBmYWN0b3JzIQoJKEZUX1JvdW5kX0ZpeCwgRlRfQ2VpbEZpeCwgRlRfRmxvb3JGaXgpOiBNaW5vciBpbXByb3ZlbWVudHMuCgoyMDAxLTA1LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0YmJveC5oOiBGVEJCT1hfSCAtPiBfX0ZUQkJPWF9IX18uCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaDogX19GVF9UUklHT05PTUVUUllfSF9fIC0+CglfX0ZUVFJJR09OX0hfXy4KCUluY2x1ZGUgRlRfRlJFRVRZUEVfSC4KCUJlYXV0aWZpZWQ7IGFkZGVkIGNvcHlyaWdodC4KCSogc3JjL2Jhc2UvZnR0cmlnb24uYzogQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoKMjAwMS0wNS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvY2lkL2NpZGxvYWQuYwoJKHBhcnNlX2ZvbnRfbWF0cml4KSwgc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X21hdHJpeCk6IEZpeGVkCgl0aGUgaW5jb3JyZWN0IEVNIHNpemUgY29tcHV0YXRpb24uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHJpZ29uLmgsIHNyYy9iYXNlL2Z0dHJpZ29uLmM6IE5ldyBmaWxlcywKCWFkZGluZyB0cmlnb25vbWV0cmljIGZ1bmN0aW9ucyB0byB0aGUgY29yZSBBUEkgKHVzaW5nIENvcmRpYwoJYWxnb3JpdGhtcykuCgkqIHNyYy9iYXNlL2Z0YmFzZS5jLCBzcmMvYmFzZS9KYW1maWxlLCBzcmMvYmFzZS9ydWxlcy5tazogVXNlIHRoZW0uCgoJKiBidWlsZHMvbmV3bGluZTogTmV3IGZpbGUuCgkqIGJ1aWxkcy90b3BfbGV2ZWwubWssIGJ1aWxkcy9kZXRlY3QubWs6IFVzZSBpdC4gIFRoaXMgZml4ZXMKCXByb2JsZW1zIHdpdGggTWFrZSBvbiBXaW5kb3dzIDIwMDAsIGFzIHdlbGwgYXMgcHJvYmxlbXMgd2hlbiAibWFrZQoJZGlzdGNsZWFuIiBpcyBpbnZva2VkIG9uIGEgbm9uLVVuaXggcGxhdGZvcm0gd2hlbiB0aGVyZSBpcyBubwoJImNvbmZpZy5tayIgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgoKCSogYnVpbGRzL2ZyZWV0eXBlLm1rOiBGaXhlZCBhIHByb2JsZW0gd2l0aCBvYmplY3QgZGVsZXRpb25zIHVuZGVyCglEb3MvV2luZG93cy9PUy8yIHN5c3RlbXMuCgoJQWRkZWQgbmV3IGRpcmVjdG9yeSB0byBob2xkIHRvb2xzIGFuZCB0ZXN0IHByb2dyYW1zLgoKCSogZG9jcy9kb2NtYWtlci5weSwgZG9jcy9nbG5hbWVzLnB5OiBNb3ZlZCB0by4uLgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIucHksIHNyYy90b29scy9nbG5hbWVzLnB5OiBUaGlzIHBsYWNlLgoJKiBzcmMvdG9vbHMvY29yZGljLnB5OiBOZXcgZmlsZSB1c2VkIHRvIGNvbXB1dGUgYXJjdGFuZ2VudCB0YWJsZQoJbmVlZGVkIGJ5IGZ0dHJpZ29uLmMuCgkqIHNyYy90b29scy90ZXN0X2Jib3guYywgc3JjL3Rvb2xzL3Rlc3RfdHJpZy5jOiBOZXcgdGVzdCBmaWxlcy4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIHNjcmlwdCB0byBhZGQgdGhlIGN1cnJlbnQgZGF0ZQoJYXQgdGhlIGZvb3RlciBvZiBlYWNoIHdlYiBwYWdlICh1c2VmdWwgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgoJdmVyc2lvbnMpLgoKCSogSmFtZmlsZTogRml4ZWQgaW5jb3JyZWN0IEhEUk1BQ1JPIGFyZ3VtZW50LgoKCSogVE9ETzogUmVtb3ZlZCB0aGUgY3ViaWMgYXJjIGJib3ggY29tcHV0YXRpb24gbm90ZSwgc2luY2UgaXQgaGFzIGJlZW4KCWZpeGVkIHJlY2VudGx5LgoJKiBzcmMvYmFzZS9mdGJib3guYyAodGVzdF9jdWJpY196ZXJvKTogUmVuYW1lZCB0by4uLgoJKHRlc3RfY3ViaWNfZXh0cmVtYSk6IFRoaXMgZnVuY3Rpb24uICBVc2UgYFVMJyBmb3IgdW5zaWduZWQgbG9uZwoJY29uc3RhbnRzLgoKCSogaW5jbHVkZS9mcmVldHlwZS90MXRhYmxlcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOgoJRm9ybWF0dGluZy4KCjIwMDEtMDUtMTAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBGaXhlZCBhIHNtYWxsIG1lbW9yeSBsZWFrCgl3aGljaCBoYXBwZW5lZCB3aGVuIHRyeWluZyB0byBvcGVuIDAtc2l6ZSBmb250IGZpbGVzIQoKMjAwMS0wNS0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogTW92ZSBkZWNsYXJhdGlvbiBvZgoJRlRfU3FydEZpeGVkKCkgb3V0IG9mIGAjaWZkZWYgRlRfTE9ORzY0Jy4KCjIwMDEtMDUtMDggIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPEZyYW5jZXNjby5aYXBwYS5OYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmZHJpdmVyLmMgKFBDRl9Mb2FkX0dseXBoKTogRml4ZWQgaW5jb3JyZWN0IGJpdG1hcCB3aWR0aAoJY29tcHV0YXRpb24uCgoyMDAxLTA1LTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBVcGRhdGVkIHRoZSBEb2NNYWtlciBzY3JpcHQgaW4gb3JkZXIgdG8gYWRkCgljb21tYW5kIGxpbmUgb3B0aW9ucyAoLS1vdXRwdXQsLS1wcmVmaXgsLS10aXRsZSksIGZpeCB0aGUgZXJyb25lb3VzCglsaW5lIG51bWJlcnMgcmVwb3J0ZWQgZHVyaW5nIGVycm9ycyBhbmQgd2FybmluZ3MsIGFuZCBvdGhlcgoJZm9ybWF0dGluZyBpc3N1ZXMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2LCBGVF9NdWxGaXgsIEZUX0RpdkZpeCk6IFZhcmlvdXMgdGlueQoJZml4ZXMgcmVsYXRlZCB0byByb3VuZGluZyBpbiA2NC1iaXRzIHJvdXRpbmVzIGFuZAoJcHNldWRvLSJvcHRpbWl6YXRpb25zIi4KCjIwMDEtMDQtMjcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogRml4ZWQgdGhlIGNvZWZmaWNpZW50Cglub3JtYWxpemF0aW9uIGFsZ29yaXRobSAoaW52YWxpZCBmaW5hbCBiaXQgcG9zaXRpb24sIGFuZCBpbnZhbGlkCglzaGlmdCBjb21wdXRhdGlvbikuCgoyMDAxLTA0LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWcuZ3Vlc3MsIGJ1aWxkcy91bml4L2NvbmZpZy5zdWI6IFVwZGF0ZWQgdG8KCWxhdGVzdCB2ZXJzaW9ucyBmcm9tIGdudS5vcmcuCgoJKiBidWlsZHMvY29tcGlsZXIvZ2NjLWRldi5tazogQWRkIGAtV25vLWxvbmctbG9uZycgZmxhZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IERlZmluZSBGVF9TcXJ0Rml4ZWQoKQoJdW5jb2RpdGlvbmFsbHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX0NBTENfSC4KCUZpeCBjb21waWxlciB3YXJuaW5ncy4KCSogc3JjL2Jhc2UvZnRjYWxjLmM6IEZpeCAocG90ZW50aWFsKSBjb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDQtMjYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9TcXJ0Rml4ZWQpOiBDb3JyZWN0ZWQvb3B0aW1pemVkIHRoZSAzMi1iaXQKCWZpeGVkLXBvaW50IHNxdWFyZSByb290IGNvbXB1dGF0aW9uLiAgSXQgaXMgbm93IHVzZWQgZXZlbiB3aXRoCgk2NC1iaXRzIGludGVnZXJzLCBhcyBpdCBpcyBfbXVjaF8gZmFzdGVyIHRoYW4gY2FsbGluZyBGVF9TcXJ0NjQgOi0pCgoJKiBzcmMvYmFzZS9mdGJib3guYzogUmVtb3ZlZCBpbnZhbGlkICIjaW5jbHVkZSBGVF9CRVpJRVJfSCIgbGluZS4KCjIwMDEtMDQtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0N1YmljX0NoZWNrKTogUmV3cm90ZSBmdW5jdGlvbiB0byB1c2UKCWRpcmVjdCBjb21wdXRhdGlvbnMgd2l0aCAxNi4xNiB2YWx1ZXMgaW5zdGVhZCBvZiBzdWItZGl2aXNpb25zLiAgSXQKCWlzIG5vdyBzbG93ZXIsIGJ1dCBwcm92ZXMgYSBwb2ludCA6LSkKCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYywgc3JjL3Ntb290aC9mdGdyYXlzLmMsIHNyYy9iYXNlL2Z0YmJveC5jOgoJRml4ZWQgdGhlIGJlemllciBzdGFjayBkZXB0aHMuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRml4KTogTWlub3Igcm91bmRpbmcgZml4LgoKCSogYnVpbGRzL2Jlb3M6IEFkZGVkIEJlT1Mtc3BlY2lmaWMgZmlsZXMgdG8gdGhlIG9sZCBidWlsZCBzeXN0ZW0KCShubyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgQmVPUyBpbiB0aGUgSmFtZmlsZSB0aG91Z2gpLgoKMjAwMS0wNC0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogZnRjb25maWcuaCwgZnRvcHRpb24uaDogVXBkYXRlZCAiZnRjb25maWcuaCIgdG8gZGV0ZWN0IDY0LWJpdCBpbnQKCXR5cGVzIG9uIHBsYXRmb3JtcyB3aGVyZSBBdXRvY29uZiBpcyBub3QgYXZhaWxhYmxlKS4gIEFsc28gcmVtb3ZlZAoJRlRDQUxDX1VTRV9MT05HX0xPTkcgYW5kIHJlcGxhY2VkIGl0IHdpdGgKCUZUX0NPTkZJR19PUFRJT05fRk9SQ0VfSU5UNjQuCgoJKiBidWlsZHMvd2luMzIvZnJlZXR5cGUuZHNwOiBVcGRhdGVkIHRoZSBWaXN1YWwgQysrIHByb2plY3QgZmlsZS4KCURvZXNuJ3QgY3JlYXRlIGEgRExMIHlldC4KCgkqIGNmZmdsb2FkLmM6IFJlbW92ZWQgYSBjb21waWxhdGlvbiB3YXJuaW5nLgoKMjAwMS0wNC0xMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHQxbG9hZC5jIChwYXJzZV9jaGFyc3RyaW5ncyk6IENoYW5nZWQgY29kZSBmb3IgcGxhY2luZyAubm90ZGVmCglnbHlwaCBpbnRvIHNsb3QgMCBzbyB0aGF0IHdlIG5vIGxvbmdlciBoYXZlIGEgbWVtb3J5IGFjY2VzcwoJdmlvbGF0aW9uLgoKCSogdDFsb2FkLmg6IEluIHN0cnVjdHVyZSBUMV9Mb2FkZXIsIGFkZGVkIHN3YXBfdGFibGUgKG9mIHR5cGUKCVBTX1RhYmxlKSB0byBmYWNpbGl0YXRlIHBsYWNpbmcgdGhlIC5ub3RkZWYgZ2x5cGggaW50byBzbG90IDAuCgoyMDAxLTA0LTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0dldF9DaGFyX0luZGV4KTogRml4IHJldHVybiB2YWx1ZS4KCjIwMDEtMDQtMDkgIExhdXJlbmNlIFdpdGhlcnMgIDxsd2l0aGVyc0Bsd2l0aGVycy5kZW1vbi5jby51az4KCgkqIGJ1aWxkcy9kb3MvZGV0ZWN0Lm1rOiBBZGQgc3VwcG9ydCBmb3IgYmFzaC4KCjIwMDEtMDQtMDUgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9vczIvKi5tazogVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGZvcmdvdHRlbiB0byB1cGRhdGUgdG8KCXRoZSBzdHJ1Y3R1cmUgb2Ygc2ltaWxhciBtYWtlZmlsZXMuCgkqIGJ1aWxkcy9kb3MvKi5tazogRGl0dG8uCgkqIGJ1aWxkcy9hbnNpLyoubWs6IERpdHRvLgoKCSogYnVpbGRzL3dpbjMyL3dpbjMyLWRlZi5tayAoQlVJTEQpOiBGaXggdHlwby4KCgkqIGJ1aWxkcy9jb21waWxlci8qLm1rIChDTEVBTl9MSUJSQVJZKTogRG9uJ3QgdXNlIE5PX09VVFBVVC4KCVRoaXMgaXMgYWxyZWFkeSB1c2VkIGluIHRoZSBsaW5rXyoubWsgZmlsZXMuCgoyMDAxLTA0LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvKi9KYW1maWxlOiBTbGlnaHQgY2hhbmdlcwl0byBtYWtlIGZpbGVzIG1vcmUgY3J5cHRpYy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIEphbWZpbGUsIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBGb3JtYXR0ZWQuICBTbGlnaHQgY2hhbmdlcwoJdG8gZ2l2ZSBmaWxlcyBpZGVudGljYWwgc3RydWN0dXJlLgoKMjAwMS0wNC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogQ0hBTkdFUzogUmVmb3JtYXR0ZWQsIG1pbm9yIGZpeGVzLgoJKiBUT0RPOiBVcGRhdGVkLgoJKiBSRUFETUU6IEZvcm1hdHRpbmcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogRm9ybWF0dGluZy4KCgkqIEphbWZpbGU6IEZpeCB0eXBvLgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jOiBNb3ZlIGVycm9yIGNvZGUgI2RlZmluZXMgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IFRoaXMgZmlsZS4KCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZsb2FkLmM6IFJlcGxhY2VkCglgRlRfRXJyXyonIHdpdGggYENGRl9FcnJfKicuCgkqIHNyYy9jaWQvY2lkcGFyc2UuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoIGBUMV9FcnJfKicuCgkqIHNyYy9wc2F1eC9wc29ianMuYywgc3JjL3BzYXV4L3QxZGVjb2RlLmM6IERpdHRvLgoJKiBzcmMvc2ZudC9zZm9iY3MuYywgc3JjL3NmbnQvdHRsb2FkLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aAoJYFRUX0Vycl8qJy4KCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywgc3JjL3RydWV0eXBlL3R0b2Jqcy5jOiBEaXR0by4KCSogc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmZXJycy5oOiBBZGQKCWBDRkZfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QxZXJyb3JzLmg6IEFkZAoJYFQxX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dGVycm9ycy5oOiBBZGQKCWBUVF9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkIGBjZmZfKl9lbmNvZGluZycgYW5kIGBjZmZfKl9jaGFyc2V0JwoJcmVmZXJlbmNlcy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jOiBJbmNsdWRlIGBGVF9JTlRFUk5BTF9UWVBFMV9FUlJPUlNfSCcuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSwgQ0ZGX0RvbmVfRmFjZSk6IFVzZQoJRlRfTE9DQUxfREVGLgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy90cnV0eXBlL3R0b2Jqcy5jIChUVF9Jbml0X0ZhY2UsIFRUX0RvbmVfRmFjZSwgVFRfSW5pdF9TaXplKToKCURpdHRvLgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0RvbmVfRHJpdmVyKTogRGl0dG8uCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9Eb25lX0ZhY2UpOiBEaXR0by4KCSogc3JjL3BjZi9wY2YuaDogVXNlIEZUX0xPQ0FMIGZvciBgUENGX0RvbmVfRmFjZScuCgoyMDAxLTA0LTAyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfTWV0cmljcyk6IEZpeCBhbiBpbXByb3BlciBwb2ludGVyCglkZXJlZmVyZW5jZS4gIFN1Ym1pdHRlZCBieSBIZXJiZXJ0IER1ZXJyIDxkdWVyckBzdW4uY29tPgoKMjAwMS0wMy0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IENoYW5nZWQgaGV4YWRlY2ltYWwKCWNvbnN0YW50cyB0byB1c2Ugc3VmZml4IFUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIUC1VWCdzIGM4OQoJY29tcGlsZXIuICBTdWJtaXR0ZWQgYnkgRy5XLiBMdWNhcyA8Z2x1Y2FzQHNvbmFseXN0cy5jb20+CgoyMDAxLTAzLTI0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogSmFtcnVsZXMsIEphbWZpbGUsIHNyYy9KYW1maWxlLCBzcmMvKi9KYW1maWxlOiBBZGRpbmcgamFtZmlsZXMgdG8KCXRoZSBzb3VyY2UgdHJlZS4gIFNlZSB3d3cuZnJlZXR5cGUub3JnL2phbS9pbmRleC5odG1sIGZvciBkZXRhaWxzLgoKCgkqIFZlcnNpb24gMi4wLjIgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMS0wMy0yMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3dpbjMyL2RldGVrdC5tazogRml4IC5QSE9OWSB0YXJnZXQgZm9yIEludGVsIGNvbXBpbGVyLgoKMjAwMS0wMy0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmgsIGluY2x1ZGUvZnJlZXR5cGUvZnRzbmFtZXMuaDoKCVJlbmFtZWQgImZ0bmFtZXMuaCIgdG8gImZ0c25hbWVzLmgiLCBhbmQgRlRfTkFNRVNfSCB0bwoJRlRfU0ZOVF9OQU1FU19ILgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgZ2VuZXJhdGlvbiBvZiBJTkRFWCBsaW5rIGluIHRhYmxlIG9mCgljb250ZW50cy4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IHRoZQoJY29tcGlsYXRpb24gcHJvY2VzcyBoYXMgY2hhbmdlZCBzbGlnaHRseSAobm8gbW9yZSBgc3JjJyByZXF1aXJlZCBpbgoJdGhlIGluY2x1ZGUgcGF0aCkuCgoJKiBidWlsZHMvKi8qLWRlZi5tazogQ2hhbmdlZCB0aGUgb2JqZWN0cyBkaXJlY3RvcnkgZnJvbSAib2JqIiB0bwoJIm9ianMiLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaDogUmVtb3ZlZCBvYnNvbGV0ZSBtYWNyb3MgbGlrZQoJRlRfU09VUkNFX0ZJTEUsIGV0Yy4gYW5kIGFkZGVkIGNhY2hlLXNwZWNpZmljIG1hY3JvIGRlZmluaXRpb25zIHRoYXQKCXdlcmUgcHJldmlvdXNseSBkZWZpbmVkIGluIDxmcmVldHlwZS9mdGNhY2hlLmg+LiAgQWRkZWQgY29tbWVudHMgdG8KCWJlIGluY2x1ZGVkIGluIGEgbmV3IEFQSSBSZWZlcmVuY2Ugc2VjdGlvbi4KCgkqIHNyYy8qLyo6IFJlbW92ZWQgdGhlIHVzZSBvZiBGVF9TT1VSQ0VfRklMRSwgZXRjLiAgTm93LCBlYWNoCgljb21wb25lbnQgbmVlZHMgdG8gYWRkIGl0cyBvd24gZGlyZWN0b3J5IHRvIHRoZSBpbmNsdWRlIHBhdGggYXQKCWNvbXBpbGUgdGltZS4gIE1vZGlmaWVkIGFsbCAicnVsZXMubWsiIGFuZCAiZGVzY3JpcC5tbXMiCglhY2NvcmRpbmdseS4KCjIwMDEtMDMtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogQWRkICRmdF92ZXJzaW9uLgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IFVzZSBpdC4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBVcGRhdGVkLgoKMjAwMS0wMy0xOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBc3NpZ24gdGhlIHVuaXRzIHBlciBlbQoJdmFsdWUgYW4gdW5zaWduZWQgc2hvcnQgdmFsdWUsIGZpcnN0IGJ5IHNoaWZ0aW5nIHJpZ2h0IDE2IGJpdHMsCgl0aGVuIGJ5IGNhc3RpbmcgdGhlIHJlc3VsdHMgdG8gRlRfVVNob3J0LgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9iYm94KTogQXNzaWduIHRoZSB1bml0cyBwZXIgZW0KCXZhbHVlIGFuIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBmaXJzdCBieSBzaGlmdGluZyByaWdodCAxNiBiaXRzLAoJdGhlbiBieSBjYXN0aW5nIHRoZSByZXN1bHRzIHRvIEZUX1VTaG9ydC4KCjIwMDEtMDMtMTcgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2lkL2NpZG9ianMuYywgc3JjL2NpZC9jaWRsb2FkLmMsIHNyYy9wY2YvcGNmcmVhZC5jLAoJc3JjL3R5cGUxL3QxbG9hZC5jLCBzcmMvdHlwZTEvdDFvYmpzLmM6IEFkZGVkIGEgZmV3IGNhc3RzIHRvIHJlbW92ZQoJY29tcGlsZXIgd2FybmluZ3MgaW4gcGVkYW50aWMgbW9kZXMuCgoJKiBpbmNsdWRlL2NvbmZpZy9mdDJidWlsZC5oLCBpbmNsdWRlL2NvbmZpZy9mdGhlYWRlci5oOiBUaGUgZmlsZQoJImZ0MmJ1aWxkLmgiIHdhcyByZW5hbWVkIHRvICJmdGhlYWRlci5oIiB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUKCXRvcC1sZXZlbCA8ZnQyYnVpbGQuaD4uCgoJKiBpbmNsdWRlL2NvbmZpZy9mdGhlYWRlci5oOiBBZGRlZCBuZXcgc2VjdGlvbiBkZXNjcmliaW5nIHRoZSAjaW5jbHVkZQoJbWFjcm9zLgoKMjAwMS0wMy0xNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfYmJveCk6IE9idGFpbiByb3VuZGVkIEZUX0ZpeGVkCgl2YWx1ZXMgZm9yIHRoZSBib3VuZGluZyBib3ggbnVtYmVycy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogV2hlbiBwcm9jZXNzaW5nIGEgQ0ZGL0NFRiBmb250LAoJc2V0IGByb290LT5hc2NlbmRlcicgKGByb290LT5kZXNjZW5kZXInKSB0byB0aGUgaW50ZWdlciBwYXJ0IG9mCglgcm9vdC0+YmJveC55TWF4JyAoYHJvb3QtPmJib3gueU1pbicsIHJlc3BlY3RpdmVseSkuCgoyMDAxLTAzLTE2ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChnZXRfY2ZmX2dseXBoX25hbWUpOiAgTmV3IGZ1bmN0aW9uLiAgVXNlZCBpbgoJY2ZmX2dldF9pbnRlcmZhY2UgdG8gZmFjaWxpdGF0ZSBnZXR0aW5nIGEgZ2x5cGggbmFtZSBmb3IgZ2x5cGggaW5kZXgKCXZpYSBGVF9HZXRfR2x5cGhfTmFtZSgpLgoKCShjZmZfZ2V0X2ludGVyZmFjZSk6IEFkZGVkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIHZpYSB0aGUKCSJnbHlwaF9uYW1lIiBtb2R1bGUgaW50ZXJmYWNlLiAgVXNlcyB0aGUgbmV3IGZ1bmN0aW9uCglnZXRfY2ZmX2dseXBoX25hbWUoKS4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+CgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IExvZ2ljYWwgb3IgdGhlIGZhY2UgZmxhZ3Mgd2l0aAoJRlRfRkFDRV9GTEFHX0dMWVBIX05BTUVTIG9ubHkgaWYgRlRfQ09ORklHX09QVElPTl9OT19HTFlQSF9OQU1FUyBpcwoJbm90IGRlZmluZWQuICBUaGlzIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSBmcm9tIGEKCWdseXBoIGluZGV4IHZpYSBGVF9HZXRfR2x5cGhfTmFtZSgpLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgc3VwcG9ydCBmb3IKCWRlcHJlY2F0ZWQgb3BlcmF0b3IgImRvdHNlY3Rpb24iLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4KCjIwMDEtMDMtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogRml4IGVycm9yCgltZXNzYWdlcy4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFdlIG5lZWQgR05VIG1ha2UgMy43OC4xIG9yIG5ld2VyLgoKMjAwMS0wMy0xMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaDogIENoYW5nZWQgdGhlIGxlbklWIG1lbWJlciBvZgoJdGhlIFQxX0RlY29kZXJfIHN0cnVjdCB0byBiZSBhbiBGVF9JbnQgaW5zdGVhZCBvZiBhbiBGVF9VSW50LgoKCSogc3JjL3BzYXV4L3QxZGVjb2RlLmMgKFQxX0RlY29kZXJfUGFyc2VfQ2hhcnN0cmluZ3MpOiAgQWRqdXN0Cglmb3IgbGVuSVYgc2VlZCBieXRlcyBhdCB0aGUgc3RhcnQgb2YgYSBkZWNyeXB0ZWQgc3Vicm91dGluZS4KCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfcmVhZF9zdWJycyk6IERlY3J5cHQgc3Vicm91dGluZXMgb25seQoJaWYgbGVuSVYgPj0gMC4KCgkqIHNyYy9jaWQvY2lkZ2xvYWQuYyAoY2lkX2xvYWRfZ2x5cGgpOiBEZWNyeXB0IGNoYXJzdHJpbmdzIG9ubHkKCWlmIGxlbklWID49IDAuCgoyMDAxLTAzLTExICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBUT0RPOiBVcGRhdGVkLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IFB1dCBSRUFEX0ZpZWxkcygpIGFsd2F5cyBpbiBhIGNvbmRpdGlvbmFsIHRvCglhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDMtMTAgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBUT0RPOiBOZXcgZmlsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkZWQgcHJvdG90eXBlcyBhbmQgbm90ZXMgZm9yCgl0aHJlZSBuZXcgZnVuY3Rpb25zOiBGVF9Sb3VuZEZpeCwgRlRfQ2VpbEZpeCwgYW5kIEZUX0Zsb29yRml4LgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfUm91bmRGaXgsIEZUX0NlaWxGaXgsIEZUX0Zsb29yRml4KTogQWRkZWQKCWltcGxlbWVudGF0aW9uIGNvZGUuCgoJKiBzcmMvY2lkL2NpZG9ianMuYyAoQ0lEX0luaXRfRmFjZSk6IFVzZSBjYWxjdWxhdGVkIHVuaXRzX3Blcl9FTSwKCWFuZCBpZiB0aGF0IGlzIG5vdCBhdmFpbGFibGUsIGRlZmF1bHQgdG8gMTAwMCB1bml0cyBwZXIgRU0uICBDaGFuZ2VkCglhc3NpZ25tZW50IGNvZGUgZm9yIGFzY2VuZGVyIGFuZCBkZXNjZW5kZXIgdmFsdWVzLgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCB1bml0c19wZXJfRU0KCXByb2Nlc3NpbmcuCgkocGFyc2VfZm9udF9iYm94KTogQ2hhbmdlZCB0byB1c2UgRlRfRml4ZWQgbnVtYmVyIGhhbmRsaW5nLgoKCSogc3JjL3R5cGUxL3Qxb2Jqcy5jIChUMV9Jbml0X0ZhY2UpOiBDaGFuZ2VkIHRoZSBhc3NpZ25tZW50IGNvZGUKCWZvciBhc2NlbmRlciwgZGVzY2VuZGVyLCBhbmQgbWF4X2FkdmFuY2Vfd2lkdGguCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZm9udF9iYm94KTogQ2hhbmdlZCB0byB1c2UgRlRfRml4ZWQKCW51bWJlciBoYW5kbGluZy4KCjIwMDEtMDMtMTAgIEhlbnJpayBHcnViYnN0cvZtICA8Z3J1YmJhQHJveGVuLmNvbT4KCgkqIHNyYy8qLyouYzogQWRkZWQgbWFueSBjYXN0cyB0byBtYWtlIGNvZGUgbW9yZSA2NGJpdC1zYWZlLgoKMjAwMS0wMy0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTCwgZG9jcy9CVUlMRDogV2UgbmVlZCBHTlUgbWFrZSAzLjc4IG9yIG5ld2VyLgoKMjAwMS0wMy0wNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogTWlub3IgY29ycmVjdGlvbjogV2UgbXVzdCB3YWl0Cgl1bnRpbCBwYXJzZV9mb250X2Jib3ggaXMgY2hhbmdlZCBiZWZvcmUgd2UgdXNlIGxvZ2ljYWwgc2hpZnQgcmlnaHRzCglpbiB0aGUgYXNzaWdubWVudHMgb2YgYHJvb3QtPmFzY2VuZGVyJywgYHJvb3QtPmRlc2NlbmRlcicsIGFuZAoJYHJvb3QtPm1heF9hZHZhbmNlX3dpZHRoJy4KCgkoVDFfRG9uZV9GYWNlKTogRnJlZSBgY2hhcl9uYW1lJyB0YWJsZSB0byBhdm9pZCBhIG1lbW9yeSBsZWFrLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoyMDAxLTAzLTA1ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IFNldCBnbHlwaCBjb250cm9sIGRhdGEgdG8gdGhlCgl0aGUgVHlwZSAyIGdseXBoIGNoYXJzdHJpbmcgKHVzZWQgYnkgY29udmVyc2lvbiBwcm9ncmFtcykuCglTdWJtaXR0ZWQgYnkgSGEgU2hhbyA8aGFzaGFvQGNoaW5lc2UuY29tPi4KCjIwMDEtMDMtMDQgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBDb3JyZWN0IGEgc3R1cGlkIHR5cG8gd2hpY2ggcHJldmVudGVkCgljb3JyZWN0IGNvbXBpbGF0aW9uIChUVF9NU19MQU5HSURfVElHUklHTkFfRVRISU9QSUEgYXBwZWFyZWQgdHdpY2UpLgoKMjAwMS0wMy0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyKTogQWRkIGVsZW1lbnRzCglgZGlzYWJsZV9ob3J6X2VkZ2VzJywgYGRpc2FibGVfdmVydF9lZGdlcycuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYwkoYWhfaGludF9lZGdlc18zLCBhaF9oaW50ZXJfaGludF9lZGdlcyk6IFVzZQoJdGhlbSAoYW5kIHJlbW92ZSBzdGF0aWMgdmFyaWFibGVzIHdpdGggdGhlIHNhbWUgbmFtZXMpLgoJKiBzcmMvcGNmL3BjZnV0aWwuYyAoQml0T3JkZXJJbnZlcnQpOiBBZGQgYGNvbnN0Jy4KCSogZG9jcy9nbG5hbWVzLnB5OiBVcGRhdGVkIHRvIGxhdGVzdCBwc3RhYmxlcy5oIGNoYW5nZXMuCgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IEFkZCB0ZXN0IGZvciBIdXJkLgoJKiBidWlsZHMvaHVyZC9kZXRlY3QubWs6IFJlbW92ZWQuCgoyMDAxLTAzLTA0ICBTYW5kZXIgdmFuIGRlciBXYWwgIDxzdmR3YWxAeHM0YWxsLm5sPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaDogQWRkIG1vcmUgYGNvbnN0Jy4KCSogc3JjL3BjZi9wY2Z1dGlsLmM6IERpdHRvLgoKMjAwMS0wMy0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBGaXhpbmcgdHlwbwoJKEZUX0dseXBoX0RvbmUgLT4gRlRfRG9uZV9HbHlwaCkuCgoyMDAxLTAzLTAxICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQWRkZWQgc29tZSBuZXcgTWljcm9zb2Z0IGxhbmd1YWdlCgljb2RlcyBhbmQgTENJRHMgYXMgZm91bmQgaW4gT2ZmaWNlIFhwLgoKMjAwMS0wMi0yOCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy9odXJkL2RldGVjdC5tazogTmV3IGZpbGUuICBBZGRlZCBzdXBwb3J0IHRvIGRldGVjdCB0aGUgR05VCglIdXJkIG9wZXJhdGluZyBzeXN0ZW0gYXMgVW5peC1saWtlLiAgRml4IHN1Ym1pdHRlZCBieSBBbnRob255IEZvawoJPGZva2FAZGViaWFuLm9yZz4uCgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogU2V0IGdseXBoIGNvbnRyb2wgZGF0YSB0byB0aGUKCXRoZSBUeXBlIDEgZ2x5cGggY2hhcnN0cmluZyAodXNlZCBieSBjb252ZXJzaW9uIHByb2dyYW1zKS4KCVN1Ym1pdHRlZCBieSBIYSBTaGFvIDxoYXNoYW9AY2hpbmVzZS5jb20+LgoKMjAwMS0wMi0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z3JheXMuYyAoZ3JheXNfc3dlZXApOiBUaGUgZnVuY3Rpb24gZGlkbid0IGV4aXQKCWltbWVkaWF0ZWx5IGlmIGBudW1fY2VsbHMnIHdhcyAwIGFzIGl0IHNob3VsZC4gIFRoYW5rcyB0byBCb3JpcyBmb3IKCWZpbmRpbmcgdGhpcyBvdXQuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IEZpeGVkIG1lbW9yeSBsZWFrIHdoZW4KCWJpdG1hcCByZW5kZXJpbmcgZmFpbHMgKHRoYW5rcyB0byBHcmFoYW0gQXNoZXIpLgoKMjAwMS0wMi0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weSAoRG9jU2VjdGlvbjo6YWRkX2VsZW1lbnQpOiBVc2UKCWBzZWxmLnByaW50X2Vycm9yKCknLgoKCSogYnVpbGRzL3VuaXgvY29uZmlnLntndWVzcyxzdWJ9OiBVcGRhdGVkIChmcm9tIGZ0cC5nbnUub3JnKS4KCjIwMDEtMDItMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5LCBpbmNsdWRlL2ZyZWV0eXBlLyouaDogVXBkYXRlZCB0aGUgRG9jTWFrZXIKCXNjcmlwdCB0byBzdXBwb3J0IGNoYXB0ZXJzIGFuZCBzZWN0aW9uIGJsb2NrIG9yZGVyaW5nLiAgVXBkYXRlZCB0aGUKCXB1YmxpYyBoZWFkZXIgZmlsZXMgYWNjb3JkaW5nbHkuCgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX0NvcHkpOiBBZHZhbmNlIHdpZHRoIGFuZCBnbHlwaCBmb3JtYXQKCXdlcmUgbm90IGNvcnJlY3RseSBjb3BpZWQuCgoyMDAxLTAyLTA4ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZwYXJzZS5jIChjZmZfcGFyc2VfZm9udF9tYXRyaXgpOiBSZW1vdmVkIGFuCgl1bm5lY2Vzc2FyeSBmcHJpbnRmKCBzdGRlcnIsIC4uLiApLgoKMjAwMS0wMi0wNyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQWRkZWQgY29kZSB0byBnZXQgdGhlCgl1bml0c19wZXJfRU0gZnJvbSB0aGUgdmFsdWUgYXNzaWduZWQgaW4gcGFyc2VfZm9udF9tYXRyaXgsIGlmCglhdmFpbGFibGUuICBEZWZhdWx0IHRvIDEwMDAgaWYgbm90IGF2YWlsYWJsZS4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgbG9naWMgdG8gZ2V0Cgl0aGUgdW5pdHNfcGVyX0VNIGZyb20gdGhlIEZvbnRNYXRyaXguCgoJKGNmZl9wYXJzZV9maXhlZF90aG91c2FuZCk6IE5ldyBmdW5jdGlvbi4gR2V0cyBhIHJlYWwgbnVtYmVyIGZyb20KCXRoZSBDRkYgZm9udCwgYnV0IG11bHRpcGxpZXMgYnkgMTAwMCAodGhpcyBpcyB0byBhdm9pZCByb3VuZGluZwoJZXJyb3JzIHdoZW4gcGxhY2luZyB0aGlzIHJlYWwgbnVtYmVyIGludG8gYSAxNi4xNiBmaXhlZCBudW1iZXIpLgoKCShjZmZfcGFyc2VfcmVhbCk6IEFkZGVkIGNvZGUgc28gdGhhdCB0aGUgaW50ZWdlciBwYXJ0IGlzIG1vdmVkCglpbnRvIHRoZSBoaWdoIHNpeHRlZW4gYml0cyBvZiB0aGUgMTYuMTYgZml4ZWQgbnVtYmVyLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKENGRl9Jbml0X0ZhY2UpOiBBZGRlZCBsb2dpYyB0byBnZXQgdGhlIHVuaXRzCglwZXIgRU0gZnJvbSB0aGUgQ0ZGIGRpY3Rpb25hcnksIGlmIGF2YWlsYWJsZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvY2ZmdHlwZXMuaDogSW4gc3RydWN0IENGRl9Gb250X0RpY3RfLAoJYWRkZWQgYSB1bml0c19wZXJfZW0gbWVtYmVyIHRvIGZhY2lsaXRhdGUgcGFzc2luZyBvZiB1bml0c19wZXJfZW0KCWZyb20gZnVuY3Rpb24gY2ZmX3BhcnNlX2ZvbnRfbWF0cml4LgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChpc19hbHBoYSk6IE1ha2UgYC0nIGEgbGVnYWwgYWxwaGFudW1lcmljCgljaGFyYWN0ZXIuICBUaGlzIGlzIHNvIHRoYXQgZm9udCBuYW1lcyB3aXRoIGAtJyBhcmUgZnVsbHkgcGFyc2VkLAoJZXRjLi4uCgoyMDAxLTAyLTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKHNoaWZ0X2VsZW1lbnRzKTogUmVtb3ZlIGlmIGNsYXVzZSAod2hpY2ggaXMKCW9ic29sZXRlIG5vdykuCgoJKHJlYWxsb2NhdGVfdDFfdGFibGUsIFBTX1RhYmxlX0RvbmUpOiBSZXBsYWNlIFJFQUxMT0MoKSB3aXRoIEFMTE9DKCkKCSsgTUVNX0NvcHkoKSB0byBhdm9pZCBhIG1lbW9yeSBidWcuCgoyMDAxLTAyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weTogSW1wcm92ZWQgdGhlIGluZGV4IHNvcnRpbmcgcm91dGluZSB0byBwbGFjZQoJY2FwaXRhbCBsZXR0ZXJzIGJlZm9yZSBzbWFsbCBvbmVzLiAgQWRkZWQgdGhlICI8b3JkZXI+IiBtYXJrZXIgdG8KCXNlY3Rpb24gYmxvY2tzIGluIG9yZGVyIHRvIGdpdmUgdGhlIG9yZGVyIG9mIGJsb2Nrcy4KCjIwMDEtMDEtMzAgIEFudG9pbmUgTGVjYSAgPEFudG9pbmUuTGVjYUByZW5hdWx0LmZyPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBMYXRlc3QgdXBkYXRlcyB0byBNaWNyb3NvZnQgbGFuZ3VhZ2UKCUlEIGNvZGVzLgoKMjAwMS0wMS0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgaGV1cmlzdGljIHRvIGdldAoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIGZvbnQgbWF0cml4LgoKCShwYXJzZV9kaWN0KTogRGVsZXRlZCB0ZXN0IHRvIHNlZSB3aGV0aGVyIHRoZSBGb250SW5mbyBrZXl3b3JkIGhhcwoJYmVlbiBzZWVuLiAgRGVsZXRpb24gb2YgdGhpcyB0ZXN0IGFsbG93cyBmb250cyB3aXRob3V0IEZvbnRJbmZvCglkaWN0aW9uYXJpZXMgdG8gYmUgcGFyc2VkIGJ5IHRoZSBUeXBlIDEgZHJpdmVyLgoKCShUMV9PcGVuX0ZhY2UpOiBEZWxldGVkIGVtcHR5IHN1YnJvdXRpbmVzIGFycmF5IHRlc3QgdG8gbWFrZSBzdXJlCglmb250cyB3aXRoIG5vIHN1YnJvdXRpbmVzIHN0aWxsIGFyZSBwYXJzZWQuCgoyMDAxLTAxLTE3ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxmcmFuY2VzY28uemFwcGEubmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZnJlYWQuYyAocGNmX2dldF9wcm9wZXJ0aWVzLCBwY2ZfZ2V0X21ldHJpY3MsCglwY2ZfZ2V0X2JpdG1hcHMpOiBGaXggY29tcGlsZXIgZXJyb3JzLgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBSZW1vdmVkIHNvbWUgY29tcGlsYXRpb24gd2FybmluZ3MgcmVsYXRlZAoJdG8gY29tcGFyaXNvbiBvZiBzaWduZWQgdnMuIHVuc2lnbmVkIGludGVnZXJzLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmg6IENoYW5nZWQgdGhlIGRlYnVnIHRyYWNlCgljb25zdGFudHMgZnJvbSB0cmFjZV90Mnh4eHggdG8gdHJhY2VfY2ZmeHh4eCB0byBiZSBhYmxlIHRvIGNvbXBpbGUKCXRoZSBDRkYgZHJpdmVyIGluIGRlYnVnIG1vZGUuCgoyMDAxLTAxLTExICBNYXR0aGV3IENyb3NieSAgPG1jcm9zYnlAbWFydGhvbi5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IEZpeCBwcm9ibGVtcyB3aXRoIHNlcGFyYXRlCgktLXByZWZpeCBhbmQgLS1leGVjLXByZWZpeC4KCjIwMDEtMDEtMTEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBBZGRlZCBjcm9zcy1yZWZlcmVuY2VzIGdlbmVyYXRpb24gYXMgd2VsbCBhcwoJbW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgcGF0aG5hbWUgd2lsZGNhcmQgbWF0Y2hpbmcuCgoyMDAxLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBNaW5vciBpbXByb3ZlbWVudHMgdG8gcmVkdWNlIHVud2FudGVkIHNwYWNlcwoJYW5kIGVtcHR5IGxpbmVzIGluIG91dHB1dC4KCjIwMDEtMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCBzY3JpcHQgdG8gZ2VuZXJhdGUgdGFibGUgb2YgY29udGVudHMKCWFuZCBpbmRleCBwYWdlcy4gIEl0IGFsc28gc3VwcG9ydHMgd2lsZGNhcmRzIG9uIG5vbiBVbml4IHN5c3RlbXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlLyouaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmg6IFVwZGF0ZWQgY29tbWVudHMKCXRvIGluY2x1ZGUgc2VjdGlvbiBkZWZpbml0aW9ucy9kZWxpbWl0YXRpb25zIGZvciB0aGUgQVBJIFJlZmVyZW5jZQoJZ2VuZXJhdG9yLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBNb3ZlZCBkZWNsYXJhdGlvbiBvZgoJYEZUX0dlbmVyaWNfRmluYWxpemVyJyBhbmQgdGhlIGBGVF9HZW5lcmljJyBzdHJ1Y3R1cmUgdG8uLi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmg6IGhlcmUuCgoyMDAxLTAxLTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IFVwZGF0ZWQgVW5pY29kZSBjb2RlIHJhbmdlIGNvbW1lbnRzLgoKMjAwMS0wMS0wMyAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvcnVsZXMubWs6IFVzZSBjZmZnbG9hZC57YyxofSBpbnN0ZWFkIG9mIHQyZ2xvYWQue2MsaH0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IENoYW5nZWQgdG8gdXNlIGNmZnR5cGVzLmgKCShjZmZlcnJzLmgpIGluc3RlYWQgb2YgdDJ0eXBlcy5oICh0MmVycm9ycy5oLCByZXNwZWN0aXZlbHkpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBNZXJnZWQgaW4gY2hhbmdlcyBmcm9tCgl0MnR5cGVzLmggYW5kIG1hZGUgdGhpcyB0aGUgY2Fub25pY2FsIGB0eXBlcycgaGVhZGVyIGZvciB0aGUgQ0ZGCglkcml2ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3QydHlwZXMuaDogVGhpcyBmaWxlIHdhcyBtZXJnZWQgd2l0aAoJY2ZmdHlwZXMuaCBhbmQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJlcnJvcnMuaDoJUmVuYW1lZCB0byBjZmZlcnJzLmguCgoJKiBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy9jZmYvY2ZmcGFyc2UuYywKCXNyYy9jZmYvY2ZmZHJpdnIuYywgc3JjL2NmZi9jZmYuYywgc3JjL2NmZi9jZmZsb2FkLmMsCglzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuaDogQ2hhbmdlZCB0byB1c2UKCWNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4gIEFsbCBvY2N1cmVuY2VzIG9mIHQyXwoJKFQyXykgd2VyZSByZXBsYWNlZCB3aXRoIGNmZl8gKENGRl8sIHJlc3BlY3RpdmVseSkuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuaDogUmVuYW1lZCBjZmZnbG9hZC5oLgoKCSogc3JjL2NmZi90Mmdsb2FkLmM6IFJlbmFtZWQgY2ZmZ2xvYWQuYwoKMjAwMC0wMS0wMiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3ZtczogU3VwcG9ydCBmaWxlcyBmb3IgVk1TIGFyY2hpdGVjdHVyZSBhZGRlZC4KCSogZGVzY3JpcC5tbXMsIHNyYy8qL2Rlc2NyaXAubW1zOiBWTVMgbWFrZWZpbGVzIGFkZGVkLgoJKiBSRUFETUUuVk1TOiBOZXcgZmlsZS4KCjIwMDAtMDEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIExJQ0VOU0UuVFhUOiBBZGRlZCBpbmZvIGFib3V0IFBDRiBkcml2ZXIgbGljZW5zZS4KCjIwMDEtMDEtMDEgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmLyo6IE5ldyBkcml2ZXIgbW9kdWxlIGZvciBQQ0YgZm9udCBmb3JtYXQgKHVzZWQgaW4KCVggV2luZG93IFN5c3RlbSkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IEFkZGVkIHZhbHVlcyBmb3IKCVBDRiBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGNmdHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IEFkZGVkIFBDRiBkcml2ZXIgbW9kdWxlLgoKMjAwMS0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X0NoYXJfSW5kZXgpOiBGaXggcGFyYW1ldGVyIHR5cGUuCgoyMDAwLTEyLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbW9kdWxlcy5tayAoY2xlYW5fbW9kdWxlX2xpc3QpOiBGaXhlZCBkZWxldGlvbiBvZiBtb2R1bGUKCWZpbGUgaW4gY2FzZSBgbWFrZSBtYWtlX21vZHVsZV9saXN0JyBpcyBjYWxsZWQgYmVmb3JlIGBtYWtlIHNldHVwJy4KCjIwMDAtMTItMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9DaGFyc2V0KTogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMuCgkoQ0ZGX0xvYWRfQ2hhcnNldCwgQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgdW5uZWNlc3NhcnkgdmFyaWFibGUKCWRlZmluaXRpb24uCgoyMDAwLTEyLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MnR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IENoYW5nZWQgdGhlIHN0cnVjdHVyZXMgZm9yCglDRkZfRW5jb2RpbmcgYW5kIENGRl9FbmNvZGluZyBmb3IgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCgljaGFyc2V0IGFuZCBlbmNvZGluZyBwYXJzZXJzIGluIHRoZSBDRkYgZHJpdmVyLgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKHQyX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSwKCXQyX29wZXJhdG9yX3NlYWMpOiBBZGRlZCB0aGVzZSBmdW5jdGlvbnMgZm9yIHVzZSBpbiBpbXBsZW1lbnRpbmcgdGhlCglzZWFjIGVtdWxhdGlvbiBwcm92aWRlZCBieSB0aGUgVHlwZSAyIGVuZGNoYXIgb3BlcmF0b3IuCgkoVDJfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBzZWFjIGVtdWxhdGlvbiBmb3IgdGhlIGVuZGNoYXIKCW9wZXJhdG9yLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0VuY29kaW5nLCBDRkZfTG9hZF9DaGFyc2V0LAoJQ0ZGX0RvbmVfRW5jb2RpbmcsIENGRl9Eb25lX0NoYXJzZXQpOiBFeHRlbmRlZCB0byBsb2FkIGFuZCBwYXJzZSB0aGUKCWNoYXJzZXQvZW5jb2RpbmcgdGFibGVzLCBhbmQgZnJlZSB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlbSB3aGVuIHRoZQoJQ0ZGIGRyaXZlciBpcyBmaW5pc2hlZCB3aXRoIHRoZW0uICBBZGRlZCB0YWJsZXMKCgkgICAgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQKCSAgICBjZmZfZXhwZXJ0X2NoYXJzZXQKCSAgICBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQKCSAgICBjZmZfc3RhbmRhcmRfZW5jb2RpbmcKCSAgICBjZmZfZXhwZXJ0X2VuY29kaW5nCgoJc28gdGhhdCB0aGUgZW5jb2RpbmcvY2hhcnNldCBwYXJzZXIgY2FuIGhhbmRsZSBwcmVkZWZpbmVkIGVuY29kaW5ncyBhbmQKCWNoYXJzZXRzLgoKMjAwMC0xMi0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9Mb2FkX0dseXBoKTogQWRkZWQgY29kZQlzbyB0aGF0IHRoZSBmb250Cgl0cmFuc2Zvcm0gaXMgYXBwbGllZC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgY29kZSBzbyB0aGF0Cgl0aGUgZm9udCBtYXRyaXggbnVtYmVycwlhcmUgc2NhbGVkIGJ5IDEvKG1hdHJpeC0+eXkpLiAgQWxzbywgdGhlCglvZmZzZXQgdmVjdG9yIG5vdyBjb250YWlucyBpbnRlZ2VyIHZhbHVlcyBpbnN0ZWFkIG9mIDE2LjE2IGZpeGVkCgludW1iZXJzLgoKMjAwMC0xMi0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb21tZW50cyBhbmQgY29tbWVudGVkLW91dCBjb2RlLgoKMjAwMC0xMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkYWZtLmMsIHNyYy9jaWQvY2lkYWZtLmg6IHJlbW92ZWQgdW4tbmVlZGVkIGZpbGVzLAoJd2UnbGwgd29yayBvbiBzdXBwb3J0aW5nIENJRCBBRk0gZmlsZXMgbGF0ZXIgSSBndWVzcyA6LSkKCjIwMDAtMTItMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkLCBhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglDaGFuZ2VkIHNvIHRoYXQgZm9udHMgd2l0aCBhIG5vbi1zdGFuZGFyZCBGb250TWF0cml4IHJlbmRlcgoJY29ycmVjdGx5LiAgUHJldmlvdXNseSwgdGhlIGZpcnN0IGdseXBoIHJlbmRlcmVkIGZyb20gc3VjaCBhCglmb250IGRpZCBub3QgaGF2ZSB0aGUgdHJhbmZvcm1hdGlvbiBtYXRyaXggYXBwbGllZC4KCjIwMDAtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqICoubWs6IEFkZGVkIGxvdHMgb2YgYC5QSE9OWScgdGFyZ2V0cy4KCjIwMDAtMTItMTcgIEthcnN0ZW4gRmxlaXNjaGVyICA8a2ZsZWlzYzFAZm9yZC5jb20+CgoJKiAqLm1rOiBJbXBsZW1lbnRlZCBgcGxhdGZvcm0nIHRhcmdldCB0byBkaXNhYmxlIGF1dG8tZGV0ZWN0aW9uLgoKMjAwMC0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kZXNpZ24vbW9kdWxlcy5odG1sOiBSZW1vdmVkLiAgQ292ZXJlZCBieSBkZXNpZ24tKi5odG1sLgoKCSogSU5TVEFMTDogQWRkZWQgaW5mbyBhYm91dCBtYWtlcHAuCgoyMDAwLTEyLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCUFkZGVkIHN1cHBvcnQgZm9yIGNsaXBwZWQgZGlyZWN0IHJlbmRlcmluZyBpbiB0aGUgc21vb3RoIHJlbmRlcmVyLgoJVGhpcyBzaG91bGQgbm90IGJyZWFrIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogTW92ZQoJZGVmaW5pdGlvbiBvZiB0aGUgRlRfQkJveCBzdHJ1Y3R1cmUgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBBZGQgYGZ0X3Jhc3Rlcl9mbGFnX2NsaXAnIHZhbHVlIHRvCglGVF9SYXN0ZXJfRmxhZyBlbnVtZXJhdGlvbi4KCUFkZCBgY2xpcF9ib3gnIGVsZW1lbnQgdG8gRlRfUmFzdGVyX1BhcmFtcyBzdHJ1Y3R1cmUuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19jb252ZXJ0X2dseXBoKTogSW1wbGVtZW50IGl0LgoKCSogSU5TVEFMTDogVXBkYXRlZCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIG9uIFdpbjMyLCBsaXN0aW5nIHRoZQoJbmV3ICJtYWtlIHNldHVwIGxpc3QiIHRhcmdldCB1c2VkIHRvIGxpc3Qgc3VwcG9ydGVkCgljb21waWxlcnMvdGFyZ2V0cy4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfcmVuZGVyKTogVGVzdCBmb3IgdW5zdXBwb3J0ZWQKCWRpcmVjdCByZW5kZXJpbmcgYmVmb3JlIHRlc3RpbmcgYXJndW1lbnRzLgoKMjAwMC0xMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IEZpeGVkIGhlYWRlciBpbmNsdXNpb24gbWFjcm9zCgl0byB1c2UgZGlyZWN0IGRlZmluaXRpb25zLiAgVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZG8gdGhlc2UgdGhpbmdzCglpbiBhIHBvcnRhYmxlIHdheSA6LSggIFRoZSByZXN0IG9mIHRoZSBjb2RlIHNob3VsZCBmb2xsb3cgc2hvcnRseQoJdGhvdWdoIGV2ZXJ5dGhpbmcgY29tcGlsZXMgbm93LgoKCSogYnVpbGRzL2NvbXBpbGVyL2ludGVsYy5taywgYnVpbGRzL2NvbXBpbGVyL3dhdGNvbS5tazogTmV3IGZpbGVzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5tazogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEludGVsIEMvQysrCgljb21waWxlciwgYXMgd2VsbCBhcyBfcHJlbGltaW5hcnlfIChyZWFkOiBkb2Vzbid0IHdvcmshKSBzdXBwb3J0IGZvcgoJV2F0Y29tLiAgQWxzbyBhZGRlZCBhIG5ldyBzZXR1cCB0YXJnZXQuICBUeXBlICJtYWtlIHNldHVwIGxpc3QiIGZvcgoJYSBsaXN0IG9mIHN1cHBvcnRlZCBjb21tYW5kLWxpbmUgY29tcGlsZXJzIG9uIFdpbjMyLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jOiBBZGRlZCBkdW1teSBzeW1ib2wgdG8gYXZvaWQgZW1wdHkgZmlsZSBpZgoJY29uZGl0aW9uYWxzIGFyZSBvZmYuCgoyMDAwLTEyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBGaXhlZCB0eXBvcy4gIEZpeGVkIGluY2x1c2lvbiBvZiB3cm9uZwoJZnRjb25maWcuaCBmaWxlLgoKMjAwMC0xMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX1JPT1QsIEZUMl9DT05GSUdfUk9PVCk6CglSZW1vdmVkLiAgQU5TSSBDIGRvZXNuJ3QgKGV4cGxpY2l0bHkpIGFsbG93IG1hY3JvIGV4cGFuc2lvbiBpbgoJYXJndW1lbnRzIHVzaW5nIGAjIycuCgkoRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFKTogVXNlIGRpcmVjdG9yeQoJbmFtZXMgZGlyZWN0bHkuICBNYWtlIHRoZW0gY29uZmlndXJhYmxlLiAgVXNlIGAjIycgdG8gc3RyaXAgbGVhZGluZwoJYW5kIHRyYWlsaW5nIHNwYWNlcyBmcm9tIGFyZ3VtZW50cy4KCgkqIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogQWRhcHRlZC4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKGZ0X2FsbG9jLCBmdF9yZWFsbG9jLCBmdF9mcmVlLCBmdF9pb19zdHJlYW0sCglmdF9jbG9zZV9zdHJlYW0pOiBVc2UgRlRfQ0FMTEJBQ0tfREVGLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYzogVXNlIG5ldyBoZWFkZXIgc2NoZW1lLgoJKEZUX0RvbmVfTWVtb3J5KTogVXNlIGZyZWUoKSBmcm9tIEZUX01lbW9yeSBzdHJ1Y3R1cmUuCgoJKiBzcmMvYmFzZS9mdGluaXQuYywgc3JjL2Jhc2UvZnRtYWMuYzogSGVhZGVyIHNjaGVtZSBmaXhlcy4KCjIwMDAtMTItMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmggKEZUMl9DT05GSUdfUk9PVCwKCUZUMl9QVUJMSUNfRklMRSwgRlQyX0NPTkZJR19GSUxFLCBGVDJfSU5URVJOQUxfRklMRSwKCUZUX1NPVVJDRV9GSUxFKTogVXNlIGAjIycgb3BlcmF0b3IgdG8gYmUgcmVhbGx5IEFOU0kgQyBjb21wbGlhbnQuCgoyMDAwLTEyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IFJlbW92ZSB1bnVzZWQgVVNFX0NGTEFHUyB2YXJpYWJsZS4KCjIwMDAtMTItMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqICovKi5oOiBDaGFuZ2VkIGJvZHkgaW5jbHVzaW9uIG1hY3JvIG5hbWVzIHRvIHN0YXJ0IGFuZCBlbmQgd2l0aAoJYF9fJyAodGhvc2Ugd2hpY2ggaGF2ZW4ndCBjb252ZXJ0ZWQgeWV0KS4gIEZpeGVkIG1pbm9yIGNvbnZlcnNpb24KCWlzc3Vlcy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogUmVtb3ZlIHVudXNlZCBDQUxDX0xlbmd0aCgpIG1hY3JvLgoKMjAwMC0xMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqICovKi5bY2hdOiBDaGFuZ2VkIHNvdXJjZSBmaWxlcyB0byBhZGhlcmUgdG8gdGhlIG5ldwoJaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuICBOb3QgY29tcGxldGVseSB0ZXN0ZWQgYnV0IHdvcmtzIGZvciBub3cKCWhlcmUuCgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmRyaXZlci5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QybG9hZC5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJvYmpzLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZvYmpzLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QycGFyc2UuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QycGFyc2UuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QydG9rZW5zLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZ0b2tlbi5oOiBOZXcgZmlsZS4KCgkqIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAwLTEyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Eb25lKTogRml4ZWQgbWVtb3J5IGxlYWsuCgoyMDAwLTEyLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbW9kdWxlLm1rOiBSZXBsYWNlZCBgeHh4ICMnIHdpdGggYHh4eCQoc3BhY2UpLgoJKiBidWlsZHMvb3MyL2RldGVrdC5taywgYnVpbGRzL3dpbjMyL2RldGVrdC5tazogTW92ZWQgY29tbWVudCB0bwoJYXZvaWQgdHJhaWxpbmcgc3BhY2VzIGluIHZhcmlhYmxlLgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IFVzZSAkKEQpIGluc3RlYWQgb2YgJEQgdG8gbWFrZSBzdGF0ZW1lbnQgbW9yZQoJcmVhZGFibGUuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBGb3JtYXR0aW5nLgoKMjAwMC0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jOiBGaXhlZCBhIGJyb2tlbiBpbmNsdXNpb24gb2YgY29tcG9uZW50CgloZWFkZXIgZmlsZXMgKGFuIEZUX0ZMQVRfQ09NUElMRSB0ZXN0IHdhcyBtaXNzaW5nKS4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lKTogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQKCWFuIG9jY2FzaW9uYWwgY3Jhc2ggd2hlbiB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCAoZHVlIHRvIGEgZGFuZ2xpbmcKCXBvaW50ZXIpLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoRlRfRG9uZV9NZW1vcnkpOiBGaXhlZCBhbiBvYnZpb3VzIGJ1ZzoKCVRoZSBBTlNJICJmcmVlKCkiIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW5zdGVhZCBvZiAibWVtb3J5LT5mcmVlKCkiLgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgc2VjdGlvbiBmaWx0ZXJpbmcsIG11bHRpLXBhZ2UgZ2VuZXJhdGlvbgoJKGluZGV4IHBhZ2UgZ2VuZXJhdGlvbiBpcyBzdGlsbCBtaXNzaW5nIHRob3VnaCkuCgoyMDAwLTEyLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5taywgYnVpbGRzL3VuaXgvZnQydW5peC5oOiBUaGUgZmlsZSAiZnQydW5peC5oIgoJaXMgbm93IGluc3RhbGxlZCBhcyA8ZnQyYnVpbGQuaD4gZm9yIFVuaXggc3lzdGVtcy4gIE5vdGUgdGhhdCB3ZQoJc3RpbGwgdXNlIHRoZSAiZnJlZXR5cGUyL2ZyZWV0eXBlIiBpbnN0YWxsYXRpb24gcGF0aCBmb3Igbm93LgoKCSogKi8qLltjaF06IE5vdyB1c2luZyA8ZnQyYnVpbGQuaD4gYXMgdGhlIGRlZmF1bHQgYnVpbGQgYW5kIHNldHVwCgljb25maWd1cmF0aW9uIGZpbGUgaW4gYWxsIHB1YmxpYyBoZWFkZXJzLiAgSW50ZXJuYWwgc291cmNlIGZpbGVzCglzdGlsbCBuZWVkIHNvbWUgY2hhbmdlcyB0aG91Z2guCgoJKiBidWlsZHMvZGV2ZWwvZnQyYnVpbGQuaCwgYnVpbGRzL2RldmVsL2Z0b3B0aW9uLmg6IENyZWF0ZWQgYSBuZXcKCWRpcmVjdG9yeSB0byBob2xkIGFsbCBkZXZlbG9wbWVudCBvcHRpb25zIGZvciBib3RoIHRoZSBVbml4IGFuZAoJV2luMzIgZGV2ZWxvcGVyIGJ1aWxkcy4KCgkqIGJ1aWxkcy93aW4zMi9kZXRlY3QubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi93MzItZGV2Lm1rOiBDaGFuZ2VkIHRoZSBkZXZlbG9wZXIgYnVpbGQgdGFyZ2V0cyB0bwoJImRldmVsLWdjYyIgYW5kICJkZXZlbC1iY2MiIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV2ZWxvcCB3aXRoIHRoZQoJQm9ybGFuZCBDKysgY29tcGlsZXIuCgoyMDAwLTEyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjEgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluLCBidWlsZHMvdW5peC9jb25maWd1cmUsCglidWlsZHMvY3lnd2luL2NvbmZpZ3VyZS5pbiwgYnVpbGRzL2N5Z3dpbi9jb25maWd1cmU6IFNldHRpbmcKCSJ2ZXJzaW9uX2luZm8iIHRvIDY6MTowIGZvciB0aGUgMi4wLjEgcmVsZWFzZS4KCgkqIENIQU5HRVM6IEFkZGVkIGEgc3VtbWFyeSBvZiBjaGFuZ2VzIGJldHdlZW4gMi4wLjEgYW5kIDIuMC4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluLCBidWlsZHMvY3lnd2luL2Z0Y29uZmlnLmluOiBDaGFuZ2VzCgl0byBhbGxvdyBjb21waWxhdGlvbiB1bmRlciBVbml4IHdpdGggdGhlIFVuaXgtc3BlY2lmaWMgY29uZmlnCglmaWxlcy4KCjIwMDAtMTItMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IFJldmlzZWQuCgkqIGJ1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rLCBidWlsZHMvY29tcGlsZXIvdmlzdWFsYWdlLm1rLAoJYnVpbGRzL2NvbXBpbGVyL2JjYy5taywgYnVpbGRzL3dpbjMyL3czMi1iY2MubWssCglidWlsZHMvd2luMzIvdzMyLWJjY2QubWs6IFJldmlzZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0YnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IFVwZGF0ZWQgdG8gbmV3IGhlYWRlciBpbmNsdXNpb24gc2NoZW1lLgoKMjAwMC0xMS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3RvcGxldmVsLm1rICguUEhPTlkpOiBBZGRpbmcgYGRpc3RjbGVhbicuCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tayAoLlBIT05ZKTogQWRkaW5nIGBkZXZlbCcsIGB1bml4JywgYGxjYycsCglgc2V0dXAnLgoKMjAwMC0xMS0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9ncj4KCgkqIElOU1RBTEw6IFNsaWdodGx5IHVwZGF0ZWQgdGhlIHF1aWNrIHN0YXJ0ZXIgZG9jdW1lbnRhdGlvbiB0bwoJaW5jbHVkZSBJREUgY29tcGlsYXRpb24sIHByZXZlbnQgYWdhaW5zdCBCU0QgTWFrZSwgYW5kIHNwZWNpZnkgIm1ha2UKCXNldHVwIiBpbnN0ZWFkIG9mIGEgc2luZ2xlICJtYWtlIiBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0YnVpbGQuaCwgaW5jbHVkZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBBZGRlZCBuZXcKCWNvbmZpZ3VyYXRpb24gZmlsZXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGxvY2F0aW9uIG9mIGFsbCBwdWJsaWMsCgljb25maWd1cmF0aW9uLCBhbmQgaW50ZXJuYWwgaGVhZGVyIGZpbGVzIGZvciBGcmVlVHlwZSAyLiAgTW9kaWZpZWQKCWFsbCBoZWFkZXJzIHVuZGVyICJpbmNsdWRlL2ZyZWV0eXBlIiB0byByZWZsZWN0IHRoaXMgY2hhbmdlLiAgTm90ZQoJdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoYW5nZSB0aGUgbGlicmFyeSBzb3VyY2UgZmlsZXMgdGhlbXNlbHZlcwoJdGhvdWdoLgoKCSogYnVpbGRzL2NvbXBpbGVyL2JjYy5taywgYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssCglidWlsZHMvd2luMzIvdzMyLWJjYy5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL2RldGVjdC5tazogQWRkZWQgbmV3IGZpbGVzIHRvIHN1cHBvcnQgY29tcGlsYXRpb24gd2l0aAoJdGhlIGZyZWUgQm9ybGFuZCBDKysgY29tbWFuZC1saW5lIGNvbXBpbGVyLiAgTW9kaWZpZWQgdGhlIGRldGVjdGlvbgoJcnVsZXMgdG8gcmVjb2duaXplIHRoZSBuZXcgImJjYzMyIiB0YXJnZXQgaW4gIm1ha2Ugc2V0dXAgYmNjMzIiLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMsIHNyYy9zZm50L3R0cG9zdC5jLCBzcmMvc2ZudC90dHNiaXQuYywKCXNyYy90cnVldHlwZS90dG9ianMuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywKCXNyYy90cnVldHlwZS90dGludGVycC5jOiBGaXhlZCBhIGZldyBjb21wYXJpc29ucyB0aGF0IEJvcmxhbmQgQysrCglkaWRuJ3QgcmVhbGx5IGxpa2UuICBCYXNpY2FsbHksIHRoaXMgY29tcGlsZXIgY29tcGxhaW5zIHdoZW4gRlRfVUludAoJaXMgY29tcGFyZWQgdG8gRlRfVVNob3J0IChhcHBhcmVudGx5LCBpdCBwcm9tb3RlcyBgVVNob3J0JyB0byBgSW50JwoJaW4gdGhlc2UgY2FzZXMpLgoKMjAwMC0xMS0zMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHQyb2Jqcy5jIChUMl9Jbml0X0ZhY2UpOiBBZGRlZCBjYWxjdWxhdGlvbiBvZiBgZmFjZS0+aGVpZ2h0JyBmb3IKCXB1cmUgQ0ZGIGZvbnRzLgoKCSogdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IEZpeGVkIGNvbXB1dGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnLgoKMjAwMC0xMS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0NvbmljX0NoZWNrKTogRml4ZWQgYSByZWFsbHkgc3R1cGlkCglidWcgaW4gdGhlIGZvcm11bGEgdXNlZCB0byBjb21wdXRlIHRoZSBjb25pYyBC6XppZXIgZXh0cmVtYQoJb2Ygbm9uLW1vbm90b25vdXMgYXJjcy4KCjIwMDAtMTEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9TcXJ0Rml4ZWQpLCBzcmMvYmFzZS9mdG9ianMuYwoJKEZUX1NldF9SZW5kZXJlcik6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCksCglzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfRG9uZSwgRlRDX01hbmFnZXJfUmVzZXQsCglGVENfTWFuYWdlcl9Mb29rdXBfRmFjZSwgRlRDX01hbmFnZXJfTG9va3VwX1NpemUsCglGVENfTWFuYWdlcl9SZWdpc3Rlcl9DYWNoZSksIHNyYy9jYWNoZS9mdGNzYml0cy5jCgkoRlRDX1NCaXRfQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oIChGVENfR2x5cGhOb2RlX0luaXQpLAoJc3JjL2luY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaCAoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogVXNlIEZUX0VYUE9SVC4KCjIwMDAtMTEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgdHRzYml0LmggYW5kIHR0cG9zdC5oIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMsIFNldF9QaXhlbF9TaXplcyk6IFNldAoJYHNpemUtPnN0cmlrZV9pbmRleCcgb25seSBjb25kaXRpb25hbGx5LgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MW9ianMuYzogSW5jbHVkZSB0MWFmbS5oIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvd2luZm9udHMvd2luZm50Lmg6IE1vdmUgYWxsIHR5cGUgZGVmaW5pdGlvbnMgdG8uLi4KCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogTmV3IGZpbGUuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogVXNlIGl0LgoKMjAwMC0xMS0yOSAgPz8/ID8/PyAgPGRhcmluQGVhemVsLmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBSZXBsYWNlZCBGVF9DQVQgYW5kIEZUX1hDQVQKCXdpdGggYSBkaXJlY3Qgc29sdXRpb24gKHdoaWNoIGFsc28gc2F0aWZpZXMgcGlja3kgY29tcGlsZXJzKS4KCjIwMDAtMTEtMjggIFlBTUFOTy1VQ0hJIEhpZGV0b3NoaSAgPG1lckBkaW4ub3IuanA+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfU2l6ZSk6IEZpeCAjaWZkZWYncyB0byB3b3JrIHdpdGgKCWRpc2FibGVkIGludGVycHJldGVyIGFsc28uCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWVfQ291bnQpOiBGaXggaW5jb3JyZWN0CglwYXJlbnRoZXNlcy4KCjIwMDAtMTEtMjYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAoVDJfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBsb2dpYyB0byBnbHlwaAoJd2lkdGggc2V0dGluZyBjb2RlIHRvIHRha2UgaW50byBhY2NvdW50IGV2ZW4vb2RkIGFyZ3VtZW50IGNvdW50cwoJYW5kIGdseXBoIHdpZHRoIG9wZXJhbmQgYmVmb3JlIGVuZGNoYXIvaG1vdmV0by92bW92ZXRvLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Fuc2kvYW5zaS5tazogRml4IGluY2x1c2lvbiBvcmRlciBvZiBmaWxlcy4KCjIwMDAtMTEtMjYgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQ29tcHV0ZSBzdHlsZSBmbGFncy4KCjIwMDAtMTEtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jb21waWxlci9hbnNpLWNjLm1rIChDTEVBTl9MSUJSQVJZKTogRml4IHJ1bGUgYW5kCgljb25kaXRpb25hbC4KCjIwMDAtMTEtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2NoYXJzdHJpbmdzKTogVXNlIGRlY3J5cHQKCWZ1bmN0aW9uIGZyb20gUFNBdXggbW9kdWxlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfRG9uZV9QYXJzZSk6IFJlbmFtZWQgdG8uLi4KCShUMV9GaW5hbGl6ZV9QYXJzZXIpOiBOZXcgZnVuY3Rpb24gKHRvIGF2b2lkIG5hbWUgY2xhc2ggd2l0aCBhCglmdW5jdGlvbiBpbiB0aGUgUFNBdXggbW9kdWxlKS4KCShUMV9EZWNyeXB0KTogUmVtb3ZlZCBzaW5jZSBpdCBpcyBkdXBsaWNhdGVkIGluIHRoZSBQU0F1eCBtb2R1bGUuCgkoVDFfR2V0X1ByaXZhdGVfRGljdCk6IEFkZGVkIGBwc2F1eCcgYXMgbmV3IHBhcmFtZXRlcjsgdXNlIGRlY3J5cHQKCWZ1bmN0aW9uIGZyb20gUFNBdXggbW9kdWxlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaDogQWRhcHRlZC4KCjIwMDAtMTEtMjIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jIChUMl9Jbml0X0ZhY2UpOiBGb3IgcHVyZSBDRkYgZm9udHMsIHNldAoJYHJvb3QtPm51bV9mYWNlcycgdG8gYGNmZi0+bnVtX2ZhY2VzJyBhbmQgc2V0IGB1bml0c19wZXJfRU0nCgl0byAxMDAwLgoKCSogc3JjL2NmZi90MnBhcnNlLmMgKHBhcnNlX3QyX3JlYWwpOiBGaXhlZCByZWFsIG51bWJlciBwYXJzaW5nCglsb29wLgoKCSogc3JjL2NmZi90MmxvYWQuYyAoVDJfR2V0X1N0cmluZyk6IENhbGxlZCBUMl9HZXRfTmFtZSB3aXRoIGEKCXNpZCB0aGF0IHdhcyBvZmYgYnkgb25lLgoKMjAwMC0xMS0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyKTogQWRkZWQgbmV3IGZpZWxkcyB0byBjb250cm9sCglhdXRvLWhpbnRpbmcgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUFkZGVkIGF1dG8taGludGluZyBzdXBwb3J0IG9mIHN5bnRoZXRpYyBUeXBlIDEgZm9udHMuCgoyMDAwLTExLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvb2tVcF9UYWJsZSwgVFRfTG9hZF9HZW5lcmljX1RhYmxlKTogQ2hhbmdlCgl0cmFjaW5nIG91dHB1dC4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNldCBib29sZWFuIHZhcmlhYmxlCglgaGFzLW91dGxpbmUnIHRvIHRydWUgb25seSBpZiB0aGUgZm9udCBoYXMgYSBgZ2x5Zicgb3IgYENGRiAnIHRhYmxlLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBGaXggcmFzdGVyMS0+cmFzdGVyIGFuZAoJdHlwZTF6LT50eXBlMS4KCjIwMDAtMTEtMTEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnJlZXR5cGUtY29uZmlnLmluOgoJQWRkZWQgYSAtLWxpYnRvb2wgb3B0aW9uLiAgV2hlbiBmcmVldHlwZS1jb25maWcgLS1saWJ0b29sIGlzCglpbnZva2VkLCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5CglpcyByZXR1cm5lZC4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vY3lnd2luLWRlZi5pbjogU2FtZSBmaXggYXMgcHJldmlvdXMuCgoyMDAwLTExLTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW46IEFkZAoKCSAgICBJTlNUQUxMX1BST0dSQU0gOj0gQElOU1RBTExfUFJPR1JBTUAKCSAgICBJTlNUQUxMX1NDUklQVCAgOj0gQElOU1RBTExfU0NSSVBUQAoKCXNvIHRoYXQgaW5zdGFsbGF0aW9uIG9mIGZyZWV0eXBlLWNvbmZpZyBkb2VzIG5vdCBmYWlsLgoKMjAwMC0xMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW4sIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjoKCU1vdmUgdGVzdCBkb3duIGZvciBlbXB0eSAtLWV4ZWMtcHJlZml4LgoJRml4IC0tdmVyc2lvbi4KCgkqIGJ1aWxkcy9jeWd3aW4vaW5zdGFsbC5taywgYnVpbGRzL3VuaXgvaW5zdGFsbC5tazogVXNlCgkkKElOU1RBTExfU0NSSVBUKSBmb3IgaW5zdGFsbGF0aW9uIG9mIGZyZWV0eXBlLWNvbmZpZy4KCgkqIGJ1aWxkcy9jeWd3aW4vaW5zdGFsbC5tazogRml4IGNsZWFuIHRhcmdldCBuYW1lcy4KCjIwMDAtMTEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09CgoKTG9jYWwgVmFyaWFibGVzOgp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCmNvZGluZzogbGF0aW4tMQpFbmQ6Cg==