<?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>154908</bug_id>
          
          <creation_ts>2016-03-01 21:58:08 -0800</creation_ts>
          <short_desc>Make HTML parser construct custom elements</short_desc>
          <delta_ts>2018-07-04 01:43:27 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>154907</blocked>
    
    <blocked>187317</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169734</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 21:58:08 -0800</bug_when>
    <thetext>HTML parser should be able to instantiate custom elements.

&lt;rdar://problem/24923735&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169741</commentid>
    <comment_count>1</comment_count>
      <attachid>272633</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 22:21:18 -0800</bug_when>
    <thetext>Created attachment 272633
Adds the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169744</commentid>
    <comment_count>2</comment_count>
      <attachid>272634</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 22:33:05 -0800</bug_when>
    <thetext>Created attachment 272634
GTK build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169748</commentid>
    <comment_count>3</comment_count>
      <attachid>272635</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-01 22:47:45 -0800</bug_when>
    <thetext>Created attachment 272635
GTK build fix 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169807</commentid>
    <comment_count>4</comment_count>
      <attachid>272635</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-02 04:35:30 -0800</bug_when>
    <thetext>Comment on attachment 272635
GTK build fix 2

View in context: https://bugs.webkit.org/attachment.cgi?id=272635&amp;action=review

r=me

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:666
&gt; +    const AtomicString&amp; localName = token-&gt;name();

auto&amp;

