<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>99269</bug_id>
          
          <creation_ts>2012-10-14 12:41:49 -0700</creation_ts>
          <short_desc>DFG should handle polymorphic array modes by eagerly transforming arrays into the most general applicable form</short_desc>
          <delta_ts>2012-10-14 20:18:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98606</blocked>
    
    <blocked>99260</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741583</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 12:41:49 -0700</bug_when>
    <thetext>If we see a use of both Contiguous and ArrayStorage, we should just convert to ArrayStorage instead of handling both.

Similarly, in the future when we have Int32 and Double arrays, and we see a use of both Int32 and Double, we should just convert to Double instead of handling both.

This should be a speed-up and a huge simplification, since the current &quot;polymorphic&quot; modes require a lot of code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741595</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 14:03:20 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 99260 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741635</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 16:57:19 -0700</bug_when>
    <thetext>On second thought, I&apos;m going to do this separately from https://bugs.webkit.org/show_bug.cgi?id=99260.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741640</commentid>
    <comment_count>3</comment_count>
      <attachid>168601</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 17:26:46 -0700</bug_when>
    <thetext>Created attachment 168601
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741647</commentid>
    <comment_count>4</comment_count>
      <attachid>168603</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 18:18:47 -0700</bug_when>
    <thetext>Created attachment 168603
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741666</commentid>
    <comment_count>5</comment_count>
      <attachid>168603</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-14 19:09:39 -0700</bug_when>
    <thetext>Comment on attachment 168603
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741695</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-14 20:18:52 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131289</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168601</attachid>
            <date>2012-10-14 17:26:46 -0700</date>
            <delta_ts>2012-10-14 18:18:47 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>tothings_1.patch</filename>
            <type>text/plain</type>
            <size>25536</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxMjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTEwLTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYW5kbGUgcG9seW1vcnBoaWMgYXJyYXkgbW9kZXMgYnkgZWFnZXJseSB0cmFu