&gt; Source/WebCore/html/parser/HTMLConstructionSite.cpp:678
&gt; +        if (customElementInterface &amp;&amp; UNLIKELY(definitions)) {

Some of these UNLIKELYs seem questionable. I could imagine content where custom element definitions are common.

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:198
&gt; +        if (!newElement) // FIXME: This call to docuemnt() is wrong in some cases.

Spelling &apos;document&apos;
The comment is too vague, please clarify.
Please move FIXME to a line of its own and use { }

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:201
&gt; +        ASSERT(newElement);

This assert adds no value given the code above.

&gt; Source/WebCore/html/parser/HTMLStackItem.h:105
&gt; +    const AtomicString&amp; namespaceURI = element.get().namespaceURI();

auto&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169931</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-02 13:56:37 -0800</bug_when>
    <thetext>Committed r197463: &lt;http://trac.webkit.org/changeset/197463&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272633</attachid>
            <date>2016-03-01 22:21:18 -0800</date>
            <delta_ts>2016-03-01 22:33:02 -0800</delta_ts>
            <desc>Adds the support</desc>
            <filename>bug-154908-20160301222102.patch</filename>
            <type>text/plain</type>
            <size>49392</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTAzLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgSFRNTCBwYXJzZXIgY29u
c3RydWN0IGN1c3RvbSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGluc3RhbnRpYXRpbmcgY3VzdG9t
IGVsZW1lbnRzIGluc2lkZSB0aGUgcGFyc2VyLiBCYXNlZCBvbiBKYW4gRjJGIGRpc2N1c3Npb24s
CisgICAgICAgIHRoZSBIVE1MIHBhcnNlciBpcyBnb2luZyB0byBzeW5jaHJvbm91c2x5IGNvbnN0
cnVjdCBjdXN0b20gZWxlbWVudHMuIFdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcgor
ICAgICAgICB0aHJvd3MsIHRoZSBIVE1MIHBhcnNlciBjcmVhdGVzIGEgSFRNTFVua25vd25FbGVt
ZW50IGluc3RlYWQuCisKKyAgICAgICAgSW4gb3VyIGltcGxlbWVudGF0aW9uLCB3ZSBwYXVzZSB0
aGUgcGFyc2VyIGNvbXBsZXRlbHkgYW5kIGNvbnN0cnVjdCBjdXN0b20gZWxlbWVudHMgdXNpbmcg
dGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIHVzZWQgdG8gcnVuIGF1dGhvciBzY3JpcHRzLiBJ
dCdzIHBvc3NpYmxlIHRoYXQgd2UgbWF5IHdhbnQgdG8gYXBwbHkgc29tZSBvcHRpbWl6YXRpb25z
IHRvCisgICAgICAgIHRvIG1ha2UgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9uIGJ1dCBpdCdz
IHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGdldCBzZW1hbnRpY3MgcmlnaHQgZmlyc3QuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0
cy1jdXN0b20tZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jdXN0b20tZWxlbWVu
dHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1
dGVzLWFuZC1jaGlsZHJlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3RvbS1lbGVtZW50
cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50KTogQWRkZWQg
U2hvdWxkQ2xlYXJFeGNlcHRpb24gYXMgYW4gYXJndW1lbnQKKyAgICAgICAgdG8gYmUgdXNlZCBi
eSB0aGUgSFRNTCBwYXJzZXIgc2luY2UgdGhlIHBhcnNlciBjYW4ndCByZS10aHJvdyB0byBhbnl3
aGVyZSBvciBmYWlsIHBhcnNpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb24pOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFs
aWRhdGlvbik6IERvIG5vdCBjbGVhciB0aGUgZXhjZXB0aW9uIGhlcmUgc2luY2UgY3JlYXRlRWxl
bWVudAorICAgICAgICBtdXN0IHJlLXRocm93IHRoZSBleGNlcHRpb24gdGhyb3duIGJ5IGEgY3Vz
dG9tIGVsZW1lbnQgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudEZvckJpbmRpbmdzKToKKworICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgor
ICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIENvbnN0cnVjdG9yRnVuY3Rpb25N
YXBFbnRyeSB3aGljaCBjb250YWlucyB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24KKyAgICAgICAg
YXMgd2VsbCBhcyB0aGUgcXVhbGlmaWVkIG5hbWUuCisgICAgICAgIChwcmludEZhY3RvcnlIZWFk
ZXJGaWxlKTogQWRkZWQgYSB2YXJpYW50IG9mIGNyZWF0ZUtub3duRWxlbWVudCBhbmQgY3JlYXRl
RWxlbWVudCB0aGF0IHRha2VzCisgICAgICAgIEF0b21pY1N0cmluZyBpbnN0ZWFkIG9mIFF1YWxp
ZmllZE5hbWUuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRBdHRyaWJ1dGVzKTogQWRkZWQgYSB2YXJpYW50IHRo
YXQgdGFrZXMgVmVjdG9yPEF0dHJpYnV0ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNl
KTogQWRkZWQuIFJldHVybnMgYQorICAgICAgICBjdXN0b20gZWxlbWVudCBpbnRlcmZhY2Ugd2hl
biB0aGUgZWxlbWVudCBkb2Vzbid0IG1hdGNoIGFueSBidWlsdGluIGVsZW1lbnQgYW5kIHRoZXJl
IGlzIGEgY3VzdG9tCisgICAgICAgIGVsZW1lbnQgZGVmaW5pdGlvbiB0aGF0IG1hdGNoZXMgdGhl
IHNwZWNpZmllZCBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6
Omluc2VydEN1c3RvbUVsZW1lbnQpOiBBZGRlZC4gTGlrZSBpbnNlcnRFbGVtZW50IGJ1dCBhbHNv
IHNldHMgdGhlCisgICAgICAgIGF0dHJpYnV0ZXMgb24gdGhlIG5ld2x5IGNyZWF0ZWQgY3VzdG9t
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRl
SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKTogRXh0cmFjdGVkIGZyb20K
KyAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnQuIFdoZW4gY3VzdG9tRWxlbWVudEludGVyZmFjZSBp
cyBub3QgbnVsbHB0ciwgd2Ugb3B0aW9uYWxseSBmaW5kIHRoZSBjdXN0b20KKyAgICAgICAgZWxl
bWVudCBpbnRlcmZhY2UgYW5kIHJldHVybiBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oOgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKTogQ3JlYXRlIGEgY3VzdG9tIGVsZW1l
bnQgd2hlbiB0aGVyZQorICAgICAgICBpcyBhIHBlbmRpbmcgY3VzdG9tIGVsZW1lbnQgdG8gY3Jl
YXRlIChpLmUuIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0IGlzIG5vdCBlbXB0eSkuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgor
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKTogQWRkZWQgYSB2YXJpYW50IHVzZWQgZm9yIGN1c3Rv
bSBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0
ZW0pOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YTo6Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4gSXQgbmVlZHMgdG8gYmUgaW4KKyAgICAg
ICAgdGhlIGNwcCBmaWxlIHRvIGF2b2lkIGludHJvZHVjaW5nIG1vcmUgaGVhZGVyIGRlcGVuZGVu
Y2llcyBpbiBIVE1MVHJlZUJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhOjp+Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KTogVXNlIGluc2VydEdlbmVyaWNIVE1MRWxlbWVudCB3aGVuIGNyZWF0aW5nCisgICAg
ICAgIGEgZ2VuZXJpYyBlbGVtZW50IHRoYXQgY291bGQgYmUgY3VzdG9tIGVsZW1lbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRHZW5lcmljSFRNTEVsZW1lbnQp
OiBBZGRlZC4gQ3JlYXRlIGFuZCBpbnNlcnQgYSBuZXcgZWxlbWVudAorICAgICAgICBvciBzZXQg
bV9jdXN0b21FbGVtZW50VG9Db25zdHJ1Y3Qgc28gdGhhdCB0aGUgSFRNTERvY3VtZW50UGFyc2Vy
IHdpbGwgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KTogQWRkZWQu
IENhbGxlZCBieSBIVE1MRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgd2hlbiBpdCBmaW5pc2hlcyBj
cmVhdGluZyBhIG5ldyBjdXN0b20gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjp0YWtl
Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKTogUmVuYW1lZCBm
cm9tIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0LgorICAgICAgICBDaGVja3MgdGhlIGV4aXN0ZW5j
ZSBvZiBtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCBhcyB3ZWxsIGFzIG1fc2NyaXB0VG9Qcm9j
ZXNzLgorCiAyMDE2LTAyLTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJp
bmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1c2FibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkocmV2
aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lCiB7CiB9CiAKLVJlZlB0cjxFbGVtZW50
PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1lbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQorUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIFNob3VsZENs
ZWFyRXhjZXB0aW9uIHNob3VsZENsZWFyRXhjZXB0aW9uKQogewogICAgIGlmICghY2FuSW52b2tl
Q2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04OCw2ICs4OCw5IEBAIFJl
ZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UKICAgICBKU1ZhbHVlIG5ld0Vs
ZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CiAKKyAgICBpZiAoc2hvdWxkQ2xlYXJF
eGNlcHRpb24gPT0gU2hvdWxkQ2xlYXJFeGNlcHRpb246OkNsZWFyICYmIHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgc3RhdGUtPmNsZWFyRXhjZXB0aW9uKCk7CisKICAgICBpZiAobmV3
RWxlbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxFbGVt
ZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIGVudW0gY2xh
c3MgU2hvdWxkQ2xlYXJFeGNlcHRpb24geyBDbGVhciwgRG9Ob3RDbGVhciB9OworICAgIFJlZlB0
cjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNob3VsZENs
ZWFyRXhjZXB0aW9uKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OSwzNSArODc5LDM1IEBAIHZvaWQgRG9jdW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRh
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50
KHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIGRv
Y3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVu
dDsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgYXV0byogZGVmaW5pdGlvbnMg
PSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKICAgICBpZiAoVU5MSUtFTFko
ZGVmaW5pdGlvbnMpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9u
cy0+ZmluZEludGVyZmFjZShxdWFsaWZpZWROYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBpbnRl
cmZhY2UtPmNvbnN0cnVjdEVsZW1lbnQocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9ucy0+ZmluZEludGVyZmFjZShsb2Nh
bE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGludGVyZmFjZS0+Y29uc3RydWN0RWxlbWVudChs
b2NhbE5hbWUsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb246
OkRvTm90Q2xlYXIpOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKFVOTElLRUxZKCFEb2N1bWVu
dDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSkpKSB7CisgICAgaWYgKFVO
TElLRUxZKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUobG9jYWxOYW1lKSkpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpLCBkb2N1bWVudCk7
CiB9CiAKIFJlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudEZvckJpbmRpbmdz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudFdpdGhO
YW1lVmFsaWRhdGlvbigqdGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlzLCBuYW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVjKTsKIAogICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBuYW1lLCBlYyk7CiAKICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJ
KHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3
b3JraW5nIGNvcHkpCkBAIC05ODYsMTAgKzk4NiwyOCBAQCBFTkQKICAgICAgICAgJGFyZ3VtZW50
TGlzdCA9ICJuYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyIjsKICAgICB9CiAKKyAgICBt
eSAkbG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4ID0gbGMoJHBhcmFtZXRlcnN7bmFtZXNwYWNlUHJl
Zml4fSk7CisKICAgICBwcmludENvbnN0cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7
CiAKICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4mIG1hcCkKKworc3Ry
dWN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSB7CisgICAgQ29uc3RydWN0b3JGdW5jdGlv
bk1hcEVudHJ5KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0
aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorICAgICAgICA6IGZ1bmN0aW9uKGZ1bmN0
aW9uKQorICAgICAgICAsIHF1YWxpZmllZE5hbWUoJm5hbWUpCisgICAgeyB9CisKKyAgICBDb25z
dHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkoKQorICAgICAgICA6IGZ1bmN0aW9uKG51bGxwdHIpCisg
ICAgICAgICwgcXVhbGlmaWVkTmFtZShudWxscHRyKQorICAgIHsgfQorCisgICAgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVuY3Rpb247CisgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSogcXVhbGlmaWVkTmFtZTsgLy8gVXNlIHBvaW50ZXIgaW5zdGVhZCBvZiByZWZl
cmVuY2Ugc28gdGhhdCBlbXB0eVZhbHVlKCkgaW4gSGFzaE1hcCBpcyBjaGVhcCB0byBjcmVhdGUu
Cit9OworCitzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDb25zdHJ1Y3RvckZ1
bmN0aW9uTWFwRW50cnk+JiBtYXApCiB7CiAgICAgc3RydWN0IFRhYmxlRW50cnkgewogICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOwpAQCAtMTAwNiwyNSArMTAyNCw0MiBAQCBFTkQK
ICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
dGFibGUpOyArK2kpCi0gICAgICAgIG1hcC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5p
bXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9uKTsKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5uYW1l
LmxvY2FsTmFtZSgpLmltcGwoKSwgQ29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5KHRhYmxlW2ld
LmZ1bmN0aW9uLCB0YWJsZVtpXS5uYW1lKSk7CiB9CiAKLVJlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKKworc3RhdGljIENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSBmaW5kJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4+IGZ1
bmN0aW9uczsKLSAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcG9w
dWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMpOwotICAgICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZnVuY3Rp
b25zLmdldCgpLmdldChuYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgaWYgKExJS0VMWShm
dW5jdGlvbikpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigkYXJndW1lbnRMaXN0KTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ29uc3RydWN0
b3JGdW5jdGlvbk1hcEVudHJ5Pj4gbWFwOworICAgIGlmIChtYXAuZ2V0KCkuaXNFbXB0eSgpKQor
ICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWN0b3J5TWFwKG1hcCk7Cisg
ICAgcmV0dXJuIG1hcC5nZXQoKS5nZXQobG9jYWxOYW1lLmltcGwoKSk7Cit9CisKK1JlZlB0cjwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CisgICAgY29uc3QgQ29uc3RydWN0b3JGdW5jdGlvbk1h
cEVudHJ5JiBlbnRyeSA9IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudENvbnN0cnVj
dG9yRnVuY3Rpb24obG9jYWxOYW1lKTsKKyAgICBpZiAoTElLRUxZKGVudHJ5LmZ1bmN0aW9uKSkg
eworICAgICAgICBBU1NFUlQoZW50cnkucXVhbGlmaWVkTmFtZSk7CisgICAgICAgIGNvbnN0IGF1
dG8mIG5hbWUgPSAqZW50cnkucXVhbGlmaWVkTmFtZTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmZ1
bmN0aW9uKCRhcmd1bWVudExpc3QpOworICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK1JlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRG
b3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQgPSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudCgkYXJndW1lbnRMaXN0KTsKICAgICBp
ZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVs
bCgpOworICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVh
dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVm
aXh9TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOworfQorCitSZWY8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQkZm9y
bUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorewor
ICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKG5hbWUubG9jYWxOYW1l
KCkpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKQorICAgICAgICByZXR1cm4gZW50
cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7CiAgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxi
YWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiB9CiAKQEAgLTEwNjUs
MTAgKzExMDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRU5ECiA7CiAKLXByaW50IEYgIiAg
ICAgICAgc3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gY3JlYXRl
S25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQgRiAi
ICAgICAgICBzdGF0aWMgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERvY3VtZW50JiI7
CiBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9IGVxICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBm
YWxzZSk7XG5cbiI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiI7CitwcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERv
Y3VtZW50JiI7CitwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKK3ByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIgPSBmYWxzZSk7XG4iOworcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUmVmPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGxvY2FsTmFtZSwgRG9jdW1lbnQmIjsKIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51
bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBi
b29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHJldmlzaW9u
IDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkhUTUxU
cmVlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDMsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkhUTUxQaWN0dXJlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxVbmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTUxLDExICs1MywxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIEF0b21pY0hUTUxU
b2tlbiogdG9rZW4sIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQ
b2xpY3kpCiB7CiAgICAgaWYgKCFzY3JpcHRpbmdDb250ZW50SXNBbGxvd2VkKHBhcnNlckNvbnRl
bnRQb2xpY3kpKQotICAgICAgICBlbGVtZW50LnN0cmlwU2NyaXB0aW5nQXR0cmlidXRlcyh0b2tl
bi0+YXR0cmlidXRlcygpKTsKLSAgICBlbGVtZW50LnBhcnNlclNldEF0dHJpYnV0ZXModG9rZW4t
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsZW1lbnQuc3RyaXBTY3JpcHRpbmdBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOworICAgIGVsZW1lbnQucGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNldEF0dHJpYnV0ZXMoRWxlbWVudCYgZWxlbWVu
dCwgQXRvbWljSFRNTFRva2VuKiB0b2tlbiwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250
ZW50UG9saWN5KQoreworICAgIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgdG9rZW4tPmF0dHJpYnV0
ZXMoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAKIHN0YXRpYyBib29sIGhhc0ltcGxpZWRF
bmRUYWcoY29uc3QgSFRNTFN0YWNrSXRlbSYgaXRlbSkKQEAgLTQ4Miw2ICs0ODksMjYgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZQogICAgIG1fb3BlbkVsZW1lbnRz
LnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgKnRv
a2VuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRD
dXN0b21FbGVtZW50SW50ZXJmYWNlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKiBpbnRlcmZhY2UgPSBudWxscHRyOworICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50
ZXJmYWNlKHRva2VuLCAmaW50ZXJmYWNlKTsKKyAgICBpZiAoVU5MSUtFTFkoaW50ZXJmYWNlKSkK
KyAgICAgICAgcmV0dXJuIGludGVyZmFjZTsKKyAgICBhdHRhY2hMYXRlcigmY3VycmVudE5vZGUo
KSwgZWxlbWVudCk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVh
dGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCAqdG9rZW4pKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q3VzdG9tRWxlbWVudChS
ZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAgc2V0QXR0cmlidXRlcyhlbGVtZW50
LmdldCgpLCBhdHRyaWJ1dGVzLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIGF0dGFjaExh
dGVyKCZjdXJyZW50Tm9kZSgpLCBlbGVtZW50LnB0cigpKTsKKyAgICBtX29wZW5FbGVtZW50cy5w
dXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnQpLCBsb2NhbE5hbWUsIGF0
dHJpYnV0ZXMpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CkBAIC02MzMsMjgg
KzY2MCw1MyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvCiAgICAg
cmV0dXJuIGN1cnJlbnROb2RlKCkuZG9jdW1lbnQoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQorUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoCisgICAgQXRvbWljSFRNTFRva2VuKiB0b2tl
biwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiogY3VzdG9tRWxlbWVudEludGVyZmFjZSkKIHsK
LSAgICBRdWFsaWZpZWROYW1lIHRhZ05hbWUobnVsbEF0b20sIHRva2VuLT5uYW1lKCksIHhodG1s
TmFtZXNwYWNlVVJJKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHRva2Vu
LT5uYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuJ3QgdXNlIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpjcmVhdGVFbGVtZW50IGJlY2F1c2Ugd2UKICAgICAvLyBoYXZlIHRvIHBhc3MgdGhlIGN1
cnJlbnQgZm9ybSBlbGVtZW50LiAgV2Ugc2hvdWxkIHJld29yayBmb3JtIGFzc29jaWF0aW9uCiAg
ICAgLy8gdG8gb2NjdXIgYWZ0ZXIgY29uc3RydWN0aW9uIHRvIGFsbG93IGJldHRlciBjb2RlIHNo
YXJpbmcgaGVyZS4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2NyZWF0ZS1hbi1l
bGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCA9IG93bmVy
RG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWY8RWxlbWVudD4gZWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBvd25lckRvY3VtZW50LCBp
bnNpZGVUZW1wbGF0ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKLSAgICAKKyAg
ICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25v
d25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkg
eworCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgYXV0byogZGVmaW5pdGlv
bnMgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKS5jdXN0b21FbGVtZW50RGVmaW5pdGlv
bnMoKTsKKyAgICAgICAgaWYgKGN1c3RvbUVsZW1lbnRJbnRlcmZhY2UgJiYgVU5MSUtFTFkoZGVm
aW5pdGlvbnMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlv
bnMtPmZpbmRJbnRlcmZhY2UobG9jYWxOYW1lKSkgeworICAgICAgICAgICAgICAgICpjdXN0b21F
bGVtZW50SW50ZXJmYWNlID0gaW50ZXJmYWNlOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oY3VzdG9tRWxlbWVudEludGVyZmFjZSk7CisjZW5kaWYKKworICAgICAgICBlbGVtZW50ID0g
SFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxO
YW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpKTsK
KyAgICB9CisgICAgQVNTRVJUKGVsZW1lbnQpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBo
YWNrIHRvIGNvbm5lY3QgaW1hZ2VzIHRvIHBpY3R1cmVzIGJlZm9yZSB0aGUgaW1hZ2UgaGFzCiAg
ICAgLy8gYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIHJlbW92ZWQg
b25jZSBhc3luY2hyb25vdXMgaW1hZ2UKICAgICAvLyBsb2FkaW5nIGlzIHdvcmtpbmcuCi0gICAg
aWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVudD4oY3VycmVudE5vZGUoKSkgJiYgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQuZ2V0KCkpLnNldFBpY3R1cmVFbGVtZW50KCZkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1l
bnQ+KGN1cnJlbnROb2RlKCkpKTsKKyAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJy
ZW50Tm9kZSgpKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkpCisgICAgICAgIGRv
d25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KS5zZXRQaWN0dXJlRWxlbWVudCgmZG93
bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJyZW50Tm9kZSgpKSk7CiAKLSAgICBzZXRBdHRy
aWJ1dGVzKGVsZW1lbnQuZ2V0KCksIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAg
IHNldEF0dHJpYnV0ZXMoKmVsZW1lbnQsIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOwog
ICAgIEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVtZW50
OwogfQogCitSZWY8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4s
IG51bGxwdHIpOworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpOworfQorCiBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTENvbnN0cnVjdGlvblNp
dGU6OmNyZWF0ZUVsZW1lbnRGcm9tU2F2ZWRUb2tlbihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewog
ICAgIC8vIE5PVEU6IE1vdmluZyBmcm9tIGl0ZW0gLT4gdG9rZW4gLT4gaXRlbSBjb3BpZXMgdGhl
IEF0dHJpYnV0ZSB2ZWN0b3IgdHdpY2UhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgQXRvbWljSFRNTFRva2VuOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OworY2xhc3MgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwpAQCAtMTAzLDYg
KzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRDb21tZW50T25Eb2N1bWVudChBdG9t
aWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChB
dG9taWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBpbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2Uo
QXRvbWljSFRNTFRva2VuKik7CisgICAgdm9pZCBpbnNlcnRDdXN0b21FbGVtZW50KFJlZjxFbGVt
ZW50PiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4m
KTsKKyNlbmRpZgogICAgIHZvaWQgaW5zZXJ0U2VsZkNsb3NpbmdIVE1MRWxlbWVudChBdG9taWNI
VE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEZvcm1hdHRpbmdFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOwogICAgIHZvaWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiop
OwpAQCAtMTk0LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmRGb3N0ZXJTaXRl
KEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYpOwogCisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9taWNIVE1MVG9rZW4q
LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqKik7CiAgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZUhU
TUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiopOwogICAgIFJlZjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxOTcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBA
CiAjaW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1
bm5lci5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIkhUTUxVbmtu
b3duRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OCw4ICsxOTAsMjMgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYQogewogICAgIEFTU0VSVChzY3JpcHRpbmdDb250ZW50
SXNBbGxvd2VkKHBhcnNlckNvbnRlbnRQb2xpY3koKSkpOwogCisjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKKyAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rp
b25EYXRhPiBjb25zdHJ1Y3Rpb25EYXRhID0gbV90cmVlQnVpbGRlci0+dGFrZUN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhKCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5o
YXNQYXJzZXJCbG9ja2luZ1NjcmlwdFdvcmsoKSk7CisKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3Rpb25EYXRhLT5pbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1l
bnQoY29uc3RydWN0aW9uRGF0YS0+bmFtZSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpTaG91
bGRDbGVhckV4Y2VwdGlvbjo6Q2xlYXIpOworICAgICAgICBpZiAoIW5ld0VsZW1lbnQpIC8vIEZJ
WE1FOiBUaGlzIGNhbGwgdG8gZG9jdWVtbnQoKSBpcyB3cm9uZyBpbiBzb21lIGNhc2VzLgorICAg
ICAgICAgICAgbmV3RWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGNvbnN0cnVjdGlvbkRhdGEtPm5hbWUsIHhodG1sTmFtZXNwYWNlVVJJ
KSwgKmRvY3VtZW50KCkpOworCisgICAgICAgIEFTU0VSVChuZXdFbGVtZW50KTsKKyAgICAgICAg
bV90cmVlQnVpbGRlci0+ZGlkQ3JlYXRlQ3VzdG9tT3JDYWxsYmFja0VsZW1lbnQobmV3RWxlbWVu
dC5yZWxlYXNlTm9uTnVsbCgpLCAqY29uc3RydWN0aW9uRGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogICAgIFRleHRQb3NpdGlvbiBzY3JpcHRTdGFydFBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKTsKICAgICBpZiAoYXV0byBzY3JpcHRF
bGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFydFBv
c2l0aW9uKSkgeworICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2Nr
aW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1
bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdtZW50LgogICAgICAgICBpZiAobV9zY3Jp
cHRSdW5uZXIpCiAgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVt
ZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CkBAIC00NTksNyArNDc2LDcgQEAg
Ym9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcgogICAgIC8vIFRoZSBzY3Jp
cHQgcnVubmVyIHdpbGwgaG9sZCB0aGUgc2NyaXB0IHVudGlsIGl0cyBsb2FkZWQgYW5kIHJ1bi4g
RHVyaW5nCiAgICAgLy8gYW55IG9mIHRoaXMgdGltZSwgd2Ugd2FudCB0byBjb3VudCBvdXJzZWx2
ZXMgYXMgIndhaXRpbmcgZm9yIGEgc2NyaXB0IiBhbmQgdGh1cwogICAgIC8vIHJ1biB0aGUgcHJl
bG9hZCBzY2FubmVyLCBhcyB3ZWxsIGFzIGRlbGF5IGNvbXBsZXRpb24gb2YgcGFyc2luZy4KLSAg
ICBib29sIHRyZWVCdWlsZGVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3RyZWVCdWlsZGVyLT5oYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpOworICAgIGJvb2wgdHJlZUJ1aWxkZXJIYXNCbG9ja2luZ1Nj
cmlwdCA9IG1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpOwogICAg
IGJvb2wgc2NyaXB0UnVubmVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3NjcmlwdFJ1bm5lciAmJiBt
X3NjcmlwdFJ1bm5lci0+aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKTsKICAgICAvLyBTaW5jZSB0
aGUgcGFyc2VyIGlzIHBhdXNlZCB3aGlsZSBhIHNjcmlwdCBydW5uZXIgaGFzIGEgYmxvY2tpbmcg
c2NyaXB0LCBpdCBzaG91bGQKICAgICAvLyBuZXZlciBiZSBwb3NzaWJsZSB0byBlbmQgdXAgd2l0
aCBib3RoIG9iamVjdHMgaG9sZGluZyBhIGJsb2NraW5nIHNjcmlwdC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgJKHJldmlzaW9uIDE5NzIyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIVE1MU3RhY2tJdGVtIDogcHVibGljIFJlZkNvdW50
ZWQ8CiBwdWJsaWM6CiAgICAgLy8gTm9ybWFsIEhUTUxFbGVtZW50U3RhY2sgYW5kIEhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QgaXRlbXMuCiAgICAgc3RhdGljIFJlZjxIVE1MU3RhY2tJdGVtPiBj
cmVhdGUoUmVmPEVsZW1lbnQ+JiYsIEF0b21pY0hUTUxUb2tlbiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJID0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CisgICAgc3Rh
dGljIFJlZjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CiAKICAgICAvLyBEb2N1bWVudCBm
cmFnbWVudCBvciBlbGVtZW50IGZvciBwYXJzaW5nIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZjxI
VE1MU3RhY2tJdGVtPiBjcmVhdGUoRWxlbWVudCYpOwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgSFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiwgQXRvbWljSFRN
TFRva2VuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOworICAgIEhUTUxTdGFj
a0l0ZW0oUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsK
ICAgICBleHBsaWNpdCBIVE1MU3RhY2tJdGVtKEVsZW1lbnQmKTsKICAgICBleHBsaWNpdCBIVE1M
U3RhY2tJdGVtKERvY3VtZW50RnJhZ21lbnQmKTsKIApAQCAtODksNiArOTEsMjEgQEAgaW5saW5l
IFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MU3RhY2tJdGVtOgogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShlbGVtZW50KSwgdG9rZW4sIG5hbWVzcGFjZVVSSSkp
OwogfQogCitpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4m
JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQor
ICAgIDogbV9ub2RlKFdURk1vdmUoZWxlbWVudCkpCisgICAgLCBtX25hbWVzcGFjZVVSSShuYW1l
c3BhY2VVUkkpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCisgICAgLCBtX2F0dHJpYnV0
ZXMoYXR0cmlidXRlcykKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8g
bW92ZSB0aGUgYXR0cmlidXRlcyB2ZWN0b3IgaW4gdGhlIG5vcm1hbCBjb2RlIHBhdGggaW5zdGVh
ZCBvZiBjb3B5aW5nIGl0LgorfQorCitpbmxpbmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFj
a0l0ZW06OmNyZWF0ZShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBlbGVtZW50LmdldCgpLm5hbWVzcGFj
ZVVSSSgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShl
bGVtZW50KSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkksIGF0dHJpYnV0ZXMpKTsKK30KKwogaW5s
aW5lIEhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0ZW0oRWxlbWVudCYgZWxlbWVudCkKICAgICA6
IG1fbm9kZShlbGVtZW50KQogICAgICwgbV9uYW1lc3BhY2VVUkkoZWxlbWVudC5uYW1lc3BhY2VV
UkkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgpAQCAtNTAsNiArNTEs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKFJlZjxKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U+JiYgaW50ZXJmYWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorICAgIDogaW50ZXJmYWNlKFdURk1vdmUoaW50
ZXJmYWNlKSkKKyAgICAsIG5hbWUobmFtZSkKKyAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykg
Ly8gRklYTUU6IEF2b2lkIGNvcHlpbmcgYXR0cmlidXRlcy4KK3sgfQorCitDdXN0b21FbGVtZW50
Q29uc3RydWN0aW9uRGF0YTo6fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKCkKK3sgfQor
CisjZW5kaWYKKwogbmFtZXNwYWNlIHsKIAogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2VPclJlcGxh
Y2VtZW50Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTg5Niw5ICs5MTAsMjcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvcgogICAgIH0KICNlbmRpZgogICAg
IG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwotICAgIG1f
dHJlZS5pbnNlcnRIVE1MRWxlbWVudCgmdG9rZW4pOworICAgIGluc2VydEdlbmVyaWNIVE1MRWxl
bWVudCh0b2tlbik7CiB9CiAKK2lubGluZSB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2Vu
ZXJpY0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCit7CisjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKKyAgICBhdXRvKiBpbnRlcmZhY2UgPSBtX3RyZWUuaW5zZXJ0SFRNTEVs
ZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKCZ0b2tlbik7CisgICAgaWYgKFVOTElL
RUxZKGludGVyZmFjZSkpCisgICAgICAgIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YT4oKmludGVyZmFjZSwg
dG9rZW4ubmFtZSgpLCB0b2tlbi5hdHRyaWJ1dGVzKCkpOworI2Vsc2UKKyAgICBtX3RyZWUuaW5z
ZXJ0SFRNTEVsZW1lbnQodG9rZW4pOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoQ1VTVE9NX0VM
RU1FTlRTKQordm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tF
bGVtZW50KFJlZjxFbGVtZW50PiYmIGVsZW1lbnQsIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25E
YXRhJiBkYXRhKQoreworICAgIG1fdHJlZS5pbnNlcnRDdXN0b21FbGVtZW50KFdURk1vdmUoZWxl
bWVudCksIGRhdGEubmFtZSwgZGF0YS5hdHRyaWJ1dGVzKTsKK30KKyNlbmRpZgorCiAjaWYgRU5B
QkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVGVt
cGxhdGVTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgJKHJldmlzaW9uIDE5NzIyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw4ICszNCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZTsKIGNsYXNzIEhUTUxEb2N1bWVudFBhcnNlcjsKIAorc3Ry
dWN0IEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhIHsKKyAgICBDdXN0b21FbGVtZW50Q29u
c3RydWN0aW9uRGF0YShSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgfkN1c3RvbUVs
ZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKCk7CisKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlPiBpbnRlcmZhY2U7CisgICAgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgVmVjdG9yPEF0dHJp
YnV0ZT4gYXR0cmlidXRlczsKK307CisKIGNsYXNzIEhUTUxUcmVlQnVpbGRlciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00OSwxMSArNTksMTYgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBjb25zdHJ1Y3RUcmVlKEF0b21pY0hUTUxUb2tlbiYpOwogCi0gICAgYm9v
bCBoYXNQYXJzZXJCbG9ja2luZ1NjcmlwdCgpIGNvbnN0OworICAgIGJvb2wgaGFzUGFyc2VyQmxv
Y2tpbmdTY3JpcHRXb3JrKCkgY29uc3Q7CiAKICAgICAvLyBNdXN0IGJlIGNhbGxlZCB0byB0YWtl
IHRoZSBwYXJzZXItYmxvY2tpbmcgc2NyaXB0IGJlZm9yZSBjYWxsaW5nIHRoZSBwYXJzZXIgYWdh
aW4uCiAgICAgUmVmUHRyPEVsZW1lbnQ+IHRha2VTY3JpcHRUb1Byb2Nlc3MoVGV4dFBvc2l0aW9u
JiBzY3JpcHRTdGFydFBvc2l0aW9uKTsKIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisg
ICAgc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiB0YWtlQ3Vz
dG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fY3VzdG9tRWxl
bWVudFRvQ29uc3RydWN0KTsgfQorICAgIHZvaWQgZGlkQ3JlYXRlQ3VzdG9tT3JDYWxsYmFja0Vs
ZW1lbnQoUmVmPEVsZW1lbnQ+JiYsIEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhJik7Cisj
ZW5kaWYKKwogICAgIC8vIERvbmUsIGNsb3NlIGFueSBvcGVuIHRhZ3MsIGV0Yy4KICAgICB2b2lk
IGZpbmlzaGVkKCk7CiAKQEAgLTE2NSw2ICsxODAsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBy
ZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KCk7CiAKKyAgICB2b2lkIGluc2VydEdlbmVy
aWNIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4mKTsKKwogI2lmIEVOQUJMRShURU1QTEFURV9F
TEVNRU5UKQogICAgIHZvaWQgcHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWcoQXRvbWljSFRNTFRva2Vu
Jik7CiAgICAgYm9vbCBwcm9jZXNzVGVtcGxhdGVFbmRUYWcoQXRvbWljSFRNTFRva2VuJik7CkBA
IC0yMDQsNiArMjIxLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudD4gbV9zY3JpcHRU
b1Byb2Nlc3M7IC8vIDxzY3JpcHQ+IHRhZyB3aGljaCBuZWVkcyBwcm9jZXNzaW5nIGJlZm9yZSBy
ZXN1bWluZyB0aGUgcGFyc2VyLgogICAgIFRleHRQb3NpdGlvbiBtX3NjcmlwdFRvUHJvY2Vzc1N0
YXJ0UG9zaXRpb247IC8vIFN0YXJ0aW5nIGxpbmUgbnVtYmVyIG9mIHRoZSBzY3JpcHQgdGFnIG5l
ZWRpbmcgcHJvY2Vzc2luZy4KIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29u
c3RydWN0aW9uRGF0YT4gbV9jdXN0b21FbGVtZW50VG9Db25zdHJ1Y3Q7CisKICAgICBib29sIG1f
c2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9mcmFtZXNl
dE9rIHsgdHJ1ZSB9OwpAQCAtMjM1LDEwICsyNTQsMTEgQEAgaW5saW5lIGJvb2wgSFRNTFRyZWVC
dWlsZGVyOjppc1BhcnNpbmdGcgogICAgIHJldHVybiAhIW1fZnJhZ21lbnRDb250ZXh0LmZyYWdt
ZW50KCk7CiB9CiAKLWlubGluZSBib29sIEhUTUxUcmVlQnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tp
bmdTY3JpcHQoKSBjb25zdAoraW5saW5lIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpoYXNQYXJzZXJC
bG9ja2luZ1NjcmlwdFdvcmsoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9kZXN0cm95ZWQpOwot
ICAgIHJldHVybiAhIW1fc2NyaXB0VG9Qcm9jZXNzOworICAgIEFTU0VSVCghKG1fc2NyaXB0VG9Q
cm9jZXNzICYmIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0KSk7CisgICAgcmV0dXJuIG1fc2Ny
aXB0VG9Qcm9jZXNzIHx8IG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0OwogfQogCiBpbmxpbmUg
RG9jdW1lbnRGcmFnbWVudCogSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0
OjpmcmFnbWVudCgpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcyMjApCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wMy0w
MSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIEhUTUwg
cGFyc2VyIGNvbnN0cnVjdCBjdXN0b20gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDkwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFczQyB0ZXN0aGFybmVzcy5qcyBiYXNlZCB0
ZXN0cyBmb3IgaW5zdGFudGlhdGluZyBjdXN0b20gZWxlbWVudHMgaW5zaWRlIHRoZSBIVE1MIHBh
cnNlci4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlcjogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1
c3RvbS1lbGVtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9t
LWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxs
c2JhY2stdG8tdW5rbm93bi1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1l
bGVtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNl
ci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGlsZHJlbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRy
aWJ1dGVzLWFuZC1jaGlsZHJlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXIt
dXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTAyLTI2ICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUgdGVz
dHMgZm9yIGlvcy1zaW11bGF0b3IgYWZ0ZXIgcjE5NzE2MgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJz
ZXIvcGFyc2VyLWNvbnN0cnVjdHMtY3VzdG9tLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKworUEFTUyBIVE1MIHBhcnNlciBtdXN0IE5PVCBjcmVh
dGUgYSBjdXN0b20gZWxlbWVudCBiZWZvcmUgZGVmaW5lRWxlbWVudCBpcyBjYWxsZWQgCitQQVNT
IEhUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZGVmaW5lZCBjdXN0b20gZWxlbWVudCBiZWZvcmUg
ZXhlY3V0aW5nIGlubGluZSBzY3JpcHRzIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3Rv
bS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWNvbnN0cnVjdHMtY3VzdG9tLWVsZW1lbnRzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3Bh
cnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1
c3RvbS1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IENoYW5n
ZXMgdG8gdGhlIEhUTUwgcGFyc2VyPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9
IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJIVE1MIHBhcnNlciBjcmVhdGVzIGEgY3VzdG9tIGVsZW1lbnQi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9k
aXY+Cis8bXktY3VzdG9tLWVsZW1lbnQgaWQ9Imluc3RhbmNlMSI+PC9teS1jdXN0b20tZWxlbWVu
dD4KKzxzY3JpcHQ+CisKK2NsYXNzIE15Q3VzdG9tRWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50
IHsgfTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGN1c3RvbUVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFuY2UxJyk7CisKKyAgICBhc3NlcnRfdHJ1ZShjdXN0
b21FbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsICdBbiB1bnJlc29sdmVkIGN1c3RvbSBl
bGVtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRf
ZmFsc2UoY3VzdG9tRWxlbWVudCBpbnN0YW5jZW9mIE15Q3VzdG9tRWxlbWVudCwgJ0FuIHVucmVz
b2x2ZWQgY3VzdG9tIGVsZW1lbnQgbXVzdCBOT1QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjdXN0
b20gZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5sb2NhbE5hbWUs
ICdteS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5u
YW1lc3BhY2VVUkksICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ0EgY3VzdG9tIGVs
ZW1lbnQgSFRNTCBtdXN0IHVzZSBIVE1MIG5hbWVzcGFjZScpOworCit9LCAnSFRNTCBwYXJzZXIg
bXVzdCBOT1QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgYmVmb3JlIGRlZmluZUVsZW1lbnQgaXMg
Y2FsbGVkJyk7CisKK2RvY3VtZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ215LWN1c3RvbS1lbGVt
ZW50JywgTXlDdXN0b21FbGVtZW50KTsKKworPC9zY3JpcHQ+Cis8bXktY3VzdG9tLWVsZW1lbnQg
aWQ9Imluc3RhbmNlMiI+PC9teS1jdXN0b20tZWxlbWVudD4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVu
Y3Rpb24gKCkgeworICAgIHZhciBjdXN0b21FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2luc3RhbmNlMicpOworCisgICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudCBpbnN0YW5j
ZW9mIEhUTUxFbGVtZW50LCAnQSByZXNvbHZlZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKGN1c3RvbUVsZW1lbnQg
aW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQsICdBIHJlc29sdmVkIGN1c3RvbSBlbGVtZW50
IG11c3QgTk9UIGJlIGFuIGluc3RhbmNlIG9mIEhUTUxVbmtub3duRWxlbWVudCcpOworICAgIGFz
c2VydF90cnVlKGN1c3RvbUVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQsICdBIHJl
c29sdmVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjdXN0b20g
ZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5sb2NhbE5hbWUsICdt
eS1jdXN0b20tZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5uYW1l
c3BhY2VVUkksICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ0EgY3VzdG9tIGVsZW1l
bnQgSFRNTCBtdXN0IHVzZSBIVE1MIG5hbWVzcGFjZScpOworCit9LCAnSFRNTCBwYXJzZXIgbXVz
dCBjcmVhdGUgYSBkZWZpbmVkIGN1c3RvbSBlbGVtZW50IGJlZm9yZSBleGVjdXRpbmcgaW5saW5l
IHNjcmlwdHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtu
b3duLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1l
bGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtub3duLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIEhUTUwgcGFyc2Vy
IG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVua25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20g
ZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5zIGEgVGV4dCBub2RlIAorUEFTUyBIVE1MIHBhcnNl
ciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IgcmV0dXJucyBub24tRWxlbWVudCBvYmplY3QgCitQQVNTIEhU
TUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVua25vd25FbGVtZW50IHdoZW4g
YSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBjYWxsIHN1cGVyKCkgCitQQVNT
IEhUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVua25vd25FbGVtZW50IHdo
ZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhjZXB0aW9uIAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxz
YmFjay10by11bmtub3duLWVsZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtub3duLWVs
ZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVudC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IENoYW5nZXMgdG8gdGhlIEhUTUwgcGFyc2VyPC90
aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFp
bHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJIVE1M
IHBhcnNlciBtdXN0IGZhbGxiYWNrIHRvIGNyZWF0aW5nIGEgSFRNTFVua25vd25FbGVtZW50IHdo
ZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rpb24gZmFpbHMiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5r
IHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNz
cyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitj
bGFzcyBSZXR1cm5zVGV4dE5vZGUgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnc29tZSB0ZXh0Jyk7CisgICAgfQorfTsKK2RvY3VtZW50LmRlZmluZUN1c3RvbUVs
ZW1lbnQoJ3JldHVybnMtdGV4dCcsIFJldHVybnNUZXh0Tm9kZSk7CisKK2NsYXNzIFJldHVybnNO
b25FbGVtZW50T2JqZWN0IGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgICBzdXBlcigpOworICAgICAgICByZXR1cm4ge307CisgICAgfQorfTsKK2RvY3Vt
ZW50LmRlZmluZUN1c3RvbUVsZW1lbnQoJ3JldHVybnMtbm9uLWVsZW1lbnQtb2JqZWN0JywgUmV0
dXJuc05vbkVsZW1lbnRPYmplY3QpOworCitjbGFzcyBMYWNrc1N1cGVyQ2FsbCBleHRlbmRzIEhU
TUxFbGVtZW50IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsgfQorfTsKK2RvY3VtZW50LmRlZmluZUN1
c3RvbUVsZW1lbnQoJ2xhY2tzLXN1cGVyLWNhbGwnLCBMYWNrc1N1cGVyQ2FsbCk7CisKK2NsYXNz
IFRocm93c0V4Y2VwdGlvbiBleHRlbmRzIEhUTUxFbGVtZW50IHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgdGhyb3cgJ0JhZCc7CisgICAgfQorfTsKK2RvY3VtZW50LmRlZmluZUN1c3Rv
bUVsZW1lbnQoJ3Rocm93cy1leGNlcHRpb24nLCBUaHJvd3NFeGNlcHRpb24pOworCis8L3Njcmlw
dD4KKzxyZXR1cm5zLXRleHQ+PC9yZXR1cm5zLXRleHQ+Cis8cmV0dXJucy1ub24tZWxlbWVudC1v
YmplY3Q+PC9yZXR1cm5zLW5vbi1lbGVtZW50LW9iamVjdD4KKzxsYWNrcy1zdXBlci1jYWxsPjwv
bGFja3Mtc3VwZXItY2FsbD4KKzx0aHJvd3MtZXhjZXB0aW9uPjwvdGhyb3dzLWV4Y2VwdGlvbj4K
KzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3JldHVybnMtdGV4dCcpOworCisgICAgYXNzZXJ0X2ZhbHNlKGlu
c3RhbmNlIGluc3RhbmNlb2YgUmV0dXJuc1RleHROb2RlLCAnSFRNTCBwYXJzZXIgbXVzdCBOT1Qg
aW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCB3aGVuIHRoZSBjb25zdHJ1Y3RvciByZXR1cm5z
IGEgVGV4dCBub2RlJyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1M
RWxlbWVudCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVz
dCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3Rh
bmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQg
Y3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxVbmtub3du
RWxlbWVudCcpOworCit9LCAnSFRNTCBwYXJzZXIgbXVzdCBjcmVhdGUgYSBmYWxsYmFjayBIVE1M
VW5rbm93bkVsZW1lbnQgd2hlbiBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHJldHVybnMg
YSBUZXh0IG5vZGUnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncmV0dXJucy1ub24tZWxlbWVudC1vYmplY3QnKTsKKwor
ICAgIGFzc2VydF9mYWxzZShpbnN0YW5jZSBpbnN0YW5jZW9mIFJldHVybnNOb25FbGVtZW50T2Jq
ZWN0LCAnSFRNTCBwYXJzZXIgbXVzdCBOT1QgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCB3
aGVuIHRoZSBjb25zdHJ1Y3RvciByZXR1cm5zIGEgbm9uLUVsZW1lbnQgb2JqZWN0Jyk7CisgICAg
YXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ1RoZSBmYWxsYmFj
ayBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBI
VE1MRWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVu
a25vd25FbGVtZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNl
ciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxVbmtub3duRWxlbWVudCcpOworCit9LCAnSFRN
TCBwYXJzZXIgbXVzdCBjcmVhdGUgYSBmYWxsYmFjayBIVE1MVW5rbm93bkVsZW1lbnQgd2hlbiBh
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHJldHVybnMgbm9uLUVsZW1lbnQgb2JqZWN0Jyk7
CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2xhY2tzLXN1cGVyLWNhbGwnKTsKKworICAgIGFzc2VydF9mYWxzZShpbnN0YW5j
ZSBpbnN0YW5jZW9mIExhY2tzU3VwZXJDYWxsLCAnSFRNTCBwYXJzZXIgbXVzdCBOT1QgaW5zdGFu
dGlhdGUgYSBjdXN0b20gZWxlbWVudCB3aGVuIHRoZSBjb25zdHJ1Y3RvciBkb2VzIG5vdCBjYWxs
IHN1cGVyKCknKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVt
ZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVh
dGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTFVua25vd25FbGVt
ZW50Jyk7CisKK30sICdIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtu
b3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZG9lcyBub3QgY2Fs
bCBzdXBlcigpJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3Rocm93cy1leGNlcHRpb24nKTsKKworICAgIGFzc2VydF9m
YWxzZShpbnN0YW5jZSBpbnN0YW5jZW9mIFRocm93c0V4Y2VwdGlvbiwgJ0hUTUwgcGFyc2VyIG11
c3QgTk9UIGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUgY29uc3RydWN0b3Ig
dGhyb3dzIGFuIGV4Y2VwdGlvbicpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNl
b2YgSFRNTEVsZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFy
c2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCwgJ1RoZSBmYWxsYmFjayBl
bGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1M
VW5rbm93bkVsZW1lbnQnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJh
Y2sgSFRNTFVua25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciB0
aHJvd3MgYW4gZXhjZXB0aW9uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1zZXRzLWF0
dHJpYnV0ZXMtYW5kLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXNldHMtYXR0cmlidXRlcy1h
bmQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1zZXRzLWF0dHJpYnV0ZXMtYW5kLWNoaWxk
cmVuLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKK2hlbGxvIHdv
cmxkCisKK1BBU1MgSFRNTCBwYXJzZXIgbXVzdCBzZXQgdGhlIGF0dHJpYnV0ZXMgCitQQVNTIEhU
TUwgcGFyc2VyIG11c3QgYXBwZW5kIGNoaWxkIG5vZGVzIAorUEFTUyBIVE1MIHBhcnNlciBtdXN0
IHNldCB0aGUgYXR0cmlidXRlcyBvciBhcHBlbmQgY2hpbGRyZW4gYmVmb3JlIGNhbGxpbmcgY29u
c3RydWN0b3IgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNl
ci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGlsZHJlbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRy
aWJ1dGVzLWFuZC1jaGlsZHJlbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1zZXRzLWF0dHJpYnV0ZXMtYW5kLWNoaWxk
cmVuLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogQ2hhbmdlcyB0byB0aGUg
SFRNTCBwYXJzZXI8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBO
aXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9IkhUTUwgcGFyc2VyIG11c3Qgc2V0IHRoZSBhdHRyaWJ1dGVzIGFuZCBhcHBlbmQg
dGhlIGNoaWxkcmVuIG9uIGEgY3VzdG9tIGVsZW1lbnQiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0n
c3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit2YXIgbnVt
YmVyT2ZBdHRyaWJ1dGVzSW5Db25zdHJ1Y3RvcjsKK3ZhciBudW1iZXJPZkNoaWxkTm9kZXNJbkNv
bnN0cnVjdG9yOworCitjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
CisgICAgY29uc3RydWN0b3IoLi4uYXJncykgeworICAgICAgICBzdXBlciguLi5hcmdzKTsKKyAg
ICAgICAgbnVtYmVyT2ZBdHRyaWJ1dGVzSW5Db25zdHJ1Y3RvciA9IHRoaXMuYXR0cmlidXRlcy5s
ZW5ndGg7CisgICAgICAgIG51bWJlck9mQ2hpbGROb2Rlc0luQ29uc3RydWN0b3IgPSB0aGlzLmNo
aWxkTm9kZXMubGVuZ3RoOworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50
KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKzwvc2NyaXB0PgorPG15
LWN1c3RvbS1lbGVtZW50IGlkPSJjdXN0b20tZWxlbWVudC1pZCIgY2xhc3M9ImNsYXNzMSBjbGFz
czIiPmhlbGxvIDxiPndvcmxkPC9iPjwvbXktY3VzdG9tLWVsZW1lbnQ+Cis8c2NyaXB0PgorCit2
YXIgY3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ215LWN1c3RvbS1lbGVt
ZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxl
bWVudC5nZXRBdHRyaWJ1dGUoJ2lkJyksICdjdXN0b20tZWxlbWVudC1pZCcsICdIVE1MIHBhcnNl
ciBtdXN0IHByZXNlcnZlIHRoZSBpZCBhdHRyaWJ1dGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1
c3RvbUVsZW1lbnQuaWQsICdjdXN0b20tZWxlbWVudC1pZCcsICdIVE1MIHBhcnNlciBtdXN0IHBy
ZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgcmVmbGVjdCBmb3IgdGhlIGlkIGF0dHJpYnV0ZScpOwor
ICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyksICdj
bGFzczEgY2xhc3MyJywgJ0hUTUwgcGFyc2VyIG11c3QgcHJlc2VydmUgdGhlIGNsYXNzIGF0dHJp
YnV0ZScpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5jbGFzc0xpc3QubGVuZ3Ro
LCAyLCAnSFRNTCBwYXJzZXIgbXVzdCBpbml0aWFsaXplIGNsYXNzTGlzdCBvbiBjdXN0b20gZWxl
bWVudHMnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuY2xhc3NMaXN0WzBdLCAn
Y2xhc3MxJywgJ0hUTUwgcGFyc2VyIG11c3QgaW5pdGlhbGl6ZSBjbGFzc0xpc3Qgb24gY3VzdG9t
IGVsZW1lbnRzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNsYXNzTGlzdFsx
XSwgJ2NsYXNzMicsICdIVE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUgY2xhc3NMaXN0IG9uIGN1
c3RvbSBlbGVtZW50cycpOworCisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNoaWxk
Tm9kZXMubGVuZ3RoLCAyLCAnSFRNTCBwYXJzZXIgbXVzdCBhcHBlbmQgY2hpbGQgbm9kZXMnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuY2xhc3NMaXN0WzBdLCAnY2xhc3MxJywg
J0hUTUwgcGFyc2VyIG11c3QgaW5pdGlhbGl6ZSBjbGFzc0xpc3Qgb24gY3VzdG9tIGVsZW1lbnRz
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNsYXNzTGlzdFsxXSwgJ2NsYXNz
MicsICdIVE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUgY2xhc3NMaXN0IG9uIGN1c3RvbSBlbGVt
ZW50cycpOworCit9LCAnSFRNTCBwYXJzZXIgbXVzdCBzZXQgdGhlIGF0dHJpYnV0ZXMnKTsKKwor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNoaWxk
Tm9kZXMubGVuZ3RoLCAyLCAnSFRNTCBwYXJzZXIgbXVzdCBhcHBlbmQgY2hpbGQgbm9kZXMnKTsK
KyAgICBhc3NlcnRfdHJ1ZShjdXN0b21FbGVtZW50LmZpcnN0Q2hpbGQgaW5zdGFuY2VvZiBUZXh0
LCAnSFRNTCBwYXJzZXIgbXVzdCBhcHBlbmQgVGV4dCBub2RlIGNoaWxkIHRvIGEgY3VzdG9tIGVs
ZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuZmlyc3RDaGlsZC5kYXRh
LCAnaGVsbG8gJywgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIFRleHQgbm9kZSBjaGlsZCB0byBh
IGN1c3RvbSBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudC5sYXN0Q2hp
bGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIGEgYnVp
bHRpbiBlbGVtZW50IGNoaWxkIHRvIGEgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1
ZShjdXN0b21FbGVtZW50Lmxhc3RDaGlsZC5maXJzdENoaWxkIGluc3RhbmNlb2YgVGV4dCwgJ0hU
TUwgcGFyc2VyIG11c3QgcHJlc2VydmUgZ3JhbmRjaGlsZCBub2RlcyBvZiBhIGN1c3RvbSBlbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50Lmxhc3RDaGlsZC5maXJzdENo
aWxkLmRhdGEsICd3b3JsZCcsICdIVE1MIHBhcnNlciBtdXN0IHByZXNlcnZlIGdyYW5kY2hpbGQg
bm9kZXMgb2YgYSBjdXN0b20gZWxlbWVudCcpOworfSwgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5k
IGNoaWxkIG5vZGVzJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF9lcXVhbHMo
bnVtYmVyT2ZBdHRyaWJ1dGVzSW5Db25zdHJ1Y3RvciwgMCwgJ0hUTUwgcGFyc2VyIG11c3Qgbm90
IHNldCBhdHRyaWJ1dGVzIG9uIGEgY3VzdG9tIGVsZW1lbnQgYmVmb3JlIGludm9raW5nIHRoZSBj
b25zdHJ1Y3RvcicpOworICAgIGFzc2VydF9lcXVhbHMobnVtYmVyT2ZDaGlsZE5vZGVzSW5Db25z
dHJ1Y3RvciwgMCwgJ0hUTUwgcGFyc2VyIG11c3Qgbm90IGFwcGVuZCBjaGlsZCBub2RlcyB0byBh
IGN1c3RvbSBlbGVtZW50IGJlZm9yZSBpbnZva2luZyB0aGUgY29uc3RydWN0b3InKTsKK30sICdI
VE1MIHBhcnNlciBtdXN0IHNldCB0aGUgYXR0cmlidXRlcyBvciBhcHBlbmQgY2hpbGRyZW4gYmVm
b3JlIGNhbGxpbmcgY29uc3RydWN0b3InKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXVz
ZXMtY29uc3RydWN0ZWQtZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVk
LWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVkLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIEhUTUwgcGFy
c2VyIG11c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGUgY3VzdG9tIGVsZW1lbnQgY29u
c3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgb25lIGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2FsbCAK
K1BBU1MgSFRNTCBwYXJzZXIgbXVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIHRoZSBjdXN0
b20gZWxlbWVudCBjb25zdHJ1Y3RvciBpbnN0ZWFkIHVzaW5nIHRoZSBvbmUgY3JlYXRlZCBpbiBz
dXBlcigpIGNhbGwgCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Bh
cnNlci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0
cnVjdGVkLWVsZW1lbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVtZW50czogQ2hhbmdlcyB0byB0aGUgSFRNTCBwYXJz
ZXI8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVm
PSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9
IkhUTUwgcGFyc2VyIG11c3QgY29uc3RydWN0IGEgY3VzdG9tIGVsZW1lbnQgaW5zdGVhZCBvZiB1
cGdyYWRpbmciPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCitsZXQgYW5vdGhlckVsZW1lbnRDcmVhdGVkQmVmb3Jl
U3VwZXJDYWxsID0gdW5kZWZpbmVkOworbGV0IGVsZW1lbnRDcmVhdGVkQnlTdXBlckNhbGwgPSB1
bmRlZmluZWQ7CitsZXQgc2hvdWxkQ3JlYXRlRWxlbWVudEJlZm9yZVN1cGVyQ2FsbCA9IHRydWU7
CitjbGFzcyBJbnN0YW50aWF0ZXNJdHNlbGZCZWZvcmVTdXBlciBleHRlbmRzIEhUTUxFbGVtZW50
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgaWYgKHNob3VsZENyZWF0ZUVsZW1lbnRC
ZWZvcmVTdXBlckNhbGwpIHsKKyAgICAgICAgICAgIHNob3VsZENyZWF0ZUVsZW1lbnRCZWZvcmVT
dXBlckNhbGwgPSBmYWxzZTsKKyAgICAgICAgICAgIGFub3RoZXJFbGVtZW50Q3JlYXRlZEJlZm9y
ZVN1cGVyQ2FsbCA9IG5ldyBJbnN0YW50aWF0ZXNJdHNlbGZCZWZvcmVTdXBlcigpOworICAgICAg
ICB9CisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIGVsZW1lbnRDcmVhdGVkQnlTdXBlckNhbGwg
PSB0aGlzOworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdpbnN0YW50
aWF0ZXMtaXRzZWxmLWJlZm9yZS1zdXBlcicsIEluc3RhbnRpYXRlc0l0c2VsZkJlZm9yZVN1cGVy
KTsKKworbGV0IHNob3VsZENyZWF0ZUFub3RoZXJJbnN0YW5jZSA9IHRydWU7CitsZXQgYW5vdGhl
ckluc3RhbmNlID0gdW5kZWZpbmVkOworbGV0IGZpcnN0SW5zdGFuY2UgPSB1bmRlZmluZWQ7Citj
bGFzcyBSZXR1cm5zQW5vdGhlckluc3RhbmNlIGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICBzdXBlcigpOworICAgICAgICBpZiAoc2hvdWxkQ3JlYXRl
QW5vdGhlckluc3RhbmNlKSB7CisgICAgICAgICAgICBzaG91bGRDcmVhdGVBbm90aGVySW5zdGFu
Y2UgPSBmYWxzZTsKKyAgICAgICAgICAgIGZpcnN0SW5zdGFuY2UgPSB0aGlzOworICAgICAgICAg
ICAgYW5vdGhlckluc3RhbmNlID0gbmV3IFJldHVybnNBbm90aGVySW5zdGFuY2U7CisgICAgICAg
ICAgICByZXR1cm4gYW5vdGhlckluc3RhbmNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHJldHVybiB0aGlzOworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdy
ZXR1cm5zLWFub3RoZXItaW5zdGFuY2UnLCBSZXR1cm5zQW5vdGhlckluc3RhbmNlKTsKKworPC9z
Y3JpcHQ+Cis8aW5zdGFudGlhdGVzLWl0c2VsZi1iZWZvcmUtc3VwZXI+PC9pbnN0YW50aWF0ZXMt
aXRzZWxmLWJlZm9yZS1zdXBlcj4KKzxyZXR1cm5zLWFub3RoZXItaW5zdGFuY2U+PC9yZXR1cm5z
LWFub3RoZXItaW5zdGFuY2U+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnN0YW50aWF0ZXMtaXRzZWxm
LWJlZm9yZS1zdXBlcicpOworCisgICAgYXNzZXJ0X2VxdWFscyhpbnN0YW5jZSwgZWxlbWVudENy
ZWF0ZWRCeVN1cGVyQ2FsbCwgJ0hUTUwgcGFyc2VyIG11c3QgaW5zZXJ0IHRoZSBlbGVtZW50IHJl
dHVybmVkIGJ5IHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcicpOworICAgIGFzc2VydF9u
b3RfZXF1YWxzKGluc3RhbmNlLCBhbm90aGVyRWxlbWVudENyZWF0ZWRCZWZvcmVTdXBlckNhbGws
ICdIVE1MIHBhcnNlciBtdXN0IG5vdCBpbnNlcnQgYW5vdGhlciBpbnN0YW5jZSBvZiB0aGUgY3Vz
dG9tIGVsZW1lbnQgY3JlYXRlZCBiZWZvcmUgc3VwZXIoKSBjYWxsJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhhbm90aGVyRWxlbWVudENyZWF0ZWRCZWZvcmVTdXBlckNhbGwucGFyZW50Tm9kZSwgbnVs
bCwgJ0hUTUwgcGFyc2VyIG11c3Qgbm90IGluc2VydCBhbm90aGVyIGluc3RhbmNlIG9mIHRoZSBj
dXN0b20gZWxlbWVudCBjcmVhdGVkIGJlZm9yZSBzdXBlcigpIGNhbGwnKTsKKworfSwgJ0hUTUwg
cGFyc2VyIG11c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGUgY3VzdG9tIGVsZW1lbnQg
Y29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgb25lIGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2Fs
bCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdyZXR1cm5zLWFub3RoZXItaW5zdGFuY2UnKTsKKworICAgIGFzc2VydF9l
cXVhbHMoaW5zdGFuY2UsIGFub3RoZXJJbnN0YW5jZSwgJ0hUTUwgcGFyc2VyIG11c3QgaW5zZXJ0
IHRoZSBlbGVtZW50IHJldHVybmVkIGJ5IHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcicp
OworICAgIGFzc2VydF9ub3RfZXF1YWxzKGluc3RhbmNlLCBmaXJzdEluc3RhbmNlLCAnSFRNTCBw
YXJzZXIgbXVzdCBub3QgaW5zZXJ0IHRoZSBlbGVtZW50IGNyZWF0ZWQgYnkgc3VwZXIoKSBjYWxs
IGlmIHRoZSBjb25zdHJ1Y3RvciByZXR1cm5lZCBhbm90aGVyIGVsZW1lbnQnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGZpcnN0SW5zdGFuY2UucGFyZW50Tm9kZSwgbnVsbCwgJ0hUTUwgcGFyc2VyIG11
c3Qgbm90IGluc2VydCB0aGUgZWxlbWVudCBjcmVhdGVkIGJ5IHN1cGVyKCkgY2FsbCBpZiB0aGUg
Y29uc3RydWN0b3IgcmV0dXJuZWQgYW5vdGhlciBlbGVtZW50Jyk7CisKK30sICdIVE1MIHBhcnNl
ciBtdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIGluc3RlYWQgdXNpbmcgdGhlIG9uZSBjcmVhdGVkIGluIHN1cGVyKCkgY2FsbCcpOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272634</attachid>
            <date>2016-03-01 22:33:05 -0800</date>
            <delta_ts>2016-03-01 22:47:42 -0800</delta_ts>
            <desc>GTK build fix</desc>
            <filename>bug-154908-20160301223249.patch</filename>
            <type>text/plain</type>
            <size>49354</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTAzLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgSFRNTCBwYXJzZXIgY29u
c3RydWN0IGN1c3RvbSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGluc3RhbnRpYXRpbmcgY3VzdG9t
IGVsZW1lbnRzIGluc2lkZSB0aGUgcGFyc2VyLiBCYXNlZCBvbiBKYW4gRjJGIGRpc2N1c3Npb24s
CisgICAgICAgIHRoZSBIVE1MIHBhcnNlciBpcyBnb2luZyB0byBzeW5jaHJvbm91c2x5IGNvbnN0
cnVjdCBjdXN0b20gZWxlbWVudHMuIFdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcgor
ICAgICAgICB0aHJvd3MsIHRoZSBIVE1MIHBhcnNlciBjcmVhdGVzIGEgSFRNTFVua25vd25FbGVt
ZW50IGluc3RlYWQuCisKKyAgICAgICAgSW4gb3VyIGltcGxlbWVudGF0aW9uLCB3ZSBwYXVzZSB0
aGUgcGFyc2VyIGNvbXBsZXRlbHkgYW5kIGNvbnN0cnVjdCBjdXN0b20gZWxlbWVudHMgdXNpbmcg
dGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIHVzZWQgdG8gcnVuIGF1dGhvciBzY3JpcHRzLiBJ
dCdzIHBvc3NpYmxlIHRoYXQgd2UgbWF5IHdhbnQgdG8gYXBwbHkgc29tZSBvcHRpbWl6YXRpb25z
IHRvCisgICAgICAgIHRvIG1ha2UgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9uIGJ1dCBpdCdz
IHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGdldCBzZW1hbnRpY3MgcmlnaHQgZmlyc3QuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0
cy1jdXN0b20tZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jdXN0b20tZWxlbWVu
dHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1
dGVzLWFuZC1jaGlsZHJlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3RvbS1lbGVtZW50
cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50KTogQWRkZWQg
U2hvdWxkQ2xlYXJFeGNlcHRpb24gYXMgYW4gYXJndW1lbnQKKyAgICAgICAgdG8gYmUgdXNlZCBi
eSB0aGUgSFRNTCBwYXJzZXIgc2luY2UgdGhlIHBhcnNlciBjYW4ndCByZS10aHJvdyB0byBhbnl3
aGVyZSBvciBmYWlsIHBhcnNpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb24pOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFs
aWRhdGlvbik6IERvIG5vdCBjbGVhciB0aGUgZXhjZXB0aW9uIGhlcmUgc2luY2UgY3JlYXRlRWxl
bWVudAorICAgICAgICBtdXN0IHJlLXRocm93IHRoZSBleGNlcHRpb24gdGhyb3duIGJ5IGEgY3Vz
dG9tIGVsZW1lbnQgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudEZvckJpbmRpbmdzKToKKworICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgor
ICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIENvbnN0cnVjdG9yRnVuY3Rpb25N
YXBFbnRyeSB3aGljaCBjb250YWlucyB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24KKyAgICAgICAg
YXMgd2VsbCBhcyB0aGUgcXVhbGlmaWVkIG5hbWUuCisgICAgICAgIChwcmludEZhY3RvcnlIZWFk
ZXJGaWxlKTogQWRkZWQgYSB2YXJpYW50IG9mIGNyZWF0ZUtub3duRWxlbWVudCBhbmQgY3JlYXRl
RWxlbWVudCB0aGF0IHRha2VzCisgICAgICAgIEF0b21pY1N0cmluZyBpbnN0ZWFkIG9mIFF1YWxp
ZmllZE5hbWUuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRBdHRyaWJ1dGVzKTogQWRkZWQgYSB2YXJpYW50IHRo
YXQgdGFrZXMgVmVjdG9yPEF0dHJpYnV0ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNl
KTogQWRkZWQuIFJldHVybnMgYQorICAgICAgICBjdXN0b20gZWxlbWVudCBpbnRlcmZhY2Ugd2hl
biB0aGUgZWxlbWVudCBkb2Vzbid0IG1hdGNoIGFueSBidWlsdGluIGVsZW1lbnQgYW5kIHRoZXJl
IGlzIGEgY3VzdG9tCisgICAgICAgIGVsZW1lbnQgZGVmaW5pdGlvbiB0aGF0IG1hdGNoZXMgdGhl
IHNwZWNpZmllZCBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6
Omluc2VydEN1c3RvbUVsZW1lbnQpOiBBZGRlZC4gTGlrZSBpbnNlcnRFbGVtZW50IGJ1dCBhbHNv
IHNldHMgdGhlCisgICAgICAgIGF0dHJpYnV0ZXMgb24gdGhlIG5ld2x5IGNyZWF0ZWQgY3VzdG9t
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRl
SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKTogRXh0cmFjdGVkIGZyb20K
KyAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnQuIFdoZW4gY3VzdG9tRWxlbWVudEludGVyZmFjZSBp
cyBub3QgbnVsbHB0ciwgd2Ugb3B0aW9uYWxseSBmaW5kIHRoZSBjdXN0b20KKyAgICAgICAgZWxl
bWVudCBpbnRlcmZhY2UgYW5kIHJldHVybiBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oOgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKTogQ3JlYXRlIGEgY3VzdG9tIGVsZW1l
bnQgd2hlbiB0aGVyZQorICAgICAgICBpcyBhIHBlbmRpbmcgY3VzdG9tIGVsZW1lbnQgdG8gY3Jl
YXRlIChpLmUuIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0IGlzIG5vdCBlbXB0eSkuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgor
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKTogQWRkZWQgYSB2YXJpYW50IHVzZWQgZm9yIGN1c3Rv
bSBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0
ZW0pOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YTo6Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4gSXQgbmVlZHMgdG8gYmUgaW4KKyAgICAg
ICAgdGhlIGNwcCBmaWxlIHRvIGF2b2lkIGludHJvZHVjaW5nIG1vcmUgaGVhZGVyIGRlcGVuZGVu
Y2llcyBpbiBIVE1MVHJlZUJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhOjp+Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KTogVXNlIGluc2VydEdlbmVyaWNIVE1MRWxlbWVudCB3aGVuIGNyZWF0aW5nCisgICAg
ICAgIGEgZ2VuZXJpYyBlbGVtZW50IHRoYXQgY291bGQgYmUgY3VzdG9tIGVsZW1lbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRHZW5lcmljSFRNTEVsZW1lbnQp
OiBBZGRlZC4gQ3JlYXRlIGFuZCBpbnNlcnQgYSBuZXcgZWxlbWVudAorICAgICAgICBvciBzZXQg
bV9jdXN0b21FbGVtZW50VG9Db25zdHJ1Y3Qgc28gdGhhdCB0aGUgSFRNTERvY3VtZW50UGFyc2Vy
IHdpbGwgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KTogQWRkZWQu
IENhbGxlZCBieSBIVE1MRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgd2hlbiBpdCBmaW5pc2hlcyBj
cmVhdGluZyBhIG5ldyBjdXN0b20gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjp0YWtl
Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKTogUmVuYW1lZCBm
cm9tIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0LgorICAgICAgICBDaGVja3MgdGhlIGV4aXN0ZW5j
ZSBvZiBtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCBhcyB3ZWxsIGFzIG1fc2NyaXB0VG9Qcm9j
ZXNzLgorCiAyMDE2LTAyLTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJp
bmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1c2FibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkocmV2
aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lCiB7CiB9CiAKLVJlZlB0cjxFbGVtZW50
PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1lbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQorUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIFNob3VsZENs
ZWFyRXhjZXB0aW9uIHNob3VsZENsZWFyRXhjZXB0aW9uKQogewogICAgIGlmICghY2FuSW52b2tl
Q2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04OCw2ICs4OCw5IEBAIFJl
ZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UKICAgICBKU1ZhbHVlIG5ld0Vs
ZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CiAKKyAgICBpZiAoc2hvdWxkQ2xlYXJF
eGNlcHRpb24gPT0gU2hvdWxkQ2xlYXJFeGNlcHRpb246OkNsZWFyICYmIHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgc3RhdGUtPmNsZWFyRXhjZXB0aW9uKCk7CisKICAgICBpZiAobmV3
RWxlbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxFbGVt
ZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIGVudW0gY2xh
c3MgU2hvdWxkQ2xlYXJFeGNlcHRpb24geyBDbGVhciwgRG9Ob3RDbGVhciB9OworICAgIFJlZlB0
cjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNob3VsZENs
ZWFyRXhjZXB0aW9uKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OSwzNSArODc5LDM1IEBAIHZvaWQgRG9jdW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRh
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50
KHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIGRv
Y3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVu
dDsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgYXV0byogZGVmaW5pdGlvbnMg
PSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKICAgICBpZiAoVU5MSUtFTFko
ZGVmaW5pdGlvbnMpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9u
cy0+ZmluZEludGVyZmFjZShxdWFsaWZpZWROYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBpbnRl
cmZhY2UtPmNvbnN0cnVjdEVsZW1lbnQocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9ucy0+ZmluZEludGVyZmFjZShsb2Nh
bE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGludGVyZmFjZS0+Y29uc3RydWN0RWxlbWVudChs
b2NhbE5hbWUsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb246
OkRvTm90Q2xlYXIpOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKFVOTElLRUxZKCFEb2N1bWVu
dDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSkpKSB7CisgICAgaWYgKFVO
TElLRUxZKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUobG9jYWxOYW1lKSkpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpLCBkb2N1bWVudCk7
CiB9CiAKIFJlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudEZvckJpbmRpbmdz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudFdpdGhO
YW1lVmFsaWRhdGlvbigqdGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlzLCBuYW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVjKTsKIAogICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBuYW1lLCBlYyk7CiAKICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJ
KHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3
b3JraW5nIGNvcHkpCkBAIC05ODYsMTAgKzk4NiwyOCBAQCBFTkQKICAgICAgICAgJGFyZ3VtZW50
TGlzdCA9ICJuYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyIjsKICAgICB9CiAKKyAgICBt
eSAkbG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4ID0gbGMoJHBhcmFtZXRlcnN7bmFtZXNwYWNlUHJl
Zml4fSk7CisKICAgICBwcmludENvbnN0cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7
CiAKICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4mIG1hcCkKKworc3Ry
dWN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSB7CisgICAgQ29uc3RydWN0b3JGdW5jdGlv
bk1hcEVudHJ5KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0
aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorICAgICAgICA6IGZ1bmN0aW9uKGZ1bmN0
aW9uKQorICAgICAgICAsIHF1YWxpZmllZE5hbWUoJm5hbWUpCisgICAgeyB9CisKKyAgICBDb25z
dHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkoKQorICAgICAgICA6IGZ1bmN0aW9uKG51bGxwdHIpCisg
ICAgICAgICwgcXVhbGlmaWVkTmFtZShudWxscHRyKQorICAgIHsgfQorCisgICAgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVuY3Rpb247CisgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSogcXVhbGlmaWVkTmFtZTsgLy8gVXNlIHBvaW50ZXIgaW5zdGVhZCBvZiByZWZl
cmVuY2Ugc28gdGhhdCBlbXB0eVZhbHVlKCkgaW4gSGFzaE1hcCBpcyBjaGVhcCB0byBjcmVhdGUu
Cit9OworCitzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDb25zdHJ1Y3RvckZ1
bmN0aW9uTWFwRW50cnk+JiBtYXApCiB7CiAgICAgc3RydWN0IFRhYmxlRW50cnkgewogICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOwpAQCAtMTAwNiwyNSArMTAyNCw0MiBAQCBFTkQK
ICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
dGFibGUpOyArK2kpCi0gICAgICAgIG1hcC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5p
bXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9uKTsKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5uYW1l
LmxvY2FsTmFtZSgpLmltcGwoKSwgQ29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5KHRhYmxlW2ld
LmZ1bmN0aW9uLCB0YWJsZVtpXS5uYW1lKSk7CiB9CiAKLVJlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKKworc3RhdGljIENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSBmaW5kJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4+IGZ1
bmN0aW9uczsKLSAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcG9w
dWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMpOwotICAgICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZnVuY3Rp
b25zLmdldCgpLmdldChuYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgaWYgKExJS0VMWShm
dW5jdGlvbikpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigkYXJndW1lbnRMaXN0KTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ29uc3RydWN0
b3JGdW5jdGlvbk1hcEVudHJ5Pj4gbWFwOworICAgIGlmIChtYXAuZ2V0KCkuaXNFbXB0eSgpKQor
ICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWN0b3J5TWFwKG1hcCk7Cisg
ICAgcmV0dXJuIG1hcC5nZXQoKS5nZXQobG9jYWxOYW1lLmltcGwoKSk7Cit9CisKK1JlZlB0cjwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CisgICAgY29uc3QgQ29uc3RydWN0b3JGdW5jdGlvbk1h
cEVudHJ5JiBlbnRyeSA9IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudENvbnN0cnVj
dG9yRnVuY3Rpb24obG9jYWxOYW1lKTsKKyAgICBpZiAoTElLRUxZKGVudHJ5LmZ1bmN0aW9uKSkg
eworICAgICAgICBBU1NFUlQoZW50cnkucXVhbGlmaWVkTmFtZSk7CisgICAgICAgIGNvbnN0IGF1
dG8mIG5hbWUgPSAqZW50cnkucXVhbGlmaWVkTmFtZTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmZ1
bmN0aW9uKCRhcmd1bWVudExpc3QpOworICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK1JlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRG
b3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQgPSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudCgkYXJndW1lbnRMaXN0KTsKICAgICBp
ZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVs
bCgpOworICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVh
dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVm
aXh9TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOworfQorCitSZWY8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQkZm9y
bUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorewor
ICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKG5hbWUubG9jYWxOYW1l
KCkpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKQorICAgICAgICByZXR1cm4gZW50
cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7CiAgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxi
YWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiB9CiAKQEAgLTEwNjUs
MTAgKzExMDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRU5ECiA7CiAKLXByaW50IEYgIiAg
ICAgICAgc3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gY3JlYXRl
S25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQgRiAi
ICAgICAgICBzdGF0aWMgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERvY3VtZW50JiI7
CiBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9IGVxICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBm
YWxzZSk7XG5cbiI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiI7CitwcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERv
Y3VtZW50JiI7CitwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKK3ByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIgPSBmYWxzZSk7XG4iOworcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUmVmPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGxvY2FsTmFtZSwgRG9jdW1lbnQmIjsKIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51
bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBi
b29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHJldmlzaW9u
IDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkhUTUxU
cmVlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDMsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkhUTUxQaWN0dXJlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxVbmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTUxLDExICs1MywxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIEF0b21pY0hUTUxU
b2tlbiogdG9rZW4sIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQ
b2xpY3kpCiB7CiAgICAgaWYgKCFzY3JpcHRpbmdDb250ZW50SXNBbGxvd2VkKHBhcnNlckNvbnRl
bnRQb2xpY3kpKQotICAgICAgICBlbGVtZW50LnN0cmlwU2NyaXB0aW5nQXR0cmlidXRlcyh0b2tl
bi0+YXR0cmlidXRlcygpKTsKLSAgICBlbGVtZW50LnBhcnNlclNldEF0dHJpYnV0ZXModG9rZW4t
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsZW1lbnQuc3RyaXBTY3JpcHRpbmdBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOworICAgIGVsZW1lbnQucGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNldEF0dHJpYnV0ZXMoRWxlbWVudCYgZWxlbWVu
dCwgQXRvbWljSFRNTFRva2VuKiB0b2tlbiwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250
ZW50UG9saWN5KQoreworICAgIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgdG9rZW4tPmF0dHJpYnV0
ZXMoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAKIHN0YXRpYyBib29sIGhhc0ltcGxpZWRF
bmRUYWcoY29uc3QgSFRNTFN0YWNrSXRlbSYgaXRlbSkKQEAgLTQ4Miw2ICs0ODksMjYgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZQogICAgIG1fb3BlbkVsZW1lbnRz
LnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgKnRv
a2VuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRD
dXN0b21FbGVtZW50SW50ZXJmYWNlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKiBpbnRlcmZhY2UgPSBudWxscHRyOworICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50
ZXJmYWNlKHRva2VuLCAmaW50ZXJmYWNlKTsKKyAgICBpZiAoVU5MSUtFTFkoaW50ZXJmYWNlKSkK
KyAgICAgICAgcmV0dXJuIGludGVyZmFjZTsKKyAgICBhdHRhY2hMYXRlcigmY3VycmVudE5vZGUo
KSwgZWxlbWVudCk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVh
dGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCAqdG9rZW4pKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q3VzdG9tRWxlbWVudChS
ZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAgc2V0QXR0cmlidXRlcyhlbGVtZW50
LmdldCgpLCBhdHRyaWJ1dGVzLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIGF0dGFjaExh
dGVyKCZjdXJyZW50Tm9kZSgpLCBlbGVtZW50LnB0cigpKTsKKyAgICBtX29wZW5FbGVtZW50cy5w
dXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnQpLCBsb2NhbE5hbWUsIGF0
dHJpYnV0ZXMpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CkBAIC02MzMsMjgg
KzY2MCw1MyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvCiAgICAg
cmV0dXJuIGN1cnJlbnROb2RlKCkuZG9jdW1lbnQoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQorUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoCisgICAgQXRvbWljSFRNTFRva2VuKiB0b2tl
biwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiogY3VzdG9tRWxlbWVudEludGVyZmFjZSkKIHsK
LSAgICBRdWFsaWZpZWROYW1lIHRhZ05hbWUobnVsbEF0b20sIHRva2VuLT5uYW1lKCksIHhodG1s
TmFtZXNwYWNlVVJJKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHRva2Vu
LT5uYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuJ3QgdXNlIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpjcmVhdGVFbGVtZW50IGJlY2F1c2Ugd2UKICAgICAvLyBoYXZlIHRvIHBhc3MgdGhlIGN1
cnJlbnQgZm9ybSBlbGVtZW50LiAgV2Ugc2hvdWxkIHJld29yayBmb3JtIGFzc29jaWF0aW9uCiAg
ICAgLy8gdG8gb2NjdXIgYWZ0ZXIgY29uc3RydWN0aW9uIHRvIGFsbG93IGJldHRlciBjb2RlIHNo
YXJpbmcgaGVyZS4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2NyZWF0ZS1hbi1l
bGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCA9IG93bmVy
RG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWY8RWxlbWVudD4gZWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBvd25lckRvY3VtZW50LCBp
bnNpZGVUZW1wbGF0ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKLSAgICAKKyAg
ICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25v
d25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkg
eworCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgYXV0byogZGVmaW5pdGlv
bnMgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKS5jdXN0b21FbGVtZW50RGVmaW5pdGlv
bnMoKTsKKyAgICAgICAgaWYgKGN1c3RvbUVsZW1lbnRJbnRlcmZhY2UgJiYgVU5MSUtFTFkoZGVm
aW5pdGlvbnMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlv
bnMtPmZpbmRJbnRlcmZhY2UobG9jYWxOYW1lKSkgeworICAgICAgICAgICAgICAgICpjdXN0b21F
bGVtZW50SW50ZXJmYWNlID0gaW50ZXJmYWNlOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oY3VzdG9tRWxlbWVudEludGVyZmFjZSk7CisjZW5kaWYKKworICAgICAgICBlbGVtZW50ID0g
SFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxO
YW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpKTsK
KyAgICB9CisgICAgQVNTRVJUKGVsZW1lbnQpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBo
YWNrIHRvIGNvbm5lY3QgaW1hZ2VzIHRvIHBpY3R1cmVzIGJlZm9yZSB0aGUgaW1hZ2UgaGFzCiAg
ICAgLy8gYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIHJlbW92ZWQg
b25jZSBhc3luY2hyb25vdXMgaW1hZ2UKICAgICAvLyBsb2FkaW5nIGlzIHdvcmtpbmcuCi0gICAg
aWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVudD4oY3VycmVudE5vZGUoKSkgJiYgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQuZ2V0KCkpLnNldFBpY3R1cmVFbGVtZW50KCZkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1l
bnQ+KGN1cnJlbnROb2RlKCkpKTsKKyAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJy
ZW50Tm9kZSgpKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkpCisgICAgICAgIGRv
d25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KS5zZXRQaWN0dXJlRWxlbWVudCgmZG93
bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJyZW50Tm9kZSgpKSk7CiAKLSAgICBzZXRBdHRy
aWJ1dGVzKGVsZW1lbnQuZ2V0KCksIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAg
IHNldEF0dHJpYnV0ZXMoKmVsZW1lbnQsIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOwog
ICAgIEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVtZW50
OwogfQogCitSZWY8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4s
IG51bGxwdHIpOworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpOworfQorCiBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTENvbnN0cnVjdGlvblNp
dGU6OmNyZWF0ZUVsZW1lbnRGcm9tU2F2ZWRUb2tlbihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewog
ICAgIC8vIE5PVEU6IE1vdmluZyBmcm9tIGl0ZW0gLT4gdG9rZW4gLT4gaXRlbSBjb3BpZXMgdGhl
IEF0dHJpYnV0ZSB2ZWN0b3IgdHdpY2UhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgQXRvbWljSFRNTFRva2VuOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OworY2xhc3MgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwpAQCAtMTAzLDYg
KzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRDb21tZW50T25Eb2N1bWVudChBdG9t
aWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChB
dG9taWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBpbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2Uo
QXRvbWljSFRNTFRva2VuKik7CisgICAgdm9pZCBpbnNlcnRDdXN0b21FbGVtZW50KFJlZjxFbGVt
ZW50PiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4m
KTsKKyNlbmRpZgogICAgIHZvaWQgaW5zZXJ0U2VsZkNsb3NpbmdIVE1MRWxlbWVudChBdG9taWNI
VE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEZvcm1hdHRpbmdFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOwogICAgIHZvaWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiop
OwpAQCAtMTk0LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmRGb3N0ZXJTaXRl
KEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYpOwogCisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9taWNIVE1MVG9rZW4q
LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqKik7CiAgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZUhU
TUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiopOwogICAgIFJlZjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxOTcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBA
CiAjaW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1
bm5lci5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIkhUTUxVbmtu
b3duRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OCw4ICsxOTAsMjMgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYQogewogICAgIEFTU0VSVChzY3JpcHRpbmdDb250ZW50
SXNBbGxvd2VkKHBhcnNlckNvbnRlbnRQb2xpY3koKSkpOwogCisjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKKyAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rp
b25EYXRhPiBjb25zdHJ1Y3Rpb25EYXRhID0gbV90cmVlQnVpbGRlci0+dGFrZUN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhKCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5o
YXNQYXJzZXJCbG9ja2luZ1NjcmlwdFdvcmsoKSk7CisKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3Rpb25EYXRhLT5pbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1l
bnQoY29uc3RydWN0aW9uRGF0YS0+bmFtZSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpTaG91
bGRDbGVhckV4Y2VwdGlvbjo6Q2xlYXIpOworICAgICAgICBpZiAoIW5ld0VsZW1lbnQpIC8vIEZJ
WE1FOiBUaGlzIGNhbGwgdG8gZG9jdWVtbnQoKSBpcyB3cm9uZyBpbiBzb21lIGNhc2VzLgorICAg
ICAgICAgICAgbmV3RWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGNvbnN0cnVjdGlvbkRhdGEtPm5hbWUsIHhodG1sTmFtZXNwYWNlVVJJ
KSwgKmRvY3VtZW50KCkpOworCisgICAgICAgIEFTU0VSVChuZXdFbGVtZW50KTsKKyAgICAgICAg
bV90cmVlQnVpbGRlci0+ZGlkQ3JlYXRlQ3VzdG9tT3JDYWxsYmFja0VsZW1lbnQobmV3RWxlbWVu
dC5yZWxlYXNlTm9uTnVsbCgpLCAqY29uc3RydWN0aW9uRGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogICAgIFRleHRQb3NpdGlvbiBzY3JpcHRTdGFydFBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKTsKICAgICBpZiAoYXV0byBzY3JpcHRF
bGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFydFBv
c2l0aW9uKSkgeworICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2Nr
aW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1
bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdtZW50LgogICAgICAgICBpZiAobV9zY3Jp
cHRSdW5uZXIpCiAgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVt
ZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CkBAIC00NTksNyArNDc2LDcgQEAg
Ym9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcgogICAgIC8vIFRoZSBzY3Jp
cHQgcnVubmVyIHdpbGwgaG9sZCB0aGUgc2NyaXB0IHVudGlsIGl0cyBsb2FkZWQgYW5kIHJ1bi4g
RHVyaW5nCiAgICAgLy8gYW55IG9mIHRoaXMgdGltZSwgd2Ugd2FudCB0byBjb3VudCBvdXJzZWx2
ZXMgYXMgIndhaXRpbmcgZm9yIGEgc2NyaXB0IiBhbmQgdGh1cwogICAgIC8vIHJ1biB0aGUgcHJl
bG9hZCBzY2FubmVyLCBhcyB3ZWxsIGFzIGRlbGF5IGNvbXBsZXRpb24gb2YgcGFyc2luZy4KLSAg
ICBib29sIHRyZWVCdWlsZGVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3RyZWVCdWlsZGVyLT5oYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpOworICAgIGJvb2wgdHJlZUJ1aWxkZXJIYXNCbG9ja2luZ1Nj
cmlwdCA9IG1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpOwogICAg
IGJvb2wgc2NyaXB0UnVubmVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3NjcmlwdFJ1bm5lciAmJiBt
X3NjcmlwdFJ1bm5lci0+aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKTsKICAgICAvLyBTaW5jZSB0
aGUgcGFyc2VyIGlzIHBhdXNlZCB3aGlsZSBhIHNjcmlwdCBydW5uZXIgaGFzIGEgYmxvY2tpbmcg
c2NyaXB0LCBpdCBzaG91bGQKICAgICAvLyBuZXZlciBiZSBwb3NzaWJsZSB0byBlbmQgdXAgd2l0
aCBib3RoIG9iamVjdHMgaG9sZGluZyBhIGJsb2NraW5nIHNjcmlwdC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgJKHJldmlzaW9uIDE5NzIyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIVE1MU3RhY2tJdGVtIDogcHVibGljIFJlZkNvdW50
ZWQ8CiBwdWJsaWM6CiAgICAgLy8gTm9ybWFsIEhUTUxFbGVtZW50U3RhY2sgYW5kIEhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QgaXRlbXMuCiAgICAgc3RhdGljIFJlZjxIVE1MU3RhY2tJdGVtPiBj
cmVhdGUoUmVmPEVsZW1lbnQ+JiYsIEF0b21pY0hUTUxUb2tlbiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJID0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CisgICAgc3Rh
dGljIFJlZjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CiAKICAgICAvLyBEb2N1bWVudCBm
cmFnbWVudCBvciBlbGVtZW50IGZvciBwYXJzaW5nIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZjxI
VE1MU3RhY2tJdGVtPiBjcmVhdGUoRWxlbWVudCYpOwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgSFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiwgQXRvbWljSFRN
TFRva2VuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOworICAgIEhUTUxTdGFj
a0l0ZW0oUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsK
ICAgICBleHBsaWNpdCBIVE1MU3RhY2tJdGVtKEVsZW1lbnQmKTsKICAgICBleHBsaWNpdCBIVE1M
U3RhY2tJdGVtKERvY3VtZW50RnJhZ21lbnQmKTsKIApAQCAtODksNiArOTEsMjEgQEAgaW5saW5l
IFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MU3RhY2tJdGVtOgogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShlbGVtZW50KSwgdG9rZW4sIG5hbWVzcGFjZVVSSSkp
OwogfQogCitpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4m
JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQor
ICAgIDogbV9ub2RlKFdURk1vdmUoZWxlbWVudCkpCisgICAgLCBtX25hbWVzcGFjZVVSSShuYW1l
c3BhY2VVUkkpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCisgICAgLCBtX2F0dHJpYnV0
ZXMoYXR0cmlidXRlcykKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8g
bW92ZSB0aGUgYXR0cmlidXRlcyB2ZWN0b3IgaW4gdGhlIG5vcm1hbCBjb2RlIHBhdGggaW5zdGVh
ZCBvZiBjb3B5aW5nIGl0LgorfQorCitpbmxpbmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFj
a0l0ZW06OmNyZWF0ZShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBlbGVtZW50LmdldCgpLm5hbWVzcGFj
ZVVSSSgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShl
bGVtZW50KSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkksIGF0dHJpYnV0ZXMpKTsKK30KKwogaW5s
aW5lIEhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0ZW0oRWxlbWVudCYgZWxlbWVudCkKICAgICA6
IG1fbm9kZShlbGVtZW50KQogICAgICwgbV9uYW1lc3BhY2VVUkkoZWxlbWVudC5uYW1lc3BhY2VV
UkkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgpAQCAtNTAsNiArNTEs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKFJlZjxKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U+JiYgaW50ZXJmYWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorICAgIDogaW50ZXJmYWNlKFdURk1vdmUoaW50
ZXJmYWNlKSkKKyAgICAsIG5hbWUobmFtZSkKKyAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykg
Ly8gRklYTUU6IEF2b2lkIGNvcHlpbmcgYXR0cmlidXRlcy4KK3sgfQorCitDdXN0b21FbGVtZW50
Q29uc3RydWN0aW9uRGF0YTo6fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKCkKK3sgfQor
CisjZW5kaWYKKwogbmFtZXNwYWNlIHsKIAogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2VPclJlcGxh
Y2VtZW50Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTg5Niw5ICs5MTAsMjcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvcgogICAgIH0KICNlbmRpZgogICAg
IG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOworICAgIGlu
c2VydEdlbmVyaWNIVE1MRWxlbWVudCh0b2tlbik7Cit9CisKK2lubGluZSB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6aW5zZXJ0R2VuZXJpY0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
Cit7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBhdXRvKiBpbnRlcmZhY2UgPSBt
X3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKCZ0b2tl
bik7CisgICAgaWYgKFVOTElLRUxZKGludGVyZmFjZSkpCisgICAgICAgIG1fY3VzdG9tRWxlbWVu
dFRvQ29uc3RydWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9u
RGF0YT4oKmludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCB0b2tlbi5hdHRyaWJ1dGVzKCkpOworI2Vs
c2UKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoJnRva2VuKTsKKyNlbmRpZgogfQogCisj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkaWRDcmVh
dGVDdXN0b21PckNhbGxiYWNrRWxlbWVudChSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBDdXN0b21F
bGVtZW50Q29uc3RydWN0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBtX3RyZWUuaW5zZXJ0Q3VzdG9t
RWxlbWVudChXVEZNb3ZlKGVsZW1lbnQpLCBkYXRhLm5hbWUsIGRhdGEuYXR0cmlidXRlcyk7Cit9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCShy
ZXZpc2lvbiAxOTcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U7CiBjbGFzcyBIVE1MRG9j
dW1lbnRQYXJzZXI7CiAKK3N0cnVjdCBDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSB7Cisg
ICAgQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEoUmVmPEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZT4mJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8QXR0cmlidXRl
PiYpOworICAgIH5DdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSgpOworCisgICAgUmVmPEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZT4gaW50ZXJmYWNlOworICAgIEF0b21pY1N0cmluZyBuYW1l
OworICAgIFZlY3RvcjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7Cit9OworCiBjbGFzcyBIVE1MVHJl
ZUJ1aWxkZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDks
MTEgKzU5LDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY29uc3RydWN0VHJlZShBdG9taWNIVE1M
VG9rZW4mKTsKIAotICAgIGJvb2wgaGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKSBjb25zdDsKKyAg
ICBib29sIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpIGNvbnN0OwogCiAgICAgLy8gTXVz
dCBiZSBjYWxsZWQgdG8gdGFrZSB0aGUgcGFyc2VyLWJsb2NraW5nIHNjcmlwdCBiZWZvcmUgY2Fs
bGluZyB0aGUgcGFyc2VyIGFnYWluLgogICAgIFJlZlB0cjxFbGVtZW50PiB0YWtlU2NyaXB0VG9Q
cm9jZXNzKFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbik7CiAKKyNpZiBFTkFCTEUo
Q1VTVE9NX0VMRU1FTlRTKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDdXN0b21FbGVtZW50Q29uc3Ry
dWN0aW9uRGF0YT4gdGFrZUN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKCkgeyByZXR1cm4g
V1RGTW92ZShtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCk7IH0KKyAgICB2b2lkIGRpZENyZWF0
ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KFJlZjxFbGVtZW50PiYmLCBDdXN0b21FbGVtZW50Q29u
c3RydWN0aW9uRGF0YSYpOworI2VuZGlmCisKICAgICAvLyBEb25lLCBjbG9zZSBhbnkgb3BlbiB0
YWdzLCBldGMuCiAgICAgdm9pZCBmaW5pc2hlZCgpOwogCkBAIC0xNjUsNiArMTgwLDggQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSgpOwogCisg
ICAgdm9pZCBpbnNlcnRHZW5lcmljSFRNTEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CisKICNp
ZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICB2b2lkIHByb2Nlc3NUZW1wbGF0ZVN0YXJ0
VGFnKEF0b21pY0hUTUxUb2tlbiYpOwogICAgIGJvb2wgcHJvY2Vzc1RlbXBsYXRlRW5kVGFnKEF0
b21pY0hUTUxUb2tlbiYpOwpAQCAtMjA0LDYgKzIyMSw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PEVsZW1lbnQ+IG1fc2NyaXB0VG9Qcm9jZXNzOyAvLyA8c2NyaXB0PiB0YWcgd2hpY2ggbmVlZHMg
cHJvY2Vzc2luZyBiZWZvcmUgcmVzdW1pbmcgdGhlIHBhcnNlci4KICAgICBUZXh0UG9zaXRpb24g
bV9zY3JpcHRUb1Byb2Nlc3NTdGFydFBvc2l0aW9uOyAvLyBTdGFydGluZyBsaW5lIG51bWJlciBv
ZiB0aGUgc2NyaXB0IHRhZyBuZWVkaW5nIHByb2Nlc3NpbmcuCiAKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IG1fY3VzdG9tRWxlbWVudFRvQ29uc3Ry
dWN0OworCiAgICAgYm9vbCBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSB7IGZhbHNlIH07CiAK
ICAgICBib29sIG1fZnJhbWVzZXRPayB7IHRydWUgfTsKQEAgLTIzNSwxMCArMjU0LDExIEBAIGlu
bGluZSBib29sIEhUTUxUcmVlQnVpbGRlcjo6aXNQYXJzaW5nRnIKICAgICByZXR1cm4gISFtX2Zy
YWdtZW50Q29udGV4dC5mcmFnbWVudCgpOwogfQogCi1pbmxpbmUgYm9vbCBIVE1MVHJlZUJ1aWxk
ZXI6Omhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkgY29uc3QKK2lubGluZSBib29sIEhUTUxUcmVl
QnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKCkgY29uc3QKIHsKICAgICBBU1NF
UlQoIW1fZGVzdHJveWVkKTsKLSAgICByZXR1cm4gISFtX3NjcmlwdFRvUHJvY2VzczsKKyAgICBB
U1NFUlQoIShtX3NjcmlwdFRvUHJvY2VzcyAmJiBtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCkp
OworICAgIHJldHVybiBtX3NjcmlwdFRvUHJvY2VzcyB8fCBtX2N1c3RvbUVsZW1lbnRUb0NvbnN0
cnVjdDsKIH0KIAogaW5saW5lIERvY3VtZW50RnJhZ21lbnQqIEhUTUxUcmVlQnVpbGRlcjo6RnJh
Z21lbnRQYXJzaW5nQ29udGV4dDo6ZnJhZ21lbnQoKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTk3MjIwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTYtMDMtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTWFrZSBIVE1MIHBhcnNlciBjb25zdHJ1Y3QgY3VzdG9tIGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXM0MgdGVz
dGhhcm5lc3MuanMgYmFzZWQgdGVzdHMgZm9yIGluc3RhbnRpYXRpbmcgY3VzdG9tIGVsZW1lbnRz
IGluc2lkZSB0aGUgSFRNTCBwYXJzZXIuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9wYXJzZXI6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9w
YXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWNvbnN0cnVjdHMtY3Vz
dG9tLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRz
L3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxlbWVudC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFs
bHNiYWNrLXRvLXVua25vd24tZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1
c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJz
ZXIvcGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVk
LWVsZW1lbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVt
ZW50cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sOiBBZGRlZC4K
KwogMjAxNi0wMi0yNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWJhc2VsaW5lIHRlc3RzIGZvciBpb3Mtc2ltdWxhdG9yIGFmdGVyIHIxOTcxNjIKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3Ry
dWN0cy1jdXN0b20tZWxlbWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20t
ZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgSFRNTCBw
YXJzZXIgbXVzdCBOT1QgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgYmVmb3JlIGRlZmluZUVsZW1l
bnQgaXMgY2FsbGVkIAorUEFTUyBIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGRlZmluZWQgY3Vz
dG9tIGVsZW1lbnQgYmVmb3JlIGV4ZWN1dGluZyBpbmxpbmUgc2NyaXB0cyAKKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1
c3RvbS1lbGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9t
LWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9w
YXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3Vz
dG9tIEVsZW1lbnRzOiBDaGFuZ2VzIHRvIHRoZSBIVE1MIHBhcnNlcjwvdGl0bGU+Cis8bWV0YSBu
YW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJr
aXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iSFRNTCBwYXJzZXIgY3JlYXRl
cyBhIGN1c3RvbSBlbGVtZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhy
ZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPG15LWN1c3RvbS1lbGVtZW50IGlkPSJpbnN0YW5jZTEi
PjwvbXktY3VzdG9tLWVsZW1lbnQ+Cis8c2NyaXB0PgorCitjbGFzcyBNeUN1c3RvbUVsZW1lbnQg
ZXh0ZW5kcyBIVE1MRWxlbWVudCB7IH07CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBj
dXN0b21FbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbmNlMScpOworCisg
ICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LCAnQW4g
dW5yZXNvbHZlZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKGN1c3RvbUVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3Rv
bUVsZW1lbnQsICdBbiB1bnJlc29sdmVkIGN1c3RvbSBlbGVtZW50IG11c3QgTk9UIGJlIGFuIGlu
c3RhbmNlIG9mIHRoYXQgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3Rv
bUVsZW1lbnQubG9jYWxOYW1lLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGN1c3RvbUVsZW1lbnQubmFtZXNwYWNlVVJJLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcsICdBIGN1c3RvbSBlbGVtZW50IEhUTUwgbXVzdCB1c2UgSFRNTCBuYW1lc3BhY2UnKTsK
KworfSwgJ0hUTUwgcGFyc2VyIG11c3QgTk9UIGNyZWF0ZSBhIGN1c3RvbSBlbGVtZW50IGJlZm9y
ZSBkZWZpbmVFbGVtZW50IGlzIGNhbGxlZCcpOworCitkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVt
ZW50KCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKzwvc2NyaXB0Pgor
PG15LWN1c3RvbS1lbGVtZW50IGlkPSJpbnN0YW5jZTIiPjwvbXktY3VzdG9tLWVsZW1lbnQ+Cis8
c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgY3VzdG9tRWxlbWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YW5jZTInKTsKKworICAgIGFzc2VydF90cnVlKGN1
c3RvbUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ0EgcmVzb2x2ZWQgY3VzdG9tIGVs
ZW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF9m
YWxzZShjdXN0b21FbGVtZW50IGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50LCAnQSByZXNv
bHZlZCBjdXN0b20gZWxlbWVudCBtdXN0IE5PVCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MVW5rbm93
bkVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShjdXN0b21FbGVtZW50IGluc3RhbmNlb2YgTXlD
dXN0b21FbGVtZW50LCAnQSByZXNvbHZlZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3Rh
bmNlIG9mIHRoYXQgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVs
ZW1lbnQubG9jYWxOYW1lLCAnbXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxz
KGN1c3RvbUVsZW1lbnQubmFtZXNwYWNlVVJJLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCcsICdBIGN1c3RvbSBlbGVtZW50IEhUTUwgbXVzdCB1c2UgSFRNTCBuYW1lc3BhY2UnKTsKKwor
fSwgJ0hUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZGVmaW5lZCBjdXN0b20gZWxlbWVudCBiZWZv
cmUgZXhlY3V0aW5nIGlubGluZSBzY3JpcHRzJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNl
ci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFj
ay10by11bmtub3duLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5r
bm93bi1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAK
KworUEFTUyBIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxl
bWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgcmV0dXJucyBhIFRleHQgbm9k
ZSAKK1BBU1MgSFRNTCBwYXJzZXIgbXVzdCBjcmVhdGUgYSBmYWxsYmFjayBIVE1MVW5rbm93bkVs
ZW1lbnQgd2hlbiBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIHJldHVybnMgbm9uLUVsZW1l
bnQgb2JqZWN0IAorUEFTUyBIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxV
bmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZG9lcyBub3Qg
Y2FsbCBzdXBlcigpIAorUEFTUyBIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhU
TUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgdGhyb3dz
IGFuIGV4Y2VwdGlvbiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMv
cGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxs
c2JhY2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtub3du
LWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBDaGFuZ2VzIHRv
IHRoZSBIVE1MIHBhcnNlcjwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9z
dWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iSFRNTCBwYXJzZXIgbXVzdCBmYWxsYmFjayB0byBjcmVhdGluZyBhIEhU
TUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9uIGZhaWxz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwv
ZGl2PgorPHNjcmlwdD4KKworY2xhc3MgUmV0dXJuc1RleHROb2RlIGV4dGVuZHMgSFRNTEVsZW1l
bnQgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICBzdXBlcigpOworICAgICAgICByZXR1
cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ3NvbWUgdGV4dCcpOworICAgIH0KK307Citkb2N1
bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdyZXR1cm5zLXRleHQnLCBSZXR1cm5zVGV4dE5vZGUp
OworCitjbGFzcyBSZXR1cm5zTm9uRWxlbWVudE9iamVjdCBleHRlbmRzIEhUTUxFbGVtZW50IHsK
KyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgcmV0dXJuIHt9
OworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdyZXR1cm5zLW5vbi1l
bGVtZW50LW9iamVjdCcsIFJldHVybnNOb25FbGVtZW50T2JqZWN0KTsKKworY2xhc3MgTGFja3NT
dXBlckNhbGwgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY29uc3RydWN0b3IoKSB7IH0KK307
Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdsYWNrcy1zdXBlci1jYWxsJywgTGFja3NT
dXBlckNhbGwpOworCitjbGFzcyBUaHJvd3NFeGNlcHRpb24gZXh0ZW5kcyBIVE1MRWxlbWVudCB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRocm93ICdCYWQnOworICAgIH0KK307Citk
b2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCd0aHJvd3MtZXhjZXB0aW9uJywgVGhyb3dzRXhj
ZXB0aW9uKTsKKworPC9zY3JpcHQ+Cis8cmV0dXJucy10ZXh0PjwvcmV0dXJucy10ZXh0PgorPHJl
dHVybnMtbm9uLWVsZW1lbnQtb2JqZWN0PjwvcmV0dXJucy1ub24tZWxlbWVudC1vYmplY3Q+Cis8
bGFja3Mtc3VwZXItY2FsbD48L2xhY2tzLXN1cGVyLWNhbGw+Cis8dGhyb3dzLWV4Y2VwdGlvbj48
L3Rocm93cy1leGNlcHRpb24+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2
YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdyZXR1cm5zLXRleHQnKTsKKwor
ICAgIGFzc2VydF9mYWxzZShpbnN0YW5jZSBpbnN0YW5jZW9mIFJldHVybnNUZXh0Tm9kZSwgJ0hU
TUwgcGFyc2VyIG11c3QgTk9UIGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUg
Y29uc3RydWN0b3IgcmV0dXJucyBhIFRleHQgbm9kZScpOworICAgIGFzc2VydF90cnVlKGluc3Rh
bmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVhdGVk
IGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAg
ICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCwgJ1Ro
ZSBmYWxsYmFjayBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0
YW5jZSBvZiBIVE1MVW5rbm93bkVsZW1lbnQnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3QgY3Jl
YXRlIGEgZmFsbGJhY2sgSFRNTFVua25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20gZWxlbWVudCBj
b25zdHJ1Y3RvciByZXR1cm5zIGEgVGV4dCBub2RlJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3JldHVybnMtbm9uLWVs
ZW1lbnQtb2JqZWN0Jyk7CisKKyAgICBhc3NlcnRfZmFsc2UoaW5zdGFuY2UgaW5zdGFuY2VvZiBS
ZXR1cm5zTm9uRWxlbWVudE9iamVjdCwgJ0hUTUwgcGFyc2VyIG11c3QgTk9UIGluc3RhbnRpYXRl
IGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUgY29uc3RydWN0b3IgcmV0dXJucyBhIG5vbi1FbGVt
ZW50IG9iamVjdCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTEVs
ZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFyc2VyIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5j
ZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNy
ZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MVW5rbm93bkVs
ZW1lbnQnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVu
a25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5zIG5v
bi1FbGVtZW50IG9iamVjdCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFu
Y2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsYWNrcy1zdXBlci1jYWxsJyk7CisKKyAgICBh
c3NlcnRfZmFsc2UoaW5zdGFuY2UgaW5zdGFuY2VvZiBMYWNrc1N1cGVyQ2FsbCwgJ0hUTUwgcGFy
c2VyIG11c3QgTk9UIGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUgY29uc3Ry
dWN0b3IgZG9lcyBub3QgY2FsbCBzdXBlcigpJyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNyZWF0ZWQgYnkg
SFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgIGFz
c2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50LCAnVGhlIGZh
bGxiYWNrIGVsZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIGFuIGluc3RhbmNl
IG9mIEhUTUxVbmtub3duRWxlbWVudCcpOworCit9LCAnSFRNTCBwYXJzZXIgbXVzdCBjcmVhdGUg
YSBmYWxsYmFjayBIVE1MVW5rbm93bkVsZW1lbnQgd2hlbiBhIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIGRvZXMgbm90IGNhbGwgc3VwZXIoKScpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAg
ICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd0aHJvd3MtZXhjZXB0aW9u
Jyk7CisKKyAgICBhc3NlcnRfZmFsc2UoaW5zdGFuY2UgaW5zdGFuY2VvZiBUaHJvd3NFeGNlcHRp
b24sICdIVE1MIHBhcnNlciBtdXN0IE5PVCBpbnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50IHdo
ZW4gdGhlIGNvbnN0cnVjdG9yIHRocm93cyBhbiBleGNlcHRpb24nKTsKKyAgICBhc3NlcnRfdHJ1
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQg
Y3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50
Jyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1l
bnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUg
YW4gaW5zdGFuY2Ugb2YgSFRNTFVua25vd25FbGVtZW50Jyk7CisKK30sICdIVE1MIHBhcnNlciBt
dXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVs
ZW1lbnQgY29uc3RydWN0b3IgdGhyb3dzIGFuIGV4Y2VwdGlvbicpOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Bh
cnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNl
ci1zZXRzLWF0dHJpYnV0ZXMtYW5kLWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1h
dHRyaWJ1dGVzLWFuZC1jaGlsZHJlbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2IEBACitoZWxsbyB3b3JsZAorCitQQVNTIEhUTUwgcGFyc2VyIG11c3Qgc2V0IHRoZSBh
dHRyaWJ1dGVzIAorUEFTUyBIVE1MIHBhcnNlciBtdXN0IGFwcGVuZCBjaGlsZCBub2RlcyAKK1BB
U1MgSFRNTCBwYXJzZXIgbXVzdCBzZXQgdGhlIGF0dHJpYnV0ZXMgb3IgYXBwZW5kIGNoaWxkcmVu
IGJlZm9yZSBjYWxsaW5nIGNvbnN0cnVjdG9yIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJz
ZXIvcGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1h
dHRyaWJ1dGVzLWFuZC1jaGlsZHJlbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVu
dHM6IENoYW5nZXMgdG8gdGhlIEhUTUwgcGFyc2VyPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhv
ciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgor
PG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJIVE1MIHBhcnNlciBtdXN0IHNldCB0aGUgYXR0
cmlidXRlcyBhbmQgYXBwZW5kIHRoZSBjaGlsZHJlbiBvbiBhIGN1c3RvbSBlbGVtZW50Ij4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PHNjcmlwdD4KKwordmFyIG51bWJlck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3I7Cit2YXIgbnVt
YmVyT2ZDaGlsZE5vZGVzSW5Db25zdHJ1Y3RvcjsKKworY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4
dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKKyAgICAgICAg
c3VwZXIoLi4uYXJncyk7CisgICAgICAgIG51bWJlck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3Ig
PSB0aGlzLmF0dHJpYnV0ZXMubGVuZ3RoOworICAgICAgICBudW1iZXJPZkNoaWxkTm9kZXNJbkNv
bnN0cnVjdG9yID0gdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDsKKyAgICB9Cit9OworZG9jdW1lbnQu
ZGVmaW5lQ3VzdG9tRWxlbWVudCgnbXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQp
OworCis8L3NjcmlwdD4KKzxteS1jdXN0b20tZWxlbWVudCBpZD0iY3VzdG9tLWVsZW1lbnQtaWQi
IGNsYXNzPSJjbGFzczEgY2xhc3MyIj5oZWxsbyA8Yj53b3JsZDwvYj48L215LWN1c3RvbS1lbGVt
ZW50PgorPHNjcmlwdD4KKwordmFyIGN1c3RvbUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdteS1jdXN0b20tZWxlbWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3Nl
cnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdpZCcpLCAnY3VzdG9tLWVsZW1l
bnQtaWQnLCAnSFRNTCBwYXJzZXIgbXVzdCBwcmVzZXJ2ZSB0aGUgaWQgYXR0cmlidXRlJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmlkLCAnY3VzdG9tLWVsZW1lbnQtaWQnLCAn
SFRNTCBwYXJzZXIgbXVzdCBwcmVzZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIHJlZmxlY3QgZm9yIHRo
ZSBpZCBhdHRyaWJ1dGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuZ2V0QXR0
cmlidXRlKCdjbGFzcycpLCAnY2xhc3MxIGNsYXNzMicsICdIVE1MIHBhcnNlciBtdXN0IHByZXNl
cnZlIHRoZSBjbGFzcyBhdHRyaWJ1dGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1l
bnQuY2xhc3NMaXN0Lmxlbmd0aCwgMiwgJ0hUTUwgcGFyc2VyIG11c3QgaW5pdGlhbGl6ZSBjbGFz
c0xpc3Qgb24gY3VzdG9tIGVsZW1lbnRzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVt
ZW50LmNsYXNzTGlzdFswXSwgJ2NsYXNzMScsICdIVE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUg
Y2xhc3NMaXN0IG9uIGN1c3RvbSBlbGVtZW50cycpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9t
RWxlbWVudC5jbGFzc0xpc3RbMV0sICdjbGFzczInLCAnSFRNTCBwYXJzZXIgbXVzdCBpbml0aWFs
aXplIGNsYXNzTGlzdCBvbiBjdXN0b20gZWxlbWVudHMnKTsKKworICAgIGFzc2VydF9lcXVhbHMo
Y3VzdG9tRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgJ0hUTUwgcGFyc2VyIG11c3QgYXBw
ZW5kIGNoaWxkIG5vZGVzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNsYXNz
TGlzdFswXSwgJ2NsYXNzMScsICdIVE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUgY2xhc3NMaXN0
IG9uIGN1c3RvbSBlbGVtZW50cycpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5j
bGFzc0xpc3RbMV0sICdjbGFzczInLCAnSFRNTCBwYXJzZXIgbXVzdCBpbml0aWFsaXplIGNsYXNz
TGlzdCBvbiBjdXN0b20gZWxlbWVudHMnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3Qgc2V0IHRo
ZSBhdHRyaWJ1dGVzJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF9lcXVhbHMo
Y3VzdG9tRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aCwgMiwgJ0hUTUwgcGFyc2VyIG11c3QgYXBw
ZW5kIGNoaWxkIG5vZGVzJyk7CisgICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudC5maXJzdENo
aWxkIGluc3RhbmNlb2YgVGV4dCwgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIFRleHQgbm9kZSBj
aGlsZCB0byBhIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVt
ZW50LmZpcnN0Q2hpbGQuZGF0YSwgJ2hlbGxvICcsICdIVE1MIHBhcnNlciBtdXN0IGFwcGVuZCBU
ZXh0IG5vZGUgY2hpbGQgdG8gYSBjdXN0b20gZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGN1
c3RvbUVsZW1lbnQubGFzdENoaWxkIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsICdIVE1MIHBhcnNl
ciBtdXN0IGFwcGVuZCBhIGJ1aWx0aW4gZWxlbWVudCBjaGlsZCB0byBhIGN1c3RvbSBlbGVtZW50
Jyk7CisgICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBp
bnN0YW5jZW9mIFRleHQsICdIVE1MIHBhcnNlciBtdXN0IHByZXNlcnZlIGdyYW5kY2hpbGQgbm9k
ZXMgb2YgYSBjdXN0b20gZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVu
dC5sYXN0Q2hpbGQuZmlyc3RDaGlsZC5kYXRhLCAnd29ybGQnLCAnSFRNTCBwYXJzZXIgbXVzdCBw
cmVzZXJ2ZSBncmFuZGNoaWxkIG5vZGVzIG9mIGEgY3VzdG9tIGVsZW1lbnQnKTsKK30sICdIVE1M
IHBhcnNlciBtdXN0IGFwcGVuZCBjaGlsZCBub2RlcycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICBhc3NlcnRfZXF1YWxzKG51bWJlck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3IsIDAsICdI
VE1MIHBhcnNlciBtdXN0IG5vdCBzZXQgYXR0cmlidXRlcyBvbiBhIGN1c3RvbSBlbGVtZW50IGJl
Zm9yZSBpbnZva2luZyB0aGUgY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKG51bWJl
ck9mQ2hpbGROb2Rlc0luQ29uc3RydWN0b3IsIDAsICdIVE1MIHBhcnNlciBtdXN0IG5vdCBhcHBl
bmQgY2hpbGQgbm9kZXMgdG8gYSBjdXN0b20gZWxlbWVudCBiZWZvcmUgaW52b2tpbmcgdGhlIGNv
bnN0cnVjdG9yJyk7Cit9LCAnSFRNTCBwYXJzZXIgbXVzdCBzZXQgdGhlIGF0dHJpYnV0ZXMgb3Ig
YXBwZW5kIGNoaWxkcmVuIGJlZm9yZSBjYWxsaW5nIGNvbnN0cnVjdG9yJyk7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJz
ZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1jb25z
dHJ1Y3RlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQg
QEAKKworUEFTUyBIVE1MIHBhcnNlciBtdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhl
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIG9uZSBjcmVhdGVkIGJl
Zm9yZSBzdXBlcigpIGNhbGwgCitQQVNTIEhUTUwgcGFyc2VyIG11c3QgdXNlIHRoZSByZXR1cm5l
ZCB2YWx1ZSBvZiB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgaW5zdGVhZCB1c2luZyB0
aGUgb25lIGNyZWF0ZWQgaW4gc3VwZXIoKSBjYWxsIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNl
ci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3Ry
dWN0ZWQtZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IENoYW5n
ZXMgdG8gdGhlIEhUTUwgcGFyc2VyPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9
IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJIVE1MIHBhcnNlciBtdXN0IGNvbnN0cnVjdCBhIGN1c3RvbSBl
bGVtZW50IGluc3RlYWQgb2YgdXBncmFkaW5nIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxl
c2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworbGV0IGFub3RoZXJF
bGVtZW50Q3JlYXRlZEJlZm9yZVN1cGVyQ2FsbCA9IHVuZGVmaW5lZDsKK2xldCBlbGVtZW50Q3Jl
YXRlZEJ5U3VwZXJDYWxsID0gdW5kZWZpbmVkOworbGV0IHNob3VsZENyZWF0ZUVsZW1lbnRCZWZv
cmVTdXBlckNhbGwgPSB0cnVlOworY2xhc3MgSW5zdGFudGlhdGVzSXRzZWxmQmVmb3JlU3VwZXIg
ZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChz
aG91bGRDcmVhdGVFbGVtZW50QmVmb3JlU3VwZXJDYWxsKSB7CisgICAgICAgICAgICBzaG91bGRD
cmVhdGVFbGVtZW50QmVmb3JlU3VwZXJDYWxsID0gZmFsc2U7CisgICAgICAgICAgICBhbm90aGVy
RWxlbWVudENyZWF0ZWRCZWZvcmVTdXBlckNhbGwgPSBuZXcgSW5zdGFudGlhdGVzSXRzZWxmQmVm
b3JlU3VwZXIoKTsKKyAgICAgICAgfQorICAgICAgICBzdXBlcigpOworICAgICAgICBlbGVtZW50
Q3JlYXRlZEJ5U3VwZXJDYWxsID0gdGhpczsKKyAgICB9Cit9OworZG9jdW1lbnQuZGVmaW5lQ3Vz
dG9tRWxlbWVudCgnaW5zdGFudGlhdGVzLWl0c2VsZi1iZWZvcmUtc3VwZXInLCBJbnN0YW50aWF0
ZXNJdHNlbGZCZWZvcmVTdXBlcik7CisKK2xldCBzaG91bGRDcmVhdGVBbm90aGVySW5zdGFuY2Ug
PSB0cnVlOworbGV0IGFub3RoZXJJbnN0YW5jZSA9IHVuZGVmaW5lZDsKK2xldCBmaXJzdEluc3Rh
bmNlID0gdW5kZWZpbmVkOworY2xhc3MgUmV0dXJuc0Fub3RoZXJJbnN0YW5jZSBleHRlbmRzIEhU
TUxFbGVtZW50IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAg
ICAgaWYgKHNob3VsZENyZWF0ZUFub3RoZXJJbnN0YW5jZSkgeworICAgICAgICAgICAgc2hvdWxk
Q3JlYXRlQW5vdGhlckluc3RhbmNlID0gZmFsc2U7CisgICAgICAgICAgICBmaXJzdEluc3RhbmNl
ID0gdGhpczsKKyAgICAgICAgICAgIGFub3RoZXJJbnN0YW5jZSA9IG5ldyBSZXR1cm5zQW5vdGhl
ckluc3RhbmNlOworICAgICAgICAgICAgcmV0dXJuIGFub3RoZXJJbnN0YW5jZTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9OworZG9jdW1lbnQuZGVm
aW5lQ3VzdG9tRWxlbWVudCgncmV0dXJucy1hbm90aGVyLWluc3RhbmNlJywgUmV0dXJuc0Fub3Ro
ZXJJbnN0YW5jZSk7CisKKzwvc2NyaXB0PgorPGluc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1
cGVyPjwvaW5zdGFudGlhdGVzLWl0c2VsZi1iZWZvcmUtc3VwZXI+Cis8cmV0dXJucy1hbm90aGVy
LWluc3RhbmNlPjwvcmV0dXJucy1hbm90aGVyLWluc3RhbmNlPgorPHNjcmlwdD4KKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
aW5zdGFudGlhdGVzLWl0c2VsZi1iZWZvcmUtc3VwZXInKTsKKworICAgIGFzc2VydF9lcXVhbHMo
aW5zdGFuY2UsIGVsZW1lbnRDcmVhdGVkQnlTdXBlckNhbGwsICdIVE1MIHBhcnNlciBtdXN0IGlu
c2VydCB0aGUgZWxlbWVudCByZXR1cm5lZCBieSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0
b3InKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgYW5vdGhlckVsZW1lbnRDcmVh
dGVkQmVmb3JlU3VwZXJDYWxsLCAnSFRNTCBwYXJzZXIgbXVzdCBub3QgaW5zZXJ0IGFub3RoZXIg
aW5zdGFuY2Ugb2YgdGhlIGN1c3RvbSBlbGVtZW50IGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2Fs
bCcpOworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlckVsZW1lbnRDcmVhdGVkQmVmb3JlU3VwZXJD
YWxsLnBhcmVudE5vZGUsIG51bGwsICdIVE1MIHBhcnNlciBtdXN0IG5vdCBpbnNlcnQgYW5vdGhl
ciBpbnN0YW5jZSBvZiB0aGUgY3VzdG9tIGVsZW1lbnQgY3JlYXRlZCBiZWZvcmUgc3VwZXIoKSBj
YWxsJyk7CisKK30sICdIVE1MIHBhcnNlciBtdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2Yg
dGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIG9uZSBjcmVhdGVk
IGJlZm9yZSBzdXBlcigpIGNhbGwnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGlu
c3RhbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncmV0dXJucy1hbm90aGVyLWluc3RhbmNl
Jyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGluc3RhbmNlLCBhbm90aGVySW5zdGFuY2UsICdIVE1M
IHBhcnNlciBtdXN0IGluc2VydCB0aGUgZWxlbWVudCByZXR1cm5lZCBieSB0aGUgY3VzdG9tIGVs
ZW1lbnQgY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgZmly
c3RJbnN0YW5jZSwgJ0hUTUwgcGFyc2VyIG11c3Qgbm90IGluc2VydCB0aGUgZWxlbWVudCBjcmVh
dGVkIGJ5IHN1cGVyKCkgY2FsbCBpZiB0aGUgY29uc3RydWN0b3IgcmV0dXJuZWQgYW5vdGhlciBl
bGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhmaXJzdEluc3RhbmNlLnBhcmVudE5vZGUsIG51
bGwsICdIVE1MIHBhcnNlciBtdXN0IG5vdCBpbnNlcnQgdGhlIGVsZW1lbnQgY3JlYXRlZCBieSBz
dXBlcigpIGNhbGwgaWYgdGhlIGNvbnN0cnVjdG9yIHJldHVybmVkIGFub3RoZXIgZWxlbWVudCcp
OworCit9LCAnSFRNTCBwYXJzZXIgbXVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIHRoZSBj
dXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBpbnN0ZWFkIHVzaW5nIHRoZSBvbmUgY3JlYXRlZCBp
biBzdXBlcigpIGNhbGwnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272635</attachid>
            <date>2016-03-01 22:47:45 -0800</date>
            <delta_ts>2016-03-02 04:35:30 -0800</delta_ts>
            <desc>GTK build fix 2</desc>
            <filename>bug-154908-20160301224730.patch</filename>
            <type>text/plain</type>
            <size>49504</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE2LTAzLTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgSFRNTCBwYXJzZXIgY29u
c3RydWN0IGN1c3RvbSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0OTA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgdGhlIHN1cHBvcnQgZm9yIGluc3RhbnRpYXRpbmcgY3VzdG9t
IGVsZW1lbnRzIGluc2lkZSB0aGUgcGFyc2VyLiBCYXNlZCBvbiBKYW4gRjJGIGRpc2N1c3Npb24s
CisgICAgICAgIHRoZSBIVE1MIHBhcnNlciBpcyBnb2luZyB0byBzeW5jaHJvbm91c2x5IGNvbnN0
cnVjdCBjdXN0b20gZWxlbWVudHMuIFdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rvcgor
ICAgICAgICB0aHJvd3MsIHRoZSBIVE1MIHBhcnNlciBjcmVhdGVzIGEgSFRNTFVua25vd25FbGVt
ZW50IGluc3RlYWQuCisKKyAgICAgICAgSW4gb3VyIGltcGxlbWVudGF0aW9uLCB3ZSBwYXVzZSB0
aGUgcGFyc2VyIGNvbXBsZXRlbHkgYW5kIGNvbnN0cnVjdCBjdXN0b20gZWxlbWVudHMgdXNpbmcg
dGhlIHNhbWUKKyAgICAgICAgbWVjaGFuaXNtIHVzZWQgdG8gcnVuIGF1dGhvciBzY3JpcHRzLiBJ
dCdzIHBvc3NpYmxlIHRoYXQgd2UgbWF5IHdhbnQgdG8gYXBwbHkgc29tZSBvcHRpbWl6YXRpb25z
IHRvCisgICAgICAgIHRvIG1ha2UgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9uIGJ1dCBpdCdz
IHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIGdldCBzZW1hbnRpY3MgcmlnaHQgZmlyc3QuCisKKyAg
ICAgICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0
cy1jdXN0b20tZWxlbWVudHMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jdXN0b20tZWxlbWVu
dHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1
dGVzLWFuZC1jaGlsZHJlbi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3RvbS1lbGVtZW50
cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpjb25zdHJ1Y3RFbGVtZW50KTogQWRkZWQg
U2hvdWxkQ2xlYXJFeGNlcHRpb24gYXMgYW4gYXJndW1lbnQKKyAgICAgICAgdG8gYmUgdXNlZCBi
eSB0aGUgSFRNTCBwYXJzZXIgc2luY2UgdGhlIHBhcnNlciBjYW4ndCByZS10aHJvdyB0byBhbnl3
aGVyZSBvciBmYWlsIHBhcnNpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb24pOiBBZGRlZC4KKworICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFs
aWRhdGlvbik6IERvIG5vdCBjbGVhciB0aGUgZXhjZXB0aW9uIGhlcmUgc2luY2UgY3JlYXRlRWxl
bWVudAorICAgICAgICBtdXN0IHJlLXRocm93IHRoZSBleGNlcHRpb24gdGhyb3duIGJ5IGEgY3Vz
dG9tIGVsZW1lbnQgY29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Jl
YXRlRWxlbWVudEZvckJpbmRpbmdzKToKKworICAgICAgICAqIGRvbS9tYWtlX25hbWVzLnBsOgor
ICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6IEFkZGVkIENvbnN0cnVjdG9yRnVuY3Rpb25N
YXBFbnRyeSB3aGljaCBjb250YWlucyB0aGUgY29uc3RydWN0b3IgZnVuY3Rpb24KKyAgICAgICAg
YXMgd2VsbCBhcyB0aGUgcXVhbGlmaWVkIG5hbWUuCisgICAgICAgIChwcmludEZhY3RvcnlIZWFk
ZXJGaWxlKTogQWRkZWQgYSB2YXJpYW50IG9mIGNyZWF0ZUtub3duRWxlbWVudCBhbmQgY3JlYXRl
RWxlbWVudCB0aGF0IHRha2VzCisgICAgICAgIEF0b21pY1N0cmluZyBpbnN0ZWFkIG9mIFF1YWxp
ZmllZE5hbWUuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRBdHRyaWJ1dGVzKTogQWRkZWQgYSB2YXJpYW50IHRo
YXQgdGFrZXMgVmVjdG9yPEF0dHJpYnV0ZT4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3Ry
dWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNl
KTogQWRkZWQuIFJldHVybnMgYQorICAgICAgICBjdXN0b20gZWxlbWVudCBpbnRlcmZhY2Ugd2hl
biB0aGUgZWxlbWVudCBkb2Vzbid0IG1hdGNoIGFueSBidWlsdGluIGVsZW1lbnQgYW5kIHRoZXJl
IGlzIGEgY3VzdG9tCisgICAgICAgIGVsZW1lbnQgZGVmaW5pdGlvbiB0aGF0IG1hdGNoZXMgdGhl
IHNwZWNpZmllZCBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0cnVjdGlvblNpdGU6
Omluc2VydEN1c3RvbUVsZW1lbnQpOiBBZGRlZC4gTGlrZSBpbnNlcnRFbGVtZW50IGJ1dCBhbHNv
IHNldHMgdGhlCisgICAgICAgIGF0dHJpYnV0ZXMgb24gdGhlIG5ld2x5IGNyZWF0ZWQgY3VzdG9t
IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3JlYXRl
SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKTogRXh0cmFjdGVkIGZyb20K
KyAgICAgICAgY3JlYXRlSFRNTEVsZW1lbnQuIFdoZW4gY3VzdG9tRWxlbWVudEludGVyZmFjZSBp
cyBub3QgbnVsbHB0ciwgd2Ugb3B0aW9uYWxseSBmaW5kIHRoZSBjdXN0b20KKyAgICAgICAgZWxl
bWVudCBpbnRlcmZhY2UgYW5kIHJldHVybiBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3Bh
cnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oOgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6cnVuU2NyaXB0c0ZvclBhdXNlZFRyZWVCdWlsZGVyKTogQ3JlYXRlIGEgY3VzdG9tIGVsZW1l
bnQgd2hlbiB0aGVyZQorICAgICAgICBpcyBhIHBlbmRpbmcgY3VzdG9tIGVsZW1lbnQgdG8gY3Jl
YXRlIChpLmUuIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0IGlzIG5vdCBlbXB0eSkuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcmlwdHMpOgor
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKTogQWRkZWQgYSB2YXJpYW50IHVzZWQgZm9yIGN1c3Rv
bSBlbGVtZW50cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0
ZW0pOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YTo6Q3VzdG9t
RWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4gSXQgbmVlZHMgdG8gYmUgaW4KKyAgICAg
ICAgdGhlIGNwcCBmaWxlIHRvIGF2b2lkIGludHJvZHVjaW5nIG1vcmUgaGVhZGVyIGRlcGVuZGVu
Y2llcyBpbiBIVE1MVHJlZUJ1aWxkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhOjp+Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KTogVXNlIGluc2VydEdlbmVyaWNIVE1MRWxlbWVudCB3aGVuIGNyZWF0aW5nCisgICAg
ICAgIGEgZ2VuZXJpYyBlbGVtZW50IHRoYXQgY291bGQgYmUgY3VzdG9tIGVsZW1lbnRzLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRHZW5lcmljSFRNTEVsZW1lbnQp
OiBBZGRlZC4gQ3JlYXRlIGFuZCBpbnNlcnQgYSBuZXcgZWxlbWVudAorICAgICAgICBvciBzZXQg
bV9jdXN0b21FbGVtZW50VG9Db25zdHJ1Y3Qgc28gdGhhdCB0aGUgSFRNTERvY3VtZW50UGFyc2Vy
IHdpbGwgY3JlYXRlIGEgY3VzdG9tIGVsZW1lbnQgbGF0ZXIuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OmRpZENyZWF0ZUN1c3RvbU9yQ2FsbGJhY2tFbGVtZW50KTogQWRkZWQu
IENhbGxlZCBieSBIVE1MRG9jdW1lbnRQYXJzZXIKKyAgICAgICAgd2hlbiBpdCBmaW5pc2hlcyBj
cmVhdGluZyBhIG5ldyBjdXN0b20gZWxlbWVudC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjp0YWtl
Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmVlQnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKTogUmVuYW1lZCBm
cm9tIGhhc1BhcnNlckJsb2NraW5nU2NyaXB0LgorICAgICAgICBDaGVja3MgdGhlIGV4aXN0ZW5j
ZSBvZiBtX2N1c3RvbUVsZW1lbnRUb0NvbnN0cnVjdCBhcyB3ZWxsIGFzIG1fc2NyaXB0VG9Qcm9j
ZXNzLgorCiAyMDE2LTAyLTI2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENvbnRlbnRzIGluc2lkZSBhIHNoYWRvdyBob3N0IHdpdGggYSBuZWdhdGl2ZSB0YWJp
bmRleCBzaG91bGQgbm90IGJlIHRhYiBmb2N1c2FibGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAkocmV2
aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBKU0N1c3Rv
bUVsZW1lbnRJbnRlcmZhY2U6On5KU0N1c3RvbUVsZW1lCiB7CiB9CiAKLVJlZlB0cjxFbGVtZW50
PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1lbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdOYW1lKQorUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHRhZ05hbWUsIFNob3VsZENs
ZWFyRXhjZXB0aW9uIHNob3VsZENsZWFyRXhjZXB0aW9uKQogewogICAgIGlmICghY2FuSW52b2tl
Q2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04OCw2ICs4OCw5IEBAIFJl
ZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UKICAgICBKU1ZhbHVlIG5ld0Vs
ZW1lbnQgPSBjb25zdHJ1Y3Qoc3RhdGUsIG1fY29uc3RydWN0b3IuZ2V0KCksIGNvbnN0cnVjdFR5
cGUsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CiAKKyAgICBpZiAoc2hvdWxkQ2xlYXJF
eGNlcHRpb24gPT0gU2hvdWxkQ2xlYXJFeGNlcHRpb246OkNsZWFyICYmIHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgc3RhdGUtPmNsZWFyRXhjZXB0aW9uKCk7CisKICAgICBpZiAobmV3
RWxlbWVudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuaAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0N1c3RvbUVsZW1lbnRJbnRl
cmZhY2UoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFJlZlB0cjxFbGVt
ZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIGVudW0gY2xh
c3MgU2hvdWxkQ2xlYXJFeGNlcHRpb24geyBDbGVhciwgRG9Ob3RDbGVhciB9OworICAgIFJlZlB0
cjxFbGVtZW50PiBjb25zdHJ1Y3RFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFNob3VsZENs
ZWFyRXhjZXB0aW9uKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgSlNDOjpKU09iamVjdCogY29uc3RydWN0
b3IoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yLmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3OSwzNSArODc5LDM1IEBAIHZvaWQgRG9jdW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsKIH0K
IAotc3RhdGljIFJlZlB0cjxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudFdpdGhOYW1lVmFsaWRh
dGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUhUTUxF
bGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25vd25FbGVtZW50
KHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1l
bnQgPSBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudChsb2NhbE5hbWUsIGRv
Y3VtZW50KTsKICAgICBpZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVu
dDsKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgYXV0byogZGVmaW5pdGlvbnMg
PSBkb2N1bWVudC5jdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKTsKICAgICBpZiAoVU5MSUtFTFko
ZGVmaW5pdGlvbnMpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9u
cy0+ZmluZEludGVyZmFjZShxdWFsaWZpZWROYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBpbnRl
cmZhY2UtPmNvbnN0cnVjdEVsZW1lbnQocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSk7CisgICAg
ICAgIGlmIChhdXRvKiBpbnRlcmZhY2UgPSBkZWZpbml0aW9ucy0+ZmluZEludGVyZmFjZShsb2Nh
bE5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGludGVyZmFjZS0+Y29uc3RydWN0RWxlbWVudChs
b2NhbE5hbWUsIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6U2hvdWxkQ2xlYXJFeGNlcHRpb246
OkRvTm90Q2xlYXIpOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKFVOTElLRUxZKCFEb2N1bWVu
dDo6aXNWYWxpZE5hbWUocXVhbGlmaWVkTmFtZS5sb2NhbE5hbWUoKSkpKSB7CisgICAgaWYgKFVO
TElLRUxZKCFEb2N1bWVudDo6aXNWYWxpZE5hbWUobG9jYWxOYW1lKSkpIHsKICAgICAgICAgZWMg
PSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBk
b2N1bWVudCk7CisgICAgcmV0dXJuIEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpLCBkb2N1bWVudCk7
CiB9CiAKIFJlZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudEZvckJpbmRpbmdz
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KGlzSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVIVE1MRWxlbWVudFdpdGhO
YW1lVmFsaWRhdGlvbigqdGhpcywgUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlzLCBuYW1lLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCksIGVjKTsKIAogICAgIGlmIChpc1hIVE1MRG9jdW1lbnQoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBuYW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIGVjKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50V2l0aE5hbWVWYWxpZGF0aW9uKCp0aGlz
LCBuYW1lLCBlYyk7CiAKICAgICBpZiAoIWlzVmFsaWROYW1lKG5hbWUpKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2Vf
bmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJ
KHJldmlzaW9uIDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3
b3JraW5nIGNvcHkpCkBAIC05ODYsMTAgKzk4NiwyOCBAQCBFTkQKICAgICAgICAgJGFyZ3VtZW50
TGlzdCA9ICJuYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFyc2VyIjsKICAgICB9CiAKKyAgICBt
eSAkbG93ZXJjYXNlTmFtZXNwYWNlUHJlZml4ID0gbGMoJHBhcmFtZXRlcnN7bmFtZXNwYWNlUHJl
Zml4fSk7CisKICAgICBwcmludENvbnN0cnVjdG9ycygkRiwgXCV0YWdDb25zdHJ1Y3Rvck1hcCk7
CiAKICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4mIG1hcCkKKworc3Ry
dWN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSB7CisgICAgQ29uc3RydWN0b3JGdW5jdGlv
bk1hcEVudHJ5KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0
aW9uLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorICAgICAgICA6IGZ1bmN0aW9uKGZ1bmN0
aW9uKQorICAgICAgICAsIHF1YWxpZmllZE5hbWUoJm5hbWUpCisgICAgeyB9CisKKyAgICBDb25z
dHJ1Y3RvckZ1bmN0aW9uTWFwRW50cnkoKQorICAgICAgICA6IGZ1bmN0aW9uKG51bGxwdHIpCisg
ICAgICAgICwgcXVhbGlmaWVkTmFtZShudWxscHRyKQorICAgIHsgfQorCisgICAgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUNvbnN0cnVjdG9yRnVuY3Rpb24gZnVuY3Rpb247CisgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSogcXVhbGlmaWVkTmFtZTsgLy8gVXNlIHBvaW50ZXIgaW5zdGVhZCBvZiByZWZl
cmVuY2Ugc28gdGhhdCBlbXB0eVZhbHVlKCkgaW4gSGFzaE1hcCBpcyBjaGVhcCB0byBjcmVhdGUu
Cit9OworCitzdGF0aWMgTkVWRVJfSU5MSU5FIHZvaWQgcG9wdWxhdGUkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RmFjdG9yeU1hcChIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDb25zdHJ1Y3RvckZ1
bmN0aW9uTWFwRW50cnk+JiBtYXApCiB7CiAgICAgc3RydWN0IFRhYmxlRW50cnkgewogICAgICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOwpAQCAtMTAwNiwyNSArMTAyNCw0MiBAQCBFTkQK
ICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgo
dGFibGUpOyArK2kpCi0gICAgICAgIG1hcC5hZGQodGFibGVbaV0ubmFtZS5sb2NhbE5hbWUoKS5p
bXBsKCksIHRhYmxlW2ldLmZ1bmN0aW9uKTsKKyAgICAgICAgbWFwLmFkZCh0YWJsZVtpXS5uYW1l
LmxvY2FsTmFtZSgpLmltcGwoKSwgQ29uc3RydWN0b3JGdW5jdGlvbk1hcEVudHJ5KHRhYmxlW2ld
LmZ1bmN0aW9uLCB0YWJsZVtpXS5uYW1lKSk7CiB9CiAKLVJlZlB0cjwkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKKworc3RhdGljIENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSBmaW5kJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxOYW1lKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9Q29uc3RydWN0b3JGdW5jdGlvbj4+IGZ1
bmN0aW9uczsKLSAgICBpZiAoZnVuY3Rpb25zLmdldCgpLmlzRW1wdHkoKSkKLSAgICAgICAgcG9w
dWxhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFjdG9yeU1hcChmdW5jdGlvbnMpOwotICAgICRw
YXJhbWV0ZXJze25hbWVzcGFjZX1Db25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmN0aW9uID0gZnVuY3Rp
b25zLmdldCgpLmdldChuYW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7Ci0gICAgaWYgKExJS0VMWShm
dW5jdGlvbikpCi0gICAgICAgIHJldHVybiBmdW5jdGlvbigkYXJndW1lbnRMaXN0KTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ29uc3RydWN0
b3JGdW5jdGlvbk1hcEVudHJ5Pj4gbWFwOworICAgIGlmIChtYXAuZ2V0KCkuaXNFbXB0eSgpKQor
ICAgICAgICBwb3B1bGF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWN0b3J5TWFwKG1hcCk7Cisg
ICAgcmV0dXJuIG1hcC5nZXQoKS5nZXQobG9jYWxOYW1lLmltcGwoKSk7Cit9CisKK1JlZlB0cjwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRGYWN0b3J5OjpjcmVhdGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5h
bWUsIERvY3VtZW50JiBkb2N1bWVudCRmb3JtRWxlbWVudEFyZ3VtZW50Rm9yRGVmaW5pdGlvbiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpCit7CisgICAgY29uc3QgQ29uc3RydWN0b3JGdW5jdGlvbk1h
cEVudHJ5JiBlbnRyeSA9IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudENvbnN0cnVj
dG9yRnVuY3Rpb24obG9jYWxOYW1lKTsKKyAgICBpZiAoTElLRUxZKGVudHJ5LmZ1bmN0aW9uKSkg
eworICAgICAgICBBU1NFUlQoZW50cnkucXVhbGlmaWVkTmFtZSk7CisgICAgICAgIGNvbnN0IGF1
dG8mIG5hbWUgPSAqZW50cnkucXVhbGlmaWVkTmFtZTsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmZ1
bmN0aW9uKCRhcmd1bWVudExpc3QpOworICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
UmVmPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRGb3JEZWZpbml0aW9uLCBib29s
IGNyZWF0ZWRCeVBhcnNlcikKK1JlZjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRGYWN0b3J5OjpjcmVhdGVFbGVtZW50KGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50JGZvcm1FbGVtZW50QXJndW1lbnRG
b3JEZWZpbml0aW9uLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8JHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQgPSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudEZhY3Rvcnk6OmNyZWF0ZUtub3duRWxlbWVudCgkYXJndW1lbnRMaXN0KTsKICAgICBp
ZiAoTElLRUxZKGVsZW1lbnQpKQogICAgICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlTm9uTnVs
bCgpOworICAgIHJldHVybiAkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVh
dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbmFtZSwgJHtsb3dlcmNhc2VOYW1lc3BhY2VQcmVm
aXh9TmFtZXNwYWNlVVJJKSwgZG9jdW1lbnQpOworfQorCitSZWY8JHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQkZm9y
bUVsZW1lbnRBcmd1bWVudEZvckRlZmluaXRpb24sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQorewor
ICAgIGNvbnN0IENvbnN0cnVjdG9yRnVuY3Rpb25NYXBFbnRyeSYgZW50cnkgPSBmaW5kJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRDb25zdHJ1Y3RvckZ1bmN0aW9uKG5hbWUubG9jYWxOYW1l
KCkpOworICAgIGlmIChMSUtFTFkoZW50cnkuZnVuY3Rpb24pKQorICAgICAgICByZXR1cm4gZW50
cnkuZnVuY3Rpb24oJGFyZ3VtZW50TGlzdCk7CiAgICAgcmV0dXJuICRwYXJhbWV0ZXJze2ZhbGxi
YWNrSW50ZXJmYWNlTmFtZX06OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiB9CiAKQEAgLTEwNjUs
MTAgKzExMDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRU5ECiA7CiAKLXByaW50IEYgIiAg
ICAgICAgc3RhdGljIFJlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gY3JlYXRl
S25vd25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYiOworcHJpbnQgRiAi
ICAgICAgICBzdGF0aWMgUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVh
dGVLbm93bkVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERvY3VtZW50JiI7
CiBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9IGVxICJIVE1MIjsKIHByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIgPSBm
YWxzZSk7XG5cbiI7Ci1wcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50JiI7CitwcmludCBGICIgICAgICAgIHN0YXRpYyBSZWY8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUsIERv
Y3VtZW50JiI7CitwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogPSBudWxscHRyIiBpZiAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIjsKK3ByaW50IEYgIiwgYm9vbCBjcmVhdGVkQnlQ
YXJzZXIgPSBmYWxzZSk7XG4iOworcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUmVmPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50PiBjcmVhdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IGxvY2FsTmFtZSwgRG9jdW1lbnQmIjsKIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IG51
bGxwdHIiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBi
b29sIGNyZWF0ZWRCeVBhcnNlciA9IGZhbHNlKTtcbiI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHJldmlzaW9u
IDE5NzIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25T
aXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkhUTUxU
cmVlQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbUVs
ZW1lbnREZWZpbml0aW9ucy5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudFR5cGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtNDMsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkhUTUxQaWN0dXJlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxVbmtub3duRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAgLTUxLDExICs1MywxNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIEF0b21pY0hUTUxU
b2tlbiogdG9rZW4sIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzZXRBdHRyaWJ1dGVzKEVsZW1lbnQmIGVsZW1lbnQsIFZlY3RvcjxB
dHRyaWJ1dGU+JiBhdHRyaWJ1dGVzLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQ
b2xpY3kpCiB7CiAgICAgaWYgKCFzY3JpcHRpbmdDb250ZW50SXNBbGxvd2VkKHBhcnNlckNvbnRl
bnRQb2xpY3kpKQotICAgICAgICBlbGVtZW50LnN0cmlwU2NyaXB0aW5nQXR0cmlidXRlcyh0b2tl
bi0+YXR0cmlidXRlcygpKTsKLSAgICBlbGVtZW50LnBhcnNlclNldEF0dHJpYnV0ZXModG9rZW4t
PmF0dHJpYnV0ZXMoKSk7CisgICAgICAgIGVsZW1lbnQuc3RyaXBTY3JpcHRpbmdBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOworICAgIGVsZW1lbnQucGFyc2VyU2V0QXR0cmlidXRlcyhhdHRyaWJ1dGVz
KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNldEF0dHJpYnV0ZXMoRWxlbWVudCYgZWxlbWVu
dCwgQXRvbWljSFRNTFRva2VuKiB0b2tlbiwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250
ZW50UG9saWN5KQoreworICAgIHNldEF0dHJpYnV0ZXMoZWxlbWVudCwgdG9rZW4tPmF0dHJpYnV0
ZXMoKSwgcGFyc2VyQ29udGVudFBvbGljeSk7CiB9CiAKIHN0YXRpYyBib29sIGhhc0ltcGxpZWRF
bmRUYWcoY29uc3QgSFRNTFN0YWNrSXRlbSYgaXRlbSkKQEAgLTQ4Miw2ICs0ODksMjYgQEAgdm9p
ZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZQogICAgIG1fb3BlbkVsZW1lbnRz
LnB1c2goSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKSwgKnRv
a2VuKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRD
dXN0b21FbGVtZW50SW50ZXJmYWNlKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlKiBpbnRlcmZhY2UgPSBudWxscHRyOworICAgIFJlZlB0cjxF
bGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50
ZXJmYWNlKHRva2VuLCAmaW50ZXJmYWNlKTsKKyAgICBpZiAoVU5MSUtFTFkoaW50ZXJmYWNlKSkK
KyAgICAgICAgcmV0dXJuIGludGVyZmFjZTsKKyAgICBhdHRhY2hMYXRlcigmY3VycmVudE5vZGUo
KSwgZWxlbWVudCk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChIVE1MU3RhY2tJdGVtOjpjcmVh
dGUoZWxlbWVudC5yZWxlYXNlTm9uTnVsbCgpLCAqdG9rZW4pKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKwordm9pZCBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6aW5zZXJ0Q3VzdG9tRWxlbWVudChS
ZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVj
dG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAgc2V0QXR0cmlidXRlcyhlbGVtZW50
LmdldCgpLCBhdHRyaWJ1dGVzLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAgIGF0dGFjaExh
dGVyKCZjdXJyZW50Tm9kZSgpLCBlbGVtZW50LnB0cigpKTsKKyAgICBtX29wZW5FbGVtZW50cy5w
dXNoKEhUTUxTdGFja0l0ZW06OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnQpLCBsb2NhbE5hbWUsIGF0
dHJpYnV0ZXMpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNl
cnRTZWxmQ2xvc2luZ0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CkBAIC02MzMsMjgg
KzY2MCw1MyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpvCiAgICAg
cmV0dXJuIGN1cnJlbnROb2RlKCkuZG9jdW1lbnQoKTsKIH0KIAotUmVmPEVsZW1lbnQ+IEhUTUxD
b25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudChBdG9taWNIVE1MVG9rZW4qIHRva2Vu
KQorUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcmVhdGVIVE1MRWxlbWVu
dE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoCisgICAgQXRvbWljSFRNTFRva2VuKiB0b2tl
biwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiogY3VzdG9tRWxlbWVudEludGVyZmFjZSkKIHsK
LSAgICBRdWFsaWZpZWROYW1lIHRhZ05hbWUobnVsbEF0b20sIHRva2VuLT5uYW1lKCksIHhodG1s
TmFtZXNwYWNlVVJJKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IHRva2Vu
LT5uYW1lKCk7CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuJ3QgdXNlIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpjcmVhdGVFbGVtZW50IGJlY2F1c2Ugd2UKICAgICAvLyBoYXZlIHRvIHBhc3MgdGhlIGN1
cnJlbnQgZm9ybSBlbGVtZW50LiAgV2Ugc2hvdWxkIHJld29yayBmb3JtIGFzc29jaWF0aW9uCiAg
ICAgLy8gdG8gb2NjdXIgYWZ0ZXIgY29uc3RydWN0aW9uIHRvIGFsbG93IGJldHRlciBjb2RlIHNo
YXJpbmcgaGVyZS4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2NyZWF0ZS1hbi1l
bGVtZW50LWZvci10aGUtdG9rZW4KICAgICBEb2N1bWVudCYgb3duZXJEb2N1bWVudCA9IG93bmVy
RG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpOwogICAgIGJvb2wgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID0gIW93bmVyRG9jdW1lbnQuZnJhbWUoKTsKLSAgICBSZWY8RWxlbWVudD4gZWxlbWVudCA9IEhU
TUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlRWxlbWVudCh0YWdOYW1lLCBvd25lckRvY3VtZW50LCBp
bnNpZGVUZW1wbGF0ZUVsZW1lbnQgPyBudWxscHRyIDogZm9ybSgpLCB0cnVlKTsKLSAgICAKKyAg
ICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IEhUTUxFbGVtZW50RmFjdG9yeTo6Y3JlYXRlS25v
d25FbGVtZW50KGxvY2FsTmFtZSwgb3duZXJEb2N1bWVudCwgaW5zaWRlVGVtcGxhdGVFbGVtZW50
ID8gbnVsbHB0ciA6IGZvcm0oKSwgdHJ1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFlbGVtZW50KSkg
eworCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAgICAgYXV0byogZGVmaW5pdGlv
bnMgPSBvd25lckRvY3VtZW50Rm9yQ3VycmVudE5vZGUoKS5jdXN0b21FbGVtZW50RGVmaW5pdGlv
bnMoKTsKKyAgICAgICAgaWYgKGN1c3RvbUVsZW1lbnRJbnRlcmZhY2UgJiYgVU5MSUtFTFkoZGVm
aW5pdGlvbnMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogaW50ZXJmYWNlID0gZGVmaW5pdGlv
bnMtPmZpbmRJbnRlcmZhY2UobG9jYWxOYW1lKSkgeworICAgICAgICAgICAgICAgICpjdXN0b21F
bGVtZW50SW50ZXJmYWNlID0gaW50ZXJmYWNlOworICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgfQorICAgICAgICB9CisjZWxzZQorICAgICAgICBVTlVTRURfUEFS
QU0oY3VzdG9tRWxlbWVudEludGVyZmFjZSk7CisjZW5kaWYKKworICAgICAgICBlbGVtZW50ID0g
SFRNTFVua25vd25FbGVtZW50OjpjcmVhdGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxO
YW1lLCB4aHRtbE5hbWVzcGFjZVVSSSksIG93bmVyRG9jdW1lbnRGb3JDdXJyZW50Tm9kZSgpKTsK
KyAgICB9CisgICAgQVNTRVJUKGVsZW1lbnQpOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBo
YWNrIHRvIGNvbm5lY3QgaW1hZ2VzIHRvIHBpY3R1cmVzIGJlZm9yZSB0aGUgaW1hZ2UgaGFzCiAg
ICAgLy8gYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBkb2N1bWVudC4gSXQgY2FuIGJlIHJlbW92ZWQg
b25jZSBhc3luY2hyb25vdXMgaW1hZ2UKICAgICAvLyBsb2FkaW5nIGlzIHdvcmtpbmcuCi0gICAg
aWYgKGlzPEhUTUxQaWN0dXJlRWxlbWVudD4oY3VycmVudE5vZGUoKSkgJiYgaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVs
ZW1lbnQuZ2V0KCkpLnNldFBpY3R1cmVFbGVtZW50KCZkb3duY2FzdDxIVE1MUGljdHVyZUVsZW1l
bnQ+KGN1cnJlbnROb2RlKCkpKTsKKyAgICBpZiAoaXM8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJy
ZW50Tm9kZSgpKSAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkpCisgICAgICAgIGRv
d25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KS5zZXRQaWN0dXJlRWxlbWVudCgmZG93
bmNhc3Q8SFRNTFBpY3R1cmVFbGVtZW50PihjdXJyZW50Tm9kZSgpKSk7CiAKLSAgICBzZXRBdHRy
aWJ1dGVzKGVsZW1lbnQuZ2V0KCksIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOworICAg
IHNldEF0dHJpYnV0ZXMoKmVsZW1lbnQsIHRva2VuLCBtX3BhcnNlckNvbnRlbnRQb2xpY3kpOwog
ICAgIEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkpOwogICAgIHJldHVybiBlbGVtZW50
OwogfQogCitSZWY8RWxlbWVudD4gSFRNTENvbnN0cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1l
bnQgPSBjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UodG9rZW4s
IG51bGxwdHIpOworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlTm9uTnVsbCgpOworfQorCiBSZWY8SFRNTFN0YWNrSXRlbT4gSFRNTENvbnN0cnVjdGlvblNp
dGU6OmNyZWF0ZUVsZW1lbnRGcm9tU2F2ZWRUb2tlbihIVE1MU3RhY2tJdGVtKiBpdGVtKQogewog
ICAgIC8vIE5PVEU6IE1vdmluZyBmcm9tIGl0ZW0gLT4gdG9rZW4gLT4gaXRlbSBjb3BpZXMgdGhl
IEF0dHJpYnV0ZSB2ZWN0b3IgdHdpY2UhCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHJldmlzaW9uIDE5NzIyMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgQXRvbWljSFRNTFRva2VuOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEZvcm1FbGVtZW50OworY2xhc3MgSlND
dXN0b21FbGVtZW50SW50ZXJmYWNlOwogCiBjbGFzcyBIVE1MQ29uc3RydWN0aW9uU2l0ZSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnN0cnVjdGlvblNpdGUpOwpAQCAtMTAzLDYg
KzEwNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRDb21tZW50T25Eb2N1bWVudChBdG9t
aWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydENvbW1lbnRPbkhUTUxIdG1sRWxlbWVudChB
dG9taWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEhUTUxFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOworI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlKiBpbnNlcnRIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2Uo
QXRvbWljSFRNTFRva2VuKik7CisgICAgdm9pZCBpbnNlcnRDdXN0b21FbGVtZW50KFJlZjxFbGVt
ZW50PiYmLCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgVmVjdG9yPEF0dHJpYnV0ZT4m
KTsKKyNlbmRpZgogICAgIHZvaWQgaW5zZXJ0U2VsZkNsb3NpbmdIVE1MRWxlbWVudChBdG9taWNI
VE1MVG9rZW4qKTsKICAgICB2b2lkIGluc2VydEZvcm1hdHRpbmdFbGVtZW50KEF0b21pY0hUTUxU
b2tlbiopOwogICAgIHZvaWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiop
OwpAQCAtMTk0LDYgKzE5OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZpbmRGb3N0ZXJTaXRl
KEhUTUxDb25zdHJ1Y3Rpb25TaXRlVGFzayYpOwogCisgICAgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0
ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFjZShBdG9taWNIVE1MVG9rZW4q
LCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UqKik7CiAgICAgUmVmPEVsZW1lbnQ+IGNyZWF0ZUhU
TUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiopOwogICAgIFJlZjxFbGVtZW50PiBjcmVhdGVFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCShyZXZpc2lvbiAxOTcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBA
CiAjaW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFNjcmlwdFJ1
bm5lci5oIgogI2luY2x1ZGUgIkhUTUxUcmVlQnVpbGRlci5oIgorI2luY2x1ZGUgIkhUTUxVbmtu
b3duRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE4OCw4ICsxOTAsMjMgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYQogewogICAgIEFTU0VSVChzY3JpcHRpbmdDb250ZW50
SXNBbGxvd2VkKHBhcnNlckNvbnRlbnRQb2xpY3koKSkpOwogCisjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKKyAgICBpZiAoc3RkOjp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rp
b25EYXRhPiBjb25zdHJ1Y3Rpb25EYXRhID0gbV90cmVlQnVpbGRlci0+dGFrZUN1c3RvbUVsZW1l
bnRDb25zdHJ1Y3Rpb25EYXRhKCkpIHsKKyAgICAgICAgQVNTRVJUKCFtX3RyZWVCdWlsZGVyLT5o
YXNQYXJzZXJCbG9ja2luZ1NjcmlwdFdvcmsoKSk7CisKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+
IG5ld0VsZW1lbnQgPSBjb25zdHJ1Y3Rpb25EYXRhLT5pbnRlcmZhY2UtPmNvbnN0cnVjdEVsZW1l
bnQoY29uc3RydWN0aW9uRGF0YS0+bmFtZSwgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjpTaG91
bGRDbGVhckV4Y2VwdGlvbjo6Q2xlYXIpOworICAgICAgICBpZiAoIW5ld0VsZW1lbnQpIC8vIEZJ
WE1FOiBUaGlzIGNhbGwgdG8gZG9jdWVtbnQoKSBpcyB3cm9uZyBpbiBzb21lIGNhc2VzLgorICAg
ICAgICAgICAgbmV3RWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sIGNvbnN0cnVjdGlvbkRhdGEtPm5hbWUsIHhodG1sTmFtZXNwYWNlVVJJ
KSwgKmRvY3VtZW50KCkpOworCisgICAgICAgIEFTU0VSVChuZXdFbGVtZW50KTsKKyAgICAgICAg
bV90cmVlQnVpbGRlci0+ZGlkQ3JlYXRlQ3VzdG9tT3JDYWxsYmFja0VsZW1lbnQobmV3RWxlbWVu
dC5yZWxlYXNlTm9uTnVsbCgpLCAqY29uc3RydWN0aW9uRGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisjZW5kaWYKKwogICAgIFRleHRQb3NpdGlvbiBzY3JpcHRTdGFydFBvc2l0aW9uID0g
VGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKTsKICAgICBpZiAoYXV0byBzY3JpcHRF
bGVtZW50ID0gbV90cmVlQnVpbGRlci0+dGFrZVNjcmlwdFRvUHJvY2VzcyhzY3JpcHRTdGFydFBv
c2l0aW9uKSkgeworICAgICAgICBBU1NFUlQoIW1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2Nr
aW5nU2NyaXB0V29yaygpKTsKICAgICAgICAgLy8gV2Ugd2lsbCBub3QgaGF2ZSBhIHNjcmlwdFJ1
bm5lciB3aGVuIHBhcnNpbmcgYSBEb2N1bWVudEZyYWdtZW50LgogICAgICAgICBpZiAobV9zY3Jp
cHRSdW5uZXIpCiAgICAgICAgICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhlY3V0ZShzY3JpcHRFbGVt
ZW50LnJlbGVhc2UoKSwgc2NyaXB0U3RhcnRQb3NpdGlvbik7CkBAIC00NTksNyArNDc2LDcgQEAg
Ym9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6OmlzV2FpdGluZ0ZvclNjcgogICAgIC8vIFRoZSBzY3Jp
cHQgcnVubmVyIHdpbGwgaG9sZCB0aGUgc2NyaXB0IHVudGlsIGl0cyBsb2FkZWQgYW5kIHJ1bi4g
RHVyaW5nCiAgICAgLy8gYW55IG9mIHRoaXMgdGltZSwgd2Ugd2FudCB0byBjb3VudCBvdXJzZWx2
ZXMgYXMgIndhaXRpbmcgZm9yIGEgc2NyaXB0IiBhbmQgdGh1cwogICAgIC8vIHJ1biB0aGUgcHJl
bG9hZCBzY2FubmVyLCBhcyB3ZWxsIGFzIGRlbGF5IGNvbXBsZXRpb24gb2YgcGFyc2luZy4KLSAg
ICBib29sIHRyZWVCdWlsZGVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3RyZWVCdWlsZGVyLT5oYXNQ
YXJzZXJCbG9ja2luZ1NjcmlwdCgpOworICAgIGJvb2wgdHJlZUJ1aWxkZXJIYXNCbG9ja2luZ1Nj
cmlwdCA9IG1fdHJlZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpOwogICAg
IGJvb2wgc2NyaXB0UnVubmVySGFzQmxvY2tpbmdTY3JpcHQgPSBtX3NjcmlwdFJ1bm5lciAmJiBt
X3NjcmlwdFJ1bm5lci0+aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHQoKTsKICAgICAvLyBTaW5jZSB0
aGUgcGFyc2VyIGlzIHBhdXNlZCB3aGlsZSBhIHNjcmlwdCBydW5uZXIgaGFzIGEgYmxvY2tpbmcg
c2NyaXB0LCBpdCBzaG91bGQKICAgICAvLyBuZXZlciBiZSBwb3NzaWJsZSB0byBlbmQgdXAgd2l0
aCBib3RoIG9iamVjdHMgaG9sZGluZyBhIGJsb2NraW5nIHNjcmlwdC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmgJKHJldmlzaW9uIDE5NzIyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIVE1MU3RhY2tJdGVtIDogcHVibGljIFJlZkNvdW50
ZWQ8CiBwdWJsaWM6CiAgICAgLy8gTm9ybWFsIEhUTUxFbGVtZW50U3RhY2sgYW5kIEhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QgaXRlbXMuCiAgICAgc3RhdGljIFJlZjxIVE1MU3RhY2tJdGVtPiBj
cmVhdGUoUmVmPEVsZW1lbnQ+JiYsIEF0b21pY0hUTUxUb2tlbiYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZXNwYWNlVVJJID0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFjZVVSSSk7CisgICAgc3Rh
dGljIFJlZjxIVE1MU3RhY2tJdGVtPiBjcmVhdGUoUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CiAKICAgICAvLyBEb2N1bWVudCBm
cmFnbWVudCBvciBlbGVtZW50IGZvciBwYXJzaW5nIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZjxI
VE1MU3RhY2tJdGVtPiBjcmVhdGUoRWxlbWVudCYpOwpAQCAtNjIsNiArNjMsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgSFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4mJiwgQXRvbWljSFRN
TFRva2VuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkpOworICAgIEhUTUxTdGFj
a0l0ZW0oUmVmPEVsZW1lbnQ+JiYsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mKTsK
ICAgICBleHBsaWNpdCBIVE1MU3RhY2tJdGVtKEVsZW1lbnQmKTsKICAgICBleHBsaWNpdCBIVE1M
U3RhY2tJdGVtKERvY3VtZW50RnJhZ21lbnQmKTsKIApAQCAtODksNiArOTEsMjEgQEAgaW5saW5l
IFJlZjxIVE1MU3RhY2tJdGVtPiBIVE1MU3RhY2tJdGVtOgogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShlbGVtZW50KSwgdG9rZW4sIG5hbWVzcGFjZVVSSSkp
OwogfQogCitpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShSZWY8RWxlbWVudD4m
JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQor
ICAgIDogbV9ub2RlKFdURk1vdmUoZWxlbWVudCkpCisgICAgLCBtX25hbWVzcGFjZVVSSShuYW1l
c3BhY2VVUkkpCisgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCisgICAgLCBtX2F0dHJpYnV0
ZXMoYXR0cmlidXRlcykKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8g
bW92ZSB0aGUgYXR0cmlidXRlcyB2ZWN0b3IgaW4gdGhlIG5vcm1hbCBjb2RlIHBhdGggaW5zdGVh
ZCBvZiBjb3B5aW5nIGl0LgorfQorCitpbmxpbmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFj
a0l0ZW06OmNyZWF0ZShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsTmFtZSwgY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZXMpCit7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkgPSBlbGVtZW50LmdldCgpLm5hbWVzcGFj
ZVVSSSgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShl
bGVtZW50KSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkksIGF0dHJpYnV0ZXMpKTsKK30KKwogaW5s
aW5lIEhUTUxTdGFja0l0ZW06OkhUTUxTdGFja0l0ZW0oRWxlbWVudCYgZWxlbWVudCkKICAgICA6
IG1fbm9kZShlbGVtZW50KQogICAgICwgbV9uYW1lc3BhY2VVUkkoZWxlbWVudC5uYW1lc3BhY2VV
UkkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAkocmV2aXNpb24gMTk3MjIwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiWExpbmtOYW1lcy5oIgpAQCAtNTAsNiArNTEs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKworQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlv
bkRhdGE6OkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKFJlZjxKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U+JiYgaW50ZXJmYWNlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVzKQorICAgIDogaW50ZXJmYWNlKFdURk1vdmUoaW50
ZXJmYWNlKSkKKyAgICAsIG5hbWUobmFtZSkKKyAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykg
Ly8gRklYTUU6IEF2b2lkIGNvcHlpbmcgYXR0cmlidXRlcy4KK3sgfQorCitDdXN0b21FbGVtZW50
Q29uc3RydWN0aW9uRGF0YTo6fkN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhKCkKK3sgfQor
CisjZW5kaWYKKwogbmFtZXNwYWNlIHsKIAogaW5saW5lIGJvb2wgaXNIVE1MU3BhY2VPclJlcGxh
Y2VtZW50Q2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKQEAgLTg5Niw5ICs5MTAsMjcgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvcgogICAgIH0KICNlbmRpZgogICAg
IG1fdHJlZS5yZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOworICAgIGlu
c2VydEdlbmVyaWNIVE1MRWxlbWVudCh0b2tlbik7Cit9CisKK2lubGluZSB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6aW5zZXJ0R2VuZXJpY0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
Cit7CisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICBhdXRvKiBpbnRlcmZhY2UgPSBt
X3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnRPckZpbmRDdXN0b21FbGVtZW50SW50ZXJmYWNlKCZ0b2tl
bik7CisgICAgaWYgKFVOTElLRUxZKGludGVyZmFjZSkpCisgICAgICAgIG1fY3VzdG9tRWxlbWVu
dFRvQ29uc3RydWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21FbGVtZW50Q29uc3RydWN0aW9u
RGF0YT4oKmludGVyZmFjZSwgdG9rZW4ubmFtZSgpLCB0b2tlbi5hdHRyaWJ1dGVzKCkpOworI2Vs
c2UKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQoJnRva2VuKTsKKyNlbmRpZgogfQogCisj
aWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjpkaWRDcmVh
dGVDdXN0b21PckNhbGxiYWNrRWxlbWVudChSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBDdXN0b21F
bGVtZW50Q29uc3RydWN0aW9uRGF0YSYgZGF0YSkKK3sKKyAgICBtX3RyZWUuaW5zZXJ0Q3VzdG9t
RWxlbWVudChXVEZNb3ZlKGVsZW1lbnQpLCBkYXRhLm5hbWUsIGRhdGEuYXR0cmlidXRlcyk7Cit9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogCiB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6cHJvY2Vzc1RlbXBsYXRlU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCShy
ZXZpc2lvbiAxOTcyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1
aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsMjAgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U7CiBjbGFzcyBIVE1MRG9j
dW1lbnRQYXJzZXI7CiAKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorc3RydWN0IEN1c3Rv
bUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhIHsKKyAgICBDdXN0b21FbGVtZW50Q29uc3RydWN0aW9u
RGF0YShSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiYmLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+Jik7CisgICAgfkN1c3RvbUVsZW1lbnRDb25z
dHJ1Y3Rpb25EYXRhKCk7CisKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBpbnRl
cmZhY2U7CisgICAgQXRvbWljU3RyaW5nIG5hbWU7CisgICAgVmVjdG9yPEF0dHJpYnV0ZT4gYXR0
cmlidXRlczsKK307CisjZW5kaWYKKwogY2xhc3MgSFRNTFRyZWVCdWlsZGVyIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ5LDExICs2MSwxNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNvbnN0cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuJik7CiAKLSAgICBib29s
IGhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXJzZXJCbG9j
a2luZ1NjcmlwdFdvcmsoKSBjb25zdDsKIAogICAgIC8vIE11c3QgYmUgY2FsbGVkIHRvIHRha2Ug
dGhlIHBhcnNlci1ibG9ja2luZyBzY3JpcHQgYmVmb3JlIGNhbGxpbmcgdGhlIHBhcnNlciBhZ2Fp
bi4KICAgICBSZWZQdHI8RWxlbWVudD4gdGFrZVNjcmlwdFRvUHJvY2VzcyhUZXh0UG9zaXRpb24m
IHNjcmlwdFN0YXJ0UG9zaXRpb24pOwogCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGE+IHRha2VDdXN0
b21FbGVtZW50Q29uc3RydWN0aW9uRGF0YSgpIHsgcmV0dXJuIFdURk1vdmUobV9jdXN0b21FbGVt
ZW50VG9Db25zdHJ1Y3QpOyB9CisgICAgdm9pZCBkaWRDcmVhdGVDdXN0b21PckNhbGxiYWNrRWxl
bWVudChSZWY8RWxlbWVudD4mJiwgQ3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEmKTsKKyNl
bmRpZgorCiAgICAgLy8gRG9uZSwgY2xvc2UgYW55IG9wZW4gdGFncywgZXRjLgogICAgIHZvaWQg
ZmluaXNoZWQoKTsKIApAQCAtMTY1LDYgKzE4Miw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJl
c2V0SW5zZXJ0aW9uTW9kZUFwcHJvcHJpYXRlbHkoKTsKIAorICAgIHZvaWQgaW5zZXJ0R2VuZXJp
Y0hUTUxFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYpOworCiAjaWYgRU5BQkxFKFRFTVBMQVRFX0VM
RU1FTlQpCiAgICAgdm9pZCBwcm9jZXNzVGVtcGxhdGVTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4m
KTsKICAgICBib29sIHByb2Nlc3NUZW1wbGF0ZUVuZFRhZyhBdG9taWNIVE1MVG9rZW4mKTsKQEAg
LTIwNCw2ICsyMjMsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudD4gbV9zY3JpcHRU
b1Byb2Nlc3M7IC8vIDxzY3JpcHQ+IHRhZyB3aGljaCBuZWVkcyBwcm9jZXNzaW5nIGJlZm9yZSBy
ZXN1bWluZyB0aGUgcGFyc2VyLgogICAgIFRleHRQb3NpdGlvbiBtX3NjcmlwdFRvUHJvY2Vzc1N0
YXJ0UG9zaXRpb247IC8vIFN0YXJ0aW5nIGxpbmUgbnVtYmVyIG9mIHRoZSBzY3JpcHQgdGFnIG5l
ZWRpbmcgcHJvY2Vzc2luZy4KIAorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rpb25EYXRhPiBtX2N1c3RvbUVsZW1l
bnRUb0NvbnN0cnVjdDsKKyNlbmRpZgorCiAgICAgYm9vbCBtX3Nob3VsZFNraXBMZWFkaW5nTmV3
bGluZSB7IGZhbHNlIH07CiAKICAgICBib29sIG1fZnJhbWVzZXRPayB7IHRydWUgfTsKQEAgLTIz
NSwxMCArMjU4LDE1IEBAIGlubGluZSBib29sIEhUTUxUcmVlQnVpbGRlcjo6aXNQYXJzaW5nRnIK
ICAgICByZXR1cm4gISFtX2ZyYWdtZW50Q29udGV4dC5mcmFnbWVudCgpOwogfQogCi1pbmxpbmUg
Ym9vbCBIVE1MVHJlZUJ1aWxkZXI6Omhhc1BhcnNlckJsb2NraW5nU2NyaXB0KCkgY29uc3QKK2lu
bGluZSBib29sIEhUTUxUcmVlQnVpbGRlcjo6aGFzUGFyc2VyQmxvY2tpbmdTY3JpcHRXb3JrKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIW1fZGVzdHJveWVkKTsKLSAgICByZXR1cm4gISFtX3Njcmlw
dFRvUHJvY2VzczsKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgIEFTU0VSVCghKG1f
c2NyaXB0VG9Qcm9jZXNzICYmIG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0KSk7CisgICAgcmV0
dXJuIG1fc2NyaXB0VG9Qcm9jZXNzIHx8IG1fY3VzdG9tRWxlbWVudFRvQ29uc3RydWN0OworI2Vs
c2UKKyAgICByZXR1cm4gbV9zY3JpcHRUb1Byb2Nlc3M7CisjZW5kaWYKIH0KIAogaW5saW5lIERv
Y3VtZW50RnJhZ21lbnQqIEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6
ZnJhZ21lbnQoKSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3MjIwKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDMtMDEg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBIVE1MIHBh
cnNlciBjb25zdHJ1Y3QgY3VzdG9tIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXM0MgdGVzdGhhcm5lc3MuanMgYmFzZWQgdGVz
dHMgZm9yIGluc3RhbnRpYXRpbmcgY3VzdG9tIGVsZW1lbnRzIGluc2lkZSB0aGUgSFRNTCBwYXJz
ZXIuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXI6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0
b20tZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1l
bGVtZW50cy9wYXJzZXIvcGFyc2VyLWNvbnN0cnVjdHMtY3VzdG9tLWVsZW1lbnRzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFsbHNi
YWNrLXRvLXVua25vd24tZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItZmFsbHNiYWNrLXRvLXVua25vd24tZWxl
bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIv
cGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXNldHMtYXR0cmli
dXRlcy1hbmQtY2hpbGRyZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxl
bWVudHMvcGFyc2VyL3BhcnNlci11c2VzLWNvbnN0cnVjdGVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXVz
ZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sOiBBZGRlZC4KKwogMjAxNi0wMi0yNiAgUnlhbiBI
YWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIHRlc3Rz
IGZvciBpb3Mtc2ltdWxhdG9yIGFmdGVyIHIxOTcxNjIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2Vy
L3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgSFRNTCBwYXJzZXIgbXVzdCBOT1QgY3JlYXRl
IGEgY3VzdG9tIGVsZW1lbnQgYmVmb3JlIGRlZmluZUVsZW1lbnQgaXMgY2FsbGVkIAorUEFTUyBI
VE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGRlZmluZWQgY3VzdG9tIGVsZW1lbnQgYmVmb3JlIGV4
ZWN1dGluZyBpbmxpbmUgc2NyaXB0cyAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20t
ZWxlbWVudHMvcGFyc2VyL3BhcnNlci1jb25zdHJ1Y3RzLWN1c3RvbS1lbGVtZW50cy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJz
ZXItY29uc3RydWN0cy1jdXN0b20tZWxlbWVudHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItY29uc3RydWN0cy1jdXN0
b20tZWxlbWVudHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBDaGFuZ2Vz
IHRvIHRoZSBIVE1MIHBhcnNlcjwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJS
eW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0iSFRNTCBwYXJzZXIgY3JlYXRlcyBhIGN1c3RvbSBlbGVtZW50Ij4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2
PgorPG15LWN1c3RvbS1lbGVtZW50IGlkPSJpbnN0YW5jZTEiPjwvbXktY3VzdG9tLWVsZW1lbnQ+
Cis8c2NyaXB0PgorCitjbGFzcyBNeUN1c3RvbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
IH07CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBjdXN0b21FbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbmNlMScpOworCisgICAgYXNzZXJ0X3RydWUoY3VzdG9t
RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LCAnQW4gdW5yZXNvbHZlZCBjdXN0b20gZWxl
bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgYXNzZXJ0X2Zh
bHNlKGN1c3RvbUVsZW1lbnQgaW5zdGFuY2VvZiBNeUN1c3RvbUVsZW1lbnQsICdBbiB1bnJlc29s
dmVkIGN1c3RvbSBlbGVtZW50IG11c3QgTk9UIGJlIGFuIGluc3RhbmNlIG9mIHRoYXQgY3VzdG9t
IGVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQubG9jYWxOYW1lLCAn
bXktY3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQubmFt
ZXNwYWNlVVJJLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdBIGN1c3RvbSBlbGVt
ZW50IEhUTUwgbXVzdCB1c2UgSFRNTCBuYW1lc3BhY2UnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11
c3QgTk9UIGNyZWF0ZSBhIGN1c3RvbSBlbGVtZW50IGJlZm9yZSBkZWZpbmVFbGVtZW50IGlzIGNh
bGxlZCcpOworCitkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVtZW50KCdteS1jdXN0b20tZWxlbWVu
dCcsIE15Q3VzdG9tRWxlbWVudCk7CisKKzwvc2NyaXB0PgorPG15LWN1c3RvbS1lbGVtZW50IGlk
PSJpbnN0YW5jZTIiPjwvbXktY3VzdG9tLWVsZW1lbnQ+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0
aW9uICgpIHsKKyAgICB2YXIgY3VzdG9tRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbnN0YW5jZTInKTsKKworICAgIGFzc2VydF90cnVlKGN1c3RvbUVsZW1lbnQgaW5zdGFuY2Vv
ZiBIVE1MRWxlbWVudCwgJ0EgcmVzb2x2ZWQgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBhbiBpbnN0
YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF9mYWxzZShjdXN0b21FbGVtZW50IGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50LCAnQSByZXNvbHZlZCBjdXN0b20gZWxlbWVudCBt
dXN0IE5PVCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MVW5rbm93bkVsZW1lbnQnKTsKKyAgICBhc3Nl
cnRfdHJ1ZShjdXN0b21FbGVtZW50IGluc3RhbmNlb2YgTXlDdXN0b21FbGVtZW50LCAnQSByZXNv
bHZlZCBjdXN0b20gZWxlbWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoYXQgY3VzdG9tIGVs
ZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQubG9jYWxOYW1lLCAnbXkt
Y3VzdG9tLWVsZW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQubmFtZXNw
YWNlVVJJLCAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdBIGN1c3RvbSBlbGVtZW50
IEhUTUwgbXVzdCB1c2UgSFRNTCBuYW1lc3BhY2UnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3Qg
Y3JlYXRlIGEgZGVmaW5lZCBjdXN0b20gZWxlbWVudCBiZWZvcmUgZXhlY3V0aW5nIGlubGluZSBz
Y3JpcHRzJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93
bi1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtub3duLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVtZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKworUEFTUyBIVE1MIHBhcnNlciBt
dXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVs
ZW1lbnQgY29uc3RydWN0b3IgcmV0dXJucyBhIFRleHQgbm9kZSAKK1BBU1MgSFRNTCBwYXJzZXIg
bXVzdCBjcmVhdGUgYSBmYWxsYmFjayBIVE1MVW5rbm93bkVsZW1lbnQgd2hlbiBhIGN1c3RvbSBl
bGVtZW50IGNvbnN0cnVjdG9yIHJldHVybnMgbm9uLUVsZW1lbnQgb2JqZWN0IAorUEFTUyBIVE1M
IHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxlbWVudCB3aGVuIGEg
Y3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgZG9lcyBub3QgY2FsbCBzdXBlcigpIAorUEFTUyBI
VE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNrIEhUTUxVbmtub3duRWxlbWVudCB3aGVu
IGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgdGhyb3dzIGFuIGV4Y2VwdGlvbiAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2Jh
Y2stdG8tdW5rbm93bi1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1mYWxsc2JhY2stdG8tdW5rbm93bi1lbGVt
ZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy9wYXJzZXIvcGFyc2VyLWZhbGxzYmFjay10by11bmtub3duLWVsZW1lbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDg4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+Q3VzdG9tIEVsZW1lbnRzOiBDaGFuZ2VzIHRvIHRoZSBIVE1MIHBhcnNlcjwvdGl0
bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0
bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iSFRNTCBw
YXJzZXIgbXVzdCBmYWxsYmFjayB0byBjcmVhdGluZyBhIEhUTUxVbmtub3duRWxlbWVudCB3aGVu
IGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0aW9uIGZhaWxzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayBy
ZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3Mn
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKworY2xh
c3MgUmV0dXJuc1RleHROb2RlIGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgIGNvbnN0cnVjdG9y
KCkgeworICAgICAgICBzdXBlcigpOworICAgICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ3NvbWUgdGV4dCcpOworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21FbGVt
ZW50KCdyZXR1cm5zLXRleHQnLCBSZXR1cm5zVGV4dE5vZGUpOworCitjbGFzcyBSZXR1cm5zTm9u
RWxlbWVudE9iamVjdCBleHRlbmRzIEhUTUxFbGVtZW50IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsK
KyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgcmV0dXJuIHt9OworICAgIH0KK307Citkb2N1bWVu
dC5kZWZpbmVDdXN0b21FbGVtZW50KCdyZXR1cm5zLW5vbi1lbGVtZW50LW9iamVjdCcsIFJldHVy
bnNOb25FbGVtZW50T2JqZWN0KTsKKworY2xhc3MgTGFja3NTdXBlckNhbGwgZXh0ZW5kcyBIVE1M
RWxlbWVudCB7CisgICAgY29uc3RydWN0b3IoKSB7IH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0
b21FbGVtZW50KCdsYWNrcy1zdXBlci1jYWxsJywgTGFja3NTdXBlckNhbGwpOworCitjbGFzcyBU
aHJvd3NFeGNlcHRpb24gZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICAgIHRocm93ICdCYWQnOworICAgIH0KK307Citkb2N1bWVudC5kZWZpbmVDdXN0b21F
bGVtZW50KCd0aHJvd3MtZXhjZXB0aW9uJywgVGhyb3dzRXhjZXB0aW9uKTsKKworPC9zY3JpcHQ+
Cis8cmV0dXJucy10ZXh0PjwvcmV0dXJucy10ZXh0PgorPHJldHVybnMtbm9uLWVsZW1lbnQtb2Jq
ZWN0PjwvcmV0dXJucy1ub24tZWxlbWVudC1vYmplY3Q+Cis8bGFja3Mtc3VwZXItY2FsbD48L2xh
Y2tzLXN1cGVyLWNhbGw+Cis8dGhyb3dzLWV4Y2VwdGlvbj48L3Rocm93cy1leGNlcHRpb24+Cis8
c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCdyZXR1cm5zLXRleHQnKTsKKworICAgIGFzc2VydF9mYWxzZShpbnN0
YW5jZSBpbnN0YW5jZW9mIFJldHVybnNUZXh0Tm9kZSwgJ0hUTUwgcGFyc2VyIG11c3QgTk9UIGlu
c3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUgY29uc3RydWN0b3IgcmV0dXJucyBh
IFRleHQgbm9kZScpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTEVs
ZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFyc2VyIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5j
ZSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNy
ZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MVW5rbm93bkVs
ZW1lbnQnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVu
a25vd25FbGVtZW50IHdoZW4gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5zIGEg
VGV4dCBub2RlJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3JldHVybnMtbm9uLWVsZW1lbnQtb2JqZWN0Jyk7CisKKyAg
ICBhc3NlcnRfZmFsc2UoaW5zdGFuY2UgaW5zdGFuY2VvZiBSZXR1cm5zTm9uRWxlbWVudE9iamVj
dCwgJ0hUTUwgcGFyc2VyIG11c3QgTk9UIGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hl
biB0aGUgY29uc3RydWN0b3IgcmV0dXJucyBhIG5vbi1FbGVtZW50IG9iamVjdCcpOworICAgIGFz
c2VydF90cnVlKGluc3RhbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsICdUaGUgZmFsbGJhY2sg
ZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRN
TEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9mIEhUTUxVbmtu
b3duRWxlbWVudCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIg
bXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MVW5rbm93bkVsZW1lbnQnKTsKKworfSwgJ0hUTUwg
cGFyc2VyIG11c3QgY3JlYXRlIGEgZmFsbGJhY2sgSFRNTFVua25vd25FbGVtZW50IHdoZW4gYSBj
dXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciByZXR1cm5zIG5vbi1FbGVtZW50IG9iamVjdCcpOwor
Cit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCdsYWNrcy1zdXBlci1jYWxsJyk7CisKKyAgICBhc3NlcnRfZmFsc2UoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBMYWNrc1N1cGVyQ2FsbCwgJ0hUTUwgcGFyc2VyIG11c3QgTk9UIGluc3RhbnRp
YXRlIGEgY3VzdG9tIGVsZW1lbnQgd2hlbiB0aGUgY29uc3RydWN0b3IgZG9lcyBub3QgY2FsbCBz
dXBlcigpJyk7CisgICAgYXNzZXJ0X3RydWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVu
dCwgJ1RoZSBmYWxsYmFjayBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIgbXVzdCBiZSBh
biBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGluc3RhbmNlIGlu
c3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQgY3JlYXRl
ZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxVbmtub3duRWxlbWVu
dCcpOworCit9LCAnSFRNTCBwYXJzZXIgbXVzdCBjcmVhdGUgYSBmYWxsYmFjayBIVE1MVW5rbm93
bkVsZW1lbnQgd2hlbiBhIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGRvZXMgbm90IGNhbGwg
c3VwZXIoKScpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaW5zdGFuY2UgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCd0aHJvd3MtZXhjZXB0aW9uJyk7CisKKyAgICBhc3NlcnRfZmFs
c2UoaW5zdGFuY2UgaW5zdGFuY2VvZiBUaHJvd3NFeGNlcHRpb24sICdIVE1MIHBhcnNlciBtdXN0
IE5PVCBpbnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50IHdoZW4gdGhlIGNvbnN0cnVjdG9yIHRo
cm93cyBhbiBleGNlcHRpb24nKTsKKyAgICBhc3NlcnRfdHJ1ZShpbnN0YW5jZSBpbnN0YW5jZW9m
IEhUTUxFbGVtZW50LCAnVGhlIGZhbGxiYWNrIGVsZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNl
ciBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUo
aW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnQsICdUaGUgZmFsbGJhY2sgZWxl
bWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTFVu
a25vd25FbGVtZW50Jyk7CisKK30sICdIVE1MIHBhcnNlciBtdXN0IGNyZWF0ZSBhIGZhbGxiYWNr
IEhUTUxVbmtub3duRWxlbWVudCB3aGVuIGEgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3IgdGhy
b3dzIGFuIGV4Y2VwdGlvbicpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRy
aWJ1dGVzLWFuZC1jaGlsZHJlbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci1zZXRzLWF0dHJpYnV0ZXMtYW5k
LWNoaWxkcmVuLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGlsZHJl
bi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACitoZWxsbyB3b3Js
ZAorCitQQVNTIEhUTUwgcGFyc2VyIG11c3Qgc2V0IHRoZSBhdHRyaWJ1dGVzIAorUEFTUyBIVE1M
IHBhcnNlciBtdXN0IGFwcGVuZCBjaGlsZCBub2RlcyAKK1BBU1MgSFRNTCBwYXJzZXIgbXVzdCBz
ZXQgdGhlIGF0dHJpYnV0ZXMgb3IgYXBwZW5kIGNoaWxkcmVuIGJlZm9yZSBjYWxsaW5nIGNvbnN0
cnVjdG9yIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIv
cGFyc2VyLXNldHMtYXR0cmlidXRlcy1hbmQtY2hpbGRyZW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXNldHMtYXR0cmli
dXRlcy1hbmQtY2hpbGRyZW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItc2V0cy1hdHRyaWJ1dGVzLWFuZC1jaGlsZHJl
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IENoYW5nZXMgdG8gdGhlIEhU
TUwgcGFyc2VyPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3
YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBj
b250ZW50PSJIVE1MIHBhcnNlciBtdXN0IHNldCB0aGUgYXR0cmlidXRlcyBhbmQgYXBwZW5kIHRo
ZSBjaGlsZHJlbiBvbiBhIGN1c3RvbSBlbGVtZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0
eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9o
ZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordmFyIG51bWJl
ck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3I7Cit2YXIgbnVtYmVyT2ZDaGlsZE5vZGVzSW5Db25z
dHJ1Y3RvcjsKKworY2xhc3MgTXlDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewor
ICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKKyAgICAgICAgc3VwZXIoLi4uYXJncyk7CisgICAg
ICAgIG51bWJlck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3IgPSB0aGlzLmF0dHJpYnV0ZXMubGVu
Z3RoOworICAgICAgICBudW1iZXJPZkNoaWxkTm9kZXNJbkNvbnN0cnVjdG9yID0gdGhpcy5jaGls
ZE5vZGVzLmxlbmd0aDsKKyAgICB9Cit9OworZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgn
bXktY3VzdG9tLWVsZW1lbnQnLCBNeUN1c3RvbUVsZW1lbnQpOworCis8L3NjcmlwdD4KKzxteS1j
dXN0b20tZWxlbWVudCBpZD0iY3VzdG9tLWVsZW1lbnQtaWQiIGNsYXNzPSJjbGFzczEgY2xhc3My
Ij5oZWxsbyA8Yj53b3JsZDwvYj48L215LWN1c3RvbS1lbGVtZW50PgorPHNjcmlwdD4KKwordmFy
IGN1c3RvbUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdteS1jdXN0b20tZWxlbWVu
dCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1l
bnQuZ2V0QXR0cmlidXRlKCdpZCcpLCAnY3VzdG9tLWVsZW1lbnQtaWQnLCAnSFRNTCBwYXJzZXIg
bXVzdCBwcmVzZXJ2ZSB0aGUgaWQgYXR0cmlidXRlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0
b21FbGVtZW50LmlkLCAnY3VzdG9tLWVsZW1lbnQtaWQnLCAnSFRNTCBwYXJzZXIgbXVzdCBwcmVz
ZXJ2ZSB0aGUgc2VtYW50aWNzIG9mIHJlZmxlY3QgZm9yIHRoZSBpZCBhdHRyaWJ1dGUnKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpLCAnY2xh
c3MxIGNsYXNzMicsICdIVE1MIHBhcnNlciBtdXN0IHByZXNlcnZlIHRoZSBjbGFzcyBhdHRyaWJ1
dGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGN1c3RvbUVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCwg
MiwgJ0hUTUwgcGFyc2VyIG11c3QgaW5pdGlhbGl6ZSBjbGFzc0xpc3Qgb24gY3VzdG9tIGVsZW1l
bnRzJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNsYXNzTGlzdFswXSwgJ2Ns
YXNzMScsICdIVE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUgY2xhc3NMaXN0IG9uIGN1c3RvbSBl
bGVtZW50cycpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5jbGFzc0xpc3RbMV0s
ICdjbGFzczInLCAnSFRNTCBwYXJzZXIgbXVzdCBpbml0aWFsaXplIGNsYXNzTGlzdCBvbiBjdXN0
b20gZWxlbWVudHMnKTsKKworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5jaGlsZE5v
ZGVzLmxlbmd0aCwgMiwgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIGNoaWxkIG5vZGVzJyk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmNsYXNzTGlzdFswXSwgJ2NsYXNzMScsICdI
VE1MIHBhcnNlciBtdXN0IGluaXRpYWxpemUgY2xhc3NMaXN0IG9uIGN1c3RvbSBlbGVtZW50cycp
OworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5jbGFzc0xpc3RbMV0sICdjbGFzczIn
LCAnSFRNTCBwYXJzZXIgbXVzdCBpbml0aWFsaXplIGNsYXNzTGlzdCBvbiBjdXN0b20gZWxlbWVu
dHMnKTsKKworfSwgJ0hUTUwgcGFyc2VyIG11c3Qgc2V0IHRoZSBhdHRyaWJ1dGVzJyk7CisKK3Rl
c3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5jaGlsZE5v
ZGVzLmxlbmd0aCwgMiwgJ0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIGNoaWxkIG5vZGVzJyk7Cisg
ICAgYXNzZXJ0X3RydWUoY3VzdG9tRWxlbWVudC5maXJzdENoaWxkIGluc3RhbmNlb2YgVGV4dCwg
J0hUTUwgcGFyc2VyIG11c3QgYXBwZW5kIFRleHQgbm9kZSBjaGlsZCB0byBhIGN1c3RvbSBlbGVt
ZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjdXN0b21FbGVtZW50LmZpcnN0Q2hpbGQuZGF0YSwg
J2hlbGxvICcsICdIVE1MIHBhcnNlciBtdXN0IGFwcGVuZCBUZXh0IG5vZGUgY2hpbGQgdG8gYSBj
dXN0b20gZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGN1c3RvbUVsZW1lbnQubGFzdENoaWxk
IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQsICdIVE1MIHBhcnNlciBtdXN0IGFwcGVuZCBhIGJ1aWx0
aW4gZWxlbWVudCBjaGlsZCB0byBhIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X3RydWUo
Y3VzdG9tRWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGlsZCBpbnN0YW5jZW9mIFRleHQsICdIVE1M
IHBhcnNlciBtdXN0IHByZXNlcnZlIGdyYW5kY2hpbGQgbm9kZXMgb2YgYSBjdXN0b20gZWxlbWVu
dCcpOworICAgIGFzc2VydF9lcXVhbHMoY3VzdG9tRWxlbWVudC5sYXN0Q2hpbGQuZmlyc3RDaGls
ZC5kYXRhLCAnd29ybGQnLCAnSFRNTCBwYXJzZXIgbXVzdCBwcmVzZXJ2ZSBncmFuZGNoaWxkIG5v
ZGVzIG9mIGEgY3VzdG9tIGVsZW1lbnQnKTsKK30sICdIVE1MIHBhcnNlciBtdXN0IGFwcGVuZCBj
aGlsZCBub2RlcycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfZXF1YWxzKG51
bWJlck9mQXR0cmlidXRlc0luQ29uc3RydWN0b3IsIDAsICdIVE1MIHBhcnNlciBtdXN0IG5vdCBz
ZXQgYXR0cmlidXRlcyBvbiBhIGN1c3RvbSBlbGVtZW50IGJlZm9yZSBpbnZva2luZyB0aGUgY29u
c3RydWN0b3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKG51bWJlck9mQ2hpbGROb2Rlc0luQ29uc3Ry
dWN0b3IsIDAsICdIVE1MIHBhcnNlciBtdXN0IG5vdCBhcHBlbmQgY2hpbGQgbm9kZXMgdG8gYSBj
dXN0b20gZWxlbWVudCBiZWZvcmUgaW52b2tpbmcgdGhlIGNvbnN0cnVjdG9yJyk7Cit9LCAnSFRN
TCBwYXJzZXIgbXVzdCBzZXQgdGhlIGF0dHJpYnV0ZXMgb3IgYXBwZW5kIGNoaWxkcmVuIGJlZm9y
ZSBjYWxsaW5nIGNvbnN0cnVjdG9yJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcGFyc2VyL3BhcnNlci11c2Vz
LWNvbnN0cnVjdGVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1l
bGVtZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1jb25zdHJ1Y3RlZC1lbGVtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKworUEFTUyBIVE1MIHBhcnNl
ciBtdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0
cnVjdG9yIGluc3RlYWQgb2YgdGhlIG9uZSBjcmVhdGVkIGJlZm9yZSBzdXBlcigpIGNhbGwgCitQ
QVNTIEhUTUwgcGFyc2VyIG11c3QgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBvZiB0aGUgY3VzdG9t
IGVsZW1lbnQgY29uc3RydWN0b3IgaW5zdGVhZCB1c2luZyB0aGUgb25lIGNyZWF0ZWQgaW4gc3Vw
ZXIoKSBjYWxsIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9wYXJz
ZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3BhcnNlci9wYXJzZXItdXNlcy1jb25zdHJ1
Y3RlZC1lbGVtZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3Rv
bS1lbGVtZW50cy9wYXJzZXIvcGFyc2VyLXVzZXMtY29uc3RydWN0ZWQtZWxlbWVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IENoYW5nZXMgdG8gdGhlIEhUTUwgcGFyc2Vy
PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0i
bWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJI
VE1MIHBhcnNlciBtdXN0IGNvbnN0cnVjdCBhIGN1c3RvbSBlbGVtZW50IGluc3RlYWQgb2YgdXBn
cmFkaW5nIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKworbGV0IGFub3RoZXJFbGVtZW50Q3JlYXRlZEJlZm9yZVN1
cGVyQ2FsbCA9IHVuZGVmaW5lZDsKK2xldCBlbGVtZW50Q3JlYXRlZEJ5U3VwZXJDYWxsID0gdW5k
ZWZpbmVkOworbGV0IHNob3VsZENyZWF0ZUVsZW1lbnRCZWZvcmVTdXBlckNhbGwgPSB0cnVlOwor
Y2xhc3MgSW5zdGFudGlhdGVzSXRzZWxmQmVmb3JlU3VwZXIgZXh0ZW5kcyBIVE1MRWxlbWVudCB7
CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIGlmIChzaG91bGRDcmVhdGVFbGVtZW50QmVm
b3JlU3VwZXJDYWxsKSB7CisgICAgICAgICAgICBzaG91bGRDcmVhdGVFbGVtZW50QmVmb3JlU3Vw
ZXJDYWxsID0gZmFsc2U7CisgICAgICAgICAgICBhbm90aGVyRWxlbWVudENyZWF0ZWRCZWZvcmVT
dXBlckNhbGwgPSBuZXcgSW5zdGFudGlhdGVzSXRzZWxmQmVmb3JlU3VwZXIoKTsKKyAgICAgICAg
fQorICAgICAgICBzdXBlcigpOworICAgICAgICBlbGVtZW50Q3JlYXRlZEJ5U3VwZXJDYWxsID0g
dGhpczsKKyAgICB9Cit9OworZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgnaW5zdGFudGlh
dGVzLWl0c2VsZi1iZWZvcmUtc3VwZXInLCBJbnN0YW50aWF0ZXNJdHNlbGZCZWZvcmVTdXBlcik7
CisKK2xldCBzaG91bGRDcmVhdGVBbm90aGVySW5zdGFuY2UgPSB0cnVlOworbGV0IGFub3RoZXJJ
bnN0YW5jZSA9IHVuZGVmaW5lZDsKK2xldCBmaXJzdEluc3RhbmNlID0gdW5kZWZpbmVkOworY2xh
c3MgUmV0dXJuc0Fub3RoZXJJbnN0YW5jZSBleHRlbmRzIEhUTUxFbGVtZW50IHsKKyAgICBjb25z
dHJ1Y3RvcigpIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgaWYgKHNob3VsZENyZWF0ZUFu
b3RoZXJJbnN0YW5jZSkgeworICAgICAgICAgICAgc2hvdWxkQ3JlYXRlQW5vdGhlckluc3RhbmNl
ID0gZmFsc2U7CisgICAgICAgICAgICBmaXJzdEluc3RhbmNlID0gdGhpczsKKyAgICAgICAgICAg
IGFub3RoZXJJbnN0YW5jZSA9IG5ldyBSZXR1cm5zQW5vdGhlckluc3RhbmNlOworICAgICAgICAg
ICAgcmV0dXJuIGFub3RoZXJJbnN0YW5jZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKKyAgICB9Cit9OworZG9jdW1lbnQuZGVmaW5lQ3VzdG9tRWxlbWVudCgncmV0
dXJucy1hbm90aGVyLWluc3RhbmNlJywgUmV0dXJuc0Fub3RoZXJJbnN0YW5jZSk7CisKKzwvc2Ny
aXB0PgorPGluc3RhbnRpYXRlcy1pdHNlbGYtYmVmb3JlLXN1cGVyPjwvaW5zdGFudGlhdGVzLWl0
c2VsZi1iZWZvcmUtc3VwZXI+Cis8cmV0dXJucy1hbm90aGVyLWluc3RhbmNlPjwvcmV0dXJucy1h
bm90aGVyLWluc3RhbmNlPgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFy
IGluc3RhbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW5zdGFudGlhdGVzLWl0c2VsZi1i
ZWZvcmUtc3VwZXInKTsKKworICAgIGFzc2VydF9lcXVhbHMoaW5zdGFuY2UsIGVsZW1lbnRDcmVh
dGVkQnlTdXBlckNhbGwsICdIVE1MIHBhcnNlciBtdXN0IGluc2VydCB0aGUgZWxlbWVudCByZXR1
cm5lZCBieSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfbm90
X2VxdWFscyhpbnN0YW5jZSwgYW5vdGhlckVsZW1lbnRDcmVhdGVkQmVmb3JlU3VwZXJDYWxsLCAn
SFRNTCBwYXJzZXIgbXVzdCBub3QgaW5zZXJ0IGFub3RoZXIgaW5zdGFuY2Ugb2YgdGhlIGN1c3Rv
bSBlbGVtZW50IGNyZWF0ZWQgYmVmb3JlIHN1cGVyKCkgY2FsbCcpOworICAgIGFzc2VydF9lcXVh
bHMoYW5vdGhlckVsZW1lbnRDcmVhdGVkQmVmb3JlU3VwZXJDYWxsLnBhcmVudE5vZGUsIG51bGws
ICdIVE1MIHBhcnNlciBtdXN0IG5vdCBpbnNlcnQgYW5vdGhlciBpbnN0YW5jZSBvZiB0aGUgY3Vz
dG9tIGVsZW1lbnQgY3JlYXRlZCBiZWZvcmUgc3VwZXIoKSBjYWxsJyk7CisKK30sICdIVE1MIHBh
cnNlciBtdXN0IHVzZSB0aGUgcmV0dXJuZWQgdmFsdWUgb2YgdGhlIGN1c3RvbSBlbGVtZW50IGNv
bnN0cnVjdG9yIGluc3RlYWQgb2YgdGhlIG9uZSBjcmVhdGVkIGJlZm9yZSBzdXBlcigpIGNhbGwn
KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigncmV0dXJucy1hbm90aGVyLWluc3RhbmNlJyk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKGluc3RhbmNlLCBhbm90aGVySW5zdGFuY2UsICdIVE1MIHBhcnNlciBtdXN0IGluc2VydCB0
aGUgZWxlbWVudCByZXR1cm5lZCBieSB0aGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3InKTsK
KyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgZmlyc3RJbnN0YW5jZSwgJ0hUTUwgcGFy
c2VyIG11c3Qgbm90IGluc2VydCB0aGUgZWxlbWVudCBjcmVhdGVkIGJ5IHN1cGVyKCkgY2FsbCBp
ZiB0aGUgY29uc3RydWN0b3IgcmV0dXJuZWQgYW5vdGhlciBlbGVtZW50Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyhmaXJzdEluc3RhbmNlLnBhcmVudE5vZGUsIG51bGwsICdIVE1MIHBhcnNlciBtdXN0
IG5vdCBpbnNlcnQgdGhlIGVsZW1lbnQgY3JlYXRlZCBieSBzdXBlcigpIGNhbGwgaWYgdGhlIGNv
bnN0cnVjdG9yIHJldHVybmVkIGFub3RoZXIgZWxlbWVudCcpOworCit9LCAnSFRNTCBwYXJzZXIg
bXVzdCB1c2UgdGhlIHJldHVybmVkIHZhbHVlIG9mIHRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1
Y3RvciBpbnN0ZWFkIHVzaW5nIHRoZSBvbmUgY3JlYXRlZCBpbiBzdXBlcigpIGNhbGwnKTsKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="297401"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>