c2Zvcm1pbmcgYXJyYXlzIGludG8gdGhlIG1vc3QgZ2VuZXJhbCBhcHBsaWNhYmxlIGZvcm0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV29yayBpbiBwcm9n
cmVzcy4gSXQgaXMgYWxtb3N0IGRvbmUsIHRob3VnaC4KKworICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpm
cm9tT2JzZXJ2ZWQpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVBbHJlYWR5Q2hlY2tlZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bW9kZVRvU3RyaW5nKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlN
b2RlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVVc2VzQnV0dGVy
Zmx5KToKKyAgICAgICAgKEpTQzo6REZHOjptb2RlSXNKU0FycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjptYXlTdG9yZVRvVGFpbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWF5U3RvcmVUb0hvbGUp
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNTRVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6
Om1vZGVTdXBwb3J0c0xlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6YmVuZWZpdHNGcm9tU3Ry
dWN0dXJlQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpGaXh1cFBoYXNlOjpibGVzc0FycmF5T3BlcmF0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YnlWYWxJc1B1cmUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpwdXRCeVZhbFdp
bGxOZWVkRXh0cmFSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAx
Mi0xMC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4
aW5nVHlwZSBzaG91bGQgbm90IGhhdmUgYSBiaXQgZm9yIGVhY2ggdHlwZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAx
MzEyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNyArODY4LDYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBjYXNlIE9VVF9PRl9CT1VORFNfQVJSQVlfU1RP
UkFHRV9NT0RFUzoKICAgICAgICAgY2FzZSBTTE9XX1BVVF9BUlJBWV9TVE9SQUdFX01PREVTOgog
ICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6Ci0gICAgICAgIGNhc2UgUE9MWU1PUlBI
SUNfTU9ERVM6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
Q2VsbCk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50
MzIpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJs
b2NrKTsKQEAgLTk0Myw3ICs5NDIsNiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJBWV9TVE9SQUdFX01PREVT
OgogICAgICAgICBjYXNlIFNMT1dfUFVUX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgICAgIGNh
c2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICAgICAgY2FzZSBQT0xZTU9SUEhJQ19NT0RFUzoK
ICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAgLTEzODQsNyArMTM4Miw2
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX01PREVTOgogICAgICAgICBjYXNl
IEFMTF9BUlJBWV9TVE9SQUdFX01PREVTOgotICAgICAgICBjYXNlIFBPTFlNT1JQSElDX01PREVT
OiAvLyBUaGVzZSBvbmx5IGdldCBhIENoZWNrQXJyYXkgZm9yIEdldEFycmF5TGVuZ3RoCiAgICAg
ICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZmlsdGVyIGFueXRoaW5nIG1lYW5pbmdmdWwgcmlnaHQg
bm93LiBXZSBtYXkgd2FudCB0byBhZGQKICAgICAgICAgICAgIC8vIENGQSB0cmFja2luZyBvZiBh
cnJheSBtb2RlIHNwZWN1bGF0aW9ucywgYnV0IHdlIGRvbid0IGhhdmUgdGhhdCwgeWV0LgogICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTMx
Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEFycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJh
eVByb2ZpbGUqIHAKICAgICAgICAgcmV0dXJuIEFycmF5OjpVbnByb2ZpbGVkOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzKE5vbkFycmF5KToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3Jp
dGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQotICAgICAgICAg
ICAgcmV0dXJuIEFycmF5OjpCbGFua1RvQ29udGlndW91c09yQXJyYXlTdG9yYWdlOyAvLyBGSVhN
RTogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIHRvIGdvIHRvIHNsb3cgcHV0IG1vZGUgb3Igbm90LiBX
ZSdyZSBndWVzc2luZyB0aGF0IHdlIGRvbid0IG5lZWQgc2xvdyBwdXQuCisgICAgICAgICAgICBy
ZXR1cm4gQXJyYXk6OlRvQ29udGlndW91czsgLy8gRklYTUU6IHdlIGRvbid0IGtub3cgd2hldGhl
ciB0byBnbyB0byBjb250aWd1b3VzIG9yIGFycmF5IHN0b3JhZ2UuIFdlJ3JlIG1ha2luZyBhIHN0
YXRpYyBndWVzcyBoZXJlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIHVzZSBleGl0IHByb2ZpbGluZyBm
b3IgdGhpcy4KICAgICAgICAgcmV0dXJuIEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0Fy
cmF5TW9kZXMoTm9uQXJyYXlXaXRoQ29udGlndW91cyk6CiAgICAgICAgIHJldHVybiBtYWtlU2Fm
ZSA/IEFycmF5OjpDb250aWd1b3VzT3V0T2ZCb3VuZHMgOiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUoKSA/IEFycmF5OjpDb250aWd1b3VzVG9UYWlsIDogQXJyYXk6OkNvbnRpZ3VvdXMpOwpAQCAt
NjMsMjcgKzYzLDI0IEBAIEFycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheVByb2ZpbGUqIHAK
ICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJh
eU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRo
U2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJheTo6UG9zc2libHlBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aENvbnRpZ3Vv
dXMpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJl
dHVybiBBcnJheTo6Q29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gQXJy
YXk6OlRvQXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5V2l0aENvbnRp
Z3VvdXMpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJl
dHVybiBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICBy
ZXR1cm4gQXJyYXk6OkFycmF5VG9BcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoQ29udGlndW91cykgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhDb250aWd1b3VzKSB8IGFzQXJyYXlNb2Rl
cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXk6OlBvc3NpYmx5
QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gQXJyYXk6
OlBvc3NpYmx5QXJyYXlUb0FycmF5U3RvcmFnZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25B
cnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQ29udGlndW91cyk6CiAgICAgICAgIGlm
IChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXM7
CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvQ29udGlndW91czsKICAgICAgICAgcmV0dXJu
IEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpIHwgYXNB
cnJheU1vZGVzKE5vbkFycmF5V2l0aENvbnRpZ3VvdXMpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5
V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYm
ICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKLSAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpIHwg
YXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0FycmF5U3RvcmFnZTsKKyAg
ICAgICAgICAgIHJldHVybiBBcnJheTo6VG9BcnJheVN0b3JhZ2U7CiAgICAgICAgIHJldHVybiBB
cnJheTo6VW5kZWNpZGVkOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5KSB8IGFzQXJy
YXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJy
YXlNb2RlcyhOb25BcnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICAg
ICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpCbGFua1RvU2xvd1B1
dEFycmF5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9TbG93UHV0QXJyYXlT
dG9yYWdlOwogICAgICAgICByZXR1cm4gQXJyYXk6OlVuZGVjaWRlZDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBpcyBwb3NzaWJseSBhIGtpbmQgb2YgYXJyYXkg
Zm9yIHdoaWNoLCB0aG91Z2ggdGhlcmUgaXMgbm8KQEAgLTIwNyw3ICsyMDQsNiBAQCBib29sIG1v
ZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgICAgICAgICAmJiAodmFsdWUu
bV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSXNB
cnJheSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICBjYXNl
IFBPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAg
IGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKQEAgLTMwNCwyMCArMzAwLDE2IEBAIGNvbnN0IGNoYXIq
IG1vZGVUb1N0cmluZyhBcnJheTo6TW9kZSBtb2QKICAgICAgICAgcmV0dXJuICJQb3NzaWJseUFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UiOwogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJy
YXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiUG9zc2libHlB
cnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyI7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtU
b0NvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb0NvbnRpZ3VvdXMiOwotICAgIGNh
c2UgQXJyYXk6OkJsYW5rVG9BcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb0Fy
cmF5U3RvcmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6
Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UiOwotICAgIGNhc2Ug
QXJyYXk6OkJsYW5rVG9Db250aWd1b3VzT3JBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiAi
QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6Q29udGln
dW91c09yQXJyYXlTdG9yYWdlOgotICAgICAgICByZXR1cm4gIkNvbnRpZ3VvdXNPckFycmF5U3Rv
cmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdl
OgotICAgICAgICByZXR1cm4gIkFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSI7Ci0g
ICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U6
Ci0gICAgICAgIHJldHVybiAiUG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3Jh
Z2UiOworICAgIGNhc2UgQXJyYXk6OlRvQ29udGlndW91czoKKyAgICAgICAgcmV0dXJuICJUb0Nv
bnRpZ3VvdXMiOworICAgIGNhc2UgQXJyYXk6OlRvQXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1
cm4gIlRvQXJyYXlTdG9yYWdlIjsKKyAgICBjYXNlIEFycmF5OjpUb1Nsb3dQdXRBcnJheVN0b3Jh
Z2U6CisgICAgICAgIHJldHVybiAiVG9TbG93UHV0QXJyYXlTdG9yYWdlIjsKKyAgICBjYXNlIEFy
cmF5OjpBcnJheVRvQXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1cm4gIkFycmF5VG9BcnJheVN0
b3JhZ2UiOworICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlUb0FycmF5U3RvcmFnZToKKyAg
ICAgICAgcmV0dXJuICJQb3NzaWJseUFycmF5VG9BcnJheVN0b3JhZ2UiOwogICAgIGNhc2UgQXJy
YXk6OkFyZ3VtZW50czoKICAgICAgICAgcmV0dXJuICJBcmd1bWVudHMiOwogICAgIGNhc2UgQXJy
YXk6OkludDhBcnJheToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAkocmV2aXNpb24gMTMxMjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTYgKzc3LDExIEBAIGVudW0gTW9kZSB7
CiAgICAgUG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcywKICAgICAKICAg
ICAvLyBNb2RlcyBvZiBjb252ZW50aW9uYWwgaW5kZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVj
ayBpcyBzaWRlLWVmZmVjdGluZy4KLSAgICBCbGFua1RvQ29udGlndW91cywKLSAgICBCbGFua1Rv
QXJyYXlTdG9yYWdlLAotICAgIEJsYW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlLAotICAgIEJsYW5r
VG9Db250aWd1b3VzT3JBcnJheVN0b3JhZ2UsCi0gICAgCi0gICAgLy8gTW9kZXMgdGhhdCBpbmRp
Y2F0ZSBwb2x5bW9ycGhpYyBhcnJheSBzdG9yYWdlLiBUaGVzZSBkb24ndCBiZW5lZml0IGZyb20K
LSAgICAvLyBhbnkgY2hlY2tpbmcgb3Igc3RvcmFnZSBDU0UuCi0gICAgQ29udGlndW91c09yQXJy
YXlTdG9yYWdlLAotICAgIEFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSwKLSAgICBQ
b3NzaWJseUFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSwKKyAgICBUb0NvbnRpZ3Vv
dXMsCisgICAgVG9BcnJheVN0b3JhZ2UsCisgICAgQXJyYXlUb0FycmF5U3RvcmFnZSwKKyAgICBQ
b3NzaWJseUFycmF5VG9BcnJheVN0b3JhZ2UsCisgICAgVG9TbG93UHV0QXJyYXlTdG9yYWdlLAog
ICAgIAogICAgIEFyZ3VtZW50cywKICAgICBJbnQ4QXJyYXksCkBAIC0xNjcsMzAgKzE2MiwyNSBA
QCBlbnVtIE1vZGUgewogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9y
YWdlT3V0T2ZCb3VuZHMKIAogLy8gTmV4dDogaGVscGVycyBmb3Igc2lkZS1lZmZlY3RpbmcgY2hl
Y2tzLgorI2RlZmluZSBOT05fQVJSQVlfRUZGRUNURlVMX01PREVTICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgQXJyYXk6OlRvQ29udGlndW91czogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFycmF5OjpUb0FycmF5U3RvcmFnZTogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGNhc2UgQXJyYXk6OlRvU2xvd1B1dEFycmF5U3RvcmFn
ZTogICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVRv
QXJyYXlTdG9yYWdlCisjZGVmaW5lIEFSUkFZX0VGRkVDVEZVTF9NT0RFUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBBcnJheTo6QXJyYXlUb0FycmF5U3RvcmFnZQogI2RlZmlu
ZSBBTExfRUZGRUNURlVMX0NPTlRJR1VPVVNfTU9ERVMgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgQXJyYXk6OkJsYW5rVG9Db250aWd1b3VzCi0jZGVmaW5lIEVGRkVDVEZVTF9OT05fQVJSQVlf
QVJSQVlfU1RPUkFHRV9NT0RFUyAgICAgICAgICAgIFwKLSAgICBBcnJheTo6QmxhbmtUb0FycmF5
U3RvcmFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNhc2UgQXJyYXk6OkJs
YW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlCisgICAgQXJyYXk6OlRvQ29udGlndW91cwogI2RlZmlu
ZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVMgICAgICAgICAgICAgICAgICBcCi0g
ICAgRUZGRUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTCisgICAgQXJyYXk6OlRv
QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNl
IEFycmF5OjpUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGNhc2UgQXJyYXk6OkFycmF5VG9BcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVRvQXJyYXlTdG9yYWdlCiAjZGVmaW5lIFNM
T1dfUFVUX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgIFwKLSAgICBB
cnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UKLSNkZWZpbmUgUE9MWU1PUlBISUNfRUZG
RUNURlVMX01PREVTICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFycmF5OjpCbGFua1Rv
Q29udGlndW91c09yQXJyYXlTdG9yYWdlCisgICAgQXJyYXk6OlRvU2xvd1B1dEFycmF5U3RvcmFn
ZQogI2RlZmluZSBBTExfRUZGRUNURlVMX01PREVTICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgQUxMX0VGRkVDVEZVTF9DT05USUdVT1VTX01PREVTOiAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzog
ICAgICAgICAgICAgICAgXAotICAgIGNhc2UgUE9MWU1PUlBISUNfRUZGRUNURlVMX01PREVTCi0K
LS8vIEZpbmFsbHk6IGhlbHBlcnMgZm9yIHBvbHltb3JwaGljIGFycmF5IGFjY2Vzc2VzLgotI2Rl
ZmluZSBQT0xZTU9SUEhJQ19NT0RFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgQXJyYXk6OkNvbnRpZ3VvdXNPckFycmF5U3RvcmFnZTogICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U6
ICAgICAgICAgXAotICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQ29udGlndW91c09y
QXJyYXlTdG9yYWdlCi0jZGVmaW5lIEFMTF9QT0xZTU9SUEhJQ19NT0RFUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBQT0xZTU9SUEhJQ19FRkZFQ1RGVUxfTU9ERVM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNhc2UgUE9MWU1PUlBISUNfTU9ERVMKKyAgICBj
YXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUwogCiBBcnJheTo6TW9kZSBmcm9t
T2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CiAK
QEAgLTIwNiw3ICsxOTYsNiBAQCBpbmxpbmUgYm9vbCBtb2RlVXNlc0J1dHRlcmZseShBcnJheTo6
TW9kCiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19NT0RFUzoKICAgICBjYXNlIEFMTF9BUlJBWV9T
VE9SQUdFX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICBjYXNlIFBP
TFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTgsNyArMjA3LDcgQEAgaW5saW5lIGJvb2wgbW9kZUlz
SlNBcnJheShBcnJheTo6TW9kZSBhcgogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2Fz
ZSBBUlJBWV9XSVRIX0NPTlRJR1VPVVNfTU9ERVM6CiAgICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZ
X1NUT1JBR0VfTU9ERVM6Ci0gICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJy
YXlTdG9yYWdlOgorICAgIGNhc2UgQVJSQVlfRUZGRUNURlVMX01PREVTOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTUsNyAr
MjQ0LDYgQEAgaW5saW5lIGJvb2wgbWF5U3RvcmVUb1RhaWwoQXJyYXk6Ok1vZGUgYQogICAgIGNh
c2UgQ09OVElHVU9VU19UT19UQUlMX01PREVTOgogICAgIGNhc2UgT1VUX09GX0JPVU5EU19DT05U
SUdVT1VTX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9DT05USUdVT1VTX01PREVTOgot
ICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjksMzUgKzI1NywxMiBAQCBp
bmxpbmUgYm9vbCBtYXlTdG9yZVRvSG9sZShBcnJheTo6TW9kZSBhCiAgICAgY2FzZSBPVVRfT0Zf
Qk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgY2FzZSBTTE9XX1BVVF9BUlJBWV9TVE9S
QUdFX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgot
ICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1pbmxpbmUgYm9v
bCBtb2RlSXNQb2x5bW9ycGhpYyhBcnJheTo6TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9k
ZSkgewotICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxp
bmUgYm9vbCBwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91cyhBcnJheTo6TW9kZSBhcnJheU1v
ZGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChhcnJheU1vZGUsIG1vZGVJc1BvbHltb3JwaGljKGFy
cmF5TW9kZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2x5bW9ycGhp
Y0luY2x1ZGVzQXJyYXlTdG9yYWdlKEFycmF5OjpNb2RlIGFycmF5TW9kZSkKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGFycmF5TW9kZSwgbW9kZUlzUG9seW1vcnBoaWMoYXJyYXlNb2RlKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIGlubGluZSBib29sIGNhbkNTRVN0b3JhZ2UoQXJyYXk6Ok1vZGUg
YXJyYXlNb2RlKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CkBAIC0zMDYsNyArMjcxLDYg
QEAgaW5saW5lIGJvb2wgY2FuQ1NFU3RvcmFnZShBcnJheTo6TW9kZSBhcgogICAgIGNhc2UgQXJy
YXk6OkZvcmNlRXhpdDoKICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgogICAgIGNhc2UgQXJyYXk6
OkFyZ3VtZW50czoKLSAgICBjYXNlIEFMTF9QT0xZTU9SUEhJQ19NT0RFUzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzU0LDkg
KzMxOCw3IEBAIGlubGluZSBib29sIG1vZGVTdXBwb3J0c0xlbmd0aChBcnJheTo6TW8KICAgICBj
YXNlIEFycmF5OjpHZW5lcmljOgogICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VPVVNfTU9ERVM6
CiAgICAgY2FzZSBOT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzoKLSAgICBjYXNlIEFMTF9F
RkZFQ1RGVUxfTU9ERVM6Ci0gICAgY2FzZSBBcnJheTo6Q29udGlndW91c09yQXJyYXlTdG9yYWdl
OgotICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9y
YWdlOgorICAgIGNhc2UgTk9OX0FSUkFZX0VGRkVDVEZVTF9NT0RFUzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzY3LDcgKzMy
OSw2IEBAIGlubGluZSBib29sIGJlbmVmaXRzRnJvbVN0cnVjdHVyZUNoZWNrKEEKIHsKICAgICBz
d2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6Ci0gICAgY2FzZSBQ
T0xZTU9SUEhJQ19NT0RFUzoKICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CiAgICAgY2FzZSBB
cnJheTo6VW5wcm9maWxlZDoKICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDEzMTI3
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6Ci0gICAgICAgIGNh
c2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgCiAgICAgICAgIGRlZmF1bHQ6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgJKHJldmlzaW9uIDEzMTI3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDg0LDcgKzQ4NCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBPVVRfT0ZfQk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgICAgIGNhc2Ug
U0xPV19QVVRfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgY2FzZSBBTExfRUZGRUNURlVM
X01PREVTOgotICAgICAgICBjYXNlIFBPTFlNT1JQSElDX01PREVTOgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICByZXR1
cm4gbm9kZS5vcCgpID09IEdldEJ5VmFsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMzEyNzYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzg4LDU1ICsyNzg4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
QUxMX1BPTFlNT1JQSElDX01PREVTOiB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBH
UFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7Ci0gICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VSZWcgPSBzdG9yYWdlLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFJlZyA9IHJl
c3VsdC5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBk
b25lQ2FzZXM7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxsVGhyb3VnaDsK
LSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0Ojpi
dXR0ZXJmbHlPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwotICAgICAgICAgICAgbV9qaXQubG9hZDgo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0UmVnLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlw
ZU9mZnNldCgpKSwgcmVzdWx0UmVnKTsKLSAgICAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzayksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICBpZiAocG9s
eW1vcnBoaWNJbmNsdWRlc0NvbnRpZ3VvdXMobm9kZS5hcnJheU1vZGUoKSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoZmFsbFRocm91Z2guaXNTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBk
b25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZhbGxU
aHJvdWdoLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJl
c3VsdFJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsK
LSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBpbGVDb250aWd1b3VzR2V0QnlW
YWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0b3JhZ2VSZWcsIHJlc3VsdFJlZykpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNBcnJheVN0
b3JhZ2Uobm9kZS5hcnJheU1vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmFsbFRocm91
Z2guaXNTZXQoKSkgewotICAgICAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmxpbmsoJm1faml0KTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmFsbFRocm91Z2ggPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHJlc3VsdFJlZywgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihBcnJheVN0b3JhZ2VTaGFwZSkpOwotICAgICAgICAgICAgICAgIHNs
b3dDYXNlcy5hcHBlbmQoY29tcGlsZUFycmF5U3RvcmFnZUdldEJ5VmFsKG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCBzdG9yYWdlUmVnLCByZXN1bHRSZWcpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIEFTU0VSVChmYWxsVGhyb3VnaC5pc1NldCgpKTsKLSAgICAgICAgICAgIGRvbmVD
YXNlcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGZhbGxUaHJv
dWdoKTsKLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbEFycmF5SW50LAotICAgICAgICAgICAgICAgICAgICByZXN1bHQuZ3ByKCks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAzMCw2
NCArMjk4MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBB
TExfUE9MWU1PUlBISUNfTU9ERVM6IHsKLSAgICAgICAgICAgIEFTU0VSVChub2RlLm9wKCkgPT0g
UHV0QnlWYWwpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBjaGlsZDMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJSZWcgdmFsdWVS
ZWcgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcG9yYXJ5KHRoaXMpOwotICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdl
LmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHRlbXBvcmFyeVJlZyA9IHRlbXBvcmFyeS5ncHIo
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNs
b3dDYXNlczsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBkb25lQ2FzZXM7
Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxsVGhyb3VnaDsKLSAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxs
OjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHRlbXBvcmFyeVJlZyk7Ci0gICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwotICAgICAgICAgICAgbV9qaXQubG9hZDgoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcG9yYXJ5UmVnLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9m
ZnNldCgpKSwgdGVtcG9yYXJ5UmVnKTsKLSAgICAgICAgICAgIG1faml0LmFuZDMyKFRydXN0ZWRJ
bW0zMihJbmRleGluZ1NoYXBlTWFzayksIHRlbXBvcmFyeVJlZyk7Ci0gICAgICAgICAgICBpZiAo
cG9seW1vcnBoaWNJbmNsdWRlc0NvbnRpZ3VvdXMobm9kZS5hcnJheU1vZGUoKSkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZmFsbFRocm91Z2guaXNTZXQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXBvcmFyeVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hh
cGUpKTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBpbGVDb250aWd1b3Vz
UHV0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0b3JhZ2VSZWcsIHZhbHVlUmVn
LCB0ZW1wb3JhcnlSZWcpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwb2x5bW9y
cGhpY0luY2x1ZGVzQXJyYXlTdG9yYWdlKG5vZGUuYXJyYXlNb2RlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9u
ZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgICAgICAgICBmYWxsVGhy
b3VnaC5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1w
b3JhcnlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUp
KTsKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBpbGVBcnJheVN0b3JhZ2VQ
dXRCeVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc3RvcmFnZVJlZywgdmFsdWVSZWcs
IHRlbXBvcmFyeVJlZykpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKGZhbGxU
aHJvdWdoLmlzU2V0KCkpOwotICAgICAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZmFsbFRocm91Z2gpOwotCi0gICAgICAgICAgICBi
YXNlLnVzZSgpOwotICAgICAgICAgICAgcHJvcGVydHkudXNlKCk7Ci0gICAgICAgICAgICB2YWx1
ZS51c2UoKTsKLQotICAgICAgICAgICAgLy8gRklYTUU6IHRoZSBkZWNpc2lvbiBvZiB3aGV0aGVy
IG9yIG5vdCB3ZSdyZSBpbiBzdHJpY3QgbW9kZSBzaG91bGQgYmUgbWFkZQotICAgICAgICAgICAg
Ly8gYmFzZWQgb24gdGhlIGlubGluZSBjYWxsIGZyYW1lLCBub3QgdGhlIG1hY2hpbmUgY29kZSBi
bG9jay4KLSAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLAotICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkgPyBvcGVy
YXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCwKLSAgICAgICAgICAgICAgICAgICAgTm9SZXN1bHQs
IGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBBcnJheTo6QXJndW1lbnRzOiB7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBjaGlsZDMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gMTMxMjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSwxNyArMzc5LDYgQEAgSklU
Q29tcGlsZXI6Okp1bXBMaXN0IFNwZWN1bGF0aXZlSklUOjpqdQogICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW0zMihTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUgLSBBcnJheVN0b3JhZ2VTaGFwZSkp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgUE9MWU1PUlBISUNfTU9ERVM6IHsK
LSAgICAgICAgaWYgKG1vZGVJc0pTQXJyYXkoYXJyYXlNb2RlKSkgewotICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpaZXJvLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIo
SXNBcnJheSkpKTsKLSAgICAgICAgfQotICAgICAgICByZXN1bHQuYXBwZW5kKAotICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICBi
cmVhazsKQEAgLTQyMSw4ICs0MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5
KE5vZGUmIG5vCiAgICAgY2FzZSBOT05fQVJSQVlfQ09OVElHVU9VU19NT0RFUzoKICAgICBjYXNl
IEFSUkFZX1dJVEhfQ09OVElHVU9VU19NT0RFUzoKICAgICBjYXNlIE5PTl9BUlJBWV9BUlJBWV9T
VE9SQUdFX01PREVTOgotICAgIGNhc2UgQVJSQVlfV0lUSF9BUlJBWV9TVE9SQUdFX01PREVTOgot
ICAgIGNhc2UgUE9MWU1PUlBISUNfTU9ERVM6IHsKKyAgICBjYXNlIEFSUkFZX1dJVEhfQVJSQVlf
U1RPUkFHRV9NT0RFUzogewogICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKApA
QCAtNDgwLDE3ICs0NjgsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSYg
bm9kZQogICAgIEFycmF5OjpNb2RlIGRlc2lyZWRBcnJheU1vZGU7CiAgICAgCiAgICAgc3dpdGNo
IChub2RlLmFycmF5TW9kZSgpKSB7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXM6
CisgICAgY2FzZSBBcnJheTo6VG9Db250aWd1b3VzOgogICAgICAgICBkZXNpcmVkQXJyYXlNb2Rl
ID0gQXJyYXk6OkNvbnRpZ3VvdXM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQXJyYXk6OkJs
YW5rVG9BcnJheVN0b3JhZ2U6CisgICAgY2FzZSBBcnJheTo6VG9BcnJheVN0b3JhZ2U6CiAgICAg
ICAgIGRlc2lyZWRBcnJheU1vZGUgPSBBcnJheTo6QXJyYXlTdG9yYWdlOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIEFycmF5OjpCbGFua1RvU2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICBjYXNl
IEFycmF5OjpUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6CiAgICAgICAgIGRlc2lyZWRBcnJheU1vZGUg
PSBBcnJheTo6U2xvd1B1dEFycmF5U3RvcmFnZTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBB
cnJheTo6QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZToKLSAgICAgICAgZGVzaXJlZEFy
cmF5TW9kZSA9IEFycmF5OjpDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U7CisgICAgY2FzZSBBcnJh
eTo6QXJyYXlUb0FycmF5U3RvcmFnZToKKyAgICAgICAgZGVzaXJlZEFycmF5TW9kZSA9IEFycmF5
OjpBcnJheVdpdGhBcnJheVN0b3JhZ2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXJyYXk6
OlBvc3NpYmx5QXJyYXlUb0FycmF5U3RvcmFnZToKKyAgICAgICAgZGVzaXJlZEFycmF5TW9kZSA9
IEFycmF5OjpQb3NzaWJseUFycmF5V2l0aEFycmF5U3RvcmFnZTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgQ1JBU0goKTsKQEAgLTUyMiw3ICs1MTMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgCiAgICAgLy8gSWYgd2UncmUg
YWxsZWdlZGx5IGNyZWF0aW5nIGNvbnRpZ3VvdXMgc3RvcmFnZSBhbmQgdGhlIGluZGV4IGlzIGJv
Z3VzLCB0aGVuCiAgICAgLy8ganVzdCBkb24ndC4KLSAgICBpZiAobm9kZS5hcnJheU1vZGUoKSA9
PSBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXMpIHsKKyAgICBpZiAobm9kZS5hcnJheU1vZGUoKSA9
PSBBcnJheTo6VG9Db250aWd1b3VzKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAg
ICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAogICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoCkBAIC01NDEsMTYgKzUzMiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgLy8gTm93IGNhbGwgb3V0IHRvIGNyZWF0ZSB0aGUg
YXJyYXkgc3RvcmFnZS4KICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyh0ZW1wR1BSKTsKICAg
ICBzd2l0Y2ggKG5vZGUuYXJyYXlNb2RlKCkpIHsKLSAgICBjYXNlIEFycmF5OjpCbGFua1RvQ29u
dGlndW91czoKKyAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQ09OVElHVU9VU19NT0RFUzoKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzLCB0ZW1wR1BSLCBiYXNl
UmVnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtUb0FycmF5U3RvcmFn
ZToKLSAgICBjYXNlIEFycmF5OjpCbGFua1RvU2xvd1B1dEFycmF5U3RvcmFnZToKKyAgICBjYXNl
IEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UsIHRlbXBHUFIsIGJhc2VSZWcpOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIEFycmF5OjpCbGFua1RvQ29udGlndW91c09yQXJyYXlTdG9yYWdl
OgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXNPckFycmF5
U3RvcmFnZSwgdGVtcEdQUiwgYmFzZVJlZywgcHJvcGVydHlSZWcpOwotICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwogICAgICAgICBicmVhazsKQEAgLTU3Miw3
ICs1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAg
c3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwKICAgICAgICAganVtcFNsb3dGb3JVbndhbnRlZEFycmF5TW9kZShzdHJ1Y3R1cmVHUFIs
IGRlc2lyZWRBcnJheU1vZGUpKTsKLSAgICAgICAgCisgICAgCiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiAgICAgc3RvcmFnZVJlc3VsdCh0ZW1wR1BSLCBtX2NvbXBpbGVJbmRleCk7CiB9CkBAIC0z
MzM2LDcgKzMzMjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5n
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEFSUkFZX1dJVEhfQVJSQVlfU1RPUkFH
RV9NT0RFUzoKLSAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3Jh
Z2U6IHsKKyAgICBjYXNlIEFSUkFZX0VGRkVDVEZVTF9NT0RFUzogewogICAgICAgICBTdG9yYWdl
T3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIHN0b3JhZ2UpOwogICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0
b3JhZ2UuZ3ByKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMzEyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMTUsMTAgKzIyMTUs
NiBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9DT05USUdVT1VTX01PREVT
OgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAKLSAgICAgICAgLy8gQWxs
IHBvbHltb3JwaGljIG1vZGVzIG5lZWQgYW4gZXh0cmEgcmVnLgotICAgICAgICBjYXNlIEFMTF9Q
T0xZTU9SUEhJQ19NT0RFUzoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168603</attachid>
            <date>2012-10-14 18:18:47 -0700</date>
            <delta_ts>2012-10-14 19:09:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>tothings_2.patch</filename>
            <type>text/plain</type>
            <size>35395</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxMjgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTEwLTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYW5kbGUgcG9seW1vcnBoaWMgYXJyYXkgbW9kZXMgYnkgZWFnZXJseSB0cmFu
c2Zvcm1pbmcgYXJyYXlzIGludG8gdGhlIG1vc3QgZ2VuZXJhbCBhcHBsaWNhYmxlIGZvcm0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MjY5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBraWxscyBv
ZmYgYSBidW5jaCBvZiBjb2RlIGZvciAicG9seW1vcnBoaWMiIGFycmF5IG1vZGVzIGluIHRoZSBE
RkcuIEl0IHNob3VsZAorICAgICAgICBhbHNvIGJlIGEgcGVyZm9ybWFuY2Ugd2luIGZvciBjb2Rl
IHRoYXQgdXNlcyBhIGxvdCBvZiBhcnJheSBzdG9yYWdlIGFycmF5cy4KKworICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpmcm9tT2JzZXJ2ZWQpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVBbHJlYWR5Q2hl
Y2tlZCk6CisgICAgICAgIChKU0M6OkRGRzo6bW9kZVRvU3RyaW5nKToKKyAgICAgICAgKiBkZmcv
REZHQXJyYXlNb2RlLmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6Om1vZGVV
c2VzQnV0dGVyZmx5KToKKyAgICAgICAgKEpTQzo6REZHOjptb2RlSXNKU0FycmF5KToKKyAgICAg
ICAgKEpTQzo6REZHOjptYXlTdG9yZVRvVGFpbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWF5U3Rv
cmVUb0hvbGUpOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNTRVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpERkc6Om1vZGVTdXBwb3J0c0xlbmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6YmVuZWZp
dHNGcm9tU3RydWN0dXJlQ2hlY2spOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpibGVzc0FycmF5T3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YnlWYWxJc1B1cmUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6Omp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkpOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6cHV0QnlWYWxXaWxsTmVlZEV4dHJhUmVnaXN0ZXIpOgorICAgICAgICAoU3BlY3VsYXRpdmVK
SVQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKwogMjAxMi0xMC0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIEluZGV4aW5nVHlwZSBzaG91bGQgbm90IGhhdmUgYSBiaXQgZm9yIGVhY2ggdHlw
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCShyZXZpc2lvbiAxMzEyNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjgsNyArODY4LDYgQEAgYm9vbCBB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBjYXNlIE9VVF9PRl9C
T1VORFNfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgY2FzZSBTTE9XX1BVVF9BUlJBWV9T
VE9SQUdFX01PREVTOgogICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6Ci0gICAgICAg
IGNhc2UgUE9MWU1PUlBISUNfTU9ERVM6CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihTcGVjQ2VsbCk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkp
LmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9y
aWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAgLTk0Myw3ICs5NDIsNiBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGNhc2UgT1VUX09GX0JPVU5EU19BUlJB
WV9TVE9SQUdFX01PREVTOgogICAgICAgICBjYXNlIFNMT1dfUFVUX0FSUkFZX1NUT1JBR0VfTU9E
RVM6CiAgICAgICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICAgICAgY2FzZSBQT0xZ
TU9SUEhJQ19NT0RFUzoKICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY0Nl
bGwpOwogICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOwogICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKQEAg
LTEzODQsNyArMTM4Miw2IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFMTF9DT05USUdVT1VTX01PREVT
OgogICAgICAgICBjYXNlIEFMTF9BUlJBWV9TVE9SQUdFX01PREVTOgotICAgICAgICBjYXNlIFBP
TFlNT1JQSElDX01PREVTOiAvLyBUaGVzZSBvbmx5IGdldCBhIENoZWNrQXJyYXkgZm9yIEdldEFy
cmF5TGVuZ3RoCiAgICAgICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZmlsdGVyIGFueXRoaW5nIG1l
YW5pbmdmdWwgcmlnaHQgbm93LiBXZSBtYXkgd2FudCB0byBhZGQKICAgICAgICAgICAgIC8vIENG
QSB0cmFja2luZyBvZiBhcnJheSBtb2RlIHNwZWN1bGF0aW9ucywgYnV0IHdlIGRvbid0IGhhdmUg
dGhhdCwgeWV0LgogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y0NlbGwpOwpAQCAtMTQzMCw3ICsxNDI3LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KHVuc2lnbmVkIGluZAogICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6CiAgICAgICAg
ICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjQ2VsbCk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQyKCkpCisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsK
ICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAgICAgY2xv
YmJlclN0cnVjdHVyZXMoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTMx
Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIEFycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJh
eVByb2ZpbGUqIHAKICAgICAgICAgcmV0dXJuIEFycmF5OjpVbnByb2ZpbGVkOwogICAgIGNhc2Ug
YXNBcnJheU1vZGVzKE5vbkFycmF5KToKICAgICAgICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3Jp
dGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpKQotICAgICAgICAg
ICAgcmV0dXJuIEFycmF5OjpCbGFua1RvQ29udGlndW91c09yQXJyYXlTdG9yYWdlOyAvLyBGSVhN
RTogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIHRvIGdvIHRvIHNsb3cgcHV0IG1vZGUgb3Igbm90LiBX
ZSdyZSBndWVzc2luZyB0aGF0IHdlIGRvbid0IG5lZWQgc2xvdyBwdXQuCisgICAgICAgICAgICBy
ZXR1cm4gQXJyYXk6OlRvQ29udGlndW91czsgLy8gRklYTUU6IHdlIGRvbid0IGtub3cgd2hldGhl
ciB0byBnbyB0byBjb250aWd1b3VzIG9yIGFycmF5IHN0b3JhZ2UuIFdlJ3JlIG1ha2luZyBhIHN0
YXRpYyBndWVzcyBoZXJlLiBJbiBmdXR1cmUgd2Ugc2hvdWxkIHVzZSBleGl0IHByb2ZpbGluZyBm
b3IgdGhpcy4KICAgICAgICAgcmV0dXJuIEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0Fy
cmF5TW9kZXMoTm9uQXJyYXlXaXRoQ29udGlndW91cyk6CiAgICAgICAgIHJldHVybiBtYWtlU2Fm
ZSA/IEFycmF5OjpDb250aWd1b3VzT3V0T2ZCb3VuZHMgOiAocHJvZmlsZS0+bWF5U3RvcmVUb0hv
bGUoKSA/IEFycmF5OjpDb250aWd1b3VzVG9UYWlsIDogQXJyYXk6OkNvbnRpZ3VvdXMpOwpAQCAt
NjMsMjcgKzYzLDI0IEBAIEFycmF5OjpNb2RlIGZyb21PYnNlcnZlZChBcnJheVByb2ZpbGUqIHAK
ICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpIHwgYXNBcnJh
eU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRo
U2xvd1B1dEFycmF5U3RvcmFnZSkgfCBhc0FycmF5TW9kZXMoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSk6CiAgICAgICAgIHJldHVybiBBcnJheTo6UG9zc2libHlBcnJheVdpdGhTbG93UHV0
QXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aENvbnRpZ3Vv
dXMpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJl
dHVybiBBcnJheTo6Q29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gQXJy
YXk6OlRvQXJyYXlTdG9yYWdlOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKEFycmF5V2l0aENvbnRp
Z3VvdXMpIHwgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIHJl
dHVybiBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICBy
ZXR1cm4gQXJyYXk6OkFycmF5VG9BcnJheVN0b3JhZ2U7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMo
Tm9uQXJyYXlXaXRoQ29udGlndW91cykgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlT
dG9yYWdlKSB8IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhDb250aWd1b3VzKSB8IGFzQXJyYXlNb2Rl
cyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpOgotICAgICAgICByZXR1cm4gQXJyYXk6OlBvc3NpYmx5
QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdlOworICAgICAgICByZXR1cm4gQXJyYXk6
OlBvc3NpYmx5QXJyYXlUb0FycmF5U3RvcmFnZTsKICAgICBjYXNlIGFzQXJyYXlNb2RlcyhOb25B
cnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQ29udGlndW91cyk6CiAgICAgICAgIGlm
IChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVk
QWNjZXNzZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXM7
CisgICAgICAgICAgICByZXR1cm4gQXJyYXk6OlRvQ29udGlndW91czsKICAgICAgICAgcmV0dXJu
IEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpIHwgYXNB
cnJheU1vZGVzKE5vbkFycmF5V2l0aENvbnRpZ3VvdXMpIHwgYXNBcnJheU1vZGVzKE5vbkFycmF5
V2l0aEFycmF5U3RvcmFnZSk6Ci0gICAgICAgIGlmIChhY3Rpb24gPT0gQXJyYXk6OldyaXRlICYm
ICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSkKLSAgICAgICAgICAgIHJl
dHVybiBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZTsKLSAgICAgICAgcmV0
dXJuIEFycmF5OjpVbmRlY2lkZWQ7CiAgICAgY2FzZSBhc0FycmF5TW9kZXMoTm9uQXJyYXkpIHwg
YXNBcnJheU1vZGVzKE5vbkFycmF5V2l0aEFycmF5U3RvcmFnZSk6CiAgICAgICAgIGlmIChhY3Rp
b24gPT0gQXJyYXk6OldyaXRlICYmICFwcm9maWxlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNz
ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiBBcnJheTo6QmxhbmtUb0FycmF5U3RvcmFnZTsKKyAg
ICAgICAgICAgIHJldHVybiBBcnJheTo6VG9BcnJheVN0b3JhZ2U7CiAgICAgICAgIHJldHVybiBB
cnJheTo6VW5kZWNpZGVkOwogICAgIGNhc2UgYXNBcnJheU1vZGVzKE5vbkFycmF5KSB8IGFzQXJy
YXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICBjYXNlIGFzQXJy
YXlNb2RlcyhOb25BcnJheSkgfCBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSB8IGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKToKICAgICAg
ICAgaWYgKGFjdGlvbiA9PSBBcnJheTo6V3JpdGUgJiYgIXByb2ZpbGUtPm1heUludGVyY2VwdElu
ZGV4ZWRBY2Nlc3NlcygpKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5OjpCbGFua1RvU2xvd1B1
dEFycmF5U3RvcmFnZTsKKyAgICAgICAgICAgIHJldHVybiBBcnJheTo6VG9TbG93UHV0QXJyYXlT
dG9yYWdlOwogICAgICAgICByZXR1cm4gQXJyYXk6OlVuZGVjaWRlZDsKICAgICBkZWZhdWx0Ogog
ICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBpcyBwb3NzaWJseSBhIGtpbmQgb2YgYXJyYXkg
Zm9yIHdoaWNoLCB0aG91Z2ggdGhlcmUgaXMgbm8KQEAgLTIwNyw3ICsyMDQsNiBAQCBib29sIG1v
ZGVBbHJlYWR5Q2hlY2tlZChBYnN0cmFjdFZhbHVlJiB2CiAgICAgICAgICAgICAmJiAodmFsdWUu
bV9jdXJyZW50S25vd25TdHJ1Y3R1cmUuc2luZ2xldG9uKCktPmluZGV4aW5nVHlwZSgpICYgSXNB
cnJheSk7CiAgICAgICAgIAogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICBjYXNl
IFBPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAg
IGNhc2UgQXJyYXk6OkFyZ3VtZW50czoKQEAgLTMwNCwyMCArMzAwLDE2IEBAIGNvbnN0IGNoYXIq
IG1vZGVUb1N0cmluZyhBcnJheTo6TW9kZSBtb2QKICAgICAgICAgcmV0dXJuICJQb3NzaWJseUFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UiOwogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJy
YXlXaXRoQXJyYXlTdG9yYWdlT3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiUG9zc2libHlB
cnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcyI7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtU
b0NvbnRpZ3VvdXM6Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb0NvbnRpZ3VvdXMiOwotICAgIGNh
c2UgQXJyYXk6OkJsYW5rVG9BcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb0Fy
cmF5U3RvcmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6
Ci0gICAgICAgIHJldHVybiAiQmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UiOwotICAgIGNhc2Ug
QXJyYXk6OkJsYW5rVG9Db250aWd1b3VzT3JBcnJheVN0b3JhZ2U6Ci0gICAgICAgIHJldHVybiAi
QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6Q29udGln
dW91c09yQXJyYXlTdG9yYWdlOgotICAgICAgICByZXR1cm4gIkNvbnRpZ3VvdXNPckFycmF5U3Rv
cmFnZSI7Ci0gICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdl
OgotICAgICAgICByZXR1cm4gIkFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSI7Ci0g
ICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U6
Ci0gICAgICAgIHJldHVybiAiUG9zc2libHlBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3Jh
Z2UiOworICAgIGNhc2UgQXJyYXk6OlRvQ29udGlndW91czoKKyAgICAgICAgcmV0dXJuICJUb0Nv
bnRpZ3VvdXMiOworICAgIGNhc2UgQXJyYXk6OlRvQXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1
cm4gIlRvQXJyYXlTdG9yYWdlIjsKKyAgICBjYXNlIEFycmF5OjpUb1Nsb3dQdXRBcnJheVN0b3Jh
Z2U6CisgICAgICAgIHJldHVybiAiVG9TbG93UHV0QXJyYXlTdG9yYWdlIjsKKyAgICBjYXNlIEFy
cmF5OjpBcnJheVRvQXJyYXlTdG9yYWdlOgorICAgICAgICByZXR1cm4gIkFycmF5VG9BcnJheVN0
b3JhZ2UiOworICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlUb0FycmF5U3RvcmFnZToKKyAg
ICAgICAgcmV0dXJuICJQb3NzaWJseUFycmF5VG9BcnJheVN0b3JhZ2UiOwogICAgIGNhc2UgQXJy
YXk6OkFyZ3VtZW50czoKICAgICAgICAgcmV0dXJuICJBcmd1bWVudHMiOwogICAgIGNhc2UgQXJy
YXk6OkludDhBcnJheToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAkocmV2aXNpb24gMTMxMjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTYgKzc3LDExIEBAIGVudW0gTW9kZSB7
CiAgICAgUG9zc2libHlBcnJheVdpdGhBcnJheVN0b3JhZ2VPdXRPZkJvdW5kcywKICAgICAKICAg
ICAvLyBNb2RlcyBvZiBjb252ZW50aW9uYWwgaW5kZXhlZCBzdG9yYWdlIHdoZXJlIHRoZSBjaGVj
ayBpcyBzaWRlLWVmZmVjdGluZy4KLSAgICBCbGFua1RvQ29udGlndW91cywKLSAgICBCbGFua1Rv
QXJyYXlTdG9yYWdlLAotICAgIEJsYW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlLAotICAgIEJsYW5r
VG9Db250aWd1b3VzT3JBcnJheVN0b3JhZ2UsCi0gICAgCi0gICAgLy8gTW9kZXMgdGhhdCBpbmRp
Y2F0ZSBwb2x5bW9ycGhpYyBhcnJheSBzdG9yYWdlLiBUaGVzZSBkb24ndCBiZW5lZml0IGZyb20K
LSAgICAvLyBhbnkgY2hlY2tpbmcgb3Igc3RvcmFnZSBDU0UuCi0gICAgQ29udGlndW91c09yQXJy
YXlTdG9yYWdlLAotICAgIEFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSwKLSAgICBQ
b3NzaWJseUFycmF5V2l0aENvbnRpZ3VvdXNPckFycmF5U3RvcmFnZSwKKyAgICBUb0NvbnRpZ3Vv
dXMsCisgICAgVG9BcnJheVN0b3JhZ2UsCisgICAgQXJyYXlUb0FycmF5U3RvcmFnZSwKKyAgICBQ
b3NzaWJseUFycmF5VG9BcnJheVN0b3JhZ2UsCisgICAgVG9TbG93UHV0QXJyYXlTdG9yYWdlLAog
ICAgIAogICAgIEFyZ3VtZW50cywKICAgICBJbnQ4QXJyYXksCkBAIC0xNjcsMzAgKzE2MiwyNSBA
QCBlbnVtIE1vZGUgewogICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9y
YWdlT3V0T2ZCb3VuZHMKIAogLy8gTmV4dDogaGVscGVycyBmb3Igc2lkZS1lZmZlY3RpbmcgY2hl
Y2tzLgorI2RlZmluZSBOT05fQVJSQVlfRUZGRUNURlVMX01PREVTICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgQXJyYXk6OlRvQ29udGlndW91czogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBjYXNlIEFycmF5OjpUb0FycmF5U3RvcmFnZTogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGNhc2UgQXJyYXk6OlRvU2xvd1B1dEFycmF5U3RvcmFn
ZTogICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVRv
QXJyYXlTdG9yYWdlCisjZGVmaW5lIEFSUkFZX0VGRkVDVEZVTF9NT0RFUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBBcnJheTo6QXJyYXlUb0FycmF5U3RvcmFnZQogI2RlZmlu
ZSBBTExfRUZGRUNURlVMX0NPTlRJR1VPVVNfTU9ERVMgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgQXJyYXk6OkJsYW5rVG9Db250aWd1b3VzCi0jZGVmaW5lIEVGRkVDVEZVTF9OT05fQVJSQVlf
QVJSQVlfU1RPUkFHRV9NT0RFUyAgICAgICAgICAgIFwKLSAgICBBcnJheTo6QmxhbmtUb0FycmF5
U3RvcmFnZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNhc2UgQXJyYXk6OkJs
YW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlCisgICAgQXJyYXk6OlRvQ29udGlndW91cwogI2RlZmlu
ZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JBR0VfTU9ERVMgICAgICAgICAgICAgICAgICBcCi0g
ICAgRUZGRUNURlVMX05PTl9BUlJBWV9BUlJBWV9TVE9SQUdFX01PREVTCisgICAgQXJyYXk6OlRv
QXJyYXlTdG9yYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjYXNl
IEFycmF5OjpUb1Nsb3dQdXRBcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGNhc2UgQXJyYXk6OkFycmF5VG9BcnJheVN0b3JhZ2U6ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgY2FzZSBBcnJheTo6UG9zc2libHlBcnJheVRvQXJyYXlTdG9yYWdlCiAjZGVmaW5lIFNM
T1dfUFVUX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTICAgICAgICAgICAgIFwKLSAgICBB
cnJheTo6QmxhbmtUb1Nsb3dQdXRBcnJheVN0b3JhZ2UKLSNkZWZpbmUgUE9MWU1PUlBISUNfRUZG
RUNURlVMX01PREVTICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEFycmF5OjpCbGFua1Rv
Q29udGlndW91c09yQXJyYXlTdG9yYWdlCisgICAgQXJyYXk6OlRvU2xvd1B1dEFycmF5U3RvcmFn
ZQogI2RlZmluZSBBTExfRUZGRUNURlVMX01PREVTICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgQUxMX0VGRkVDVEZVTF9DT05USUdVT1VTX01PREVTOiAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUzog
ICAgICAgICAgICAgICAgXAotICAgIGNhc2UgUE9MWU1PUlBISUNfRUZGRUNURlVMX01PREVTCi0K
LS8vIEZpbmFsbHk6IGhlbHBlcnMgZm9yIHBvbHltb3JwaGljIGFycmF5IGFjY2Vzc2VzLgotI2Rl
ZmluZSBQT0xZTU9SUEhJQ19NT0RFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgQXJyYXk6OkNvbnRpZ3VvdXNPckFycmF5U3RvcmFnZTogICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBjYXNlIEFycmF5OjpBcnJheVdpdGhDb250aWd1b3VzT3JBcnJheVN0b3JhZ2U6
ICAgICAgICAgXAotICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQ29udGlndW91c09y
QXJyYXlTdG9yYWdlCi0jZGVmaW5lIEFMTF9QT0xZTU9SUEhJQ19NT0RFUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBQT0xZTU9SUEhJQ19FRkZFQ1RGVUxfTU9ERVM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNhc2UgUE9MWU1PUlBISUNfTU9ERVMKKyAgICBj
YXNlIEFMTF9FRkZFQ1RGVUxfQVJSQVlfU1RPUkFHRV9NT0RFUwogCiBBcnJheTo6TW9kZSBmcm9t
T2JzZXJ2ZWQoQXJyYXlQcm9maWxlKiwgQXJyYXk6OkFjdGlvbiwgYm9vbCBtYWtlU2FmZSk7CiAK
QEAgLTIwNiw3ICsxOTYsNiBAQCBpbmxpbmUgYm9vbCBtb2RlVXNlc0J1dHRlcmZseShBcnJheTo6
TW9kCiAgICAgY2FzZSBBTExfQ09OVElHVU9VU19NT0RFUzoKICAgICBjYXNlIEFMTF9BUlJBWV9T
VE9SQUdFX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9NT0RFUzoKLSAgICBjYXNlIFBP
TFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTgsNyArMjA3LDcgQEAgaW5saW5lIGJvb2wgbW9kZUlz
SlNBcnJheShBcnJheTo6TW9kZSBhcgogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CiAgICAgY2Fz
ZSBBUlJBWV9XSVRIX0NPTlRJR1VPVVNfTU9ERVM6CiAgICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZ
X1NUT1JBR0VfTU9ERVM6Ci0gICAgY2FzZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJy
YXlTdG9yYWdlOgorICAgIGNhc2UgQVJSQVlfRUZGRUNURlVMX01PREVTOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTUsNyAr
MjQ0LDYgQEAgaW5saW5lIGJvb2wgbWF5U3RvcmVUb1RhaWwoQXJyYXk6Ok1vZGUgYQogICAgIGNh
c2UgQ09OVElHVU9VU19UT19UQUlMX01PREVTOgogICAgIGNhc2UgT1VUX09GX0JPVU5EU19DT05U
SUdVT1VTX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9DT05USUdVT1VTX01PREVTOgot
ICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjksMzUgKzI1NywxMiBAQCBp
bmxpbmUgYm9vbCBtYXlTdG9yZVRvSG9sZShBcnJheTo6TW9kZSBhCiAgICAgY2FzZSBPVVRfT0Zf
Qk9VTkRTX0FSUkFZX1NUT1JBR0VfTU9ERVM6CiAgICAgY2FzZSBTTE9XX1BVVF9BUlJBWV9TVE9S
QUdFX01PREVTOgogICAgIGNhc2UgQUxMX0VGRkVDVEZVTF9BUlJBWV9TVE9SQUdFX01PREVTOgot
ICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCi1pbmxpbmUgYm9v
bCBtb2RlSXNQb2x5bW9ycGhpYyhBcnJheTo6TW9kZSBtb2RlKQotewotICAgIHN3aXRjaCAobW9k
ZSkgewotICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbmxp
bmUgYm9vbCBwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91cyhBcnJheTo6TW9kZSBhcnJheU1v
ZGUpCi17Ci0gICAgQVNTRVJUX1VOVVNFRChhcnJheU1vZGUsIG1vZGVJc1BvbHltb3JwaGljKGFy
cmF5TW9kZSkpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgYm9vbCBwb2x5bW9ycGhp
Y0luY2x1ZGVzQXJyYXlTdG9yYWdlKEFycmF5OjpNb2RlIGFycmF5TW9kZSkKLXsKLSAgICBBU1NF
UlRfVU5VU0VEKGFycmF5TW9kZSwgbW9kZUlzUG9seW1vcnBoaWMoYXJyYXlNb2RlKSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIGlubGluZSBib29sIGNhbkNTRVN0b3JhZ2UoQXJyYXk6Ok1vZGUg
YXJyYXlNb2RlKQogewogICAgIHN3aXRjaCAoYXJyYXlNb2RlKSB7CkBAIC0zMDYsNyArMjcxLDYg
QEAgaW5saW5lIGJvb2wgY2FuQ1NFU3RvcmFnZShBcnJheTo6TW9kZSBhcgogICAgIGNhc2UgQXJy
YXk6OkZvcmNlRXhpdDoKICAgICBjYXNlIEFycmF5OjpHZW5lcmljOgogICAgIGNhc2UgQXJyYXk6
OkFyZ3VtZW50czoKLSAgICBjYXNlIEFMTF9QT0xZTU9SUEhJQ19NT0RFUzoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzU0LDkg
KzMxOCw3IEBAIGlubGluZSBib29sIG1vZGVTdXBwb3J0c0xlbmd0aChBcnJheTo6TW8KICAgICBj
YXNlIEFycmF5OjpHZW5lcmljOgogICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VPVVNfTU9ERVM6
CiAgICAgY2FzZSBOT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzoKLSAgICBjYXNlIEFMTF9F
RkZFQ1RGVUxfTU9ERVM6Ci0gICAgY2FzZSBBcnJheTo6Q29udGlndW91c09yQXJyYXlTdG9yYWdl
OgotICAgIGNhc2UgQXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9y
YWdlOgorICAgIGNhc2UgTk9OX0FSUkFZX0VGRkVDVEZVTF9NT0RFUzoKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzY3LDcgKzMy
OSw2IEBAIGlubGluZSBib29sIGJlbmVmaXRzRnJvbVN0cnVjdHVyZUNoZWNrKEEKIHsKICAgICBz
d2l0Y2ggKG1vZGUpIHsKICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6Ci0gICAgY2FzZSBQ
T0xZTU9SUEhJQ19NT0RFUzoKICAgICBjYXNlIEFycmF5OjpVbmRlY2lkZWQ6CiAgICAgY2FzZSBB
cnJheTo6VW5wcm9maWxlZDoKICAgICBjYXNlIEFycmF5OjpGb3JjZUV4aXQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDEzMTI3
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4Miw4ICszODIsOCBAQCBwcml2YXRlOgogICAgICAgICBtX2dyYXBoLnJl
ZihhcnJheSk7CiAKICAgICAgICAgaWYgKGlzRWZmZWN0ZnVsKGFycmF5TW9kZSkpIHsKLSAgICAg
ICAgICAgIEFTU0VSVChpbmRleCAhPSBOb05vZGUpOwotICAgICAgICAgICAgbV9ncmFwaC5yZWYo
aW5kZXgpOworICAgICAgICAgICAgaWYgKGluZGV4ICE9IE5vTm9kZSkKKyAgICAgICAgICAgICAg
ICBtX2dyYXBoLnJlZihpbmRleCk7CiAgICAgICAgICAgICBOb2RlIGFycmF5aWZ5KEFycmF5aWZ5
LCBjb2RlT3JpZ2luLCBPcEluZm8oYXJyYXlNb2RlKSwgYXJyYXksIGluZGV4KTsKICAgICAgICAg
ICAgIGFycmF5aWZ5LnJlZigpOyAvLyBPbmNlIGJlY2F1c2UgaXQncyB1c2VkIGFzIGEgYnV0dGVy
Zmx5LgogICAgICAgICAgICAgYXJyYXlpZnkucmVmKCk7IC8vIEFuZCB0d2ljZSBiZWNhdXNlIGl0
J3MgbXVzdC1nZW5lcmF0ZS4KQEAgLTM5MSwxMSArMzkxLDEyIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBtX2dyYXBoLmFwcGVuZChhcnJheWlmeSk7CiAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5hcHBlbmQobV9pbmRleEluQmxvY2ssIGFycmF5aWZ5SW5kZXgpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBBU1NFUlQoc3RvcmFnZUNoZWNrID09IGNhbkNTRVN0b3JhZ2UpOwogICAgICAg
ICAgICAgQVNTRVJUKHNob3VsZEdlbmVyYXRlKTsKICAgICAgICAgICAgIEFTU0VSVChjYW5DU0VT
dG9yYWdlKGFycmF5TW9kZSkpOwogICAgICAgICAgICAgQVNTRVJUKG1vZGVVc2VzQnV0dGVyZmx5
KGFycmF5TW9kZSkpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGlmICghc3RvcmFnZUNo
ZWNrKGFycmF5TW9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAg
ICAgIHJldHVybiBhcnJheWlmeUluZGV4OwogICAgICAgICB9CiAgICAgICAgIApAQCAtNDQwLDcg
KzQ0MSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKLSAgICAgICAgY2FzZSBBTExfUE9MWU1PUlBISUNf
TU9ERVM6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVs
dDogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTMx
Mjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00ODQsNyArNDg0LDYgQEAgcHVibGljOgogICAgICAgICBjYXNlIE9VVF9PRl9CT1VO
RFNfQVJSQVlfU1RPUkFHRV9NT0RFUzoKICAgICAgICAgY2FzZSBTTE9XX1BVVF9BUlJBWV9TVE9S
QUdFX01PREVTOgogICAgICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfTU9ERVM6Ci0gICAgICAgIGNh
c2UgUE9MWU1PUlBISUNfTU9ERVM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAgICAgICAgIHJldHVybiBub2RlLm9wKCkgPT0gR2V0
QnlWYWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEzMTI3NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNzgyLDU3ICsy
NzgyLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdSZWcsIHJlc3VsdFBheWxvYWRSZWcsIG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
QUxMX1BPTFlNT1JQSElDX01PREVTOiB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0
SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBH
UFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7Ci0gICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOwotICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7Ci0gICAgICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9
IHN0b3JhZ2UuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnUmVnID0gcmVzdWx0
VGFnLmdwcigpOwotICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRSZWcgPSByZXN1bHRQ
YXlsb2FkLmdwcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGRvbmVDYXNlczsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhbGxUaHJvdWdo
OwotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgcmVzdWx0VGFnUmVnKTsKLSAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNPYmpl
Y3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7Ci0gICAgICAgICAgICBtX2ppdC5s
b2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRUYWdSZWcsIFN0cnVjdHVyZTo6aW5k
ZXhpbmdUeXBlT2Zmc2V0KCkpLCByZXN1bHRUYWdSZWcpOwotICAgICAgICAgICAgbV9qaXQuYW5k
MzIoVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hhcGVNYXNrKSwgcmVzdWx0VGFnUmVnKTsKLSAgICAg
ICAgICAgIGlmIChwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91cyhub2RlLmFycmF5TW9kZSgp
KSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5pc1NldCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgcmVzdWx0VGFnUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKENv
bnRpZ3VvdXNTaGFwZSkpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29tcGls
ZUNvbnRpZ3VvdXNHZXRCeVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc3RvcmFnZVJl
ZywgcmVzdWx0VGFnUmVnLCByZXN1bHRQYXlsb2FkUmVnKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAocG9seW1vcnBoaWNJbmNsdWRlc0FycmF5U3RvcmFnZShub2RlLmFycmF5TW9k
ZSgpKSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5pc1NldCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgcmVzdWx0VGFnUmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KEFycmF5U3RvcmFnZVNoYXBlKSk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChj
b21waWxlQXJyYXlTdG9yYWdlR2V0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0
b3JhZ2VSZWcsIHJlc3VsdFRhZ1JlZywgcmVzdWx0UGF5bG9hZFJlZykpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgQVNTRVJUKGZhbGxUaHJvdWdoLmlzU2V0KCkpOwotICAgICAgICAgICAg
ZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZmFs
bFRocm91Z2gpOwotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQsCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ1JlZywgcmVzdWx0UGF5bG9hZFJlZyksIGJhc2VSZWcsIHByb3BlcnR5UmVn
KSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnUmVn
LCByZXN1bHRQYXlsb2FkUmVnLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQogICAgICAgICBjYXNlIEFycmF5OjpTdHJpbmc6CiAgICAgICAgICAgICBjb21w
aWxlR2V0QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAyMiw2
NCArMjk3MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBB
TExfUE9MWU1PUlBISUNfTU9ERVM6IHsKLSAgICAgICAgICAgIEFTU0VSVChub2RlLm9wKCkgPT0g
UHV0QnlWYWwpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBjaGlsZDMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBHUFJSZWcgdmFsdWVU
YWdSZWcgPSB2YWx1ZS50YWdHUFIoKTsKLSAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRS
ZWcgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICgh
bV9jb21waWxlT2theSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwotICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGRvbmVDYXNlczsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGZhbGxUaHJvdWdoOwotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgc3RvcmFnZVJl
Zyk7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7Ci0g
ICAgICAgICAgICBtX2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCBz
dG9yYWdlUmVnKTsKLSAgICAgICAgICAgIGlmIChwb2x5bW9ycGhpY0luY2x1ZGVzQ29udGlndW91
cyhub2RlLmFycmF5TW9kZSgpKSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5p
c1NldCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVt
cCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgc3RvcmFnZVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihDb250aWd1b3VzU2hhcGUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJm
bHlPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoY29tcGlsZUNvbnRpZ3VvdXNQdXRCeVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywg
c3RvcmFnZVJlZywgdmFsdWVUYWdSZWcsIHZhbHVlUGF5bG9hZFJlZykpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNBcnJheVN0b3JhZ2Uobm9kZS5h
cnJheU1vZGUoKSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmFsbFRocm91Z2guaXNTZXQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZmFsbFRocm91Z2ggPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHN0b3JhZ2VSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHN0b3JhZ2VSZWcpOwotICAgICAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoY29t
cGlsZUFycmF5U3RvcmFnZVB1dEJ5VmFsKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzdG9y
YWdlUmVnLCB2YWx1ZVRhZ1JlZywgdmFsdWVQYXlsb2FkUmVnKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlQoZmFsbFRocm91Z2guaXNTZXQoKSk7Ci0gICAgICAgICAgICBkb25l
Q2FzZXMubGluaygmbV9qaXQpOwotICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChmYWxsVGhy
b3VnaCk7Ci0KLSAgICAgICAgICAgIGJhc2UudXNlKCk7Ci0gICAgICAgICAgICBwcm9wZXJ0eS51
c2UoKTsKLSAgICAgICAgICAgIHZhbHVlLnVzZSgpOwotCi0gICAgICAgICAgICAvLyBGSVhNRTog
dGhlIGRlY2lzaW9uIG9mIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGluIHN0cmljdCBtb2RlIHNob3Vs
ZCBiZSBtYWRlCi0gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgaW5saW5lIGNhbGwgZnJhbWUs
IG5vdCB0aGUgbWFjaGluZSBjb2RlIGJsb2NrLgotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSA/IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0LAotICAgICAg
ICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlVGFnUmVn
LCB2YWx1ZVBheWxvYWRSZWcpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbm9SZXN1bHQo
bV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkFy
Z3VtZW50czoKICAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBhdCBzb21lIHBvaW50IG1h
a2UgdGhpcyB3b3JrLiBSaWdodCBub3cgd2UncmUgYXNzdW1pbmcgdGhhdCB0aGUgcmVnaXN0ZXIK
ICAgICAgICAgICAgIC8vIHByZXNzdXJlIHdvdWxkIGJlIHRvbyBncmVhdC4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMTMxMjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4OCw1NSArMjc4OCw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIEFMTF9QT0xZTU9SUEhJQ19NT0RFUzogewotICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxk
MigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdw
cigpOwotICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7Ci0g
ICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9y
YWdlKHRoaXMpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAg
ICAgICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKLSAgICAgICAgICAgIEdQ
UlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgZmFsbFRocm91Z2g7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCByZXN1bHRS
ZWcpOwotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKLSAgICAg
ICAgICAgIG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdFJlZywgU3Ry
dWN0dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHJlc3VsdFJlZyk7Ci0gICAgICAgICAgICBt
X2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCByZXN1bHRSZWcpOwot
ICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNDb250aWd1b3VzKG5vZGUuYXJyYXlN
b2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0KCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAg
ICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
Q29udGlndW91c1NoYXBlKSk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChjb21w
aWxlQ29udGlndW91c0dldEJ5VmFsKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBzdG9yYWdl
UmVnLCByZXN1bHRSZWcpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwb2x5bW9y
cGhpY0luY2x1ZGVzQXJyYXlTdG9yYWdlKG5vZGUuYXJyYXlNb2RlKCkpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZG9u
ZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAgICAgICAgICAgICAgICAgICBmYWxsVGhy
b3VnaC5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZh
bGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1
bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoQXJyYXlTdG9yYWdlU2hhcGUpKTsK
LSAgICAgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGNvbXBpbGVBcnJheVN0b3JhZ2VHZXRC
eVZhbChub2RlLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgc3RvcmFnZVJlZywgcmVzdWx0UmVnKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoZmFsbFRocm91Z2guaXNTZXQoKSk7
Ci0gICAgICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwotICAgICAgICAgICAgc2xvd0Nh
c2VzLmFwcGVuZChmYWxsVGhyb3VnaCk7Ci0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxBcnJheUludCwKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LmdwcigpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZywgbV9jb21waWxlSW5kZXgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBBcnJheTo6U3RyaW5n
OgogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTMwMzAsNjQgKzI5ODEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgQUxMX1BPTFlNT1JQSElDX01PREVTOiB7Ci0gICAgICAgICAgICBB
U1NFUlQobm9kZS5vcCgpID09IFB1dEJ5VmFsKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgR1BSUmVnIHZhbHVlUmVnID0gdmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwotICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRlbXBvcmFyeSh0aGlzKTsKLSAgICAgICAgICAgIEdQUlJlZyBz
dG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyB0ZW1wb3JhcnlS
ZWcgPSB0ZW1wb3JhcnkuZ3ByKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QgZG9uZUNhc2VzOwotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFs
bFRocm91Z2g7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCB0ZW1wb3JhcnlSZWcpOwot
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKLSAgICAgICAgICAg
IG1faml0LmxvYWQ4KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXBvcmFyeVJlZywgU3RydWN0
dXJlOjppbmRleGluZ1R5cGVPZmZzZXQoKSksIHRlbXBvcmFyeVJlZyk7Ci0gICAgICAgICAgICBt
X2ppdC5hbmQzMihUcnVzdGVkSW1tMzIoSW5kZXhpbmdTaGFwZU1hc2spLCB0ZW1wb3JhcnlSZWcp
OwotICAgICAgICAgICAgaWYgKHBvbHltb3JwaGljSW5jbHVkZXNDb250aWd1b3VzKG5vZGUuYXJy
YXlNb2RlKCkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZhbGxUaHJvdWdoLmlzU2V0KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwotICAg
ICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wb3JhcnlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIoQ29udGlndW91c1NoYXBlKSk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKG5vZGUsIGJhc2VSZWcsIHByb3BlcnR5UmVnLCBz
dG9yYWdlUmVnLCB2YWx1ZVJlZywgdGVtcG9yYXJ5UmVnKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAocG9seW1vcnBoaWNJbmNsdWRlc0FycmF5U3RvcmFnZShub2RlLmFycmF5TW9k
ZSgpKSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxsVGhyb3VnaC5pc1NldCgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgZmFsbFRocm91Z2gubGluaygmbV9qaXQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgdGVtcG9yYXJ5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KEFycmF5U3RvcmFnZVNoYXBlKSk7Ci0gICAgICAgICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChj
b21waWxlQXJyYXlTdG9yYWdlUHV0QnlWYWwobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHN0
b3JhZ2VSZWcsIHZhbHVlUmVnLCB0ZW1wb3JhcnlSZWcpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIEFTU0VSVChmYWxsVGhyb3VnaC5pc1NldCgpKTsKLSAgICAgICAgICAgIGRvbmVDYXNl
cy5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGZhbGxUaHJvdWdo
KTsKLQotICAgICAgICAgICAgYmFzZS51c2UoKTsKLSAgICAgICAgICAgIHByb3BlcnR5LnVzZSgp
OwotICAgICAgICAgICAgdmFsdWUudXNlKCk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiB0aGUg
ZGVjaXNpb24gb2Ygd2hldGhlciBvciBub3Qgd2UncmUgaW4gc3RyaWN0IG1vZGUgc2hvdWxkIGJl
IG1hZGUKLSAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBpbmxpbmUgY2FsbCBmcmFtZSwgbm90
IHRoZSBtYWNoaW5lIGNvZGUgYmxvY2suCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QsCi0gICAgICAgICAg
ICAgICAgICAgIE5vUmVzdWx0LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJyYXk6OkFyZ3VtZW50czogewogICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEzMTI3NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzksMTcgKzM3OSw2IEBAIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBTcGVjdWxhdGl2ZUpJVDo6anUK
ICAgICAgICAgICAgICAgICBUcnVzdGVkSW1tMzIoU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlIC0g
QXJyYXlTdG9yYWdlU2hhcGUpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIFBP
TFlNT1JQSElDX01PREVTOiB7Ci0gICAgICAgIGlmIChtb2RlSXNKU0FycmF5KGFycmF5TW9kZSkp
IHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDMyKAotICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVt
cEdQUiwgVHJ1c3RlZEltbTMyKElzQXJyYXkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0
LmFwcGVuZCgKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6WmVybywgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEluZGV4aW5nU2hh
cGVNYXNrKSkpOwotICAgICAgICBicmVhazsKLSAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAg
Q1JBU0goKTsKICAgICAgICAgYnJlYWs7CkBAIC00MjEsOCArNDEwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2hlY2tBcnJheShOb2RlJiBubwogICAgIGNhc2UgTk9OX0FSUkFZX0NPTlRJR1VP
VVNfTU9ERVM6CiAgICAgY2FzZSBBUlJBWV9XSVRIX0NPTlRJR1VPVVNfTU9ERVM6CiAgICAgY2Fz
ZSBOT05fQVJSQVlfQVJSQVlfU1RPUkFHRV9NT0RFUzoKLSAgICBjYXNlIEFSUkFZX1dJVEhfQVJS
QVlfU1RPUkFHRV9NT0RFUzoKLSAgICBjYXNlIFBPTFlNT1JQSElDX01PREVTOiB7CisgICAgY2Fz
ZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JBR0VfTU9ERVM6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cigKQEAgLTQ2NywzMCArNDU1LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJyYXkoTm9kZSYgbm8KICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlLCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHBy
b3BlcnR5UmVnKQogewotICAgIEFTU0VSVChtb2RlSXNTcGVjaWZpYyhub2RlLmFycmF5TW9kZSgp
KSk7Ci0gICAgQVNTRVJUKCFtb2RlQWxyZWFkeUNoZWNrZWQobV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLCBub2RlLmFycmF5TW9kZSgpKSk7Ci0gICAgCi0gICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVJbnRlZ2VyT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICBHUFJSZWcgYmFzZVJlZyA9
IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7Ci0g
ICAgCiAgICAgQXJyYXk6Ok1vZGUgZGVzaXJlZEFycmF5TW9kZTsKICAgICAKICAgICBzd2l0Y2gg
KG5vZGUuYXJyYXlNb2RlKCkpIHsKLSAgICBjYXNlIEFycmF5OjpCbGFua1RvQ29udGlndW91czoK
KyAgICBjYXNlIEFycmF5OjpUb0NvbnRpZ3VvdXM6CiAgICAgICAgIGRlc2lyZWRBcnJheU1vZGUg
PSBBcnJheTo6Q29udGlndW91czsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6Qmxh
bmtUb0FycmF5U3RvcmFnZToKKyAgICBjYXNlIEFycmF5OjpUb0FycmF5U3RvcmFnZToKICAgICAg
ICAgZGVzaXJlZEFycmF5TW9kZSA9IEFycmF5OjpBcnJheVN0b3JhZ2U7CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQXJyYXk6OkJsYW5rVG9TbG93UHV0QXJyYXlTdG9yYWdlOgorICAgIGNhc2Ug
QXJyYXk6OlRvU2xvd1B1dEFycmF5U3RvcmFnZToKICAgICAgICAgZGVzaXJlZEFycmF5TW9kZSA9
IEFycmF5OjpTbG93UHV0QXJyYXlTdG9yYWdlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEFy
cmF5OjpCbGFua1RvQ29udGlndW91c09yQXJyYXlTdG9yYWdlOgotICAgICAgICBkZXNpcmVkQXJy
YXlNb2RlID0gQXJyYXk6OkNvbnRpZ3VvdXNPckFycmF5U3RvcmFnZTsKKyAgICBjYXNlIEFycmF5
OjpBcnJheVRvQXJyYXlTdG9yYWdlOgorICAgICAgICBkZXNpcmVkQXJyYXlNb2RlID0gQXJyYXk6
OkFycmF5V2l0aEFycmF5U3RvcmFnZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBcnJheTo6
UG9zc2libHlBcnJheVRvQXJyYXlTdG9yYWdlOgorICAgICAgICBkZXNpcmVkQXJyYXlNb2RlID0g
QXJyYXk6OlBvc3NpYmx5QXJyYXlXaXRoQXJyYXlTdG9yYWdlOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBDUkFTSCgpOwpAQCAtNTIyLDcgKzUwNSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmFycmF5aWZ5KE5vZGUmIG5vZGUKICAgICAKICAgICAvLyBJZiB3ZSdyZSBh
bGxlZ2VkbHkgY3JlYXRpbmcgY29udGlndW91cyBzdG9yYWdlIGFuZCB0aGUgaW5kZXggaXMgYm9n
dXMsIHRoZW4KICAgICAvLyBqdXN0IGRvbid0LgotICAgIGlmIChub2RlLmFycmF5TW9kZSgpID09
IEFycmF5OjpCbGFua1RvQ29udGlndW91cykgeworICAgIGlmIChub2RlLmFycmF5TW9kZSgpID09
IEFycmF5OjpUb0NvbnRpZ3VvdXMgJiYgcHJvcGVydHlSZWcgIT0gSW52YWxpZEdQUlJlZykgewog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtNTQxLDE2
ICs1MjQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6YXJyYXlpZnkoTm9kZSYgbm9kZQogICAg
IC8vIE5vdyBjYWxsIG91dCB0byBjcmVhdGUgdGhlIGFycmF5IHN0b3JhZ2UuCiAgICAgc2lsZW50
U3BpbGxBbGxSZWdpc3RlcnModGVtcEdQUik7CiAgICAgc3dpdGNoIChub2RlLmFycmF5TW9kZSgp
KSB7Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtUb0NvbnRpZ3VvdXM6CisgICAgY2FzZSBBTExfRUZG
RUNURlVMX0NPTlRJR1VPVVNfTU9ERVM6CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RW5zdXJlQ29udGlndW91cywgdGVtcEdQUiwgYmFzZVJlZyk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQXJyYXk6OkJsYW5rVG9BcnJheVN0b3JhZ2U6Ci0gICAgY2FzZSBBcnJheTo6QmxhbmtU
b1Nsb3dQdXRBcnJheVN0b3JhZ2U6CisgICAgY2FzZSBBTExfRUZGRUNURlVMX0FSUkFZX1NUT1JB
R0VfTU9ERVM6CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW5zdXJlQXJyYXlTdG9y
YWdlLCB0ZW1wR1BSLCBiYXNlUmVnKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBcnJheTo6
QmxhbmtUb0NvbnRpZ3VvdXNPckFycmF5U3RvcmFnZToKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25FbnN1cmVDb250aWd1b3VzT3JBcnJheVN0b3JhZ2UsIHRlbXBHUFIsIGJhc2VSZWcs
IHByb3BlcnR5UmVnKTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQ1JB
U0goKTsKICAgICAgICAgYnJlYWs7CkBAIC01NzIsMTEgKzU1MSwyOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjphcnJheWlmeShOb2RlJiBub2RlCiAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAg
ICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKICAgICAgICAganVtcFNsb3dG
b3JVbndhbnRlZEFycmF5TW9kZShzdHJ1Y3R1cmVHUFIsIGRlc2lyZWRBcnJheU1vZGUpKTsKLSAg
ICAgICAgCisgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgc3RvcmFnZVJlc3VsdCh0
ZW1wR1BSLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmFycmF5
aWZ5KE5vZGUmIG5vZGUpCit7CisgICAgQVNTRVJUKG1vZGVJc1NwZWNpZmljKG5vZGUuYXJyYXlN
b2RlKCkpKTsKKyAgICBBU1NFUlQoIW1vZGVBbHJlYWR5Q2hlY2tlZChtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSksIG5vZGUuYXJyYXlNb2RlKCkpKTsKKyAgICAKKyAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIAorICAgIGlmICghbm9k
ZS5jaGlsZDIoKSkgeworICAgICAgICBhcnJheWlmeShub2RlLCBiYXNlLmdwcigpLCBJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBTcGVjdWxhdGVJbnRl
Z2VyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAKKyAgICBhcnJh
eWlmeShub2RlLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSk7Cit9CisKIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFN0b3JhZ2UoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKICAgICBOb2Rl
JiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdOwpAQCAtMzMzNiw3ICszMzMyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEFycmF5TGVuZwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBBUlJBWV9XSVRIX0FSUkFZX1NUT1JBR0VfTU9ERVM6Ci0gICAgY2Fz
ZSBBcnJheTo6QXJyYXlXaXRoQ29udGlndW91c09yQXJyYXlTdG9yYWdlOiB7CisgICAgY2FzZSBB
UlJBWV9FRkZFQ1RGVUxfTU9ERVM6IHsKICAgICAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0
aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBz
dG9yYWdlKTsKICAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMTMxMjc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjE1LDEwICsyMjE1LDYgQEAgcHVibGljOgogICAg
ICAgICBjYXNlIEFMTF9FRkZFQ1RGVUxfQ09OVElHVU9VU19NT0RFUzoKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgCi0gICAgICAgIC8vIEFsbCBwb2x5bW9ycGhpYyBtb2Rl
cyBuZWVkIGFuIGV4dHJhIHJlZy4KLSAgICAgICAgY2FzZSBBTExfUE9MWU1PUlBISUNfTU9ERVM6
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yMzczLDYgKzIzNjks
NyBAQCBwdWJsaWM6CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGp1bXBTbG93Rm9y
VW53YW50ZWRBcnJheU1vZGUoR1BSUmVnIHRlbXBXaXRoSW5kZXhpbmdUeXBlUmVnLCBBcnJheTo6
TW9kZSBhcnJheU1vZGUpOwogICAgIHZvaWQgY2hlY2tBcnJheShOb2RlJik7CisgICAgdm9pZCBh
cnJheWlmeShOb2RlJiwgR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJlZyk7CiAgICAg
dm9pZCBhcnJheWlmeShOb2RlJik7CiAgICAgCiAgICAgdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+Cg==
</data>
<flag name="review"
          id="181628"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>