<?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>26599</bug_id>
          <alias>CVE-2011-0244</alias>
          <creation_ts>2009-06-22 00:46:27 -0700</creation_ts>
          <short_desc>Remove remaining calls to deprecatedParseURL</short_desc>
          <delta_ts>2011-06-30 17:44:16 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>45695</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ayao</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127314</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-22 00:46:27 -0700</bug_when>
    <thetext>Turns out there are two kinds of callers to the CSSHelper.h parseURL function:

    1) Callers that are actually parsing CSS. None of these need to do any of the things in the parseURL function because the lexer and CSSParser object already take care of everything correctly.

    2) Callers that are not parsing CSS. These callers are going to get some really strange behavior since they really don&apos;t want all the quirky things that parseURL does.

I have a patch that removes the unneeded calls of type (1) and that adds a comment explaining why callers of type (2) need to get off the crack pipe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127323</commentid>
    <comment_count>1</comment_count>
      <attachid>31636</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-22 01:20:22 -0700</bug_when>
    <thetext>Created attachment 31636
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131642</commentid>
    <comment_count>2</comment_count>
      <attachid>32729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-14 12:44:12 -0700</bug_when>
    <thetext>Created attachment 32729
patch for part 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131812</commentid>
    <comment_count>3</comment_count>
      <attachid>32729</attachid>
    <who name="">mitz</who>
    <bug_when>2009-07-14 22:29:26 -0700</bug_when>
    <thetext>Comment on attachment 32729
patch for part 1

&gt; +            // FIXME: The completeURL call should be done when using the CSSImageValue,
&gt; +            // not when creating it.
&gt; +            parsedValue = CSSFontFaceSrcValue::create(m_styleSheet-&gt;completeURL(val-&gt;string));

The comment should say CSSFontFaceSrcValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131819</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-07-15 01:10:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=32729) [details]
&gt; patch for part 1

There are two ChangeLog entries in WebCore/ChangeLog.  You probably want to delete one of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131936</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-15 10:13:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 32729 [details])
&gt; &gt; +            // FIXME: The completeURL call should be done when using the CSSImageValue,
&gt; &gt; +            // not when creating it.
&gt; &gt; +            parsedValue = CSSFontFaceSrcValue::create(m_styleSheet-&gt;completeURL(val-&gt;string));
&gt; 
&gt; The comment should say CSSFontFaceSrcValue.

Will do.

(In reply to comment #4)
&gt; There are two ChangeLog entries in WebCore/ChangeLog.  You probably want to
&gt; delete one of them.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132045</commentid>
    <comment_count>6</comment_count>
      <attachid>32729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-15 14:45:52 -0700</bug_when>
    <thetext>Comment on attachment 32729
patch for part 1

Landed this as http://trac.webkit.org/changeset/45946 and now clearing flag so we can finish the rest of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137882</commentid>
    <comment_count>7</comment_count>
      <attachid>34273</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 08:14:52 -0700</bug_when>
    <thetext>Created attachment 34273
some work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137886</commentid>
    <comment_count>8</comment_count>
      <attachid>34275</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 08:16:26 -0700</bug_when>
    <thetext>Created attachment 34275
test I&apos;m experimenting with</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137887</commentid>
    <comment_count>9</comment_count>
      <attachid>34276</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-07 08:16:46 -0700</bug_when>
    <thetext>Created attachment 34276
another test I&apos;m experimenting with</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286671</commentid>
    <comment_count>10</comment_count>
      <attachid>69144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-28 17:46:23 -0700</bug_when>
    <thetext>Created attachment 69144
Checkpoint of work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287725</commentid>
    <comment_count>11</comment_count>
      <attachid>69361</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-30 12:13:34 -0700</bug_when>
    <thetext>Created attachment 69361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287942</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-30 17:04:27 -0700</bug_when>
    <thetext>Committed r68854: &lt;http://trac.webkit.org/changeset/68854&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31636</attachid>
            <date>2009-06-22 01:20:22 -0700</date>
            <delta_ts>2009-07-14 12:44:12 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>ParseURLPatch.txt</filename>
            <type>text/plain</type>
            <size>13703</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDkzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDYtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NjU5OTogQ1NTSGVscGVyLmgncyBwYXJzZVVSTCBpcyBhIGZ1bmN0aW9uIHRoYXQgbm8gb25lIHNo
b3VsZCBldmVyIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI2NTk5CisKKyAgICAgICAgKiBjc3MvQ1NTSGVscGVyLmg6IEFkZGVkIGEgY29tbWVu
dCBleHBsYWluaW5nIHdoeSBub2JvZHkgc2hvdWxkIGV2ZXIgY2FsbCB0aGlzCisgICAgICAgIGZ1
bmN0aW9uLiBJIHNob3VsZCBhbHNvIHJlbmFtZSBpdCBkZXByZWNhdGVkUGFyc2VVUkwuCisKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VWYWx1ZSk6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0byBwYXJzZVVSTDsKKyAgICAgICAg
Q1NTUGFyc2VyOjp0ZXh0IGFscmVhZHkgdGFrZXMgY2FyZSBvZiBwYXJzaW5nIHRoZSBVUkkgdG9r
ZW4gc3ludGF4LCBhbmQgdGhlCisgICAgICAgIHBhcnNlVVJMIGZ1bmN0aW9uIGRvZXMgbm8gZ29v
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb250ZW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZSk6IERpdHRvLgorCisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5oOiBSZW1vdmVkIHN0cmF5ICJwdWJsaWM6IiBpbiB0aGlzIGhl
YWRlci4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHJpbmdJbXBsOjpzdWJzdHJpbmcpOiBPcHRpbWl6ZWQgdGhlIGNhc2Ugd2hl
cmUgdGhlIHN1YnN0cmluZyBjb3ZlcnMKKyAgICAgICAgdGhlIGVudGlyZSBzdHJpbmcsIHNvIHdl
IGp1c3Qgc2hhcmUgdGhlIFN0cmluZ0ltcGwgaW5zdGVhZCBvZiBtYWtpbmcgYSBuZXcgb25lLgor
ICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6c3Vic3RyaW5nQ29weSk6IFN0cmVhbWxpbmVk
IHRoZSBsb2dpYyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6Y29weSk6IEFk
ZGVkIGEgRklYTUUuCisKIDIwMDktMDYtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaAkocmV2aXNp
b24gNDQ5MjkpCisrKyBXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDYgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQ1NTIGltcGxlbWVu
dGF0aW9uIGZvciBLREUuCi0gKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtu
b2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywxMCArMjYsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgU3RyaW5nOwogCi0gICAgLyoKLSAgICAgKiBtb3N0
bHkganVzdCByZW1vdmVzIHRoZSB1cmwoIi4uLiIpIGJyYWNlCi0gICAgICovCi0gICAgU3RyaW5n
IHBhcnNlVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAvLyBEZXByZWNhdGVkLgorICAgIC8v
IFVzZWQgaW4gbWFueSBpbmFwcHJvcHJpYXRlIGNvbnRleHRzIHRocm91Z2hvdXQgV2ViQ29yZS4g
V2UnbGwgaGF2ZSB0byBleGFtaW5lIGFuZCB0ZXN0CisgICAgLy8gZWFjaCBjYWxsIHNpdGUgdG8g
ZmluZCBvdXQgd2hldGhlciBpdCBuZWVkcyB0aGUgdmFyaW91cyB0aGluZ3MgdGhpcyBmdW5jdGlv
biBkb2VzLiBUaGF0CisgICAgLy8gaW5jbHVkZXMgdHJpbW1pbmcgbGVhZGluZyBhbmQgdHJhaWxp
bmcgY29udHJvbCBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgd2hpdGVzcGFjZSwgcmVtb3ZhbAorICAg
IC8vIG9mIHVybCgpIG9yIFVSTCgpIGlmIGl0J3Mgc3Vycm91bmRpbmcgdGhlIGVudGlyZSBzdHJp
bmcsIHJlbW92YWwgb2YgbWF0Y2hpbmcgcXVvdGUgbWFya3MKKyAgICAvLyBhcm91bmQgdGhlIGVu
dGlyZSBzdHJpbmcsIGFuZCBzdHJpcHBpbmcgb2YgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdl
IFUrMDAwMCAtIFUrMDAxMi4KKyAgICAvLyBTaG91bGQgYmUgcmVwbGFjZWQgYnkgZnVuY3Rpb25z
IHRoYXQganVzdCBkbyB0aGUgd29yayB0aGF0J3MgYWN0dWFsbHkgbmVlZGVkLgorICAgIFN0cmlu
ZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlIGFsd2F5cyBhc3N1bWUgOTYg
Q1NTIHBpeGVscyBpbiBhIENTUyBpbmNoLiBUaGlzIGlzIHRoZSBjb2xkIGhhcmQgdHJ1dGggb2Yg
dGhlIFdlYi4KICAgICAvLyBBdCBoaWdoIERQSSwgd2UgbWF5IHNjYWxlIGEgQ1NTIHBpeGVsLCBi
dXQgdGhlIHJhdGlvIG9mIHRoZSBDU1MgcGl4ZWwgdG8gdGhlIHNvLWNhbGxlZApJbmRleDogV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCShyZXZpc2lvbiA0NDkyOSkKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAzIExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMg
U2hhbmtzIDx3ZWJraXRAbmlja3NoYW5rcy5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCkBAIC04MTAsNyArODEwLDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAgICB3aGlsZSAodmFsdWUg
JiYgdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKICAgICAgICAg
ICAgIGlmICghbGlzdCkKICAgICAgICAgICAgICAgICBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOyAKLSAgICAgICAgICAgIFN0cmluZyB1cmkgPSBwYXJzZVVSTCh2
YWx1ZS0+c3RyaW5nKTsKKyAgICAgICAgICAgIFN0cmluZyB1cmkgPSB2YWx1ZS0+c3RyaW5nOwog
ICAgICAgICAgICAgVmVjdG9yPGludD4gY29vcmRzOwogICAgICAgICAgICAgdmFsdWUgPSBtX3Zh
bHVlTGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgd2hpbGUgKHZhbHVlICYmIHZhbHVlLT51bml0
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CkBAIC04MjUsOCArODI1LDExIEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9zdHJpY3QgJiYgbnJjb29yZHMgPT0gMikKICAgICAgICAgICAgICAgICBob3Rz
cG90ID0gSW50UG9pbnQoY29vcmRzWzBdLCBjb29yZHNbMV0pOwogICAgICAgICAgICAgaWYgKG1f
c3RyaWN0IHx8IGNvb3Jkcy5zaXplKCkgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmICghdXJp
LmlzTnVsbCgpICYmIG1fc3R5bGVTaGVldCkKKyAgICAgICAgICAgICAgICBpZiAoIXVyaS5pc051
bGwoKSAmJiBtX3N0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRo
ZSBjb21wbGV0ZVVSTCBjYWxsIHNob3VsZCBiZSBkb25lIHdoZW4gdXNpbmcgdGhlIENTU0N1cnNv
ckltYWdlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5nIGl0
LgogICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6
Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVVUkwodXJpKSwgaG90c3BvdCkpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgobV9zdHJpY3QgJiYg
IXZhbHVlKSB8fCAodmFsdWUgJiYgISh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3Bl
cmF0b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLCcpKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC04ODksMTAgKzg5MiwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShp
bnQgcHJvcElkLCBiCiAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfSBlbHNl
IGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAg
ICAgICAgLy8gIyMjIGFsbG93IHN0cmluZyBpbiBub24gc3RyaWN0IG1vZGU/Ci0gICAgICAgICAg
ICBTdHJpbmcgdXJpID0gcGFyc2VVUkwodmFsdWUtPnN0cmluZyk7Ci0gICAgICAgICAgICBpZiAo
IXVyaS5pc051bGwoKSAmJiBtX3N0eWxlU2hlZXQpIHsKLSAgICAgICAgICAgICAgICBwYXJzZWRW
YWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKHVy
aSkpOworICAgICAgICAgICAgaWYgKG1fc3R5bGVTaGVldCkgeworICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGUgY29tcGxldGVVUkwgY2FsbCBzaG91bGQgYmUgZG9uZSB3aGVuIHVzaW5nIHRo
ZSBDU1NJbWFnZVZhbHVlLAorICAgICAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5nIGl0
LgorICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKG1f
c3R5bGVTaGVldC0+Y29tcGxldGVVUkwodmFsdWUtPnN0cmluZykpOwogICAgICAgICAgICAgICAg
IG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
dmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uICYmIGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtZ3JhZGllbnQoIikpIHsKQEAgLTEx
MDQsOCArMTEwNyw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIK
ICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7CiAgICAgICAgICAgICB3
aGlsZSAoKHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hl
ZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gcGFyc2VVUkwodmFsLT5z
dHJpbmcpOwotICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWx1ZSksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVVJJKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBjb21w
bGV0ZVVSTCBjYWxsIHNob3VsZCBiZSBkb25lIHdoZW4gdXNpbmcgdGhlIENTU1ByaW1pdGl2ZVZh
bHVlLAorICAgICAgICAgICAgICAgICAgICAvLyBub3Qgd2hlbiBjcmVhdGluZyBpdC4KKyAgICAg
ICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1f
c3R5bGVTaGVldC0+Y29tcGxldGVVUkwodmFsLT5zdHJpbmcpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk5OSw4ICsyMDAzLDkgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlQ29udGVudChpbnQgcHJvcElkLAogICAgICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgICAgICBpZiAodmFsLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVVJJICYmIG1fc3R5bGVTaGVldCkgewogICAgICAgICAgICAgLy8gdXJs
Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVVSTCh2YWwtPnN0cmluZyk7Ci0gICAg
ICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQt
PmNvbXBsZXRlVVJMKHZhbHVlKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRl
VVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKKyAg
ICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5nIGl0LgorICAgICAgICAgICAgcGFyc2VkVmFs
dWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWwt
PnN0cmluZykpOwogICAgICAgICB9IGVsc2UgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1
ZTo6RnVuY3Rpb24pIHsKICAgICAgICAgICAgIC8vIGF0dHIoWCkgfCBjb3VudGVyKFggWyxZXSkg
fCBjb3VudGVycyhYLCBZLCBbLFpdKSB8IC13ZWJraXQtZ3JhZGllbnQoLi4uKQogICAgICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzID0gdmFsLT5mdW5jdGlvbi0+YXJnczsKQEAgLTIw
ODksOSArMjA5NCwxMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsSW1hZ2UoUmVmUHRyPENT
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAobV92YWx1ZUxpc3QtPmN1cnJl
bnQoKS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICBTdHJp
bmcgdXJpID0gcGFyc2VVUkwobV92YWx1ZUxpc3QtPmN1cnJlbnQoKS0+c3RyaW5nKTsKLSAgICAg
ICAgaWYgKCF1cmkuaXNOdWxsKCkgJiYgbV9zdHlsZVNoZWV0KQotICAgICAgICAgICAgdmFsdWUg
PSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh1cmkpKTsK
KyAgICAgICAgLy8gRklYTUU6IFRoZSBjb21wbGV0ZVVSTCBjYWxsIHNob3VsZCBiZSBkb25lIHdo
ZW4gdXNpbmcgdGhlIENTU0ltYWdlVmFsdWUsCisgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5n
IGl0LgorICAgICAgICBpZiAobV9zdHlsZVNoZWV0KQorICAgICAgICAgICAgdmFsdWUgPSBDU1NJ
bWFnZVZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTChtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpLT5zdHJpbmcpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0y
MTAxLDYgKzIxMDcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsSW1hZ2UoUmVmUHRyPENT
CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5m
dW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtY2FudmFzKCIpKQogICAgICAgICAgICAgcmV0dXJuIHBh
cnNlQ2FudmFzKHZhbHVlKTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTMx
NDIsOCArMzE0OSw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjKCkKICAgICB3
aGlsZSAoKHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpKSB7CiAgICAgICAgIFJlZlB0cjxD
U1NGb250RmFjZVNyY1ZhbHVlPiBwYXJzZWRWYWx1ZTsKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiAhZXhwZWN0Q29tbWEgJiYgbV9zdHlsZVNo
ZWV0KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVVSTCh2YWwtPnN0cmluZyk7
Ci0gICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZSht
X3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKHZhbHVlKSk7CisgICAgICAgICAgICAvLyBGSVhNRTog
VGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1h
Z2VWYWx1ZSwKKyAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5nIGl0LgorICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0
LT5jb21wbGV0ZVVSTCh2YWwtPnN0cmluZykpOwogICAgICAgICAgICAgdXJpVmFsdWUgPSBwYXJz
ZWRWYWx1ZTsKICAgICAgICAgICAgIGFsbG93Rm9ybWF0ID0gdHJ1ZTsKICAgICAgICAgICAgIGV4
cGVjdENvbW1hID0gdHJ1ZTsKQEAgLTM3NDIsMTEgKzM3NTAsMTAgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQm9yZGVySW1hZ2UoaW50IHBybwogICAgIC8vIExvb2sgZm9yIGFuIGltYWdlIGluaXRp
YWxseS4gIElmIHRoZSBmaXJzdCB2YWx1ZSBpcyBub3QgYSBVUkksIHRoZW4gd2UncmUgZG9uZS4K
ICAgICBCb3JkZXJJbWFnZVBhcnNlQ29udGV4dCBjb250ZXh0OwogICAgIENTU1BhcnNlclZhbHVl
KiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwotICAgIGlmICh2YWwtPnVuaXQgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkgJiYgbV9zdHlsZVNoZWV0KSB7ICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIHVyaSA9IHBhcnNlVVJMKHZhbC0+c3RyaW5nKTsKLSAgICAgICAgaWYgKHVyaS5p
c051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY29udGV4dC5jb21t
aXRJbWFnZShDU1NJbWFnZVZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh1
cmkpKSk7CisgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAm
JiBtX3N0eWxlU2hlZXQpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBjb21wbGV0ZVVSTCBjYWxs
IHNob3VsZCBiZSBkb25lIHdoZW4gdXNpbmcgdGhlIENTU0ltYWdlVmFsdWUsCisgICAgICAgIC8v
IG5vdCB3aGVuIGNyZWF0aW5nIGl0LgorICAgICAgICBjb250ZXh0LmNvbW1pdEltYWdlKENTU0lt
YWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKHZhbC0+c3RyaW5nKSkp
OwogICAgIH0gZWxzZSBpZiAodmFsLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikg
ewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlOwogICAgICAgICBpZiAoKGVxdWFsSWdu
b3JpbmdDYXNlKHZhbC0+ZnVuY3Rpb24tPm5hbWUsICItd2Via2l0LWdyYWRpZW50KCIpICYmIHBh
cnNlR3JhZGllbnQodmFsdWUpKSB8fApJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJldmlzaW9uIDQ0OTI5KQorKysg
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8Q1NTU2VsZWN0
b3IqPiogcmV1c2FibGVTZWxlY3RvclZlY3RvcigpIHsgcmV0dXJuICZtX3JldXNhYmxlU2VsZWN0
b3JWZWN0b3I7IH0KICAgICAgICAgCi0gICAgcHVibGljOgogICAgICAgICBib29sIG1fc3RyaWN0
OwogICAgICAgICBib29sIG1faW1wb3J0YW50OwogICAgICAgICBpbnQgbV9pZDsKQEAgLTIxNyw3
ICsyMTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtX2Rl
ZmF1bHROYW1lc3BhY2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1ldGhvZHMgYW5kIGRhdGEK
LSAgICBwdWJsaWM6CiAgICAgICAgIGludCBsZXgodm9pZCogeXlsdmFsKTsKICAgICAgICAgaW50
IHRva2VuKCkgeyByZXR1cm4geXlUb2s7IH0KICAgICAgICAgVUNoYXIqIHRleHQoaW50KiBsZW5n
dGgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24gNDQ5
MjkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNSwyNCArMjA1LDI2IEBAIGJvb2wgU3RyaW5nSW1wbDo6Y29udGFpbnNPbmx5V2hp
dGVzcGFjZSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpzdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4pCitQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoKQogewotICAgIGlmIChwb3MgPj0gbV9sZW5ndGgpCisgICAgaWYgKHN0YXJ0
ID49IG1fbGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHkoKTsKLSAgICBpZiAobGVuID4gbV9s
ZW5ndGggLSBwb3MpCi0gICAgICAgIGxlbiA9IG1fbGVuZ3RoIC0gcG9zOwotICAgIHJldHVybiBj
cmVhdGUobV9kYXRhICsgcG9zLCBsZW4pOworICAgIHVuc2lnbmVkIG1heExlbmd0aCA9IG1fbGVu
Z3RoIC0gc3RhcnQ7CisgICAgaWYgKGxlbmd0aCA+PSBtYXhMZW5ndGgpIHsKKyAgICAgICAgaWYg
KCFzdGFydCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICBsZW5ndGggPSBtYXhM
ZW5ndGg7CisgICAgfQorICAgIHJldHVybiBjcmVhdGUobV9kYXRhICsgc3RhcnQsIGxlbmd0aCk7
CiB9CiAKLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nQ29weSh1
bnNpZ25lZCBwb3MsIHVuc2lnbmVkIGxlbikKLXsKLSAgICBpZiAocG9zID49IG1fbGVuZ3RoKQot
ICAgICAgICBwb3MgPSBtX2xlbmd0aDsKLSAgICBpZiAobGVuID4gbV9sZW5ndGggLSBwb3MpCi0g
ICAgICAgIGxlbiA9IG1fbGVuZ3RoIC0gcG9zOwotICAgIGlmICghbGVuKQorUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdWJzdHJpbmdDb3B5KHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgpCit7CisgICAgc3RhcnQgPSBtaW4oc3RhcnQsIG1fbGVuZ3RoKTsKKyAgICBs
ZW5ndGggPSBtaW4obGVuZ3RoLCBtX2xlbmd0aCAtIHN0YXJ0KTsKKyAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHJpbmdJbXBsKTsKLSAgICByZXR1cm4gc3Vi
c3RyaW5nKHBvcywgbGVuKTsKKyAgICByZXR1cm4gY3JlYXRlKG1fZGF0YSArIHN0YXJ0LCBsZW5n
dGgpOwogfQogCiBVQ2hhcjMyIFN0cmluZ0ltcGw6OmNoYXJhY3RlclN0YXJ0aW5nQXQodW5zaWdu
ZWQgaSkKQEAgLTEwNjMsNiArMTA2NSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5n
SW1wbDo6Y3JlYXQKIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb3B5KCkK
IHsKKyAgICAvLyBGSVhNRTogRm9yIHplcm8gbGVuZ3RoIHRoaXMgcmV0dXJucyBlbXB0eSgpIHdo
aWNoIGlzIG5vdCBzYWZlIGZvciBhbm90aGVyIHRocmVhZC4KICAgICByZXR1cm4gY3JlYXRlKG1f
ZGF0YSwgbV9sZW5ndGgpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9r
ZW4tcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10
b2tlbi1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91
cmktdG9rZW4tcGFyc2luZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8c3R5
bGU+CisjYSB7IGNvbnRlbnQ6IHVybCgpOyB9Cis8L3N0eWxlPgorCis8cCBpZD0ibWVzc2FnZSI+
VEVTVCBESUQgTk9UIENPTVBMRVRFPC9wPgorCis8cD5SdWxlcyBmcm9tIHRoZSBzdHlsZXNoZWV0
OjwvcD4KKworPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKworPHA+RXhwZWN0ZWQgcmVzdWx0Ojwv
cD4KKworPHByZSBpZD0iZXhwZWN0ZWQiPiNhIHsgY29udGVudDogdXJsKGh0dHA6Ly93ZWJraXQu
b3JnLyApOyB9CisjYyB7IH0KKyNkIHsgfQorI2UgeyB9CisjZiB7IH0KKyNnIHsgfQorI2ggeyB9
CisjaSB7IH0KKyNqIHsgfQorI2wgeyB9CisjbiB7IH0KKyNxIHsgfQorI3IgeyB9CisjcyB7IH0K
KyN0IHsgfQorI3UgeyB9Cis8L3ByZT4KKworPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
K3ZhciBydWxlcyA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzOwordmFyIHRleHQg
PSAiIjsKK2ZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICB0ZXh0
ICs9IHJ1bGVzLml0ZW0oaSkuY3NzVGV4dDsKKyAgICB0ZXh0ICs9ICJcbiI7Cit9CisKK2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXh0KSk7CisKK2lmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
Zmlyc3RDaGlsZC5kYXRhID09PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhwZWN0ZWQiKS5m
aXJzdENoaWxkLmRhdGEpCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKS5m
aXJzdENoaWxkLmRhdGEgPSAiU1VDQ0VTUyI7CitlbHNlCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm1lc3NhZ2UiKS5maXJzdENoaWxkLmRhdGEgPSAiRkFJTFVSRSI7CisKKy8qCisKK2N1
cnNvcgorbGlzdC1zdHlsZS1pbWFnZQorY29udGVudDoKK2JhY2tncm91bmQtaW1hZ2UKK3NyYyBp
bnNpZGUgZm9udC1mYWNlCitib3JkZXItaW1hZ2UKKworKi8KKworPC9zY3JpcHQ+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1s
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbApOYW1lOiBzdm46
ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32729</attachid>
            <date>2009-07-14 12:44:12 -0700</date>
            <delta_ts>2009-08-07 08:14:52 -0700</delta_ts>
            <desc>patch for part 1</desc>
            <filename>ParseURLPatch1.txt</filename>
            <type>text/plain</type>
            <size>24845</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NTg2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMDktMDctMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENTU0hl
bHBlci5oJ3MgcGFyc2VVUkwgaXMgYSBmdW5jdGlvbiB0aGF0IG5vIG9uZSBzaG91bGQgZXZlciBj
YWxsCisgICAgICAgIFBhcnQgMTogRWxpbWluYXRlIGNhbGxlcnMgaW4gdGhlIENTUyBwYXJzZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5OQor
CisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWwKKworICAgICAg
ICAqIGNzcy9DU1NIZWxwZXIuaDogQWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IG5vYm9k
eSBzaG91bGQgZXZlciBjYWxsIHRoaXMKKyAgICAgICAgZnVuY3Rpb24uIEEgRklYTUUgc3VnZ2Vz
dHMgYSBuZXh0IHN0ZXAsIHdoaWNoIHdvdWxkIGJlIHRvIHJlbmFtZSBpdCBkZXByZWNhdGVkUGFy
c2VVUkwuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6IFJlbW92ZWQgdW5uZWVkZWQgY2FsbCB0byBwYXJzZVVS
TDsKKyAgICAgICAgQ1NTUGFyc2VyOjp0ZXh0IGFscmVhZHkgdGFrZXMgY2FyZSBvZiBwYXJzaW5n
IHRoZSBVUkkgdG9rZW4gc3ludGF4LCBhbmQgdGhlCisgICAgICAgIHBhcnNlVVJMIGZ1bmN0aW9u
IGRvZXMgbm8gZ29vZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb250ZW50
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbEltYWdlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNDU1NXaGl0ZXNwYWNlKTogQWRkZWQuIEhlbHBlciBm
dW5jdGlvbiB0aGF0IG1ha2VzIHRoZSB0ZXh0IGZ1bmN0aW9uCisgICAgICAgIGVhc2llciB0byBy
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjp0ZXh0KTogVHdlYWsgbG9naWMgc28g
dGhhdCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICAgIGFyZSBib3RoIHRy
aW1tZWQgYmVmb3JlIHJlbW92aW5nIHRoZSBxdW90ZSBtYXJrcy4gQ2hhbmdlZCB0byB1c2UgdGhl
CisgICAgICAgIGlzQ1NTV2hpdGVzcGFjZSwgaXNBU0NJSUhleERpZ2l0LCBhbmQgdG9BU0NJSUhl
eFZhbHVlIGZ1bmN0aW9ucyBmb3IgY2xhcml0eS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDogUmVtb3ZlZCBzdHJheSAicHVibGljOiIgaW4gdGhpcyBoZWFkZXIuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1w
bDo6c3Vic3RyaW5nKTogT3B0aW1pemVkIHRoZSBjYXNlIHdoZXJlIHRoZSBzdWJzdHJpbmcgY292
ZXJzCisgICAgICAgIHRoZSBlbnRpcmUgc3RyaW5nLCBzbyB3ZSBqdXN0IHNoYXJlIHRoZSBTdHJp
bmdJbXBsIGluc3RlYWQgb2YgbWFraW5nIGEgbmV3IG9uZS4KKyAgICAgICAgVGhpcyBjYXNlIGNh
bWUgdXAgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgQ1NTIHBhcnNlciBjaGFuZ2VzIGFib3Zl
LgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6c3Vic3RyaW5nQ29weSk6IFN0cmVhbWxp
bmVkIHRoZSBsb2dpYyBoZXJlIGFuZCBtYWRlIGl0CisgICAgICAgIG5vdCBjYWxsIHN1YnN0cmlu
ZyBhbnkgbW9yZS4gQmVmb3JlLCB0aGlzIHdhcyByZWx5aW5nIG9uIHRoZSBzdWJzdHJpbmcgZnVu
Y3Rpb24KKyAgICAgICAgYWx3YXlzIG1ha2luZyBhIGNvcHkgb2YgYW55IG5vbi1lbXB0eSBzdWJz
dHJpbmcuCisKKzIwMDktMDctMTQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNjU5OTog
Q1NTSGVscGVyLmgncyBwYXJzZVVSTCBpcyBhIGZ1bmN0aW9uIHRoYXQgbm8gb25lIHNob3VsZCBl
dmVyIGNhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI2NTk5CisKKyAgICAgICAgKiBjc3MvQ1NTSGVscGVyLmg6IEFkZGVkIGEgY29tbWVudCBleHBs
YWluaW5nIHdoeSBub2JvZHkgc2hvdWxkIGV2ZXIgY2FsbCB0aGlzCisgICAgICAgIGZ1bmN0aW9u
LiBBIGdyZWF0IG5leHQgc3RlcCB3b3VsZCBiZSB0byByZW5hbWUgaXQgZGVwcmVjYXRlZFBhcnNl
VVJMLgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlVmFsdWUpOiBSZW1vdmVkIHVubmVlZGVkIGNhbGwgdG8gcGFyc2VVUkw7
CisgICAgICAgIENTU1BhcnNlcjo6dGV4dCBhbHJlYWR5IHRha2VzIGNhcmUgb2YgcGFyc2luZyB0
aGUgVVJJIHRva2VuIHN5bnRheCwgYW5kIHRoZQorICAgICAgICBwYXJzZVVSTCBmdW5jdGlvbiBk
b2VzIG5vIGdvb2QuCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29udGVudCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxJbWFnZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlU3JjKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2UpOiBEaXR0
by4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDogUmVtb3ZlZCBzdHJheSAicHVibGljOiIg
aW4gdGhpcyBoZWFkZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RyaW5nSW1wbDo6c3Vic3RyaW5nKTogT3B0aW1pemVkIHRo
ZSBjYXNlIHdoZXJlIHRoZSBzdWJzdHJpbmcgY292ZXJzCisgICAgICAgIHRoZSBlbnRpcmUgc3Ry
aW5nLCBzbyB3ZSBqdXN0IHNoYXJlIHRoZSBTdHJpbmdJbXBsIGluc3RlYWQgb2YgbWFraW5nIGEg
bmV3IG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0ltcGw6OnN1YnN0cmluZ0NvcHkpOiBT
dHJlYW1saW5lZCB0aGUgbG9naWMgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0cmluZ0ltcGw6
OmNvcHkpOiBBZGRlZCBhIEZJWE1FLgorCiAyMDA5LTA3LTExICBKZXJlbXkgT3Jsb3cgIDxqb3Js
b3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTSGVscGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
SGVscGVyLmgJKHJldmlzaW9uIDQ1ODYzKQorKysgV2ViQ29yZS9jc3MvQ1NTSGVscGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw2IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIENTUyBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMTUg
KzI2LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFN0cmluZzsKIAotICAg
IC8qCi0gICAgICogbW9zdGx5IGp1c3QgcmVtb3ZlcyB0aGUgdXJsKCIuLi4iKSBicmFjZQotICAg
ICAqLwotICAgIFN0cmluZyBwYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgLy8gRGVw
cmVjYXRlZC4KKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGRlcHJlY2F0ZWRQYXJzZVVSTC4KKyAg
ICAvLyBVc2VkIGluIG1hbnkgaW5hcHByb3ByaWF0ZSBjb250ZXh0cyB0aHJvdWdob3V0IFdlYkNv
cmUuIFdlJ2xsIGhhdmUgdG8gZXhhbWluZSBhbmQgdGVzdAorICAgIC8vIGVhY2ggY2FsbCBzaXRl
IHRvIGZpbmQgb3V0IHdoZXRoZXIgaXQgbmVlZHMgdGhlIHZhcmlvdXMgdGhpbmdzIHRoaXMgZnVu
Y3Rpb24gZG9lcy4gVGhhdAorICAgIC8vIGluY2x1ZGVzIHRyaW1taW5nIGxlYWRpbmcgYW5kIHRy
YWlsaW5nIGNvbnRyb2wgY2hhcmFjdGVycyAoaW5jbHVkaW5nIHdoaXRlc3BhY2UpLCByZW1vdmlu
ZworICAgIC8vIHVybCgpIG9yIFVSTCgpIGlmIGl0IHN1cnJvdW5kcyB0aGUgZW50aXJlIHN0cmlu
ZywgcmVtb3ZpbmcgbWF0Y2hpbmcgcXVvdGUgbWFya3MgaWYgcHJlc2VudCwKKyAgICAvLyBhbmQg
c3RyaXBwaW5nIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMDEyLiBQcm9i
YWJseSBubyBjYWxsZXIgbmVlZHMgdGhpcy4KKyAgICBTdHJpbmcgcGFyc2VVUkwoY29uc3QgU3Ry
aW5nJik7CiAKICAgICAvLyBXZSBhbHdheXMgYXNzdW1lIDk2IENTUyBwaXhlbHMgaW4gYSBDU1Mg
aW5jaC4gVGhpcyBpcyB0aGUgY29sZCBoYXJkIHRydXRoIG9mIHRoZSBXZWIuCiAgICAgLy8gQXQg
aGlnaCBEUEksIHdlIG1heSBzY2FsZSBhIENTUyBwaXhlbCwgYnV0IHRoZSByYXRpbyBvZiB0aGUg
Q1NTIHBpeGVsIHRvIHRoZSBzby1jYWxsZWQKICAgICAvLyAiYWJzb2x1dGUiIENTUyBsZW5ndGgg
dW5pdHMgbGlrZSBpbmNoIGFuZCBwdCBpcyBhbHdheXMgZml4ZWQgYW5kIG5ldmVyIGNoYW5nZXMu
Ci0gICAgY29uc3QgZmxvYXQgY3NzUGl4ZWxzUGVySW5jaCA9IDk2LjBmOworICAgIGNvbnN0IGZs
b2F0IGNzc1BpeGVsc1BlckluY2ggPSA5NjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDQ1ODYzKQorKysgV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNSBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBO
aWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykg
MjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKQEAgLTgxMCw3ICs4MTAsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIHdoaWxl
ICh2YWx1ZSAmJiB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewog
ICAgICAgICAgICAgaWYgKCFsaXN0KQogICAgICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7IAotICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHBh
cnNlVVJMKHZhbHVlLT5zdHJpbmcpOworICAgICAgICAgICAgU3RyaW5nIHVyaSA9IHZhbHVlLT5z
dHJpbmc7CiAgICAgICAgICAgICBWZWN0b3I8aW50PiBjb29yZHM7CiAgICAgICAgICAgICB2YWx1
ZSA9IG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICB3aGlsZSAodmFsdWUgJiYgdmFs
dWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKQEAgLTgyNSw4ICs4
MjUsMTEgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYgogICAgICAg
ICAgICAgfSBlbHNlIGlmIChtX3N0cmljdCAmJiBucmNvb3JkcyA9PSAyKQogICAgICAgICAgICAg
ICAgIGhvdHNwb3QgPSBJbnRQb2ludChjb29yZHNbMF0sIGNvb3Jkc1sxXSk7CiAgICAgICAgICAg
ICBpZiAobV9zdHJpY3QgfHwgY29vcmRzLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCF1cmkuaXNOdWxsKCkgJiYgbV9zdHlsZVNoZWV0KQorICAgICAgICAgICAgICAgIGlmICgh
dXJpLmlzTnVsbCgpICYmIG1fc3R5bGVTaGVldCkgeworICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0aGUg
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90IHdoZW4gY3Jl
YXRpbmcgaXQuCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdXJzb3JJbWFn
ZVZhbHVlOjpjcmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh1cmkpLCBob3RzcG90KSk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChtX3N0
cmljdCAmJiAhdmFsdWUpIHx8ICh2YWx1ZSAmJiAhKHZhbHVlLT51bml0ID09IENTU1BhcnNlclZh
bHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcsJykpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTg4OSwxMCArODkyLDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTSW1hZ2VW
YWx1ZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAg
ICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7
Ci0gICAgICAgICAgICAvLyAjIyMgYWxsb3cgc3RyaW5nIGluIG5vbiBzdHJpY3QgbW9kZT8KLSAg
ICAgICAgICAgIFN0cmluZyB1cmkgPSBwYXJzZVVSTCh2YWx1ZS0+c3RyaW5nKTsKLSAgICAgICAg
ICAgIGlmICghdXJpLmlzTnVsbCgpICYmIG1fc3R5bGVTaGVldCkgewotICAgICAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxl
dGVVUkwodXJpKSk7CisgICAgICAgICAgICBpZiAobV9zdHlsZVNoZWV0KSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZSBjb21wbGV0ZVVSTCBjYWxsIHNob3VsZCBiZSBkb25lIHdoZW4g
dXNpbmcgdGhlIENTU0ltYWdlVmFsdWUsCisgICAgICAgICAgICAgICAgLy8gbm90IHdoZW4gY3Jl
YXRpbmcgaXQuCisgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpj
cmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWx1ZS0+c3RyaW5nKSk7CiAgICAgICAg
ICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24gJiYgZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUtPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1ncmFkaWVudCgiKSkg
ewpAQCAtMTEwNCw4ICsxMTA3LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYgogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKICAgICAg
ICAgICAgIHdoaWxlICgodmFsID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkpIHsKICAgICAgICAg
ICAgICAgICBpZiAodmFsLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJICYmIG1f
c3R5bGVTaGVldCkgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBwYXJzZVVS
TCh2YWwtPnN0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKHZhbHVlKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
VGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTUHJp
bWl0aXZlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdCB3aGVuIGNyZWF0aW5nIGl0
LgorICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUobV9zdHlsZVNoZWV0LT5jb21wbGV0ZVVSTCh2YWwtPnN0cmluZyksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVVJJKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYg
KCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDAwLDggKzIw
MDQsOSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsCiAgICAgICAg
IFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7CiAgICAgICAgIGlmICh2YWwtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkgJiYgbV9zdHlsZVNoZWV0KSB7CiAgICAgICAgICAg
ICAvLyB1cmwKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVVJMKHZhbC0+c3RyaW5n
KTsKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKG1fc3R5
bGVTaGVldC0+Y29tcGxldGVVUkwodmFsdWUpKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUg
Y29tcGxldGVVUkwgY2FsbCBzaG91bGQgYmUgZG9uZSB3aGVuIHVzaW5nIHRoZSBDU1NJbWFnZVZh
bHVlLAorICAgICAgICAgICAgLy8gbm90IHdoZW4gY3JlYXRpbmcgaXQuCisgICAgICAgICAgICBw
YXJzZWRWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRl
VVJMKHZhbC0+c3RyaW5nKSk7CiAgICAgICAgIH0gZWxzZSBpZiAodmFsLT51bml0ID09IENTU1Bh
cnNlclZhbHVlOjpGdW5jdGlvbikgewogICAgICAgICAgICAgLy8gYXR0cihYKSB8IGNvdW50ZXIo
WCBbLFldKSB8IGNvdW50ZXJzKFgsIFksIFssWl0pIHwgLXdlYmtpdC1ncmFkaWVudCguLi4pCiAg
ICAgICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSB2YWwtPmZ1bmN0aW9uLT5hcmdz
OwpAQCAtMjA5MCw5ICsyMDk1LDEwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxJbWFnZShS
ZWZQdHI8Q1MKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmIChtX3ZhbHVlTGlz
dC0+Y3VycmVudCgpLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSB7Ci0gICAg
ICAgIFN0cmluZyB1cmkgPSBwYXJzZVVSTChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpLT5zdHJpbmcp
OwotICAgICAgICBpZiAoIXVyaS5pc051bGwoKSAmJiBtX3N0eWxlU2hlZXQpCi0gICAgICAgICAg
ICB2YWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJM
KHVyaSkpOworICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRlVVJMIGNhbGwgc2hvdWxkIGJl
IGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKKyAgICAgICAgLy8gbm90IHdoZW4g
Y3JlYXRpbmcgaXQuCisgICAgICAgIGlmIChtX3N0eWxlU2hlZXQpCisgICAgICAgICAgICB2YWx1
ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBsZXRlVVJMKG1fdmFs
dWVMaXN0LT5jdXJyZW50KCktPnN0cmluZykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTIxMDIsNiArMjEwOCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxJbWFnZShS
ZWZQdHI8Q1MKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCktPmZ1bmN0aW9uLT5uYW1lLCAiLXdlYmtpdC1jYW52YXMoIikpCiAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VDYW52YXModmFsdWUpOwogICAgIH0KKwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtMzE0Myw4ICszMTUwLDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VTcmMo
KQogICAgIHdoaWxlICgodmFsID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkpIHsKICAgICAgICAg
UmVmUHRyPENTU0ZvbnRGYWNlU3JjVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgICAgICBpZiAodmFs
LT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJICYmICFleHBlY3RDb21tYSAmJiBt
X3N0eWxlU2hlZXQpIHsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlVVJMKHZhbC0+
c3RyaW5nKTsKLSAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVVUkwodmFsdWUpKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGUgY29tcGxldGVVUkwgY2FsbCBzaG91bGQgYmUgZG9uZSB3aGVuIHVzaW5nIHRo
ZSBDU1NJbWFnZVZhbHVlLAorICAgICAgICAgICAgLy8gbm90IHdoZW4gY3JlYXRpbmcgaXQuCisg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZShtX3N0
eWxlU2hlZXQtPmNvbXBsZXRlVVJMKHZhbC0+c3RyaW5nKSk7CiAgICAgICAgICAgICB1cmlWYWx1
ZSA9IHBhcnNlZFZhbHVlOwogICAgICAgICAgICAgYWxsb3dGb3JtYXQgPSB0cnVlOwogICAgICAg
ICAgICAgZXhwZWN0Q29tbWEgPSB0cnVlOwpAQCAtMzc0OSwxMSArMzc1NywxMCBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZShpbnQgcHJvCiAgICAgLy8gTG9vayBmb3IgYW4gaW1h
Z2UgaW5pdGlhbGx5LiAgSWYgdGhlIGZpcnN0IHZhbHVlIGlzIG5vdCBhIFVSSSwgdGhlbiB3ZSdy
ZSBkb25lLgogICAgIEJvcmRlckltYWdlUGFyc2VDb250ZXh0IGNvbnRleHQ7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7Ci0gICAgaWYgKHZhbC0+dW5p
dCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSAmJiBtX3N0eWxlU2hlZXQpIHsgICAgICAg
IAotICAgICAgICBTdHJpbmcgdXJpID0gcGFyc2VVUkwodmFsLT5zdHJpbmcpOwotICAgICAgICBp
ZiAodXJpLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb250
ZXh0LmNvbW1pdEltYWdlKENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX3N0eWxlU2hlZXQtPmNvbXBs
ZXRlVVJMKHVyaSkpKTsKKyAgICBpZiAodmFsLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVVJJICYmIG1fc3R5bGVTaGVldCkgeworICAgICAgICAvLyBGSVhNRTogVGhlIGNvbXBsZXRl
VVJMIGNhbGwgc2hvdWxkIGJlIGRvbmUgd2hlbiB1c2luZyB0aGUgQ1NTSW1hZ2VWYWx1ZSwKKyAg
ICAgICAgLy8gbm90IHdoZW4gY3JlYXRpbmcgaXQuCisgICAgICAgIGNvbnRleHQuY29tbWl0SW1h
Z2UoQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKG1fc3R5bGVTaGVldC0+Y29tcGxldGVVUkwodmFsLT5z
dHJpbmcpKSk7CiAgICAgfSBlbHNlIGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OkZ1
bmN0aW9uKSB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWU7CiAgICAgICAgIGlmICgo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsLT5mdW5jdGlvbi0+bmFtZSwgIi13ZWJraXQtZ3JhZGllbnQo
IikgJiYgcGFyc2VHcmFkaWVudCh2YWx1ZSkpIHx8CkBAIC00MzY2LDE1ICs0MzczLDkgQEAgaW50
IENTU1BhcnNlcjo6bGV4KHZvaWQqIHl5bHZhbFdpdGhvdXRUeQogICAgIHJldHVybiB0b2tlbjsK
IH0KIAotc3RhdGljIGlubGluZSBpbnQgdG9IZXgoY2hhciBjKQorc3RhdGljIGlubGluZSBib29s
IGlzQ1NTV2hpdGVzcGFjZShVQ2hhciBjKQogewotICAgIGlmICgnMCcgPD0gYyAmJiBjIDw9ICc5
JykKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgaWYgKCdhJyA8PSBjICYmIGMgPD0gJ2Yn
KQotICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIGlmICgnQScgPD0gYyAmJiBjPD0g
J0YnKQotICAgICAgICByZXR1cm4gYyAtICdBJyArIDEwOwotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBjID09ICcgJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBj
ID09ICdcZic7CiB9CiAKIFVDaGFyKiBDU1NQYXJzZXI6OnRleHQoaW50ICpsZW5ndGgpCkBAIC00
MzkzLDI3ICs0Mzk0LDIxIEBAIFVDaGFyKiBDU1NQYXJzZXI6OnRleHQoaW50ICpsZW5ndGgpCiAg
ICAgY2FzZSBVUkk6CiAgICAgICAgIC8vICJ1cmwoInt3fXtzdHJpbmd9e3d9IikiCiAgICAgICAg
IC8vICJ1cmwoInt3fXt1cmx9e3d9IikiCi0KICAgICAgICAgLy8gc3RyaXAgInVybCgiIGFuZCAi
KSIKICAgICAgICAgc3RhcnQgKz0gNDsKICAgICAgICAgbCAtPSA1OwogICAgICAgICAvLyBzdHJp
cCB7d30KLSAgICAgICAgd2hpbGUgKGwgJiYKLSAgICAgICAgICAgICAgICAoKnN0YXJ0ID09ICcg
JyB8fCAqc3RhcnQgPT0gJ1x0JyB8fCAqc3RhcnQgPT0gJ1xyJyB8fAotICAgICAgICAgICAgICAg
ICAqc3RhcnQgPT0gJ1xuJyB8fCAqc3RhcnQgPT0gJ1xmJykpIHsKLSAgICAgICAgICAgIHN0YXJ0
Kys7IGwtLTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKnN0YXJ0ID09ICciJyB8fCAqc3RhcnQg
PT0gJ1wnJykgewotICAgICAgICAgICAgc3RhcnQrKzsgbC0tOwotICAgICAgICB9Ci0gICAgICAg
IHdoaWxlIChsICYmCi0gICAgICAgICAgICAgICAgKHN0YXJ0W2wtMV0gPT0gJyAnIHx8IHN0YXJ0
W2wtMV0gPT0gJ1x0JyB8fCBzdGFydFtsLTFdID09ICdccicgfHwKLSAgICAgICAgICAgICAgICAg
c3RhcnRbbC0xXSA9PSAnXG4nIHx8IHN0YXJ0W2wtMV0gPT0gJ1xmJykpIHsKLSAgICAgICAgICAg
IGwtLTsKKyAgICAgICAgd2hpbGUgKGwgJiYgaXNDU1NXaGl0ZXNwYWNlKCpzdGFydCkpIHsKKyAg
ICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICAtLWw7CisgICAgICAgIH0KKyAgICAgICAg
d2hpbGUgKGwgJiYgaXNDU1NXaGl0ZXNwYWNlKHN0YXJ0W2wgLSAxXSkpCisgICAgICAgICAgICAt
LWw7CisgICAgICAgIGlmIChsICYmICgqc3RhcnQgPT0gJyInIHx8ICpzdGFydCA9PSAnXCcnKSkg
eworICAgICAgICAgICAgQVNTRVJUKGwgPj0gMiAmJiBzdGFydFtsIC0gMV0gPT0gKnN0YXJ0KTsK
KyAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICBsIC09IDI7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKGwgJiYgKHN0YXJ0W2wtMV0gPT0gJ1wiJyB8fCBzdGFydFtsLTFdID09ICdcJycp
KQotICAgICAgICAgICAgIGwtLTsKLQogICAgICAgICBicmVhazsKICAgICBjYXNlIFZBUkNBTEw6
CiAgICAgICAgIC8vICItd2Via2l0LXZhcigie3d9e2lkZW50fXt3fSIpIgpAQCAtNDQyMSwxNiAr
NDQxNiwxMyBAQCBVQ2hhciogQ1NTUGFyc2VyOjp0ZXh0KGludCAqbGVuZ3RoKQogICAgICAgICBz
dGFydCArPSAxMjsKICAgICAgICAgbCAtPSAxMzsKICAgICAgICAgLy8gc3RyaXAge3d9Ci0gICAg
ICAgIHdoaWxlIChsICYmCi0gICAgICAgICAgICAgICAgKCpzdGFydCA9PSAnICcgfHwgKnN0YXJ0
ID09ICdcdCcgfHwgKnN0YXJ0ID09ICdccicgfHwKLSAgICAgICAgICAgICAgICAgKnN0YXJ0ID09
ICdcbicgfHwgKnN0YXJ0ID09ICdcZicpKSB7Ci0gICAgICAgICAgICBzdGFydCsrOyBsLS07Ci0g
ICAgICAgIH0KLSAgICAgICAgd2hpbGUgKGwgJiYKLSAgICAgICAgICAgICAgICAoc3RhcnRbbC0x
XSA9PSAnICcgfHwgc3RhcnRbbC0xXSA9PSAnXHQnIHx8IHN0YXJ0W2wtMV0gPT0gJ1xyJyB8fAot
ICAgICAgICAgICAgICAgICBzdGFydFtsLTFdID09ICdcbicgfHwgc3RhcnRbbC0xXSA9PSAnXGYn
KSkgewotICAgICAgICAgICAgbC0tOworICAgICAgICB3aGlsZSAobCAmJiBpc0NTU1doaXRlc3Bh
Y2UoKnN0YXJ0KSkgeworICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAgICAgIC0tbDsKICAg
ICAgICAgfQorICAgICAgICB3aGlsZSAobCAmJiBpc0NTU1doaXRlc3BhY2Uoc3RhcnRbbCAtIDFd
KSkKKyAgICAgICAgICAgIC0tbDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtNDQ0Miw5ICs0NDM0LDcgQEAgVUNoYXIqIENTU1BhcnNlcjo6
dGV4dChpbnQgKmxlbmd0aCkKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGw7IGkrKykgewogICAg
ICAgICBVQ2hhciogY3VycmVudCA9IHN0YXJ0ICsgaTsKICAgICAgICAgaWYgKGVzY2FwZSA9PSBj
dXJyZW50IC0gMSkgewotICAgICAgICAgICAgaWYgKCgqY3VycmVudCA+PSAnMCcgJiYgKmN1cnJl
bnQgPD0gJzknKSB8fAotICAgICAgICAgICAgICAgICAoKmN1cnJlbnQgPj0gJ2EnICYmICpjdXJy
ZW50IDw9ICdmJykgfHwKLSAgICAgICAgICAgICAgICAgKCpjdXJyZW50ID49ICdBJyAmJiAqY3Vy
cmVudCA8PSAnRicpKQorICAgICAgICAgICAgaWYgKGlzQVNDSUlIZXhEaWdpdCgqY3VycmVudCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoeXlUb2sgPT0gU1RS
SU5HICYmCiAgICAgICAgICAgICAgICAgICgqY3VycmVudCA9PSAnXG4nIHx8ICpjdXJyZW50ID09
ICdccicgfHwgKmN1cnJlbnQgPT0gJ1xmJykpIHsKQEAgLTQ0NjQsMTAgKzQ0NTQsNyBAQCBVQ2hh
ciogQ1NTUGFyc2VyOjp0ZXh0KGludCAqbGVuZ3RoKQogICAgICAgICAgICAgZXNjYXBlID0gMDsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChlc2NhcGUgPiBj
dXJyZW50IC0gNyAmJgotICAgICAgICAgICAgICgoKmN1cnJlbnQgPj0gJzAnICYmICpjdXJyZW50
IDw9ICc5JykgfHwKLSAgICAgICAgICAgICAgICgqY3VycmVudCA+PSAnYScgJiYgKmN1cnJlbnQg
PD0gJ2YnKSB8fAotICAgICAgICAgICAgICAgKCpjdXJyZW50ID49ICdBJyAmJiAqY3VycmVudCA8
PSAnRicpKSkKKyAgICAgICAgaWYgKGVzY2FwZSA+IGN1cnJlbnQgLSA3ICYmIGlzQVNDSUlIZXhE
aWdpdCgqY3VycmVudCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGVzY2Fw
ZSkgewogICAgICAgICAgICAgLy8gYWRkIGVzY2FwZWQgY2hhcgpAQCAtNDQ3NSw3ICs0NDYyLDcg
QEAgVUNoYXIqIENTU1BhcnNlcjo6dGV4dChpbnQgKmxlbmd0aCkKICAgICAgICAgICAgIGVzY2Fw
ZSsrOwogICAgICAgICAgICAgd2hpbGUgKGVzY2FwZSA8IGN1cnJlbnQpIHsKICAgICAgICAgICAg
ICAgICB1YyAqPSAxNjsKLSAgICAgICAgICAgICAgICB1YyArPSB0b0hleCgqZXNjYXBlKTsKKyAg
ICAgICAgICAgICAgICB1YyArPSB0b0FTQ0lJSGV4VmFsdWUoKmVzY2FwZSk7CiAgICAgICAgICAg
ICAgICAgZXNjYXBlKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBjYW4ndCBoYW5k
bGUgY2hhcnMgb3V0c2lkZSB1Y3MyCkBAIC00NDgzLDExICs0NDcwLDcgQEAgVUNoYXIqIENTU1Bh
cnNlcjo6dGV4dChpbnQgKmxlbmd0aCkKICAgICAgICAgICAgICAgICB1YyA9IDB4ZmZmZDsKICAg
ICAgICAgICAgICpvdXQrKyA9IHVjOwogICAgICAgICAgICAgZXNjYXBlID0gMDsKLSAgICAgICAg
ICAgIGlmICgqY3VycmVudCA9PSAnICcgfHwKLSAgICAgICAgICAgICAgICAgKmN1cnJlbnQgPT0g
J1x0JyB8fAotICAgICAgICAgICAgICAgICAqY3VycmVudCA9PSAnXHInIHx8Ci0gICAgICAgICAg
ICAgICAgICpjdXJyZW50ID09ICdcbicgfHwKLSAgICAgICAgICAgICAgICAgKmN1cnJlbnQgPT0g
J1xmJykKKyAgICAgICAgICAgIGlmIChpc0NTU1doaXRlc3BhY2UoKmN1cnJlbnQpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICghZXNjYXBlICYmICpj
dXJyZW50ID09ICdcXCcpIHsKQEAgLTQ1MDIsNyArNDQ4NSw3IEBAIFVDaGFyKiBDU1NQYXJzZXI6
OnRleHQoaW50ICpsZW5ndGgpCiAgICAgICAgIGVzY2FwZSsrOwogICAgICAgICB3aGlsZSAoZXNj
YXBlIDwgc3RhcnQrbCkgewogICAgICAgICAgICAgdWMgKj0gMTY7Ci0gICAgICAgICAgICB1YyAr
PSB0b0hleCgqZXNjYXBlKTsKKyAgICAgICAgICAgIHVjICs9IHRvQVNDSUlIZXhWYWx1ZSgqZXNj
YXBlKTsKICAgICAgICAgICAgIGVzY2FwZSsrOwogICAgICAgICB9CiAgICAgICAgIC8vIGNhbid0
IGhhbmRsZSBjaGFycyBvdXRzaWRlIHVjczIKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA0NTg2MykK
KysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgVmVjdG9yPENTU1Nl
bGVjdG9yKj4qIHJldXNhYmxlU2VsZWN0b3JWZWN0b3IoKSB7IHJldHVybiAmbV9yZXVzYWJsZVNl
bGVjdG9yVmVjdG9yOyB9CiAgICAgICAgIAotICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX3N0
cmljdDsKICAgICAgICAgYm9vbCBtX2ltcG9ydGFudDsKICAgICAgICAgaW50IG1faWQ7CkBAIC0y
MTcsNyArMjE2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBdG9taWNTdHJpbmcg
bV9kZWZhdWx0TmFtZXNwYWNlOwogCiAgICAgICAgIC8vIHRva2VuaXplciBtZXRob2RzIGFuZCBk
YXRhCi0gICAgcHVibGljOgogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5bHZhbCk7CiAgICAgICAg
IGludCB0b2tlbigpIHsgcmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVDaGFyKiB0ZXh0KGludCog
bGVuZ3RoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nSW1wbC5jcHAJKHJldmlzaW9u
IDQ1ODYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ0ltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDUsMjQgKzIwNSwyNiBAQCBib29sIFN0cmluZ0ltcGw6OmNvbnRhaW5zT25s
eVdoaXRlc3BhY2UoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nKHVuc2lnbmVkIHBvcywgdW5zaWduZWQgbGVuKQorUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdWJzdHJpbmcodW5zaWduZWQgc3RhcnQs
IHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBpZiAocG9zID49IG1fbGVuZ3RoKQorICAgIGlmIChz
dGFydCA+PSBtX2xlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgaWYgKGxlbiA+
IG1fbGVuZ3RoIC0gcG9zKQotICAgICAgICBsZW4gPSBtX2xlbmd0aCAtIHBvczsKLSAgICByZXR1
cm4gY3JlYXRlKG1fZGF0YSArIHBvcywgbGVuKTsKKyAgICB1bnNpZ25lZCBtYXhMZW5ndGggPSBt
X2xlbmd0aCAtIHN0YXJ0OworICAgIGlmIChsZW5ndGggPj0gbWF4TGVuZ3RoKSB7CisgICAgICAg
IGlmICghc3RhcnQpCisgICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgbGVuZ3RoID0g
bWF4TGVuZ3RoOworICAgIH0KKyAgICByZXR1cm4gY3JlYXRlKG1fZGF0YSArIHN0YXJ0LCBsZW5n
dGgpOwogfQogCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnN1YnN0cmluZ0Nv
cHkodW5zaWduZWQgcG9zLCB1bnNpZ25lZCBsZW4pCi17Ci0gICAgaWYgKHBvcyA+PSBtX2xlbmd0
aCkKLSAgICAgICAgcG9zID0gbV9sZW5ndGg7Ci0gICAgaWYgKGxlbiA+IG1fbGVuZ3RoIC0gcG9z
KQotICAgICAgICBsZW4gPSBtX2xlbmd0aCAtIHBvczsKLSAgICBpZiAoIWxlbikKK1Bhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3Vic3RyaW5nQ29weSh1bnNpZ25lZCBzdGFydCwg
dW5zaWduZWQgbGVuZ3RoKQoreworICAgIHN0YXJ0ID0gbWluKHN0YXJ0LCBtX2xlbmd0aCk7Cisg
ICAgbGVuZ3RoID0gbWluKGxlbmd0aCwgbV9sZW5ndGggLSBzdGFydCk7CisgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RyaW5nSW1wbCk7Ci0gICAgcmV0dXJu
IHN1YnN0cmluZyhwb3MsIGxlbik7CisgICAgcmV0dXJuIGNyZWF0ZShtX2RhdGEgKyBzdGFydCwg
bGVuZ3RoKTsKIH0KIAogVUNoYXIzMiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJTdGFydGluZ0F0KHVu
c2lnbmVkIGkpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NTg2NCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA3LTE0ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDU1NIZWxwZXIuaCdzIHBhcnNlVVJMIGlzIGEgZnVuY3Rpb24gdGhh
dCBubyBvbmUgc2hvdWxkIGV2ZXIgY2FsbAorICAgICAgICBQYXJ0IDE6IEVsaW1pbmF0ZSBjYWxs
ZXJzIGluIHRoZSBDU1MgcGFyc2VyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjY1OTkKKworICAgICAgICAqIGZhc3QvY3NzL3VyaS10b2tlbi1wYXJz
aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvdXJpLXRva2VuLXBh
cnNpbmcuaHRtbDogQWRkZWQuIFRlc3RzIFVSSSB0b2tlbiBwYXJzaW5nIGNhc2VzLCBtYW55IG9m
IHdoaWNoCisgICAgICAgIHdlcmUgaGFuZGxlZCB3cm9uZyBiZWZvcmUgZHVlIHRvIHN0cmlwcGlu
ZyBxdW90ZXMgYW5kIFVSTCgpIHR3aWNlLgorCiAyMDA5LTA3LTE0ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1w
YXJzaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorVGVzdCBw
YXJzaW5nIG9mIENTUyBVUkkgdG9rZW5zLiBPbGRlciB2ZXJzaW9ucyBvZiBXZWJLaXQgZGlkIHNv
bWUgZG91YmxlIHByb2Nlc3Npbmcgb2YgdGhlc2UsIGhlbmNlIHRoaXMgdGVzdCB3b3VsZCBoYXZl
IGZhaWxlZC4KKworU1VDQ0VTUworCitSdWxlcyBmcm9tIHRoZSBzdHlsZXNoZWV0OgorCisjYSB7
IGNvbnRlbnQ6IHVybChjKTsgfQorI2IgeyBjb250ZW50OiB1cmwoZCk7IH0KKyNjIHsgY29udGVu
dDogdXJsKGUpOyB9CisjZCB7IGNvbnRlbnQ6IHVybChmKTsgfQorI2YgeyBjb250ZW50OiB1cmwo
Yyk7IH0KKyNnIHsgY29udGVudDogdXJsKGQpOyB9CisjaCB7IGNvbnRlbnQ6IHVybChlKTsgfQor
I2kgeyBjb250ZW50OiB1cmwoZik7IH0KKyNqIHsgY29udGVudDogdXJsKCd1cmwoZyknKTsgfQor
I2wgeyBjb250ZW50OiB1cmwoYyk7IH0KKyNtIHsgY29udGVudDogdXJsKGQpOyB9CisjbiB7IGNv
bnRlbnQ6IHVybChlKTsgfQorI28geyBjb250ZW50OiB1cmwoZik7IH0KKyNwIHsgY29udGVudDog
dXJsKCd1cmwoZyknKTsgfQorI3EgeyBjdXJzb3I6IHVybCgndXJsKHEpJyk7IH0KKyNyIHsgbGlz
dC1zdHlsZS1pbWFnZTogdXJsKCd1cmwociknKTsgfQorI3MgeyBiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoJ3VybChzKScpOyB9CisjdCB7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCd1cmwodCknKTsg
fQorI3UgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKCd1cmwodSknKSAxIDIgMyA0IHN0cmV0
Y2ggcm91bmQ7IH0KKyN2IHsgLXdlYmtpdC1tYXNrLWJveC1pbWFnZTogdXJsKCd1cmwodiknKSAx
IDIgMyA0IHN0cmV0Y2ggcm91bmQ7IH0KK0V4cGVjdGVkIHJlc3VsdDoKKworI2EgeyBjb250ZW50
OiB1cmwoYyk7IH0KKyNiIHsgY29udGVudDogdXJsKGQpOyB9CisjYyB7IGNvbnRlbnQ6IHVybChl
KTsgfQorI2QgeyBjb250ZW50OiB1cmwoZik7IH0KKyNmIHsgY29udGVudDogdXJsKGMpOyB9Cisj
ZyB7IGNvbnRlbnQ6IHVybChkKTsgfQorI2ggeyBjb250ZW50OiB1cmwoZSk7IH0KKyNpIHsgY29u
dGVudDogdXJsKGYpOyB9CisjaiB7IGNvbnRlbnQ6IHVybCgndXJsKGcpJyk7IH0KKyNsIHsgY29u
dGVudDogdXJsKGMpOyB9CisjbSB7IGNvbnRlbnQ6IHVybChkKTsgfQorI24geyBjb250ZW50OiB1
cmwoZSk7IH0KKyNvIHsgY29udGVudDogdXJsKGYpOyB9CisjcCB7IGNvbnRlbnQ6IHVybCgndXJs
KGcpJyk7IH0KKyNxIHsgY3Vyc29yOiB1cmwoJ3VybChxKScpOyB9CisjciB7IGxpc3Qtc3R5bGUt
aW1hZ2U6IHVybCgndXJsKHIpJyk7IH0KKyNzIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd1cmwo
cyknKTsgfQorI3QgeyAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgndXJsKHQpJyk7IH0KKyN1IHsg
LXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybCgndXJsKHUpJykgMSAyIDMgNCBzdHJldGNoIHJvdW5k
OyB9CisjdiB7IC13ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCgndXJsKHYpJykgMSAyIDMgNCBz
dHJldGNoIHJvdW5kOyB9CisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VyaS10b2tlbi1wYXJzaW5nLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjpl
b2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9r
ZW4tcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10
b2tlbi1wYXJzaW5nLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nzcy91
cmktdG9rZW4tcGFyc2luZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMiBAQAorPGhl
YWQ+Cis8c3R5bGU+CisjYSB7IGNvbnRlbnQ6IHVybChjKTsgfQorI2IgeyBjb250ZW50OiB1cmwo
IGQpOyB9CisjYyB7IGNvbnRlbnQ6IHVybChlICk7IH0KKyNkIHsgY29udGVudDogdXJsKCBmICk7
IH0KKyNmIHsgY29udGVudDogdXJsKCdjJyk7IH0KKyNnIHsgY29udGVudDogdXJsKCcgZCcpOyB9
CisjaCB7IGNvbnRlbnQ6IHVybCgnZSAnKTsgfQorI2kgeyBjb250ZW50OiB1cmwoJyBmICcpOyB9
CisjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KKyNsIHsgY29udGVudDogdXJsKCJjIik7
IH0KKyNtIHsgY29udGVudDogdXJsKCIgZCIpOyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsg
fQorI28geyBjb250ZW50OiB1cmwoIiBmICIpOyB9CisjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcp
Iik7IH0KKyNxIHsgY3Vyc29yOiB1cmwoInVybChxKSIpOyB9CisjciB7IGxpc3Qtc3R5bGUtaW1h
Z2U6IHVybCgidXJsKHIpIik7IH0KKyNzIHsgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJ1cmwocyki
KTsgfQorI3QgeyAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgidXJsKHQpIik7IH0KKyN1IHsgLXdl
YmtpdC1ib3JkZXItaW1hZ2U6IHVybCgidXJsKHUpIikgMSAyIDMgNCBzdHJldGNoIHJvdW5kOyB9
CisjdiB7IC13ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCgidXJsKHYpIikgMSAyIDMgNCBzdHJl
dGNoIHJvdW5kOyB9Cis8L3N0eWxlPgorCis8c2NyaXB0PgorCisvLyBTb21lIGlkZWFzIGZvciBh
ZGRpdGlvbmFsIHRoaW5ncyB0byB0ZXN0IGluIHRoZSBmdXR1cmU6CisvLyAgIDEpIEFjdHVhbCBj
b250cm9sIGNoYXJhY3RlcnMgaW4gdGhlIDxzdHlsZT4gZWxlbWVudC4KKy8vICAgMikgVVJMIHdp
dGggb25seSBzcGFjZSBjaGFyYWN0ZXJzIGluIGl0LgorLy8gICAzKSBEaWZmZXJlbnQgQ1NTIHNw
YWNlIGNoYXJhY3RlcnMsIGFuZCBzcGFjZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gQ1NTLgor
Ly8gICA0KSBEaWZmZXJlbnQgQ1NTIHNwYWNlIGNoYXJhY3RlcnMsIGFuZCBzcGFjZXMgdGhhdCBh
cmUgbm90IGFsbG93ZWQgaW4gQ1NTLgorLy8gICA1KSBUaGUgc3JjIHByb3BlcnR5IGluc2lkZSBm
b250LWZhY2UuCisvLyAgIDYpIFF1b3RlZCB2YWx1ZXMgdGhhdCBhcmUgdGhlbXNlbHZlcyBpbnNp
ZGUgcXVvdGVzICh0d28gbGV2ZWxzIG9mIHF1b3RlcykuCisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBydWxlcyA9IGRvY3VtZW50LnN0
eWxlU2hlZXRzWzBdLmNzc1J1bGVzOworICAgIHZhciB0ZXh0ID0gIiI7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICB2YXIgaXRlbVRleHQgPSBy
dWxlcy5pdGVtKGkpLmNzc1RleHQ7CisKKyAgICAgICAgLy8gV29yayBhcm91bmQgYnVnIHdoZXJl
IFdlYktpdCBjb21wbGV0ZXMgdGhlIFVSTHMgaW4gdGhlIENTUyBET00uCisgICAgICAgIC8vIFRo
ZSBjb21wbGV0aW9uIG9mIHRoZSBVUkwgc2hvdWxkIGJlIHdoZW4gdGhleSBhcmUgdXNlZCwgbm90
IGluIHRoZSBET00uCisgICAgICAgIGl0ZW1UZXh0ID0gaXRlbVRleHQucmVwbGFjZSgvZmlsZTou
KkxheW91dFRlc3RzXC9mYXN0XC9jc3NcLy8sICIiKTsKKworICAgICAgICB0ZXh0ICs9IGl0ZW1U
ZXh0OworICAgICAgICB0ZXh0ICs9ICJcbiI7CisgICAgfQorCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRl
eHQpKTsKKworICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuZmlyc3RD
aGlsZC5kYXRhID09PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhwZWN0ZWQiKS5maXJzdENo
aWxkLmRhdGEpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIikuZmly
c3RDaGlsZC5kYXRhID0gIlNVQ0NFU1MiOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKS5maXJzdENoaWxkLmRhdGEgPSAiRkFJTFVSRSI7Cit9CisK
Kzwvc2NyaXB0PgorCis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKworPHA+
VGVzdCBwYXJzaW5nIG9mIENTUyBVUkkgdG9rZW5zLiBPbGRlciB2ZXJzaW9ucyBvZiBXZWJLaXQg
ZGlkIHNvbWUgZG91YmxlIHByb2Nlc3Npbmcgb2YgdGhlc2UsIGhlbmNlIHRoaXMgdGVzdCB3b3Vs
ZCBoYXZlIGZhaWxlZC48L3A+CisKKzxwIGlkPSJtZXNzYWdlIj5URVNUIERJRCBOT1QgQ09NUExF
VEU8L3A+CisKKzxwPlJ1bGVzIGZyb20gdGhlIHN0eWxlc2hlZXQ6PC9wPgorCis8cHJlIGlkPSJy
ZXN1bHQiPjwvcHJlPgorCis8cD5FeHBlY3RlZCByZXN1bHQ6PC9wPgorCis8cHJlIGlkPSJleHBl
Y3RlZCI+I2EgeyBjb250ZW50OiB1cmwoYyk7IH0KKyNiIHsgY29udGVudDogdXJsKGQpOyB9Cisj
YyB7IGNvbnRlbnQ6IHVybChlKTsgfQorI2QgeyBjb250ZW50OiB1cmwoZik7IH0KKyNmIHsgY29u
dGVudDogdXJsKGMpOyB9CisjZyB7IGNvbnRlbnQ6IHVybChkKTsgfQorI2ggeyBjb250ZW50OiB1
cmwoZSk7IH0KKyNpIHsgY29udGVudDogdXJsKGYpOyB9CisjaiB7IGNvbnRlbnQ6IHVybCgndXJs
KGcpJyk7IH0KKyNsIHsgY29udGVudDogdXJsKGMpOyB9CisjbSB7IGNvbnRlbnQ6IHVybChkKTsg
fQorI24geyBjb250ZW50OiB1cmwoZSk7IH0KKyNvIHsgY29udGVudDogdXJsKGYpOyB9CisjcCB7
IGNvbnRlbnQ6IHVybCgndXJsKGcpJyk7IH0KKyNxIHsgY3Vyc29yOiB1cmwoJ3VybChxKScpOyB9
CisjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgndXJsKHIpJyk7IH0KKyNzIHsgYmFja2dyb3Vu
ZC1pbWFnZTogdXJsKCd1cmwocyknKTsgfQorI3QgeyAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgn
dXJsKHQpJyk7IH0KKyN1IHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6IHVybCgndXJsKHUpJykgMSAy
IDMgNCBzdHJldGNoIHJvdW5kOyB9CisjdiB7IC13ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCgn
dXJsKHYpJykgMSAyIDMgNCBzdHJldGNoIHJvdW5kOyB9Cis8L3ByZT4KKworPHNjcmlwdD4KKwor
PC9zY3JpcHQ+Cis8L2JvZHk+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0
L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlw
ZQogICArIHRleHQvaHRtbApOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34273</attachid>
            <date>2009-08-07 08:14:52 -0700</date>
            <delta_ts>2010-09-28 17:46:20 -0700</delta_ts>
            <desc>some work in progress</desc>
            <filename>ParseURLPatch2.txt</filename>
            <type>text/plain</type>
            <size>24060</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2Njc5KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIHZvaWQgSlNBdHRyOjpzZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEoK
IAogICAgIEVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGltcC0+b3duZXJFbGVtZW50KCk7CiAgICAg
aWYgKG93bmVyRWxlbWVudCAmJiAob3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykg
fHwgb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGZyYW1lVGFnKSkpIHsKLSAgICAgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGltcC0+bmFtZSgpLCAic3JjIikgJiYgcHJvdG9jb2xJc0phdmFTY3Jp
cHQoZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHJWYWx1ZSkpKSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShpbXAtPm5hbWUoKSwgInNyYyIpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KGF0
dHJWYWx1ZSkpIHsKICAgICAgICAgICAgIGlmICghY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgc3Rh
dGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihvd25lckVsZW1lbnQpLT5jb250ZW50RG9j
dW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjY3OSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgYWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKEV4ZWNTdGF0ZSogZXhlYywgRWxl
bWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhh
c1RhZ05hbWUoZnJhbWVUYWcpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgJiYg
cHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKKyAgICBp
ZiAoKGVsZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1l
KGZyYW1lVGFnKSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpICYmIHByb3RvY29s
SXNKYXZhU2NyaXB0KHZhbHVlKSkgewogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJh
bWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KGVsZW1lbnQpOwogICAgICAg
ICBpZiAoIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGZyYW1lLT5jb250ZW50RG9jdW1lbnQoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA0NjY3OSkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBhbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKEV4ZWNTdGF0ZSogZXhlYywgSFRNTEZy
YW1lRWxlbWVudCogaW1wLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChwcm90b2Nv
bElzSmF2YVNjcmlwdChkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpKSkgeworICAgIGlmIChwcm90
b2NvbElzSmF2YVNjcmlwdCh2YWx1ZSkpIHsKICAgICAgICAgaWYgKCFjaGVja05vZGVTZWN1cml0
eShleGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSUZyYW1l
RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxJRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQCB2b2lkIEpTSFRNTElGcmFtZUVsZW1lbnQ6OnNldFNyYyhFeGVjU3RhCiAKICAgICBT
dHJpbmcgc3JjVmFsdWUgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7
CiAKLSAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHNyY1Zh
bHVlKSkpIHsKKyAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3JjVmFsdWUpKSB7CiAgICAg
ICAgIGlmICghY2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgaW1wLT5jb250ZW50RG9jdW1lbnQoKSkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCShyZXZp
c2lvbiA0NjY3OSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQ2OCw3ICs0NjgsNyBAQCBpZCA8RE9NRXZlbnRUYXJnZXQ+IGtpdChXZWJDb3JlOjpF
dmVudFRhCiAgICAgQVNTRVJUKG5hbWUpOwogICAgIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQg
PSBjb3JlKHNlbGYpOwogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVudC0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGVsZW1lbnQtPmdldEF0
dHJpYnV0ZShuYW1lKSkpOworICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChlbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZSkpOwogfQogCiAtIChCT09MKWlzRm9jdXNl
ZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHJldmlzaW9uIDQ2Njc5KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcw
LDcgQEAKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9jcmVhdGVEb2N1bWVudEZyYWdtZW50
V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzoo
TlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nCiB7Ci0gICAgTlNVUkwgKmJhc2VVUkwgPSBjb3JlKHNl
bGYpLT5jb21wbGV0ZVVSTChXZWJDb3JlOjpkZXByZWNhdGVkUGFyc2VVUkwoYmFzZVVSTFN0cmlu
ZykpOworICAgIE5TVVJMICpiYXNlVVJMID0gY29yZShzZWxmKS0+Y29tcGxldGVVUkwoYmFzZVVS
TFN0cmluZyk7CiAgICAgcmV0dXJuIFtzZWxmIGNyZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFy
a3VwU3RyaW5nOm1hcmt1cFN0cmluZyBiYXNlVVJMOmJhc2VVUkxdOwogfQogCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBA
IHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB1cmwgPSBkZXByZWNhdGVkUGFyc2VV
UkwoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CisgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKGhyZWZBdHRyKSk7CiAKICAgICAgICAgQVNTRVJU
KGV2dC0+dGFyZ2V0KCkpOwogICAgICAgICBBU1NFUlQoZXZ0LT50YXJnZXQoKS0+dG9Ob2RlKCkp
OwpAQCAtMTg4LDE0ICsxODgsMTEgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZAogICAgICAgICAgICAgaWYgKGltZyAmJiBpbWctPmlzU2VydmVyTWFwKCkpIHsKICAg
ICAgICAgICAgICAgICBSZW5kZXJJbWFnZSogciA9IHRvUmVuZGVySW1hZ2UoaW1nLT5yZW5kZXJl
cigpKTsKICAgICAgICAgICAgICAgICBpZiAociAmJiBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBicm9rZW4gd2l0aCB0cmFuc2Zvcm1zCisgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXMgbm90IHdvcmsgcHJvcGVybHkgd2l0aCB0cmFuc2Zvcm1zLgogICAg
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHItPmxvY2FsVG9BYnNvbHV0ZSgp
OwogICAgICAgICAgICAgICAgICAgICBpbnQgeCA9IGUtPnBhZ2VYKCkgLSBhYnNQb3MueCgpOwog
ICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IGUtPnBhZ2VZKCkgLSBhYnNQb3MueSgpOwotICAg
ICAgICAgICAgICAgICAgICB1cmwgKz0gIj8iOwotICAgICAgICAgICAgICAgICAgICB1cmwgKz0g
U3RyaW5nOjpudW1iZXIoeCk7Ci0gICAgICAgICAgICAgICAgICAgIHVybCArPSAiLCI7Ci0gICAg
ICAgICAgICAgICAgICAgIHVybCArPSBTdHJpbmc6Om51bWJlcih5KTsKKyAgICAgICAgICAgICAg
ICAgICAgdXJsLnNldFF1ZXJ5KFN0cmluZzo6bnVtYmVyKHgpICsgIiwiICtTdHJpbmc6Om51bWJl
cih5KSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZXZ0
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgICAgICBIVE1MRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOwpAQCAtMjA1LDcgKzIwMiw3IEBAIHZvaWQgSFRNTEFu
Y2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
ZXZ0LT5kZWZhdWx0UHJldmVudGVkKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAg
ICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT51cmxTZWxlY3RlZChkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLCBnZXRBdHRyaWJ1dGUodGFyZ2V0QXR0ciksIGV2dCwgZmFsc2Us
IGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigp
LT51cmxTZWxlY3RlZCh1cmwsIGdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKSwgZXZ0LCBmYWxzZSwg
ZmFsc2UsIHRydWUpOwogCiAgICAgICAgIGV2dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9
IGVsc2UgaWYgKGlzTGluaygpICYmIGlzQ29udGVudEVkaXRhYmxlKCkpIHsKQEAgLTI2MCw3ICsy
NTcsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpzZXRBY3RpdmUoYm9vbCBkCiAgICAgQ29u
dGFpbmVyTm9kZTo6c2V0QWN0aXZlKGRvd24sIHBhdXNlKTsKIH0KIAotdm9pZCBIVE1MQW5jaG9y
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQordm9p
ZCBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
KiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gaHJlZkF0dHIpIHsKICAgICAgICAg
Ym9vbCB3YXNMaW5rID0gaXNMaW5rKCk7CkBAIC0yNjgsMTkgKzI2NSwxOCBAQCB2b2lkIEhUTUxB
bmNob3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIGlmICh3YXNMaW5rICE9IGlz
TGluaygpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAo
aXNMaW5rKCkpIHsKLSAgICAgICAgICAgIFN0cmluZyBwYXJzZWRVUkwgPSBkZXByZWNhdGVkUGFy
c2VVUkwoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHVy
bCA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aXNETlNQcmVm
ZXRjaEVuYWJsZWQoKSkgewotICAgICAgICAgICAgICAgIGlmIChwcm90b2NvbElzKHBhcnNlZFVS
TCwgImh0dHAiKSB8fCBwcm90b2NvbElzKHBhcnNlZFVSTCwgImh0dHBzIikgfHwgcGFyc2VkVVJM
LnN0YXJ0c1dpdGgoIi8vIikpCi0gICAgICAgICAgICAgICAgICAgIHByZWZldGNoRE5TKGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9zdCgpKTsKKyAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyBub3QgZXhhY3RseSByaWdodCBiZWNhdXNlIHN0YXJ0c1dpdGggd29u
J3QgaWdub3JlIGxlYWRpbmcgc3BhY2VzIHRoZSB3YXkgdGhlIEtVUkwgZnVuY3Rpb25zIGRvLgor
ICAgICAgICAgICAgICAgIGlmIChwcm90b2NvbEluSFRUUEZhbWlseSh1cmwpIHx8IHVybC5zdGFy
dHNXaXRoKCIvLyIpKQorICAgICAgICAgICAgICAgICAgICBwcmVmZXRjaEROUyhkb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLmhvc3QoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoZG9jdW1lbnQoKS0+cGFnZSgpICYmICFkb2N1bWVudCgpLT5wYWdlKCktPmphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpICYmIHByb3RvY29sSXNKYXZhU2NyaXB0KHBhcnNlZFVSTCkpIHsKKyAg
ICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkgJiYgIWRvY3VtZW50KCktPnBhZ2UoKS0+
amF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkKCkgJiYgcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkg
ewogICAgICAgICAgICAgICAgIHNldElzTGluayhmYWxzZSk7CiAgICAgICAgICAgICAgICAgYXR0
ci0+c2V0VmFsdWUobnVsbEF0b20pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIgfHwKLSAgICAgICAgICAgICBhdHRyLT5u
YW1lKCkgPT0gdGl0bGVBdHRyIHx8Ci0gICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IHJlbEF0
dHIpIHsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0ciB8fCBhdHRyLT5u
YW1lKCkgPT0gdGl0bGVBdHRyIHx8IGF0dHItPm5hbWUoKSA9PSByZWxBdHRyKSB7CiAgICAgICAg
IC8vIERvIG5vdGhpbmcuCiAgICAgfSBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA0NjY3OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCwxNiArNDAsMTYgQEAgSFRNTEJhc2VFbGVtZW50OjpIVE1MQmFzZUVsZW1l
bnQoY29uc3QgUQogICAgIEFTU0VSVChoYXNUYWdOYW1lKGJhc2VUYWcpKTsKIH0KIAorU3RyaW5n
IEhUTUxCYXNlRWxlbWVudDo6dGFyZ2V0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmli
dXRlKHRhcmdldEF0dHIpOworfQorCiB2b2lkIEhUTUxCYXNlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gaHJlZkF0dHIpIHsKLSAgICAgICAgbV9ocmVmQXR0clZhbHVlID0gYXR0ci0+dmFsdWUoKTsK
LSAgICAgICAgbV9ocmVmID0gZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpOwotICAg
ICAgICBwcm9jZXNzKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdGFyZ2V0QXR0
cikgewotICAgICAgICBtX3RhcmdldCA9IGF0dHItPnZhbHVlKCk7Ci0gICAgICAgIHByb2Nlc3Mo
KTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IGhyZWZBdHRyIHx8IGF0dHIt
Pm5hbWUoKSA9PSB0YXJnZXRBdHRyKQorICAgICAgICBwcm9jZXNzKCk7ICAgICAgICAKKyAgICBl
bHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0K
IApAQCAtNzQsMTEgKzc0LDEzIEBAIHZvaWQgSFRNTEJhc2VFbGVtZW50Ojpwcm9jZXNzKCkKICAg
ICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2hyZWYu
aXNFbXB0eSgpICYmICghZG9jdW1lbnQoKS0+ZnJhbWUoKSB8fCBkb2N1bWVudCgpLT5mcmFtZSgp
LT5zY3JpcHQoKS0+eHNzQXVkaXRvcigpLT5jYW5TZXRCYXNlRWxlbWVudFVSTChtX2hyZWZBdHRy
VmFsdWUpKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0QmFzZUVsZW1lbnRVUkwoS1VSTChkb2N1
bWVudCgpLT51cmwoKSwgbV9ocmVmKSk7Ci0KLSAgICBpZiAoIW1fdGFyZ2V0LmlzRW1wdHkoKSkK
LSAgICAgICAgZG9jdW1lbnQoKS0+c2V0QmFzZUVsZW1lbnRUYXJnZXQobV90YXJnZXQpOworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgaHJlZiA9IGdldEF0dHJpYnV0ZShocmVmQXR0cik7CisgICAg
aWYgKCFocmVmLmlzRW1wdHkoKSAmJiAoIWRvY3VtZW50KCktPmZyYW1lKCkgfHwgZG9jdW1lbnQo
KS0+ZnJhbWUoKS0+c2NyaXB0KCktPnhzc0F1ZGl0b3IoKS0+Y2FuU2V0QmFzZUVsZW1lbnRVUkwo
aHJlZikpKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRCYXNlRWxlbWVudFVSTChLVVJMKGRvY3Vt
ZW50KCktPnVybCgpLCBocmVmKSk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldCA9
IGdldEF0dHJpYnV0ZSh0YXJnZXRBdHRyKTsKKyAgICBpZiAoIXRhcmdldC5pc0VtcHR5KCkpCisg
ICAgICAgIGRvY3VtZW50KCktPnNldEJhc2VFbGVtZW50VGFyZ2V0KHRhcmdldCk7CiAKICAgICAv
LyBGSVhNRTogQ2hhbmdpbmcgYSBkb2N1bWVudCdzIGJhc2UgVVJMIHNob3VsZCBwcm9iYWJseSBh
dXRvbWF0aWNhbGx5IHVwZGF0ZSB0aGUgcmVzb2x2ZWQgcmVsYXRpdmUgVVJMcyBvZiBhbGwgaW1h
Z2VzLCBzdHlsZXNoZWV0cywgZXRjLgogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaAkocmV2
aXNpb24gNDY2NzkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDIwICszNSwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTFRhZ1N0
YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c0ZvcmJpZGRl
bjsgfQogICAgIHZpcnR1YWwgaW50IHRhZ1ByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gMDsgfQog
Ci0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0K
KyAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwogCiAgICAgdm9pZCBwcm9jZXNzKCk7Ci0gICAgCi0gICAgdm9pZCBzZXRIcmVmKGNv
bnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYpOwotCi0gICAg
U3RyaW5nIG1faHJlZkF0dHJWYWx1ZTsKLSAgICBTdHJpbmcgbV9ocmVmOwotICAgIFN0cmluZyBt
X3RhcmdldDsKIH07CiAKIH0gLy9uYW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVs
ZW1lbnRCYXNlLmNwcAkocmV2aXNpb24gNDY2NzkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTMgKzIwMywxMyBAQCBLVVJM
IEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpsb2NhdGlvbigpIGNvCiAgICAgcmV0dXJuIHNyYygpOwog
fQogCi12b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcm
IHN0cikKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyKQogewogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNl
dHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRpbmdzLT5uZWVkc0Fjcm9iYXRGcmFt
ZVJlbG9hZGluZ1F1aXJrKCkgJiYgbV9VUkwgPT0gc3RyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX1VSTCA9IEF0b21pY1N0cmluZyhzdHIpOworICAgIG1fVVJMID0gc3RyOwogCiAgICAgaWYg
KGluRG9jdW1lbnQoKSkKICAgICAgICAgb3BlblVSTCgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykg
MjAwMCBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuTGF6eUF0dGFjaCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBL
VVJMIGxvY2F0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMb2NhdGlvbihjb25zdCBTdHJpbmcm
KTsKKyAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgdmly
dHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3Vz
KGJvb2wpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNDY2Nzkp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkNTU0hlbHBl
ci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMTEwLDcgKzEwOSw3IEBAIHZv
aWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgaWYgKGF0dHIt
PnZhbHVlKCkuc3RyaW5nKClbMF0gPT0gJyMnKQogICAgICAgICAgICAgdXNlbWFwID0gYXR0ci0+
dmFsdWUoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdXNlbWFwID0gZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpKS5zdHJpbmcoKTsK
KyAgICAgICAgICAgIHVzZW1hcCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGF0dHItPnZhbHVl
KCkpLnN0cmluZygpOwogICAgICAgICBzZXRJc0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKICAgICB9
IGVsc2UgaWYgKGF0dHJOYW1lID09IGlzbWFwQXR0cikKICAgICAgICAgaXNtYXAgPSB0cnVlOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzYsMTAgKzM2LDYgQEAgSFRNTEltYWdlTG9hZGVyOjpIVE1MSW1hZ2VMb2FkZXIoRWxlbWVu
dAogewogfQogCi1IVE1MSW1hZ2VMb2FkZXI6On5IVE1MSW1hZ2VMb2FkZXIoKQotewotfQotCiB2
b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogewogICAgIGJvb2wgZXJy
b3JPY2N1cnJlZCA9IGltYWdlKCktPmVycm9yT2NjdXJyZWQoKTsKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEltYWdl
TG9hZGVyLmgJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsNyBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAw
NCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzIsOCAr
MzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXIgOiBwdWJs
aWMgSW1hZ2VMb2FkZXIgewogcHVibGljOgogICAgIEhUTUxJbWFnZUxvYWRlcihFbGVtZW50Kik7
Ci0gICAgdmlydHVhbCB+SFRNTEltYWdlTG9hZGVyKCk7CiAKK3ByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJJ
KGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcAkocmV2aXNpb24gNDY2NzkpCisrKyBXZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkROUy5oIgogI2luY2x1
ZGUgIkRvY0xvYWRlci5oIgpAQCAtMTE2LDcgKzExNSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgdG9rZW5pemVSZWxBdHRyaWJ1dGUoYXR0ci0+
dmFsdWUoKSwgbV9pc1N0eWxlU2hlZXQsIG1fYWx0ZXJuYXRlLCBtX2lzSWNvbiwgbV9pc0ROU1By
ZWZldGNoKTsKICAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IGhyZWZBdHRyKSB7Ci0gICAgICAgIG1fdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
ZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpKTsKKyAgICAgICAgbV91cmwgPSBkb2N1
bWVudCgpLT5jb21wbGV0ZVVSTChhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgcHJvY2VzcygpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHR5cGVBdHRyKSB7CiAgICAgICAgIG1fdHlw
ZSA9IGF0dHItPnZhbHVlKCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBSZW5kZXJXaWRnZXQqIEhUTUxPYmplY3RFbGVt
ZW50OjpyZW5kZXJXCiAgICAgcmV0dXJuIHJlbmRlcldpZGdldDsKIH0KIAotdm9pZCBIVE1MT2Jq
ZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQor
dm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKQogewogICAgIFN0cmluZyB2YWwgPSBhdHRyLT52YWx1ZSgpOwogICAgIGludCBw
b3M7CkBAIC03NiwyNCArNzYsMjQgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaQogICAgICAgICBtX3NlcnZpY2VUeXBlID0gdmFsLmxvd2VyKCk7CiAgICAgICAgIHBv
cyA9IG1fc2VydmljZVR5cGUuZmluZCgiOyIpOwogICAgICAgICBpZiAocG9zICE9IC0xKQotICAg
ICAgICAgIG1fc2VydmljZVR5cGUgPSBtX3NlcnZpY2VUeXBlLmxlZnQocG9zKTsKKyAgICAgICAg
ICAgIG1fc2VydmljZVR5cGUgPSBtX3NlcnZpY2VUeXBlLmxlZnQocG9zKTsKICAgICAgICAgaWYg
KHJlbmRlcmVyKCkpCi0gICAgICAgICAgbV9uZWVkV2lkZ2V0VXBkYXRlID0gdHJ1ZTsKKyAgICAg
ICAgICAgIG1fbmVlZFdpZGdldFVwZGF0ZSA9IHRydWU7CiAgICAgICAgIGlmICghaXNJbWFnZVR5
cGUoKSAmJiBtX2ltYWdlTG9hZGVyKQotICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsK
KyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXIuY2xlYXIoKTsKICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBkYXRhQXR0cikgewogICAgICAgICBtX3VybCA9IGRlcHJlY2F0ZWRQYXJzZVVS
TCh2YWwpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICBtX25lZWRXaWRnZXRV
cGRhdGUgPSB0cnVlOworICAgICAgICAgICAgbV9uZWVkV2lkZ2V0VXBkYXRlID0gdHJ1ZTsKICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgaXNJbWFnZVR5cGUoKSkgewotICAgICAgICAgIGlmICgh
bV9pbWFnZUxvYWRlcikKLSAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJ
bWFnZUxvYWRlcih0aGlzKSk7Ci0gICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVs
ZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKKyAgICAgICAgICAgIGlmICghbV9pbWFnZUxv
YWRlcikKKyAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnNldChuZXcgSFRNTEltYWdlTG9h
ZGVyKHRoaXMpKTsKKyAgICAgICAgICAgIG1faW1hZ2VMb2FkZXItPnVwZGF0ZUZyb21FbGVtZW50
SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBjbGFzc2lkQXR0cikgewogICAgICAgICBtX2NsYXNzSWQgPSB2YWw7CiAgICAg
ICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgIG1fbmVlZFdpZGdldFVwZGF0ZSA9IHRydWU7
CisgICAgICAgICAgICBtX25lZWRXaWRnZXRVcGRhdGUgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpIHsKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0
cikgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAkocmV2aXNpb24gNDY2NzkpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5
NCw3IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnBhcnMKICAgICAgICAg
ICAgICAgICBpZiAobV9jdXJyZW50VG9rZW4uYXR0cnMgJiYgIW1fZnJhZ21lbnQpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1fZG9jLT5mcmFtZSgpICYmIG1fZG9jLT5mcmFtZSgpLT5zY3Jp
cHQoKS0+aXNFbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSA9IG1f
Y3VycmVudFRva2VuLmF0dHJzLT5nZXRBdHRyaWJ1dGVJdGVtKHNyY0F0dHIpKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3NjcmlwdFRhZ1NyY0F0dHJWYWx1ZSA9IG1fZG9jLT5jb21w
bGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwoYS0+dmFsdWUoKSkpLnN0cmluZygpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fc2NyaXB0VGFnU3JjQXR0clZhbHVlID0gbV9kb2MtPmNv
bXBsZXRlVVJMKGEtPnZhbHVlKCkpLnN0cmluZygpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCShyZXZpc2lv
biA0NjY3OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MTEsMTAgKzE2MTEsMTMgQEAgYm9vbCBwcm90b2NvbElz
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdAogewogICAgIC8vIERvIHRoZSBjb21wYXJpc29uIHdp
dGhvdXQgbWFraW5nIGEgbmV3IHN0cmluZyBvYmplY3QuCiAgICAgYXNzZXJ0UHJvdG9jb2xJc0dv
b2QocHJvdG9jb2wpOworICAgIGludCBmaXJzdE5vblNwYWNlOworICAgIGZvciAoZmlyc3ROb25T
cGFjZSA9IDA7IHVybFtmaXJzdE5vblNwYWNlXSA9PSAnICc7ICsrZmlyc3ROb25TcGFjZSkKKyAg
ICAgICAgOwogICAgIGZvciAoaW50IGkgPSAwOyA7ICsraSkgewogICAgICAgICBpZiAoIXByb3Rv
Y29sW2ldKQotICAgICAgICAgICAgcmV0dXJuIHVybFtpXSA9PSAnOic7Ci0gICAgICAgIGlmICh0
b0FTQ0lJTG93ZXIodXJsW2ldKSAhPSBwcm90b2NvbFtpXSkKKyAgICAgICAgICAgIHJldHVybiB1
cmxbZmlyc3ROb25TcGFjZSArIGldID09ICc6JzsKKyAgICAgICAgaWYgKHRvQVNDSUlMb3dlcih1
cmxbZmlyc3ROb25TcGFjZSArIGldKSAhPSBwcm90b2NvbFtpXSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiB9CkBAIC0xNjI0LDYgKzE2MjcsMTEgQEAgYm9vbCBwcm90b2NvbElz
SmF2YVNjcmlwdChjb25zdCBTdHJpbmcmIAogICAgIHJldHVybiBwcm90b2NvbElzKHVybCwgImph
dmFzY3JpcHQiKTsKIH0KIAorYm9vbCBwcm90b2NvbEluSFRUUEZhbWlseShjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICByZXR1cm4gcHJvdG9jb2xJcyh1cmwsICJodHRwIikgfHwgcHJvdG9jb2xJ
cyh1cmwsICJodHRwcyIpOworfQorCiBTdHJpbmcgbWltZVR5cGVGcm9tRGF0YVVSTChjb25zdCBT
dHJpbmcmIHVybCkKIHsKICAgICBBU1NFUlQocHJvdG9jb2xJcyh1cmwsICJkYXRhIikpOwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmgJKHJldmlzaW9uIDQ2Njc5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1NSw2ICsyNTUsNyBAQCBjb25zdCBLVVJMJiBibGFua1VSTCgpOwog
Ly8gVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBiZWNhdXNlIHZhbGlkIGphdmFzY3JpcHQg
VVJMcyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnNpZGVyZWQgdmFsaWQgYnkgS1VSTC4KIAogYm9v
bCBwcm90b2NvbElzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBjaGFyKiBwcm90b2NvbCk7Citi
b29sIHByb3RvY29sSW5IVFRQRmFtaWx5KGNvbnN0IFN0cmluZyYgdXJsKTsKIGJvb2wgcHJvdG9j
b2xJc0phdmFTY3JpcHQoY29uc3QgU3RyaW5nJiB1cmwpOwogCiBTdHJpbmcgbWltZVR5cGVGcm9t
RGF0YVVSTChjb25zdCBTdHJpbmcmIHVybCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAkocmV2aXNpb24gNDY2NzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjc0LDcgKzI3NCw3IEBAIEtVUkwgSGl0VGVzdFJlc3Vs
dDo6YWJzb2x1dGVJbWFnZVVSTCgpIGMKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIEtVUkwo
KTsKIAotICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKHVybFN0cmluZykpOworICAgIHJldHVybiBtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKIH0KIAog
S1VSTCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QKQEAgLTI5Myw3ICsy
OTMsNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTWVkaWFVUkwoKSBjCiAgICAgfSBl
bHNlCiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKLSAgICByZXR1cm4gbV9pbm5lck5vblNoYXJl
ZE5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTCh1cmxTdHJp
bmcpKTsKKyAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHVybFN0cmluZyk7CiAjZWxzZQogICAgIHJldHVybiBLVVJMKCk7CiAjZW5kaWYKQEAg
LTMxOCw3ICszMTgsNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCgpIGNv
CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gS1VSTCgpOwogCi0gICAgcmV0dXJuIG1faW5uZXJV
UkxFbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwodXJs
U3RyaW5nKSk7CisgICAgcmV0dXJuIG1faW5uZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpLT5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpOwogfQogCiBib29sIEhpdFRlc3RSZXN1bHQ6OmlzTGl2ZUxpbmso
KSBjb25zdApJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gNDY2NzkpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUz
LDcgQEAgdm9pZCBTVkdJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogCiBTdHJpbmcg
U1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHIpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGRlcHJlY2F0ZWRQYXJzZVVSTChLVVJMKGVsZW1lbnQoKS0+YmFzZVVS
SSgpLCBhdHRyKS5zdHJpbmcoKSk7CisgICAgcmV0dXJuIEtVUkwoZWxlbWVudCgpLT5iYXNlVVJJ
KCksIGF0dHIpLnN0cmluZygpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3dtbC9XTUxBRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MQUVsZW1lbnQuY3BwCShyZXZpc2lv
biA0NjY3OSkKKysrIFdlYkNvcmUvd21sL1dNTEFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSwxMCArMSwxMCBAQAotLyoqCisvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IFRvcmNoIE1v
YmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8pCiAgKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcp
CiAgKiAgICAgICAgICAgKEMpIDIwMDAgU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykg
MjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXTUxBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdgogICAgICAgICB9CiAgCiAgICAgICAgIGlmICghZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQo
KSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKSB7Ci0gICAgICAgICAgICBLVVJMIHVybCA9IGRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChnZXRBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpocmVmQXR0cikpKTsKKyAgICAgICAgICAgIEtVUkwgdXJsID0gZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKTsKICAgICAgICAgICAg
IGRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT51cmxTZWxlY3RlZCh1cmwsIHRhcmdldCgp
LCBldmVudCwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgfQogCkluZGV4OiBXZWJDb3Jl
L3dtbC9XTUxJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93bWwvV01MSW1h
Z2VMb2FkZXIuY3BwCShyZXZpc2lvbiA0NjY3OSkKKysrIFdlYkNvcmUvd21sL1dNTEltYWdlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCB2b2lkIFdNTEltYWdlTG9h
ZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiAKIFN0cmluZyBXTUxJbWFnZUxvYWRlcjo6c291cmNl
VVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QKIHsKLSAgICByZXR1cm4gZGVwcmVj
YXRlZFBhcnNlVVJMKEtVUkwoZWxlbWVudCgpLT5iYXNlVVJJKCksIGF0dHIpLnN0cmluZygpKTsK
KyAgICByZXR1cm4gS1VSTChlbGVtZW50KCktPmJhc2VVUkkoKSwgYXR0cikuc3RyaW5nKCk7CiB9
CiAKIHZvaWQgV01MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBp
bWFnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34275</attachid>
            <date>2009-08-07 08:16:26 -0700</date>
            <delta_ts>2009-08-07 08:16:26 -0700</delta_ts>
            <desc>test I&apos;m experimenting with</desc>
            <filename>href-whitespace-test.html</filename>
            <type>text/html</type>
            <size>1417</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CjxzY3JpcHQ+CgpmdW5jdGlvbiB0ZXN0KCkgCnsKICAg
IHZhciBhbmNob3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYScpOwogICAgdmFyIGNvbnNv
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOwoKICAgIGNvbnNvbGUuZmly
c3RDaGlsZC5kYXRhID0gInN0YXJ0aW5nIjsKCiAgICBmb3IgKHZhciBpID0gMTA7IGkgPCAxMTsg
KytpKSB7CiAgICAgICAgdmFyIHBhdGggPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpICsgIi0iICsg
aS50b1N0cmluZygxNikgKyAiLmh0bWwiOwogICAgICAgIGFuY2hvci5ocmVmID0gcGF0aDsKICAg
ICAgICB2YXIgZXhwZWN0ZWQxID0gZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKS5yZXBsYWNl
KC9cL1teXC9dKiQvLCAiLyIgKyBlbmNvZGVVUkkocGF0aCkpOwogICAgICAgIHZhciBleHBlY3Rl
ZDIgPSBkb2N1bWVudC5sb2NhdGlvbi50b1N0cmluZygpLnJlcGxhY2UoL1wvW15cL10qJC8sICIv
IiArIHBhdGgpOwogICAgICAgIGlmIChhbmNob3IuaHJlZiA9PT0gZXhwZWN0ZWQxIHx8IGFuY2hv
ci5ocmVmID09PSBleHBlY3RlZDIpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGNvbnNv
bGUuZmlyc3RDaGlsZC5kYXRhICs9ICJcbiIgKyBpLnRvU3RyaW5nKDE2KSArICI6ICIgKyBhbmNo
b3IuaHJlZiArICIgKCIgKyBleHBlY3RlZDEgKyAiKSI7CiAgICB9CgogICAgZm9yICh2YXIgaSA9
IDEwOyBpIDwgMTE7ICsraSkgewogICAgICAgIHZhciBwYXRoID0gaS50b1N0cmluZygxNikgKyAi
LSIgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpICsgIi5odG1sIjsKICAgICAgICBhbmNob3IuaHJl
ZiA9IHBhdGg7CiAgICAgICAgdmFyIGV4cGVjdGVkMSA9IGRvY3VtZW50LmxvY2F0aW9uLnRvU3Ry
aW5nKCkucmVwbGFjZSgvXC9bXlwvXSokLywgIi8iICsgZW5jb2RlVVJJKHBhdGgpKTsKICAgICAg
ICB2YXIgZXhwZWN0ZWQyID0gZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKS5yZXBsYWNlKC9c
L1teXC9dKiQvLCAiLyIgKyBwYXRoKTsKICAgICAgICBpZiAoYW5jaG9yLmhyZWYgPT09IGV4cGVj
dGVkMSB8fCBhbmNob3IuaHJlZiA9PT0gZXhwZWN0ZWQyKQogICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICBjb25zb2xlLmZpcnN0Q2hpbGQuZGF0YSArPSAiXG4iICsgaS50b1N0cmluZygxNikg
KyAiOiAiICsgYW5jaG9yLmhyZWYgKyAiICgiICsgZXhwZWN0ZWQxICsgIikiOwogICAgfQp9Cgo8
L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CjxhIGlkPSJhIiBocmVmPSJh
Lmh0bWwiPnh4eDwvYT4KPHByZSBpZD0iY29uc29sZSI+IDwvcHJlPgo8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>34276</attachid>
            <date>2009-08-07 08:16:46 -0700</date>
            <delta_ts>2009-08-07 08:16:46 -0700</delta_ts>
            <desc>another test I&apos;m experimenting with</desc>
            <filename>test-anchor-href.html</filename>
            <type>text/html</type>
            <size>31</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PGEgaHJlZj0idXJsKGEuaHRtbCkiPnRlc3Q8L2E+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69144</attachid>
            <date>2010-09-28 17:46:23 -0700</date>
            <delta_ts>2010-09-30 12:14:17 -0700</delta_ts>
            <desc>Checkpoint of work in progress</desc>
            <filename>bug-26599-20100928174622.patch</filename>
            <type>text/plain</type>
            <size>65001</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDEwLTA5LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgcmVtYWluaW5nIGNhbGxzIHRvIGRlcHJlY2F0ZWRQYXJzZVVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OTkKKworICAgICAgICAqIGNzcy9D
U1NIZWxwZXIuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICogY3NzL0NTU0hlbHBlci5oOiBSZW1v
dmVkIGRlcHJlY2F0ZWRQYXJzZVVSTC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKToKKyAgICAgICAgRml4ZWQgYnVnIHdoZXJlIHRoZSBmdW5jdGlvbiB3b3VsZCB0
dXJuIHRoZSBudWxsIHN0cmluZyBpbnRvIHRoZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIEZpeGVk
IGJ1ZyB3aGVyZSB0aGUgZnVuY3Rpb24gd291bGQgbm90IHN0cmlwIGFsbCB0cmFpbGluZyBzcGFj
ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZC4KKworICAgICAgICAqIEFu
ZHJvaWQubWs6IFJlbW92ZWQgQ1NTSGVscGVyLmNwcC4KKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDogRGl0dG8uCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IERpdHRvLgorICAgICAgICAqIFdl
YkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorCisgICAgICAgICogYmluZGlu
Z3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93U2V0
dGluZ0ZyYW1lU3JjVG9KYXZhc2NyaXB0VXJsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dTZXR0aW5nU3JjVG9KYXZhc2Ny
aXB0VVJMKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTCk6CisgICAg
ICAgICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2dldFVS
TEF0dHJpYnV0ZTpdKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL0RPTUhUTUwubW06CisgICAg
ICAgICgtW0RPTUhUTUxEb2N1bWVudCBfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBT
dHJpbmc6YmFzZVVSTFN0cmluZzpdKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNBdHRyaWJ1dGVUb1JlbW92ZSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hv
ckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxB
bmNob3JFbGVtZW50OjpocmVmKToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1l
RWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUxvYWRlcjo6c291cmNlVVJJKToKKyAgICAgICAg
KiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlua0Vs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cGFy
YW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAg
ICAgICogaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MUHJlbG9hZFNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjpQcmVs
b2FkVGFzazo6c2V0VXJsVG9Mb2FkKToKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6OnBhcnNl
QWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vcXQvQ2xpcGJvYXJkUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFnZVVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZU1lZGlhVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTGlua1VSTCk6CisgICAg
ICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSSk6CisgICAgICAg
ICogd21sL1dNTEFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEFFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiB3bWwvV01MSW1hZ2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V01MSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSSk6CisgICAgICAgIENh
bGwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzIGluc3RlYWQgb2YgZGVwcmVjYXRl
ZFBhcnNlVVJMLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgUmVtb3Zl
ZCB1bm5lZWRlZCBpbmNsdWRlIG9mIENTU0hlbHBlci5oLgorCiAyMDEwLTA5LTI4ICBKaWEgUHUg
IDxqcHVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCklu
ZGV4OiBXZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9BbmRyb2lkLm1r
CShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvQW5kcm9pZC5tawkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNiBAQCBMT0NBTF9TUkNfRklMRVMgOj0gXAogCWNzcy9DU1NGb250U2VsZWN0
b3IuY3BwIFwKIAljc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgXAogCWNzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcCBcCi0JY3NzL0NTU0hlbHBlci5jcHAgXAogCWNzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcCBcCiAJY3NzL0NTU0ltYWdlVmFsdWUuY3BwIFwKIAljc3MvQ1NTSW1wb3J0UnVsZS5j
cHAgXApJbmRleDogV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTcyNSw3ICs3MjUsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VT
CiAgICAgY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKICAgICBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5j
cHAKICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKLSAgICBjc3MvQ1NTSGVscGVyLmNwcAog
ICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAogICAgIGNzcy9DU1NJbWFnZVZhbHVl
LmNwcAogICAgIGNzcy9DU1NJbXBvcnRSdWxlLmNwcApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2ODYx
NCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTkxMSw3ICs5
MTEsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuaCBcCiAJV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgXAogCVdlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuaCBcCi0JV2ViQ29yZS9jc3MvQ1NTSGVscGVyLmNwcCBcCiAJV2Vi
Q29yZS9jc3MvQ1NTSGVscGVyLmggXAogCVdlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFs
dWUuY3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggXApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNyw2ICsxMzcsNyBAQCBfX1pOM0pTQzhCaW5kaW5nczhJbnN0YW5jZTE2bmV3
UnVudGltZU9iCiBfX1pOM1dURjEwU3RyaW5nSW1wbGN2UDhOU1N0cmluZ0V2CiBfX1pOM1dURjZT
dHJpbmdDMUVQOE5TU3RyaW5nCiBfX1pOM1dURjZTdHJpbmdDMUVQSzEwX19DRlN0cmluZworX19a
TjdXZWJDb3JlMTBKU0RvY3VtZW50NnNfaW5mb0UKIF9fWk43V2ViQ29yZTEwTW91c2VFdmVudEMx
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0ViYk5TMV8xMFBhc3NSZWZQdHJJTlNfOURPTVdpbmRvd0VF
RWlpaWlpYmJiYnROUzVfSU5TXzExRXZlbnRUYXJnZXRFRUVOUzVfSU5TXzlDbGlwYm9hcmRFRUVi
CiBfX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIKIF9fWk43
V2ViQ29yZTEwU2Nyb2xsVmlldzI0d2luZG93UmVzaXplclJlY3RDaGFuZ2VkRXYKQEAgLTI4MCw2
ICsyODEsNyBAQCBfX1pON1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxM0FY
T2JqZWN0Q2FjaGUxMWdldE9yQ3JlYXRlRVBOU18xMlJlbmRlck9iamVjdEUKIF9fWk43V2ViQ29y
ZTEzQVhPYmplY3RDYWNoZTIxZ0FjY2Vzc2liaWxpdHlFbmFibGVkRQogX19aTjdXZWJDb3JlMTNB
WE9iamVjdENhY2hlNDJnQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZUVuYWJsZWRF
CitfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxM3JlY3RGcm9tUG9pbnRFUktOU184SW50UG9p
bnRFampqagogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29y
ZTEzSGl0VGVzdFJlc3VsdEQxRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtj
CkBAIC00MTAsNyArNDEyLDYgQEAgX19aTjdXZWJDb3JlMTdIaXN0b3J5Q29udHJvbGxlcjI2c2F2
ZURvYwogX19aTjdXZWJDb3JlMTduYW1lRm9yQ3Vyc29yVHlwZUVOU182Q3Vyc29yNFR5cGVFCiBf
X1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlGaWxlRVBLY1JpCiBfX1pON1dlYkNvcmUxOFNlYXJj
aFBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNsaWVudEUKLV9fWk43V2ViQ29yZTE4ZGVw
cmVjYXRlZFBhcnNlVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMThpc1N0YXJ0T2ZQ
YXJhZ3JhcGhFUktOU18xNVZpc2libGVQb3NpdGlvbkUKIF9fWk43V2ViQ29yZTE4cGx1Z2luU2Ny
aXB0T2JqZWN0RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzEzSlNIVE1MRWxlbWVudEUKIF9fWk43V2Vi
Q29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0VQTlNfOERvY3VtZW50
RQpAQCAtNTI2LDYgKzUyNyw3IEBAIF9fWk43V2ViQ29yZTMyY29udGV4dE1lbnVJdGVtVGFnU21h
cnRDb3AKIF9fWk43V2ViQ29yZTMycGxhaW5UZXh0VG9NYWxsb2NBbGxvY2F0ZWRCdWZmZXJFUEtO
U181UmFuZ2VFUmpiTlNfMjBUZXh0SXRlcmF0b3JCZWhhdmlvckUKIF9fWk43V2ViQ29yZTMzY29u
dGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50RXYKIF9fWk43V2ViQ29yZTMzc2V0RGVmYXVs
dFRocmVhZFZpb2xhdGlvbkJlaGF2aW9yRU5TXzIzVGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNf
MjBUaHJlYWRWaW9sYXRpb25Sb3VuZEUKK19fWk43V2ViQ29yZTMzc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMzRjb250ZXh0TWVu
dUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uRXYKIF9fWk43V2ViQ29yZTM1Y29udGV4dE1lbnVJdGVt
VGFnU2hvd1NwZWxsaW5nUGFuZWxFYgogX19aTjdXZWJDb3JlMzVjb250ZXh0TWVudUl0ZW1UYWdT
aG93U3Vic3RpdHV0aW9uc0ViCkBAIC02ODksOCArNjkxLDYgQEAgX19aTjdXZWJDb3JlOERvY3Vt
ZW50MjZwYWdlU2l6ZUFuZE1hcmdpbgogX19aTjdXZWJDb3JlOERvY3VtZW50MjdyZW1vdmVNZWRp
YUNhblN0YXJ0TGlzdGVuZXJFUE5TXzIxTWVkaWFDYW5TdGFydExpc3RlbmVyRQogX19aTjdXZWJD
b3JlOERvY3VtZW50MzZ1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNFdgogX19a
TjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgotX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNG
cm9tUmVjdEVpaWpqampiCi1fX1pON1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19aTjdX
ZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQS3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2CiBf
X1pON1dlYkNvcmU4SW50UG9pbnRDMUVSSzhfTlNQb2ludApAQCAtOTI0LDcgKzkyNCw2IEBAIF9f
Wk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOHRpdGxlRGlzcGwKIF9fWk5LN1dlYkNvcmUxM0hp
dFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDV0aXRsZUVS
TlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDlpbWFnZVJl
Y3RFdgotX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTNyZWN0RnJvbVBvaW50RVJLTlNfOElu
dFBvaW50RWpqamoKIF9fWk5LN1dlYkNvcmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBf
X1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdXZWJDb3Jl
MTREb2N1bWVudExvYWRlcjExZnJhbWVMb2FkZXJFdgpAQCAtMTA1OCw2ICsxMDU3LDcgQEAgX19a
Tks3V2ViQ29yZTdJbnRSZWN0Y3Y3X05TUmVjdEV2CiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdf
TlNTaXplRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3Ry
aW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2CitfX1pOSzdXZWJD
b3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDIwY2Fj
aGVEb2N1bWVudEVsZW1lbnRFdgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk4MSw3ICs5ODEsNiBAQAogICAgICAgICAg
ICAgJ2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU0dyYWRpZW50VmFsdWUuaCcsCi0gICAg
ICAgICAgICAnY3NzL0NTU0hlbHBlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NIZWxwZXIu
aCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwJywKICAgICAg
ICAgICAgICdjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oJywKSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjg2
MTQpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02MTUsNyArNjE1
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcCBcCiAgICAg
Y3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAg
XAotICAgIGNzcy9DU1NIZWxwZXIuY3BwIFwKICAgICBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgXAog
ICAgIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0ltcG9ydFJ1
bGUuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gNjg2MTQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOTYxMywxMCArMjk2MTMsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTSGVscGVyLmNwcCINCi0JCQkJ
Pg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NI
ZWxwZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjcwNiw3ICsy
NzA2LDcgQEAKIAkJOTNFMjQxRkYwQjJCNEU0MDAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNF
MjQxRkUwQjJCNEU0MDAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRTI0MjVGMEIyQjUw
OTUwMEM3MzJBMSAvKiBIVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMjQyNUUwQjJCNTA5NTAwQzczMkExIC8q
IEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAgKi87IH07CiAJCTkzRTJBMzA2MTIzRTlEQzAwMDlG
RTEyQSAvKiBIVE1MUGFyc2VySWRpb21zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTJBMzA0MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1MUGFyc2Vy
SWRpb21zLmNwcCAqLzsgfTsKLQkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJz
ZXJJZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRTJBMzA1MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1MUGFyc2VySWRpb21zLmggKi87IH07CisJ
CTkzRTJBMzA3MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1MUGFyc2VySWRpb21zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyQTMwNTEyM0U5REMwMDA5
RkUxMkEgLyogSFRNTFBhcnNlcklkaW9tcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzRTYyRDlCMDk4NUY0MTYwMEUxQjVFMyAvKiBTeXN0ZW1U
aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2
MkQ5OTA5ODVGNDE2MDBFMUI1RTMgLyogU3lzdGVtVGltZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRUIxNjk1MDlGODgwQjAwMDkxRjhGRiAv
KiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNFQjE2OTQwOUY4ODBCMDAwOTFGOEZGIC8qIFdlYkNvcmVTeXN0
ZW1JbnRlcmZhY2UubW0gKi87IH07CiAJCTkzRUIxNjk3MDlGODgwQzAwMDkxRjhGRiAvKiBXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0VCMTY5NjA5Rjg4MEMwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVy
ZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00Nzk2LDcgKzQ3OTYsNiBAQAogCQlCQzc0REE0ODEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JD
b2xvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Qzc0REE0NjEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5jcHAgKi87IH07CiAJCUJDNzRE
QTQ5MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc0REE0NzEwMTNGNDY4MDA3OTg3QUQgLyogSlNS
R0JDb2xvci5oICovOyB9OwogCQlCQzc2QUMxMzBERDdBRDVDMDA0MTVGMzQgLyogUGFyc2VyVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
Qzc2QUMxMTBERDdBRDVDMDA0MTVGMzQgLyogUGFyc2VyVXRpbGl0aWVzLmggKi87IH07Ci0JCUJD
NzcyQjNCMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJCMzUwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5jcHAgKi87IH07CiAJCUJDNzcyQjNDMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzc3MkIzRDBDNEVBOTFFMDA4MzI4NUYg
LyogQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNzcyQjM3MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIuY3BwICovOyB9Owog
CQlCQzc3MkIzRTBDNEVBOTFFMDA4MzI4NUYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkIzODBDNEVBOTFFMDA4MzI4NUYg
LyogQ1NTUGFyc2VyLmggKi87IH07CkBAIC0xMDYyNSw3ICsxMDYyNCw2IEBACiAJCUJDNzREQTQ2
MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUkdCQ29sb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzc0REE0NzEwMTNGNDY4MDA3OTg3QUQgLyogSlNSR0JDb2xvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JHQkNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDNzZBQzExMEREN0FENUMwMDQxNUYzNCAvKiBQYXJzZXJVdGlsaXRpZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyVXRpbGl0aWVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDNzcyQjM1MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NI
ZWxwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0hlbHBl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzcyQjM2MEM0RUE5MUUwMDgz
Mjg1RiAvKiBDU1NIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENT
U0hlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3MkIzNzBDNEVBOTFF
MDA4MzI4NUYgLyogQ1NTUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDU1NQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzc3
MkIzODBDNEVBOTFFMDA4MzI4NUYgLyogQ1NTUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDU1NQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE3MDYzLDcgKzE3MDYxLDYgQEAKIAkJCQlCQzIzRTRFMDBEQUFDRTBGMDA5RkRDOTEgLyogQ1NT
R3JhZGllbnRWYWx1ZS5jcHAgKi8sCiAJCQkJQkM1M0M2OTEwREE1OTExNDAwMjFFQjVEIC8qIENT
U0dyYWRpZW50VmFsdWUuaCAqLywKIAkJCQlCQ0VBNDc3RTA5N0NBQUM4MDA5NEM5RTQgLyogQ1NT
R3JhbW1hci55ICovLAotCQkJCUJDNzcyQjM1MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIu
Y3BwICovLAogCQkJCUJDNzcyQjM2MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NIZWxwZXIuaCAqLywK
IAkJCQlCQzIzRTc2QjBEQUU4OEE5MDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5j
cHAgKi8sCiAJCQkJQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkxIC8qIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaCAqLywKQEAgLTIxMDcxLDcgKzIxMDY4LDYgQEAKIAkJCQlCQzAyQTY0NjBFMDlBQUU5
MDA0QjZEMkIgLyogQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIz
RTRFMTBEQUFDRTBGMDA5RkRDOTEgLyogQ1NTR3JhZGllbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTBGNTNERDA5RDE1RERGMDBDOUIwQzggLyogQ1NTR3JhbW1hci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlCQzc3MkIzQjBDNEVBOTFFMDA4MzI4NUYgLyogQ1NTSGVscGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMjNFNzZDMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0ZFMEExOTg5Q0EwMDdG
QjhDNSAvKiBDU1NJbWFnZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0VCMEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NJbXBvcnRSdWxlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaAkocmV2aXNpb24gNjg2
MTQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDEyICszMiwxMiBAQAogI2RlZmluZSBCaW5kaW5nU2VjdXJpdHlfaAog
CiAjaW5jbHVkZSAiQmluZGluZ1NlY3VyaXR5QmFzZS5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkdl
bmVyaWNCaW5kaW5nLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI4LDcgKzEyOCw3IEBA
IGJvb2wgQmluZGluZ1NlY3VyaXR5PEJpbmRpbmc+OjphbGxvd1BvcFUKIHRlbXBsYXRlIDxjbGFz
cyBCaW5kaW5nPgogYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmFsbG93U2V0dGluZ0Zy
YW1lU3JjVG9KYXZhc2NyaXB0VXJsKFN0YXRlPEJpbmRpbmc+KiBzdGF0ZSwgSFRNTEZyYW1lRWxl
bWVudEJhc2UqIGZyYW1lLCBTdHJpbmcgdmFsdWUpCiB7Ci0gICAgaWYgKHByb3RvY29sSXNKYXZh
U2NyaXB0KGRlcHJlY2F0ZWRQYXJzZVVSTCh2YWx1ZSkpKSB7CisgICAgaWYgKHByb3RvY29sSXNK
YXZhU2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSkpKSB7CiAg
ICAgICAgIE5vZGUqIGNvbnRlbnREb2MgPSBmcmFtZS0+Y29udGVudERvY3VtZW50KCk7CiAgICAg
ICAgIGlmIChjb250ZW50RG9jICYmICFjaGVja05vZGVTZWN1cml0eShzdGF0ZSwgY29udGVudERv
YykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQXR0ckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F0
dHJDdXN0b20uY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNB
dHRyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZp
c2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImRlYnVnZ2VyL0RlYnVnZ2Vy
Q2FsbEZyYW1lLmgiCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJD
U1NIZWxwZXIuaCIKICNpbmNsdWRlICJET01Db3JlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRE9N
T2JqZWN0SGFzaFRhYmxlTWFwLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKQEAgLTY0OCw3ICs2
NDcsNyBAQCBib29sIHNob3VsZEFsbG93TmF2aWdhdGlvbihFeGVjU3RhdGUqIGV4CiAKIGJvb2wg
YWxsb3dTZXR0aW5nU3JjVG9KYXZhc2NyaXB0VVJMKEV4ZWNTdGF0ZSogZXhlYywgRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpIHx8IGVsZW1lbnQtPmhhc1RhZ05h
bWUoZnJhbWVUYWcpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgJiYgcHJvdG9j
b2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKKyAgICBpZiAoKGVs
ZW1lbnQtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGZyYW1l
VGFnKSkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpICYmIHByb3RvY29sSXNKYXZh
U2NyaXB0KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSkpKSB7CiAgICAg
ICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKj4oZWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgpOwogICAgICAgICAgIGlmIChj
b250ZW50RG9jdW1lbnQgJiYgIWNoZWNrTm9kZVNlY3VyaXR5KGV4ZWMsIGNvbnRlbnREb2N1bWVu
dCkpCiAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNFbGVtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNFbGVtZW50LmgiCiAKLSNpbmNsdWRl
ICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNp
b24gNjg2MTQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTSFRNTEZyYW1lRWxlbWVudC5oIgogCi0jaW5jbHVkZSAiQ1NTSGVs
cGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAt
NDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgYWxsb3dTZXR0aW5nSmF2YXNjcmlwdFVSTChFeGVjU3RhdGUqIGV4ZWMsIEhUTUxGcmFt
ZUVsZW1lbnQqIGltcCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAocHJvdG9jb2xJ
c0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKKyAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKSkp
IHsKICAgICAgICAgRG9jdW1lbnQqIGNvbnRlbnREb2N1bWVudCA9IGltcC0+Y29udGVudERvY3Vt
ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50RG9jdW1lbnQgJiYgIWNoZWNrTm9kZVNlY3VyaXR5
KGV4ZWMsIGNvbnRlbnREb2N1bWVudCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvb2JqYy9ET00ubW0JKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRnJh
bWUuaCIKICNpbXBvcnQgIkhUTUxFbGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MTmFtZXMuaCIKKyNp
bXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbXBvcnQgIkltYWdlLmgiCiAjaW1wb3J0ICJO
b2RlRmlsdGVyLmgiCiAjaW1wb3J0ICJSZW5kZXJJbWFnZS5oIgpAQCAtNDY5LDcgKzQ3MCw3IEBA
IC0gKE5TVVJMICopX2dldFVSTEF0dHJpYnV0ZTooTlNTdHJpbmcgKikKICAgICBBU1NFUlQobmFt
ZSk7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9IGNvcmUoc2VsZik7CiAgICAgQVNT
RVJUKGVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVS
TChkZXByZWNhdGVkUGFyc2VVUkwoZWxlbWVudC0+Z2V0QXR0cmlidXRlKG5hbWUpKSk7CisgICAg
cmV0dXJuIGVsZW1lbnQtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhlbGVtZW50LT5nZXRBdHRyaWJ1dGUobmFtZSkpKTsKIH0KIAogLSAo
Qk9PTClpc0ZvY3VzZWQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCShyZXZpc2lvbiA2
ODYxNCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01IVE1MLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJIVE1MQ29sbGVjdGlvbi5oIgogI2ltcG9ydCAi
SFRNTERvY3VtZW50LmgiCiAjaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW1wb3J0ICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW1wb3J0ICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2ltcG9y
dCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2ltcG9ydCAiUGFnZS5oIgpAQCAtNzAsNyArNzEs
NyBAQCAtIChET01Eb2N1bWVudEZyYWdtZW50ICopY3JlYXRlRG9jdW1lbnRGCiAKIC0gKERPTURv
Y3VtZW50RnJhZ21lbnQgKilfY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6
KE5TU3RyaW5nICopbWFya3VwU3RyaW5nIGJhc2VVUkxTdHJpbmc6KE5TU3RyaW5nICopYmFzZVVS
TFN0cmluZwogewotICAgIE5TVVJMICpiYXNlVVJMID0gY29yZShzZWxmKS0+Y29tcGxldGVVUkwo
V2ViQ29yZTo6ZGVwcmVjYXRlZFBhcnNlVVJMKGJhc2VVUkxTdHJpbmcpKTsKKyAgICBOU1VSTCAq
YmFzZVVSTCA9IGNvcmUoc2VsZiktPmNvbXBsZXRlVVJMKFdlYkNvcmU6OnN0cmlwTGVhZGluZ0Fu
ZFRyYWlsaW5nSFRNTFNwYWNlcyhiYXNlVVJMU3RyaW5nKSk7CiAgICAgcmV0dXJuIFtzZWxmIGNy
ZWF0ZURvY3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOm1hcmt1cFN0cmluZyBiYXNlVVJM
OmJhc2VVUkxdOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RWxlbWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIlY4RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgotI2luY2x1
ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA2ODYxNCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VjhMb2NhdGlvbi5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0hlbHBlci5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9jc3MvQ1NTSGVscGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmlu
ZyBkZXByZWNhdGVkUGFyc2VVUkwoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgU3RyaW5nSW1w
bCogaSA9IHVybC5pbXBsKCk7Ci0gICAgaWYgKCFpKQotICAgICAgICByZXR1cm4gdXJsOwotCi0g
ICAgaW50IGxlbmd0aCA9IGktPmxlbmd0aCgpOwotCi0gICAgaW50IG8gPSAwOwotICAgIGludCBs
ID0gbGVuZ3RoOwotCi0gICAgd2hpbGUgKDAgPCBsICYmICgqaSlbb10gPD0gJyAnKSB7Ci0gICAg
ICAgICsrbzsKLSAgICAgICAgLS1sOwotICAgIH0KLSAgICB3aGlsZSAobCA+IDAgJiYgKCppKVtv
ICsgbCAtIDFdIDw9ICcgJykKLSAgICAgICAgLS1sOwotCi0gICAgaWYgKGwgPj0gNQotICAgICAg
ICAgICAgJiYgKCgqaSlbb10gPT0gJ3UnIHx8ICgqaSlbb10gPT0gJ1UnKQotICAgICAgICAgICAg
JiYgKCgqaSlbbyArIDFdID09ICdyJyB8fCAoKmkpW28gKyAxXSA9PSAnUicpCi0gICAgICAgICAg
ICAmJiAoKCppKVtvICsgMl0gPT0gJ2wnIHx8ICgqaSlbbyArIDJdID09ICdMJykKLSAgICAgICAg
ICAgICYmICgqaSlbbyArIDNdID09ICcoJwotICAgICAgICAgICAgJiYgKCppKVtvICsgbCAtIDFd
ID09ICcpJykgewotICAgICAgICBvICs9IDQ7Ci0gICAgICAgIGwgLT0gNTsKLSAgICB9Ci0KLSAg
ICB3aGlsZSAoMCA8IGwgJiYgKCppKVtvXSA8PSAnICcpIHsKLSAgICAgICAgKytvOwotICAgICAg
ICAtLWw7Ci0gICAgfQotICAgIHdoaWxlIChsID4gMCAmJiAoKmkpW28gKyBsIC0gMV0gPD0gJyAn
KQotICAgICAgICAtLWw7Ci0KLSAgICBpZiAobCA+PSAyICYmICgqaSlbb10gPT0gKCppKVtvICsg
bCAtIDFdICYmICgoKmkpW29dID09ICdcJycgfHwgKCppKVtvXSA9PSAnXCInKSkgewotICAgICAg
ICBvKys7Ci0gICAgICAgIGwgLT0gMjsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMCA8IGwgJiYgKCpp
KVtvXSA8PSAnICcpIHsKLSAgICAgICAgKytvOwotICAgICAgICAtLWw7Ci0gICAgfQotICAgIHdo
aWxlIChsID4gMCAmJiAoKmkpW28gKyBsIC0gMV0gPD0gJyAnKQotICAgICAgICAtLWw7Ci0KLSAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGktPmNoYXJhY3RlcnMoKTsKLQotICAgIC8vIE9w
dGltaXplIGZvciB0aGUgbGlrZWx5IGNhc2UgdGhlcmUgdGhlcmUgaXMgbm90aGluZyB0byBzdHJp
cC4KLSAgICBpZiAobCA9PSBsZW5ndGgpIHsKLSAgICAgICAgaW50IGs7Ci0gICAgICAgIC8vIElm
IHRoZSBVUkwgaGFzIGFueSBjb250cm9sIGNoYXJhY3RlcnMgaW4gaXQsIHdlIGhhdmUgdG8gc3Ry
aXAgdGhlbS4KLSAgICAgICAgLy8gJ1xyJyAoYXNjaWkgdmFsdWUgMTMpIGlzIHRoZSBsYXJnZXN0
IGNvbnRyb2wgY2hhcmFjdGVyLgotICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbGVuZ3RoOyBrKysp
IHsKLSAgICAgICAgICAgIGlmIChjaGFyYWN0ZXJzW2tdIDw9ICdccicpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGsgPT0gbGVuZ3RoKQotICAgICAgICAg
ICAgcmV0dXJuIHVybDsKLSAgICB9Ci0KLSAgICBWZWN0b3I8VUNoYXIsIDIwNDg+IGJ1ZmZlcihs
KTsKLQotICAgIGludCBubCA9IDA7Ci0gICAgZm9yIChpbnQgayA9IG87IGsgPCBvICsgbDsgaysr
KSB7Ci0gICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2tdOwotICAgICAgICBpZiAoYyA+ICdc
cicpCi0gICAgICAgICAgICBidWZmZXJbbmwrK10gPSBjOwotICAgIH0KLQotICAgIHJldHVybiBT
dHJpbmcoYnVmZmVyLmRhdGEoKSwgbmwpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NIZWxwZXIuaAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBVc2VkIGluIG1hbnkgaW5hcHByb3ByaWF0ZSBjb250ZXh0cyB0aHJvdWdob3V0IFdlYkNv
cmUuIE1vc3QgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcKLS8vIHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nSFRNTFNwYWNlcyBpbnN0ZWFkLgotU3RyaW5nIGRlcHJlY2F0ZWRQYXJzZVVSTChjb25zdCBT
dHJpbmcmKTsKLQogLy8gV2UgYWx3YXlzIGFzc3VtZSA5NiBDU1MgcGl4ZWxzIGluIGEgQ1NTIGlu
Y2guIFRoaXMgaXMgdGhlIGNvbGQgaGFyZCB0cnV0aCBvZiB0aGUgV2ViLgogLy8gQXQgaGlnaCBE
UEksIHdlIG1heSBzY2FsZSBhIENTUyBwaXhlbCwgYnV0IHRoZSByYXRpbyBvZiB0aGUgQ1NTIHBp
eGVsIHRvIHRoZSBzby1jYWxsZWQKIC8vICJhYnNvbHV0ZSIgQ1NTIGxlbmd0aCB1bml0cyBsaWtl
IGluY2ggYW5kIHB0IGlzIGFsd2F5cyBmaXhlZCBhbmQgbmV2ZXIgY2hhbmdlcy4KSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQ1NTQ2FudmFzVmFsdWUu
aCIKICNpbmNsdWRlICJDU1NDaGFyc2V0UnVsZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdl
VmFsdWUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NJbWFnZVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhY2VT
cmNWYWx1ZS5oIgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ0RBVEFTZWN0aW9u
LmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCkBAIC04MSw2ICs4MCw3IEBACiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgpA
QCAtMjI0MCw3ICsyMjQwLDcgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0Jhc2VFbGVtZW50KCkK
ICAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBkb2Vzbid0IHNoYXJlIGNvZGUgd2l0aCBjb21wbGV0
ZVVSTCBpdCBtYXkgbm90IGhhbmRsZSBlbmNvZGluZ3MgY29ycmVjdGx5LgogICAgIEtVUkwgYmFz
ZUVsZW1lbnRVUkw7CiAgICAgaWYgKGhyZWYpIHsKLSAgICAgICAgU3RyaW5nIHN0cmlwcGVkSHJl
ZiA9IGRlcHJlY2F0ZWRQYXJzZVVSTCgqaHJlZik7CisgICAgICAgIFN0cmluZyBzdHJpcHBlZEhy
ZWYgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoKmhyZWYpOwogICAgICAgICBp
ZiAoIXN0cmlwcGVkSHJlZi5pc0VtcHR5KCkgJiYgKCFmcmFtZSgpIHx8IGZyYW1lKCktPnNjcmlw
dCgpLT54c3NBdWRpdG9yKCktPmNhblNldEJhc2VFbGVtZW50VVJMKCpocmVmKSkpCiAgICAgICAg
ICAgICBiYXNlRWxlbWVudFVSTCA9IEtVUkwodXJsKCksIHN0cmlwcGVkSHJlZik7CiAgICAgfQpJ
bmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAg
LTY4MCw3ICs2ODEsNyBAQCBzdGF0aWMgYm9vbCBpc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25z
CiAKIHN0YXRpYyBib29sIGlzQXR0cmlidXRlVG9SZW1vdmUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsgICAgCi0gICAgcmV0dXJuIChuYW1l
LmxvY2FsTmFtZSgpLmVuZHNXaXRoKGhyZWZBdHRyLmxvY2FsTmFtZSgpKSB8fCBuYW1lID09IHNy
Y0F0dHIgfHwgbmFtZSA9PSBhY3Rpb25BdHRyKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChkZXBy
ZWNhdGVkUGFyc2VVUkwodmFsdWUpKTsgICAgICAgCisgICAgcmV0dXJuIChuYW1lLmxvY2FsTmFt
ZSgpLmVuZHNXaXRoKGhyZWZBdHRyLmxvY2FsTmFtZSgpKSB8fCBuYW1lID09IHNyY0F0dHIgfHwg
bmFtZSA9PSBhY3Rpb25BdHRyKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpKTsgICAgICAgCiB9CiAKIHZvaWQgRWxlbWVudDo6
c2V0QXR0cmlidXRlTWFwKFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBsaXN0LCBGcmFnbWVudFNj
cmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKQEAgLTE2MTIsNyArMTYxMyw3
IEBAIEtVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWwKICAgICAgICAgICAg
IEFTU0VSVChpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpKTsKICAgICB9CiAjZW5kaWYKLSAgICBy
ZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJp
YnV0ZShuYW1lKSkpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKSk7CiB9CiAKIEtV
UkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSkgY29uc3QKQEAgLTE2MjMsNyArMTYyNCw3IEBAIEtVUkwgRWxlbWVudDo6Z2V0Tm9uRW1w
dHlVUkxBdHRyaWJ1dGUoY28KICAgICAgICAgICAgIEFTU0VSVChpc1VSTEF0dHJpYnV0ZShhdHRy
aWJ1dGUpKTsKICAgICB9CiAjZW5kaWYKLSAgICBTdHJpbmcgdmFsdWUgPSBkZXByZWNhdGVkUGFy
c2VVUkwoZ2V0QXR0cmlidXRlKG5hbWUpKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKTsKICAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gS1VSTCgpOwogICAgIHJldHVybiBkb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTCh2YWx1ZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
VHlwZXMuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJk
RXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAt
MTQ1LDcgKzE0Niw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChpc0xpbmtDbGljayhldmVudCkgJiYgdHJlYXRMaW5r
QXNMaXZlRm9yRXZlbnRUeXBlKGV2ZW50VHlwZShldmVudCkpKSB7Ci0gICAgICAgICAgICBTdHJp
bmcgdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOworICAg
ICAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhn
ZXRBdHRyaWJ1dGUoaHJlZkF0dHIpKTsKICAgICAgICAgICAgIGFwcGVuZFNlcnZlck1hcE1vdXNl
UG9zaXRpb24odXJsLCBldmVudCk7CiAgICAgICAgICAgICBoYW5kbGVMaW5rQ2xpY2soZXZlbnQs
IGRvY3VtZW50KCksIHVybCwgZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpLCBoYXNSZWwoUmVsYXRp
b25Ob1JlZmVycmVyKSk7CiAgICAgICAgICAgICBzZW5kUGluZ3MoZG9jdW1lbnQoKS0+Y29tcGxl
dGVVUkwodXJsKSk7CkBAIC0yMTAsNyArMjExLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaQogICAgICAgICBpZiAod2FzTGluayAhPSBpc0xpbmsoKSkKICAgICAg
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKGlzTGluaygpKSB7Ci0g
ICAgICAgICAgICBTdHJpbmcgcGFyc2VkVVJMID0gZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZh
bHVlKCkpOworICAgICAgICAgICAgU3RyaW5nIHBhcnNlZFVSTCA9IHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVu
dCgpLT5pc0ROU1ByZWZldGNoRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByb3Rv
Y29sSXMocGFyc2VkVVJMLCAiaHR0cCIpIHx8IHByb3RvY29sSXMocGFyc2VkVVJMLCAiaHR0cHMi
KSB8fCBwYXJzZWRVUkwuc3RhcnRzV2l0aCgiLy8iKSkKICAgICAgICAgICAgICAgICAgICAgUmVz
b3VyY2VIYW5kbGU6OnByZXBhcmVGb3JVUkwoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocGFyc2Vk
VVJMKSk7CkBAIC0yNjEsNyArMjYyLDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dh
YmxlKCkgY29ucwogCiBLVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0
dHJpYnV0ZShocmVmQXR0cikpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJpYnV0ZShocmVmQXR0cikp
KTsKIH0KIAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SHJlZihjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHJldmlzaW9uIDY4NjE0
KQorKysgV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRnJh
bWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQ
YXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTk1LDcgKzk2LDcgQEAgYm9vbCBIVE1MQm9keUVsZW1lbnQ6Om1h
cFRvRW50cnkoY29uc3QgUQogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91
bmRBdHRyKSB7Ci0gICAgICAgIFN0cmluZyB1cmwgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0g
bGVmdG1hcmdpbkF0dHIpIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHJldmlz
aW9uIDY4NjE0KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSwxMyArMjUsMTMgQEAKICNpbmNsdWRlICJIVE1MRW1iZWRFbGVtZW50Lmgi
CiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNs
dWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJI
VE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCkBAIC05NCw5
ICs5NCw5IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAg
ICAgaWYgKCFpc0ltYWdlVHlwZSgpICYmIG1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICBtX2lt
YWdlTG9hZGVyLmNsZWFyKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY29kZUF0
dHIpCi0gICAgICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlLnN0cmluZygpKTsK
KyAgICAgICAgbV91cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUu
c3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyKSB7Ci0gICAg
ICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlLnN0cmluZygpKTsKKyAgICAgICAg
bV91cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUuc3RyaW5nKCkp
OwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdlVHlwZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlciA9IGFk
b3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgi
Ci0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCkBAIC0zNSw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJl
bmRlckVtYmVkZGVkT2JqZWN0LmgiCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBIVE1MRnJhbWVF
bGVtZW50QmFzZTo6b3BlblVSTChib29sIAogdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gc3JjQXR0cikKLSAgICAgICAgc2V0TG9jYXRpb24oZGVwcmVjYXRlZFBhcnNlVVJMKGF0
dHItPnZhbHVlKCkpKTsKKyAgICAgICAgc2V0TG9jYXRpb24oc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlIGlmIChpc0lkQXR0cmlidXRl
TmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIC8vIEltcG9ydGFudCB0byBjYWxsIHRocm91
Z2ggdG8gYmFzZSBmb3IgdGhlIGlkIGF0dHJpYnV0ZSBzbyB0aGUgaGFzSUQgYml0IGdldHMgc2V0
LgogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNjg2MTQpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDYgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAKICNpbmNsdWRlICJB
dHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKQEAgLTMyLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNs
dWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNs
dWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIGlmIChhdHRyLT52YWx1
ZSgpLnN0cmluZygpWzBdID09ICcjJykKICAgICAgICAgICAgIHVzZW1hcCA9IGF0dHItPnZhbHVl
KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVzZW1hcCA9IGRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyLT52YWx1ZSgpKSkuc3RyaW5nKCk7CisgICAg
ICAgICAgICB1c2VtYXAgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSkpLnN0cmluZygpOwogICAgICAgICBzZXRJ
c0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGlzbWFw
QXR0cikKICAgICAgICAgaXNtYXAgPSB0cnVlOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5j
cHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDEzICsyMiwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgpAQCAt
NTUsNyArNTUsNyBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoCiAK
IFN0cmluZyBIVE1MSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyKTsKKyAgICBy
ZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHIpOwogfQogCiB2b2lk
IEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNp
bmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgotI2lu
Y2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBA
IC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIHRva2VuaXplUmVs
QXR0cmlidXRlKGF0dHItPnZhbHVlKCksIG1fcmVsQXR0cmlidXRlKTsKICAgICAgICAgcHJvY2Vz
cygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhyZWZBdHRyKSB7Ci0gICAgICAg
IG1fdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHIt
PnZhbHVlKCkpKTsKKyAgICAgICAgbV91cmwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSkpOwogICAgICAgICBw
cm9jZXNzKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gdHlwZUF0dHIpIHsKICAg
ICAgICAgbV90eXBlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiQ2xpZW50UmVj
dC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUu
aCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NiBAQAogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1
dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0zNCw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgpAQCAtNzcsNyArNzcs
NyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIGlm
ICghaXNJbWFnZVR5cGUoKSAmJiBtX2ltYWdlTG9hZGVyKQogICAgICAgICAgICAgbV9pbWFnZUxv
YWRlci5jbGVhcigpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRhdGFBdHRyKSB7
Ci0gICAgICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpOworICAg
ICAgICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1
ZSgpKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHNldE5lZWRzV2lk
Z2V0VXBkYXRlKHRydWUpOwogICAgICAgICAgICAgaWYgKGlzSW1hZ2VUeXBlKCkpIHsKQEAgLTE4
Miw3ICsxODIsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1CiAK
ICAgICAgICAgLy8gRklYTUU6IHVybCBhZGp1c3RtZW50IGRvZXMgbm90IGJlbG9uZyBpbiB0aGlz
IGZ1bmN0aW9uLgogICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiB1cmxQYXJhbWV0ZXIuaXNF
bXB0eSgpICYmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgIm1vdmllIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgImNvZGUiKSB8
fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidXJsIikpKQotICAgICAgICAgICAgdXJsUGFyYW1l
dGVyID0gZGVwcmVjYXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkpOworICAgICAgICAgICAgdXJsUGFy
YW1ldGVyID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHAtPnZhbHVlKCkpOwog
ICAgICAgICAvLyBGSVhNRTogc2VydmljZVR5cGUgY2FsY3VsYXRpb24gZG9lcyBub3QgYmVsb25n
IGluIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIGlmIChzZXJ2aWNlVHlwZS5pc0VtcHR5KCkgJiYg
ZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInR5cGUiKSkgewogICAgICAgICAgICAgc2VydmljZVR5
cGUgPSBwLT52YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAkocmV2aXNp
b24gNjg2MTQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5oIgpAQCAtMzM2LDcgKzMzNyw3IEBAIHZvaWQgSFRNTFRhYmxlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgICAgIG1fYm9yZGVyQ29sb3JBdHRyID0g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91
bmRBdHRyKSB7Ci0gICAgICAgIFN0cmluZyB1cmwgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+
dmFsdWUoKSk7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
SW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOwogICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lQXR0cikgewpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVBhcnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUGFydEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VGFibGVQYXJ0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMSBAQAog
I2luY2x1ZGUgIkhUTUxUYWJsZVBhcnRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUu
aCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6cGFyc2VNYXBwZWRBdAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gYmdjb2xvckF0
dHIpCiAgICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
LCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYmFja2dyb3Vu
ZEF0dHIpIHsKLSAgICAgICAgU3RyaW5nIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKSk7CiAgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRyKSB7CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
IkhUTUxWaWRlb0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUg
IkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKSW5kZXg6IFdlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9w
YXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUv
aHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
MCArMjgsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQcmVsb2FkU2Nh
bm5lci5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ1NTU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRN
TFRva2VuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IENTU1ByZWxvYWRTY2FubmVyOjplbWl0UnVsZSgpCiAgICAgU3RyaW5nIHJ1bGUobV9ydWxlLmRh
dGEoKSwgbV9ydWxlLnNpemUoKSk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJ1bGUsICJp
bXBvcnQiKSAmJiAhbV9ydWxlVmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIFN0cmluZyB2YWx1
ZShtX3J1bGVWYWx1ZS5kYXRhKCksIG1fcnVsZVZhbHVlLnNpemUoKSk7Ci0gICAgICAgIFN0cmlu
ZyB1cmwgPSBkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpOworICAgICAgICBTdHJpbmcgdXJsID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKTsKICAgICAgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKQogICAgICAgICAgICAgbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS0+cHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCwgdXJsLCBTdHJpbmco
KSwgbV9zY2FubmluZ0JvZHkpOwogICAgIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmNwcAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIFN0
cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMKICAgICB9CiAKICAgICBpZiAo
bnVtTGVhZGluZ1NwYWNlcyA9PSBsZW5ndGgpCi0gICAgICAgIHJldHVybiBlbXB0eUF0b207Cisg
ICAgICAgIHJldHVybiBzdHJpbmcuaXNOdWxsKCkgPyBzdHJpbmcgOiBlbXB0eUF0b20uc3RyaW5n
KCk7CiAKICAgICB1bnNpZ25lZCBudW1UcmFpbGluZ1NwYWNlczsKICAgICBmb3IgKG51bVRyYWls
aW5nU3BhY2VzID0gMDsgbnVtVHJhaWxpbmdTcGFjZXMgPCBsZW5ndGg7ICsrbnVtVHJhaWxpbmdT
cGFjZXMpIHsKQEAgLTUzLDcgKzUzLDcgQEAgU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcwogCiAgICAgQVNTRVJUKG51bUxlYWRpbmdTcGFjZXMgKyBudW1UcmFpbGluZ1Nw
YWNlcyA8IGxlbmd0aCk7CiAKLSAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFkaW5n
U3BhY2VzLCBsZW5ndGggLSBudW1UcmFpbGluZ1NwYWNlcyk7CisgICAgcmV0dXJuIHN0cmluZy5z
dWJzdHJpbmcobnVtTGVhZGluZ1NwYWNlcywgbGVuZ3RoIC0gKG51bUxlYWRpbmdTcGFjZXMgKyBu
dW1UcmFpbGluZ1NwYWNlcykpOwogfQogCiBTdHJpbmcgc2VyaWFsaXplRm9yTnVtYmVyVHlwZShk
b3VibGUgbnVtYmVyKQpJbmRleDogV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgogCi0jaW5jbHVk
ZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1
ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdl
L3Rva2VuaXphdGlvbi5odG1sI2F0dHJpYnV0ZS1uYW1lLXN0YXRlCiAgICAgICAgIGlmICghbV91
cmxUb0xvYWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3VybFRv
TG9hZCA9IGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIG1fdXJs
VG9Mb2FkID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVl
KTsKICAgICB9CiAKICAgICB2b2lkIHByZWxvYWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHNj
YW5uaW5nQm9keSkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDY4
NjE0KQorKysgV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9ybVN1
Ym1pc3Npb24uaCIKIAotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkRPTUZvcm1E
YXRhLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNDUs
NiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgpAQCAtODUsNyArODUs
NyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Qb3N0Rm9ybURhdGFUb1VSCiB2b2lkIEZvcm1T
dWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbihjb25zdCBTdHJpbmcmIGFjdGlvbikK
IHsKICAgICAvLyBGSVhNRTogQ2FuIHdlIHBhcnNlIGludG8gYSBLVVJMPwotICAgIG1fYWN0aW9u
ID0gZGVwcmVjYXRlZFBhcnNlVVJMKGFjdGlvbik7CisgICAgbV9hY3Rpb24gPSBzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYWN0aW9uKTsKIH0KIAogdm9pZCBGb3JtU3VibWlzc2lv
bjo6QXR0cmlidXRlczo6cGFyc2VFbmNvZGluZ1R5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL0ltYWdlTG9hZGVyLmNwcAkocmV2aXNpb24gNjg2MTQpCisrKyBXZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbWFnZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiQ1NT
SGVscGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gNjg2MTQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCkBAIC00OTMsNyArNDk0LDcgQEAgdm9p
ZCBDbGlwYm9hcmRDaHJvbWl1bTo6ZGVjbGFyZUFuZFdyaXRlRAogICAgIGlmIChpbWFnZVVSTC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmdWxsVVJMID0gZnJhbWUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChpbWFnZVVSTCkpOwor
ICAgIFN0cmluZyBmdWxsVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVVSTCkpOwogICAgIGlmIChmdWxsVVJM
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Bhc3RlYm9hcmRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2ODYxNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRl
ICJtYXJrdXAuaCIKQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlSW1h
Z2UoTm9kZSogbm9kZSwgCiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4obm9kZSk7CiAgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0
ZShlbGVtZW50LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgfQotICAgIEtVUkwg
dXJsID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTCh1cmxTdHJpbmcpKTsKKyAgICBLVVJMIHVybCA9
IHVybFN0cmluZy5pc0VtcHR5KCkgPyBLVVJMKCkgOiBub2RlLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModXJsU3RyaW5nKSk7CiAKICAg
ICBDaHJvbWl1bUJyaWRnZTo6Y2xpcGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVybCwgdGl0bGUp
OwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAJKHJldmlzaW9uIDY4NjE0
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbGlwYm9h
cmRRdC5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2Uu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRyYWdEYXRhLmgiCkBAIC0zNiw2
ICszNSw3IEBACiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpA
QCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ2xpcGJvYXJkUXQ6OmRlY2xhcmVBbmRXcml0ZURyYWdJ
bWEKICAgICBpZiAoaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBL
VVJMIGZ1bGxVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBh
cnNlVVJMKGltYWdlVVJMKSk7CisgICAgS1VSTCBmdWxsVVJMID0gZnJhbWUtPmRvY3VtZW50KCkt
PmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVVSTCkp
OwogICAgIGlmIChmdWxsVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCkBAIC01MCw3ICs1MSw2IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldD
RGF0YU9iamVjdC5oIgotI2luY2x1ZGUgImNzc2hlbHBlci5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHNobHdhcGkuaD4KICNpbmNsdWRlIDx3aW5pbmV0Lmg+CkBAIC03MjMsNyAr
NzIzLDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OmRlY2xhcmVBbmRXcml0ZURyYWdJbQogICAgIGlm
IChpbWFnZVVSTC5pc0VtcHR5KCkpIAogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZnVs
bFVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwo
aW1hZ2VVUkwpKS5zdHJpbmcoKTsKKyAgICBTdHJpbmcgZnVsbFVSTCA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaW1hZ2VV
UkwpKS5zdHJpbmcoKTsKICAgICBpZiAoZnVsbFVSTC5pc0VtcHR5KCkpIAogICAgICAgICByZXR1
cm47CiAgICAgU1RHTUVESVVNIG1lZGl1bSA9IHswfTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVk
ZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTZWxl
Y3Rpb25Db250cm9sbGVyLmgiCkBAIC0zMDUsMTQgKzMwNiwxNCBAQCBLVVJMIEhpdFRlc3RSZXN1
bHQ6OmFic29sdXRlSW1hZ2VVUkwoKSBjCiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBLVVJM
KCk7CiAKLSAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTCh1cmxTdHJpbmcpKTsKKyAgICByZXR1cm4gbV9pbm5l
ck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIH0KIAogS1VSTCBIaXRUZXN0UmVzdWx0Ojph
YnNvbHV0ZU1lZGlhVVJMKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWx0ID0gbWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHJldHVy
biBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRl
ZFBhcnNlVVJMKG1lZGlhRWx0LT5jdXJyZW50U3JjKCkpKTsKKyAgICAgICAgcmV0dXJuIG1faW5u
ZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMobWVkaWFFbHQtPmN1cnJlbnRTcmMoKSkpOwogICAgIHJldHVybiBL
VVJMKCk7CiAjZWxzZQogICAgIHJldHVybiBLVVJMKCk7CkBAIC00NjEsNyArNDYyLDcgQEAgS1VS
TCBIaXRUZXN0UmVzdWx0OjphYnNvbHV0ZUxpbmtVUkwoKSBjbwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIEtVUkwoKTsKIAotICAgIHJldHVybiBtX2lubmVyVVJMRWxlbWVudC0+ZG9jdW1lbnQo
KS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKHVybFN0cmluZykpOworICAgIHJldHVy
biBtX2lubmVyVVJMRWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5n
QW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0cmluZykpOwogfQogCiBib29sIEhpdFRlc3RSZXN1
bHQ6OmlzTGl2ZUxpbmsoKSBjb25zdApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJBbmlt
YXRpb25MaXN0LmgiCiAjaW5jbHVkZSAiQm9yZGVyRGF0YS5oIgogI2luY2x1ZGUgIkJvcmRlclZh
bHVlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24gNjg2MTQpCisr
KyBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3
LDYgQEAKIAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNs
dWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50
SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTM1LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNp
bmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQg
U1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXYKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChpc0xpbmtDbGljayhldmVudCkpIHsKLSAgICAgICAgICAgIFN0cmluZyB1cmwgPSBkZXBy
ZWNhdGVkUGFyc2VVUkwoaHJlZigpKTsKKyAgICAgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoaHJlZigpKTsKIAogI2lmIEVOQUJMRShTVkdfQU5J
TUFUSU9OKQogICAgICAgICAgICAgaWYgKHVybFswXSA9PSAnIycpIHsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFn
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2Uu
aCIKIApAQCAtNDgsNyArNDksNyBAQCB2b2lkIFNWR0ltYWdlTG9hZGVyOjpkaXNwYXRjaExvYWRF
dmVudCgpCiAKIFN0cmluZyBTVkdJbWFnZUxvYWRlcjo6c291cmNlVVJJKGNvbnN0IEF0b21pY1N0
cmluZyYgYXR0cikgY29uc3QKIHsKLSAgICByZXR1cm4gS1VSTChlbGVtZW50KCktPmJhc2VVUkko
KSwgZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHIpKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gS1VSTChl
bGVtZW50KCktPmJhc2VVUkkoKSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0
dHIpKS5zdHJpbmcoKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS93bWwvV01MQUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTEFFbGVtZW50LmNwcAkocmV2aXNpb24gNjg2
MTQpCisrKyBXZWJDb3JlL3dtbC9XTUxBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIFdNTEFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoaXNMaW5rQ2xpY2soZXZlbnQpKSB7Ci0gICAgICAgICAg
ICBoYW5kbGVMaW5rQ2xpY2soZXZlbnQsIGRvY3VtZW50KCksIGRlcHJlY2F0ZWRQYXJzZVVSTChn
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpLCB0YXJnZXQoKSwgZXZlbnQpOworICAg
ICAgICAgICAgaGFuZGxlTGlua0NsaWNrKGV2ZW50LCBkb2N1bWVudCgpLCBzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aHJlZkF0dHIpKSwg
dGFyZ2V0KCksIGV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
SW5kZXg6IFdlYkNvcmUvd21sL1dNTEltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3dtbC9XTUxJbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2ViQ29yZS93
bWwvV01MSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAj
aW5jbHVkZSAiV01MSW1hZ2VMb2FkZXIuaCIKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCi0j
aW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
V01MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiV01MTmFtZXMuaCIKQEAgLTQ5LDcgKzQ4LDcg
QEAgdm9pZCBXTUxJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogCiBTdHJpbmcgV01M
SW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIEtVUkwoZWxlbWVudCgpLT5iYXNlVVJJKCksIGRlcHJlY2F0ZWRQYXJzZVVS
TChhdHRyKSk7CisgICAgcmV0dXJuIEtVUkwoZWxlbWVudCgpLT5iYXNlVVJJKCksIHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyKSk7CiB9CiAKIHZvaWQgV01MSW1hZ2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBpbWFnZSkKSW5kZXg6IFdlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA2ODYxNCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMDktMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSByZW1h
aW5pbmcgY2FsbHMgdG8gZGVwcmVjYXRlZFBhcnNlVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5OQorCisgICAgICAgICogRE9NL1dlYkRPTU9w
ZXJhdGlvbnMubW06CisgICAgICAgICgtW0RPTURvY3VtZW50IFVSTFdpdGhBdHRyaWJ1dGVTdHJp
bmc6XSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAg
Q2FsbCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMgaW5zdGVhZCBvZiBkZXByZWNh
dGVkUGFyc2VVUkwuCisKIDIwMTAtMDktMjggIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRleDogV2Vi
S2l0L21hYy9ET00vV2ViRE9NT3BlcmF0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L0RPTS9XZWJET01PcGVyYXRpb25zLm1tCShyZXZpc2lvbiA2ODYxNCkKKysrIFdlYktpdC9tYWMv
RE9NL1dlYkRPTU9wZXJhdGlvbnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAK
ICNpbXBvcnQgIldlYkZyYW1lUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRy
YXMuaCIKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvQ1NTSGVscGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFbGVtZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
bWFya3VwLmg+CkBAIC0xMjksNyArMTI5LDcgQEAgLSAoV2ViRnJhbWUgKil3ZWJGcmFtZQogCiAt
IChOU1VSTCAqKVVSTFdpdGhBdHRyaWJ1dGVTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0g
ICAgcmV0dXJuIGNvcmUoc2VsZiktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChzdHJp
bmcpKTsKKyAgICByZXR1cm4gY29yZShzZWxmKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKHN0cmluZykpOwogfQogCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDY4NjE0KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTQsMTAgKzk0LDggQEAKICNpbXBvcnQgPFdlYkNvcmUv
SFRNTEZyYW1lRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1l
bnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEhlYWRFbGVtZW50Lmg+Ci0jaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCi0jaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQu
aD4KLSNlbmRpZgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvSFRNTFBhcnNlcklkaW9tcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVu
dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9I
aXRUZXN0UmVzdWx0Lmg+CkBAIC0xMjQsNiArMTIyLDEwIEBACiAjaW1wb3J0IDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgogCisjaWYgRU5BQkxFKFBMVUdJTl9Q
Uk9YWV9GT1JfVklERU8pCisjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KKyNl
bmRpZgorCiAjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQogI2ltcG9ydCAiV2ViSmF2YVBsdWdJbi5o
IgogI2VuZGlmCkBAIC0xNjY4LDcgKzE2NzAsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJh
bWVMb2FkZXJDbGllbnQ6CiAgICAgaWYgKGVycm9yQ29kZSAmJiBtX3dlYkZyYW1lKSB7CiAgICAg
ICAgIFdlYlJlc291cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlv
bnMgPSBXZWJWaWV3R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmll
dyk7CiAgICAgICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1
bmMpIHsKLSAgICAgICAgICAgIEtVUkwgcGx1Z2luUGFnZVVSTCA9IGRvY3VtZW50LT5jb21wbGV0
ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwocGFyYW1ldGVyVmFsdWUocGFyYW1OYW1lcywgcGFyYW1W
YWx1ZXMsICJwbHVnaW5zcGFnZSIpKSk7CisgICAgICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwg
PSBkb2N1bWVudC0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHBhcmFtZXRlclZhbHVlKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1Z2luc3BhZ2UiKSkp
OwogICAgICAgICAgICAgaWYgKCFwbHVnaW5QYWdlVVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkp
CiAgICAgICAgICAgICAgICAgcGx1Z2luUGFnZVVSTCA9IEtVUkwoKTsKICAgICAgICAgICAgIE5T
U3RyaW5nICpwbHVnaW5OYW1lID0gcGx1Z2luUGFja2FnZSA/IChOU1N0cmluZyAqKVtwbHVnaW5Q
YWNrYWdlIHBsdWdpbkluZm9dLm5hbWUgOiBuaWw7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjg2MTQpCisr
KyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDEwLTA5LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgcmVtYWluaW5nIGNhbGxz
IHRvIGRlcHJlY2F0ZWRQYXJzZVVSTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjY1OTkKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxUb1N0YXJ0UGx1Z2luKToKKyAgICAgICAgQ2FsbCBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMgaW5zdGVhZCBvZiBkZXByZWNhdGVkUGFyc2VVUkwuCisKIDIwMTAtMDkt
MjggIEplbm4gQnJhaXRod2FpdGUgIDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDY4NjE0KQorKysgV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSFRNTE5hbWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGFyc2VySWRp
b21zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTc2
OCw3ICs3NjksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAg
ICAgQVNTRVJUKGZyYW1lID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkpOwogCiAgICAgaWYg
KCFwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIEtVUkwgcGx1
Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFy
c2VVUkwocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOworICAgICAgICBLVVJMIHBsdWdpblBh
Z2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKICAgICAgICAgaWYg
KHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0
cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luUGFnZVVSTC5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4NjE0KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDkt
MjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSByZW1haW5pbmcgY2FsbHMgdG8gZGVw
cmVjYXRlZFBhcnNlVVJMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjU5OQorCisgICAgICAgICogZmFzdC91cmwvcXVlcnktZXhwZWN0ZWQudHh0OiBV
cGRhdGVkIHRvIGV4cGVjdCBzdWNjZXNzLgorCisgICAgICAgICogZmFzdC91cmwvc2NyaXB0LXRl
c3RzL3NlZ21lbnRzLWZyb20tZGF0YS11cmwuanM6IFVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBleHBl
Y3RhdGlvbgorICAgICAgICB0aGF0IHdlIHdpbGwgc3RyaXAgbmV3bGluZSBjaGFyYWN0ZXJzIGZy
b20gdGhlIG1pZGRsZSBvZiBVUkxzLiBJIHN1c3BlY3QgdGhpcyBtYXkgaGF2ZQorICAgICAgICBi
ZWVuIGhlcmUgYmVjYXVzZSBpdCdzIGEgdXNlZnVsIGJlaGF2aW9yIGluIGJyb3dzZXIgYWRkcmVz
cyBmaWVsZHMsIGJ1dCBIVE1MNSBkb2VzIG5vdAorICAgICAgICBwcm9wb3NlIHRoaXMgYmVoYXZp
b3IuCisgICAgICAgICogZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NlZ21lbnRzLmpzOiBEaXR0by4K
KworICAgICAgICAqIGZhc3QvdXJsL3NlZ21lbnRzLWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAg
ICAgICAgKiBmYXN0L3VybC9zZWdtZW50cy1mcm9tLWRhdGEtdXJsLWV4cGVjdGVkLnR4dDogVXBk
YXRlZC4KKwogMjAxMC0wOS0yOCAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbnMuCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3VybC9xdWVyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC91cmwvcXVlcnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODYx
NCkKKysrIExheW91dFRlc3RzL2Zhc3QvdXJsL3F1ZXJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSw3ICs1LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQQogCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/Zm9vPWJh
cicpIGlzICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLz9mb289YmFyJwogUEFTUyBjYW5vbmljYWxp
emUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vP2FzP2RmJykgaXMgJ2h0dHA6Ly93d3cuZXhhbXBs
ZS5jb20vP2FzP2RmJwotRkFJTCBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20v
P1x4MDJoZWxsb38gYnllJykgc2hvdWxkIGJlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vPyUwMmhl
bGxvJTdGJTIwYnllLiBXYXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/aGVsbG8lN0YlMjBieWUu
CitQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/XHgwMmhlbGxvfyBi
eWUnKSBpcyAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/JTAyaGVsbG8lN0YlMjBieWUnCiBQQVNT
IGNhbm9uaWNhbGl6ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/JTQwJTQxMTIzJykgaXMgJ2h0
dHA6Ly93d3cuZXhhbXBsZS5jb20vPyU0MCU0MTEyMycKIFBBU1MgY2Fub25pY2FsaXplKCdodHRw
Oi8vd3d3LmV4YW1wbGUuY29tLz9xPeS9oOWlvScpIGlzICdodHRwOi8vd3d3LmV4YW1wbGUuY29t
Lz9xPSUyNiUyMzIwMzIwJTNCJTI2JTIzMjI5MDklM0InCiBQQVNTIGNhbm9uaWNhbGl6ZSgnaHR0
cDovL3d3dy5leGFtcGxlLmNvbS8/cT1cdWQ4MDBcdWQ4MDAnKSBpcyAnaHR0cDovL3d3dy5leGFt
cGxlLmNvbS8/cT0lMjYlMjM1NTI5NiUzQiUyNiUyMzU1Mjk2JTNCJwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC91cmwvc2VnbWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvdXJsL3NlZ21lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjg2MTQpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L3VybC9zZWdtZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTE1LDcgKzE1LDcgQEAgUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6MDAwMDAwMDAwMDAwMDAv
YwogRkFJTCBzZWdtZW50cygnaHR0cDovL2Y6MDAwMDAwMDAwMDAwMDAwMDAwMDAwODAvYycpIHNo
b3VsZCBiZSBbImh0dHA6IiwiZiIsIjAiLCIvYyIsIiIsIiJdLiBXYXMgWyJodHRwOiIsImYiLCI4
MCIsIi9jIiwiIiwiIl0uCiBQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjpiL2MnKSBpcyAnWyI6Iiwi
IiwiMCIsIiIsIiIsIiJdJwogUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6IC9jJykgaXMgJ1siOiIs
IiIsIjAiLCIiLCIiLCIiXScKLVBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOlxuL2MnKSBpcyAnWyJo
dHRwOiIsImYiLCIwIiwiL2MiLCIiLCIiXScKK1BBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOlxuL2Mn
KSBpcyAnWyI6IiwiIiwiMCIsIiIsIiIsIiJdJwogUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6Zmlm
dHktdHdvL2MnKSBpcyAnWyI6IiwiIiwiMCIsIiIsIiIsIiJdJwogRkFJTCBzZWdtZW50cygnaHR0
cDovL2Y6OTk5OTk5L2MnKSBzaG91bGQgYmUgWyI6IiwiIiwiMCIsIiIsIiIsIiJdLiBXYXMgWyJo
dHRwOiIsImYiLCI2NTUzNSIsIi9jIiwiIiwiIl0uCiBQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjog
MjEgLyBiID8gZCAjIGUgJykgaXMgJ1siOiIsIiIsIjAiLCIiLCIiLCIiXScKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvdXJsL3NlZ21lbnRzLWZyb20tZGF0YS11cmwtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdXJsL3NlZ21lbnRzLWZyb20tZGF0YS11cmwtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA2ODYxNCkKKysrIExheW91dFRlc3RzL2Zhc3QvdXJsL3NlZ21l
bnRzLWZyb20tZGF0YS11cmwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsx
NSw3IEBAIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOjAwMDAwMDAwMDAwMDAwL2MKIEZBSUwgc2Vn
bWVudHMoJ2h0dHA6Ly9mOjAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwL2MnKSBzaG91bGQgYmUgWyJo
dHRwOiIsImYiLCIwIiwiL2MiLCIiLCIiXS4gV2FzIFsiaHR0cDoiLCJmIiwiODAiLCIvYyIsIiIs
IiJdLgogUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6Yi9jJykgaXMgJ1siOiIsIiIsIjAiLCIiLCIi
LCIiXScKIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOiAvYycpIGlzICdbIjoiLCIiLCIwIiwiIiwi
IiwiIl0nCi1QQVNTIHNlZ21lbnRzKCdodHRwOi8vZjpcbi9jJykgaXMgJ1siaHR0cDoiLCJmIiwi
MCIsIi9jIiwiIiwiIl0nCitQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjpcbi9jJykgaXMgJ1siOiIs
IiIsIjAiLCIiLCIiLCIiXScKIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOmZpZnR5LXR3by9jJykg
aXMgJ1siOiIsIiIsIjAiLCIiLCIiLCIiXScKIEZBSUwgc2VnbWVudHMoJ2h0dHA6Ly9mOjk5OTk5
OS9jJykgc2hvdWxkIGJlIFsiOiIsIiIsIjAiLCIiLCIiLCIiXS4gV2FzIFsiaHR0cDoiLCJmIiwi
NjU1MzUiLCIvYyIsIiIsIiJdLgogUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6IDIxIC8gYiA/IGQg
IyBlICcpIGlzICdbIjoiLCIiLCIwIiwiIiwiIiwiIl0nCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3VybC9zY3JpcHQtdGVzdHMvc2VnbWVudHMtZnJvbS1kYXRhLXVybC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3VybC9zY3JpcHQtdGVzdHMvc2VnbWVudHMtZnJvbS1kYXRhLXVy
bC5qcwkocmV2aXNpb24gNjg2MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3VybC9zY3JpcHQtdGVz
dHMvc2VnbWVudHMtZnJvbS1kYXRhLXVybC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQs
NyBAQCBjYXNlcyA9IFsgCiAgIFsiaHR0cDovL2Y6MDAwMDAwMDAwMDAwMDAwMDAwMDAwODAvYyIs
ICAgICBbImh0dHA6IiwiZiIsIjAiLCIvYyIsIiIsIiJdXSwKICAgWyJodHRwOi8vZjpiL2MiLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAiLCIiLCIiLCIiXV0sCiAgIFsiaHR0
cDovL2Y6IC9jIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwiIiwi
Il1dLAotICBbImh0dHA6Ly9mOlxcbi9jIiwgICAgICAgICAgICAgICAgICAgICAgICAgWyJodHRw
OiIsImYiLCIwIiwiL2MiLCIiLCIiXV0sCisgIFsiaHR0cDovL2Y6XFxuL2MiLCAgICAgICAgICAg
ICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwiIiwiIl1dLAogICBbImh0dHA6Ly9mOmZpZnR5
LXR3by9jIiwgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIsIiIsIiIsIiJdXSwKICAgWyJo
dHRwOi8vZjo5OTk5OTkvYyIsICAgICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAiLCIiLCIi
LCIiXV0sCiAgIFsiaHR0cDovL2Y6IDIxIC8gYiA/IGQgIyBlICIsICAgICAgICAgICAgICBbIjoi
LCIiLCIwIiwiIiwiIiwiIl1dLApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC91cmwvc2NyaXB0LXRl
c3RzL3NlZ21lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdXJsL3Njcmlw
dC10ZXN0cy9zZWdtZW50cy5qcwkocmV2aXNpb24gNjg2MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3VybC9zY3JpcHQtdGVzdHMvc2VnbWVudHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0LDcgKzE0
LDcgQEAgY2FzZXMgPSBbIAogICBbImh0dHA6Ly9mOjAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwL2Mi
LCAgICAgWyJodHRwOiIsImYiLCIwIiwiL2MiLCIiLCIiXV0sCiAgIFsiaHR0cDovL2Y6Yi9jIiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwiIiwiIl1dLAogICBbImh0
dHA6Ly9mOiAvYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIsIiIsIiIs
IiJdXSwKLSAgWyJodHRwOi8vZjpcXG4vYyIsICAgICAgICAgICAgICAgICAgICAgICAgIFsiaHR0
cDoiLCJmIiwiMCIsIi9jIiwiIiwiIl1dLAorICBbImh0dHA6Ly9mOlxcbi9jIiwgICAgICAgICAg
ICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIsIiIsIiIsIiJdXSwKICAgWyJodHRwOi8vZjpmaWZ0
eS10d28vYyIsICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAiLCIiLCIiLCIiXV0sCiAgIFsi
aHR0cDovL2Y6OTk5OTk5L2MiLCAgICAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwi
IiwiIl1dLAogICBbImh0dHA6Ly9mOiAyMSAvIGIgPyBkICMgZSAiLCAgICAgICAgICAgICAgWyI6
IiwiIiwiMCIsIiIsIiIsIiJdXSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69361</attachid>
            <date>2010-09-30 12:13:34 -0700</date>
            <delta_ts>2010-09-30 16:57:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-26599-20100930121333.patch</filename>
            <type>text/plain</type>
            <size>105667</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2ODgxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTIxIEBACisyMDEwLTA5LTMwICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgcmVtYWluaW5nIGNhbGxzIHRvIGRlcHJlY2F0ZWRQYXJzZVVSTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OTkKKworICAgICAgICBUZXN0OiBm
YXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS1zcGFjZXMuaHRtbAorCisgICAgICAgICogY3NzL0NT
U0hlbHBlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogY3NzL0NTU0hlbHBlci5oOiBSZW1vdmVk
IGRlcHJlY2F0ZWRQYXJzZVVSTC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJ
ZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKToKKyAgICAgICAgRml4ZWQgYnVnIHdoZXJlIHRoZSBmdW5jdGlvbiB3b3VsZCB0dXJu
IHRoZSBudWxsIHN0cmluZyBpbnRvIHRoZSBlbXB0eSBzdHJpbmcuCisgICAgICAgIEZpeGVkIGJ1
ZyB3aGVyZSB0aGUgZnVuY3Rpb24gd291bGQgbm90IHN0cmlwIGFsbCB0cmFpbGluZyBzcGFjZXMu
CisKKyAgICAgICAgKiBodG1sL3BhcnNlci9DU1NQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6Q1NTUHJlbG9hZFNjYW5uZXIpOiBJbml0aWFs
aXplIG1fc3RhdGUKKyAgICAgICAgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSByZXNldCBmdW5jdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByZWxvYWRTY2FubmVyOjpzY2FuKTogVHdlYWtlZCBj
b2Rpbmcgc3R5bGUuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5p
emUpOiBVc2UgaXNIVE1MU3BhY2UgaW5zdGVhZCBvZgorICAgICAgICBhbiBpZGVudGljYWwgbG9j
YWwgZnVuY3Rpb24gbmFtZWQgaXNXaGl0ZXNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VD
U1NTdHJpbmdPclVSTCk6IEFkZGVkLiBUaGlzIGZ1bmN0aW9uIGRvZXMgd2hhdAorICAgICAgICBk
ZXByZWNhdGVkUGFyc2VVUkwgZGlkIGJlZm9yZSwgYW5kIHRoaXMgaXMgdGhlIG9ubHkgcGxhY2Ug
aW4gV2ViS2l0CisgICAgICAgIHRoYXQgbmVlZHMgaXQuIFRoZSBjb2RlIGltcGxlbWVudHMgdGhl
IHJ1bGVzIGZvciBhIHN0cmluZyBvciBVUkwKKyAgICAgICAgdG9rZW4uIFRoZSByZWFsIENTUyBw
YXJzZXIgZG9lcyB0aGlzIHdpdGggZmxleCBhbmQgdGhlIGNvZGUgdG8gaG9vaworICAgICAgICBm
bGV4IHVwIHRvIHlhY2MsIHNvIHRoZSBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIHRoZXJlLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRSdWxlKTogU3RyZWFtbGluZWQg
dGhlIGNvZGUgYSBiaXQKKyAgICAgICAgYW5kIG1hZSBpdCBjYWxsIHBhcnNlQ1NTU3RyaW5nT3JV
UkwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oOgorICAg
ICAgICAoV2ViQ29yZTo6OjphbGxvd1NldHRpbmdGcmFtZVNyY1RvSmF2YXNjcmlwdFVybCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmFsbG93U2V0dGluZ1NyY1RvSmF2YXNjcmlwdFVSTCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFsbG93U2V0
dGluZ0phdmFzY3JpcHRVUkwpOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NLm1tOgorICAg
ICAgICAoLVtET01FbGVtZW50IF9nZXRVUkxBdHRyaWJ1dGU6XSk6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01IVE1MLm1tOgorICAgICAgICAoLVtET01IVE1MRG9jdW1lbnQgX2NyZWF0ZURv
Y3VtZW50RnJhZ21lbnRXaXRoTWFya3VwU3RyaW5nOmJhc2VVUkxTdHJpbmc6XSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwcm9jZXNz
QmFzZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQXR0cmlidXRlVG9SZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0
VVJMQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldE5vbkVtcHR5VVJM
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aHJlZik6CisgICAgICAgICog
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRW1iZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VMb2Fk
ZXI6OnNvdXJjZVVSSSk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxP
YmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVu
dDo6cGFyYW1ldGVyc0ZvclBsdWdpbik6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVBhcnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxOYW1lczo6UHJlbG9hZFRhc2s6OnNldFVybFRvTG9hZCk6CisgICAgICAg
ICogbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJt
aXNzaW9uOjpBdHRyaWJ1dGVzOjpwYXJzZUFjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
Q2hyb21pdW06OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkV2luOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAg
ICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OmFic29sdXRlSW1hZ2VVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6YWJzb2x1dGVNZWRpYVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
OjphYnNvbHV0ZUxpbmtVUkwpOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlTG9h
ZGVyOjpzb3VyY2VVUkkpOgorICAgICAgICAqIHdtbC9XTUxBRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXTUxBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICog
d21sL1dNTEltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTEltYWdlTG9hZGVy
Ojpzb3VyY2VVUkkpOgorICAgICAgICBDYWxsIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWRQYXJzZVVSTC4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOiBVcGRhdGVkLgorCisgICAgICAgICogQW5kcm9pZC5tazogUmVtb3ZlZCBDU1NIZWxw
ZXIuY3BwLgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBEaXR0by4KKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAg
ICAgKiBXZWJDb3JlLnBybzogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICBSZW1v
dmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgQ1NTSGVscGVyLmguCisKIDIwMTAtMDktMjkgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBjb2xvciBtZWRpYSBxdWVy
aWVzIG9uIFdpbmRvd3MKSW5kZXg6IFdlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0FuZHJvaWQubWsJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9BbmRyb2lkLm1r
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBAIExPQ0FMX1NSQ19GSUxFUyA6PSBcCiAJ
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgXAogCWNzcy9DU1NGdW5jdGlvblZhbHVlLmNwcCBcCiAJ
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIFwKLQljc3MvQ1NTSGVscGVyLmNwcCBcCiAJY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIFwKIAljc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgXAogCWNz
cy9DU1NJbXBvcnRSdWxlLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDY4ODExKQorKysgV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzI1LDcgKzcyNSw2IEBAIFNF
VChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAogICAgIGNzcy9D
U1NGdW5jdGlvblZhbHVlLmNwcAogICAgIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAotICAgIGNz
cy9DU1NIZWxwZXIuY3BwCiAgICAgY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCiAgICAg
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwCiAgICAgY3NzL0NTU0ltcG9ydFJ1bGUuY3BwCkluZGV4OiBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0JKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtOTEyLDcgKzkxMiw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oIFwKIAlXZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cCBcCiAJV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIFwKLQlXZWJDb3JlL2Nzcy9DU1NI
ZWxwZXIuY3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NIZWxwZXIuaCBcCiAJV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgXAogCVdlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIF9fWk4zSlNDOEJpbmRp
bmdzOEluc3RhbmNlMTZuZXdSdW50aW1lT2IKIF9fWk4zV1RGMTBTdHJpbmdJbXBsY3ZQOE5TU3Ry
aW5nRXYKIF9fWk4zV1RGNlN0cmluZ0MxRVA4TlNTdHJpbmcKIF9fWk4zV1RGNlN0cmluZ0MxRVBL
MTBfX0NGU3RyaW5nCitfX1pON1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19aTjdXZWJD
b3JlMTBNb3VzZUV2ZW50QzFFUktOM1dURjEyQXRvbWljU3RyaW5nRWJiTlMxXzEwUGFzc1JlZlB0
cklOU185RE9NV2luZG93RUVFaWlpaWliYmJidE5TNV9JTlNfMTFFdmVudFRhcmdldEVFRU5TNV9J
TlNfOUNsaXBib2FyZEVFRWIKIF9fWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIwc2V0Q2FuSGF2ZVNj
cm9sbGJhcnNFYgogX19aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjR3aW5kb3dSZXNpemVyUmVjdENo
YW5nZWRFdgpAQCAtMjgwLDYgKzI4MSw3IEBAIF9fWk43V2ViQ29yZTEyaWNvbkRhdGFiYXNlRXYK
IF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNoZTExZ2V0T3JDcmVhdGVFUE5TXzEyUmVuZGVyT2Jq
ZWN0RQogX19aTjdXZWJDb3JlMTNBWE9iamVjdENhY2hlMjFnQWNjZXNzaWJpbGl0eUVuYWJsZWRF
CiBfX1pON1dlYkNvcmUxM0FYT2JqZWN0Q2FjaGU0MmdBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2Vy
SW50ZXJmYWNlRW5hYmxlZEUKK19fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDEzcmVjdEZyb21Q
b2ludEVSS05TXzhJbnRQb2ludEVqampqCiBfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVS
S1MwXwogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0RDFFdgogX19aTjdXZWJDb3JlMTNJZGVu
dGlmaWVyUmVwM2dldEVQS2MKQEAgLTQxMCw3ICs0MTIsNiBAQCBfX1pON1dlYkNvcmUxN0hpc3Rv
cnlDb250cm9sbGVyMjZzYXZlRG9jCiBfX1pON1dlYkNvcmUxN25hbWVGb3JDdXJzb3JUeXBlRU5T
XzZDdXJzb3I0VHlwZUUKIF9fWk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUEtjUmkKIF9f
Wk43V2ViQ29yZTE4U2VhcmNoUG9wdXBNZW51TWFjQzFFUE5TXzE1UG9wdXBNZW51Q2xpZW50RQot
X19aTjdXZWJDb3JlMThkZXByZWNhdGVkUGFyc2VVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxOGlzU3RhcnRPZlBhcmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRQogX19aTjdX
ZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTNKU0hUTUxF
bGVtZW50RQogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMTZyZXN1bWVBbmltYXRp
b25zRVBOU184RG9jdW1lbnRFCkBAIC01MjYsNiArNTI3LDcgQEAgX19aTjdXZWJDb3JlMzJjb250
ZXh0TWVudUl0ZW1UYWdTbWFydENvcAogX19aTjdXZWJDb3JlMzJwbGFpblRleHRUb01hbGxvY0Fs
bG9jYXRlZEJ1ZmZlckVQS05TXzVSYW5nZUVSamJOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQog
X19aTjdXZWJDb3JlMzNjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnRFdgogX19aTjdX
ZWJDb3JlMzNzZXREZWZhdWx0VGhyZWFkVmlvbGF0aW9uQmVoYXZpb3JFTlNfMjNUaHJlYWRWaW9s
YXRpb25CZWhhdmlvckVOU18yMFRocmVhZFZpb2xhdGlvblJvdW5kRQorX19aTjdXZWJDb3JlMzNz
dHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUzNGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb25FdgogX19aTjdXZWJDb3Jl
MzVjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbEViCiBfX1pON1dlYkNvcmUzNWNv
bnRleHRNZW51SXRlbVRhZ1Nob3dTdWJzdGl0dXRpb25zRWIKQEAgLTY4OSw4ICs2OTEsNiBAQCBf
X1pON1dlYkNvcmU4RG9jdW1lbnQyNnBhZ2VTaXplQW5kTWFyZ2luCiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlz
dGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0c0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQ0aGVhZEV2Ci1fX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKLV9fWk43V2ViQ29yZTEwSlNEb2N1bWVu
dDZzX2luZm9FCiBfX1pON1dlYkNvcmU4Rm9ybURhdGE2Y3JlYXRlRVBLdm0KIF9fWk43V2ViQ29y
ZThGb3JtRGF0YUQxRXYKIF9fWk43V2ViQ29yZThJbnRQb2ludEMxRVJLOF9OU1BvaW50CkBAIC05
MjMsNyArOTIzLDYgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNwbAog
X19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0OWltYWdlUmVjdEV2Ci1fX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxM3JlY3RG
cm9tUG9pbnRFUktOU184SW50UG9pbnRFampqagogX19aTks3V2ViQ29yZTEzUmVzb3VyY2VFcnJv
cmN2UDdOU0Vycm9yRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0VVJM
RXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CkBAIC0xMDU3
LDYgKzEwNTYsNyBAQCBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dl
YkNvcmU3SW50U2l6ZWN2N19OU1NpemVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxl
dGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENh
Y2hlRXYKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYgogX19a
Tks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5n
RQogX19aTks3V2ViQ29yZThEb2N1bWVudDE2ZGFzaGJvYXJkUmVnaW9uc0V2CiBfX1pOSzdXZWJD
b3JlOERvY3VtZW50MjBjYWNoZURvY3VtZW50RWxlbWVudEV2CkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNjg4
MTEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtOTgxLDcgKzk4
MSw2IEBACiAgICAgICAgICAgICAnY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oJywKLSAgICAgICAgICAgICdjc3MvQ1NTSGVscGVyLmNwcCcsCiAgICAgICAgICAg
ICAnY3NzL0NTU0hlbHBlci5oJywKICAgICAgICAgICAgICdjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgnLApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
cHJvCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29w
eSkKQEAgLTYxNSw3ICs2MTUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTRm9udEZhY2VT
b3VyY2UuY3BwIFwKICAgICBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcCBcCi0gICAgY3NzL0NTU0hlbHBlci5jcHAgXAogICAgIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIFwKICAg
ICBjc3MvQ1NTSW1wb3J0UnVsZS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5NjE3LDEwICsyOTYxNyw2IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NI
ZWxwZXIuY3BwIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cY3NzXENTU0hlbHBlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2ODgxMSkK
KysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzM3LDcgKzI3MzcsNyBAQAogCQk5M0UyNDFGRjBCMkI0RTQwMDBDNzMyQTEgLyog
SFRNTEZyYW1lT3duZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0UyNDFGRTBCMkI0RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJF
bGVtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNFMjQyNUYwQjJCNTA5NTAwQzczMkExIC8qIEhUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0UyNDI1RTBC
MkI1MDk1MDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJOTNF
MkEzMDYxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFMkEzMDQxMjNFOURDMDAwOUZF
MTJBIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwICovOyB9OwotCQk5M0UyQTMwNzEyM0U5REMwMDA5
RkUxMkEgLyogSFRNTFBhcnNlcklkaW9tcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNFMkEzMDUxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJ
ZGlvbXMuaCAqLzsgfTsKKwkJOTNFMkEzMDcxMjNFOURDMDAwOUZFMTJBIC8qIEhUTUxQYXJzZXJJ
ZGlvbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RTJBMzA1MTIzRTlEQzAwMDlGRTEyQSAvKiBIVE1MUGFyc2VySWRpb21zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNjJEOUIwOTg1RjQxNjAw
RTFCNUUzIC8qIFN5c3RlbVRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRTYyRDk5MDk4NUY0MTYwMEUxQjVFMyAvKiBTeXN0ZW1UaW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFQjE2OTUw
OUY4ODBCMDAwOTFGOEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0VCMTY5NDA5Rjg4MEIwMDA5MUY4
RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFjZS5tbSAqLzsgfTsKIAkJOTNFQjE2OTcwOUY4ODBD
MDAwOTFGOEZGIC8qIFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRUIxNjk2MDlGODgwQzAwMDkxRjhGRiAvKiBX
ZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTQ4MjcsNyArNDgyNyw2IEBACiAJCUJDNzREQTQ4MTAxM0Y0Njgw
MDc5ODdBRCAvKiBKU1JHQkNvbG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzREQTQ2MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmNw
cCAqLzsgfTsKIAkJQkM3NERBNDkxMDEzRjQ2ODAwNzk4N0FEIC8qIEpTUkdCQ29sb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzREQTQ3MTAxM0Y0
NjgwMDc5ODdBRCAvKiBKU1JHQkNvbG9yLmggKi87IH07CiAJCUJDNzZBQzEzMEREN0FENUMwMDQx
NUYzNCAvKiBQYXJzZXJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNzZBQzExMEREN0FENUMwMDQxNUYzNCAvKiBQYXJzZXJVdGlsaXRp
ZXMuaCAqLzsgfTsKLQkJQkM3NzJCM0IwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzc3MkIzNTBD
NEVBOTFFMDA4MzI4NUYgLyogQ1NTSGVscGVyLmNwcCAqLzsgfTsKIAkJQkM3NzJCM0MwQzRFQTkx
RTAwODMyODVGIC8qIENTU0hlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzcyQjNE
MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzJCMzcwQzRFQTkxRTAwODMyODVGIC8qIENTU1Bh
cnNlci5jcHAgKi87IH07CiAJCUJDNzcyQjNFMEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNzcyQjM4
MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIuaCAqLzsgfTsKQEAgLTEwNzM5LDcgKzEwNzM4
LDYgQEAKIAkJQkM3NERBNDYxMDEzRjQ2ODAwNzk4N0FEIC8qIEpTUkdCQ29sb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNSR0JDb2xvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNzREQTQ3MTAxM0Y0NjgwMDc5ODdBRCAvKiBKU1JHQkNv
bG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUkdCQ29sb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3NkFDMTEwREQ3QUQ1QzAwNDE1RjM0IC8qIFBh
cnNlclV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJV
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM3NzJCMzUwQzRFQTkx
RTAwODMyODVGIC8qIENTU0hlbHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTSGVscGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM3
NzJCMzYwQzRFQTkxRTAwODMyODVGIC8qIENTU0hlbHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTSGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNzcyQjM3MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1BhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDNzcyQjM4MEM0RUE5MUUwMDgzMjg1RiAvKiBDU1NQYXJzZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1BhcnNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTczMjgsNyArMTczMjYsNiBAQAogCQkJCUJDMjNFNEUwMERBQUNF
MEYwMDlGREM5MSAvKiBDU1NHcmFkaWVudFZhbHVlLmNwcCAqLywKIAkJCQlCQzUzQzY5MTBEQTU5
MTE0MDAyMUVCNUQgLyogQ1NTR3JhZGllbnRWYWx1ZS5oICovLAogCQkJCUJDRUE0NzdFMDk3Q0FB
QzgwMDk0QzlFNCAvKiBDU1NHcmFtbWFyLnkgKi8sCi0JCQkJQkM3NzJCMzUwQzRFQTkxRTAwODMy
ODVGIC8qIENTU0hlbHBlci5jcHAgKi8sCiAJCQkJQkM3NzJCMzYwQzRFQTkxRTAwODMyODVGIC8q
IENTU0hlbHBlci5oICovLAogCQkJCUJDMjNFNzZCMERBRTg4QTkwMDlGREM5MSAvKiBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlLmNwcCAqLywKIAkJCQlCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovLApAQCAtMjEzODUsNyArMjEzODIsNiBAQAogCQkJ
CUJDMDJBNjQ2MEUwOUFBRTkwMDRCNkQyQiAvKiBDU1NGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMjNFNEUxMERBQUNFMEYwMDlGREM5MSAvKiBDU1NHcmFkaWVudFZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NH
cmFtbWFyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDNzcyQjNCMEM0RUE5MUUwMDgzMjg1RiAv
KiBDU1NIZWxwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyM0U3NkMwREFFODhBOTAwOUZE
QzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgw
RTZDRkUwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltYWdlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgwRTZDRUIwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU0ltcG9ydFJ1bGUuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0
eS5oCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9CaW5kaW5n
U2VjdXJpdHkuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTIgKzMyLDEyIEBACiAjZGVmaW5lIEJp
bmRpbmdTZWN1cml0eV9oCiAKICNpbmNsdWRlICJCaW5kaW5nU2VjdXJpdHlCYXNlLmgiCi0jaW5j
bHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiR2VuZXJpY0JpbmRpbmcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVt
ZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMjgsNyArMTI4LDcgQEAgYm9vbCBCaW5kaW5nU2VjdXJpdHk8QmluZGluZz46OmFsbG93UG9w
VQogdGVtcGxhdGUgPGNsYXNzIEJpbmRpbmc+CiBib29sIEJpbmRpbmdTZWN1cml0eTxCaW5kaW5n
Pjo6YWxsb3dTZXR0aW5nRnJhbWVTcmNUb0phdmFzY3JpcHRVcmwoU3RhdGU8QmluZGluZz4qIHN0
YXRlLCBIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWUsIFN0cmluZyB2YWx1ZSkKIHsKLSAgICBp
ZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVlKSkpIHsKKyAg
ICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKHZhbHVlKSkpIHsKICAgICAgICAgTm9kZSogY29udGVudERvYyA9IGZyYW1lLT5jb250ZW50
RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnREb2MgJiYgIWNoZWNrTm9kZVNlY3VyaXR5
KHN0YXRlLCBjb250ZW50RG9jKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNBdHRyLmgiCiAKLSNpbmNs
dWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAi
ZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVj
dC5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkRPTUNvcmVFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJET01PYmplY3RIYXNoVGFibGVNYXAuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgpAQCAtNjQ4LDcgKzY0Nyw3IEBAIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uKEV4ZWNT
dGF0ZSogZXgKIAogYm9vbCBhbGxvd1NldHRpbmdTcmNUb0phdmFzY3JpcHRVUkwoRXhlY1N0YXRl
KiBleGVjLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgaWYgKChlbGVtZW50LT5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwg
ZWxlbWVudC0+aGFzVGFnTmFtZShmcmFtZVRhZykpICYmIGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJzcmMiKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUp
KSkgeworICAgIGlmICgoZWxlbWVudC0+aGFzVGFnTmFtZShpZnJhbWVUYWcpIHx8IGVsZW1lbnQt
Pmhhc1RhZ05hbWUoZnJhbWVUYWcpKSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic3JjIikg
JiYgcHJvdG9jb2xJc0phdmFTY3JpcHQoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHZhbHVlKSkpIHsKICAgICAgICAgICBEb2N1bWVudCogY29udGVudERvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihlbGVtZW50KS0+Y29udGVudERvY3VtZW50KCk7
CiAgICAgICAgICAgaWYgKGNvbnRlbnREb2N1bWVudCAmJiAhY2hlY2tOb2RlU2VjdXJpdHkoZXhl
YywgY29udGVudERvY3VtZW50KSkKICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNjg4MTEpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0VsZW1l
bnQuaCIKIAotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNl
LmgiCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
RnJhbWVFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNIVE1MRnJhbWVFbGVtZW50LmgiCiAK
LSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAKIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CkBAIC00Myw3ICs0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBhbGxvd1NldHRpbmdKYXZhc2NyaXB0VVJMKEV4ZWNTdGF0
ZSogZXhlYywgSFRNTEZyYW1lRWxlbWVudCogaW1wLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChkZXByZWNhdGVkUGFyc2VVUkwodmFsdWUpKSkg
eworICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hU
TUxTcGFjZXModmFsdWUpKSkgewogICAgICAgICBEb2N1bWVudCogY29udGVudERvY3VtZW50ID0g
aW1wLT5jb250ZW50RG9jdW1lbnQoKTsKICAgICAgICAgaWYgKGNvbnRlbnREb2N1bWVudCAmJiAh
Y2hlY2tOb2RlU2VjdXJpdHkoZXhlYywgY29udGVudERvY3VtZW50KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5tbQkocmV2aXNpb24gNjg4MTEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiSFRNTEVsZW1lbnQuaCIKICNpbXBvcnQg
IkhUTUxOYW1lcy5oIgorI2ltcG9ydCAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2ltcG9ydCAiSW1h
Z2UuaCIKICNpbXBvcnQgIk5vZGVGaWx0ZXIuaCIKICNpbXBvcnQgIlJlbmRlckltYWdlLmgiCkBA
IC00NjksNyArNDcwLDcgQEAgLSAoTlNVUkwgKilfZ2V0VVJMQXR0cmlidXRlOihOU1N0cmluZyAq
KQogICAgIEFTU0VSVChuYW1lKTsKICAgICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0gY29y
ZShzZWxmKTsKICAgICBBU1NFUlQoZWxlbWVudCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChlbGVtZW50LT5nZXRBdHRyaWJ1
dGUobmFtZSkpKTsKKyAgICByZXR1cm4gZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQtPmdldEF0dHJpYnV0ZShu
YW1lKSkpOwogfQogCiAtIChCT09MKWlzRm9jdXNlZApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhU
TUwubW0JKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUhUTUwu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbXBvcnQgIkhUTUxDb2xsZWN0
aW9uLmgiCiAjaW1wb3J0ICJIVE1MRG9jdW1lbnQuaCIKICNpbXBvcnQgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKKyNpbXBvcnQgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbXBvcnQgIkhUTUxTZWxlY3RF
bGVtZW50LmgiCiAjaW1wb3J0ICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW1wb3J0ICJQYWdl
LmgiCkBAIC03MCw3ICs3MSw3IEBAIC0gKERPTURvY3VtZW50RnJhZ21lbnQgKiljcmVhdGVEb2N1
bWVudEYKIAogLSAoRE9NRG9jdW1lbnRGcmFnbWVudCAqKV9jcmVhdGVEb2N1bWVudEZyYWdtZW50
V2l0aE1hcmt1cFN0cmluZzooTlNTdHJpbmcgKiltYXJrdXBTdHJpbmcgYmFzZVVSTFN0cmluZzoo
TlNTdHJpbmcgKiliYXNlVVJMU3RyaW5nCiB7Ci0gICAgTlNVUkwgKmJhc2VVUkwgPSBjb3JlKHNl
bGYpLT5jb21wbGV0ZVVSTChXZWJDb3JlOjpkZXByZWNhdGVkUGFyc2VVUkwoYmFzZVVSTFN0cmlu
ZykpOworICAgIE5TVVJMICpiYXNlVVJMID0gY29yZShzZWxmKS0+Y29tcGxldGVVUkwoV2ViQ29y
ZTo6c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGJhc2VVUkxTdHJpbmcpKTsKICAg
ICByZXR1cm4gW3NlbGYgY3JlYXRlRG9jdW1lbnRGcmFnbWVudFdpdGhNYXJrdXBTdHJpbmc6bWFy
a3VwU3RyaW5nIGJhc2VVUkw6YmFzZVVSTF07CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhFbGVtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVjhFbGVtZW50LmgiCiAKICNpbmNsdWRl
ICJBdHRyLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHJl
dmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJWOExvY2F0aW9uLmgiCiAKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0hlbHBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTSGVscGVyLmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NIZWxwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwNCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgotCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotU3RyaW5nIGRlcHJlY2F0ZWRQYXJzZVVSTChjb25zdCBTdHJpbmcmIHVybCkK
LXsKLSAgICBTdHJpbmdJbXBsKiBpID0gdXJsLmltcGwoKTsKLSAgICBpZiAoIWkpCi0gICAgICAg
IHJldHVybiB1cmw7Ci0KLSAgICBpbnQgbGVuZ3RoID0gaS0+bGVuZ3RoKCk7Ci0KLSAgICBpbnQg
byA9IDA7Ci0gICAgaW50IGwgPSBsZW5ndGg7Ci0KLSAgICB3aGlsZSAoMCA8IGwgJiYgKCppKVtv
XSA8PSAnICcpIHsKLSAgICAgICAgKytvOwotICAgICAgICAtLWw7Ci0gICAgfQotICAgIHdoaWxl
IChsID4gMCAmJiAoKmkpW28gKyBsIC0gMV0gPD0gJyAnKQotICAgICAgICAtLWw7Ci0KLSAgICBp
ZiAobCA+PSA1Ci0gICAgICAgICAgICAmJiAoKCppKVtvXSA9PSAndScgfHwgKCppKVtvXSA9PSAn
VScpCi0gICAgICAgICAgICAmJiAoKCppKVtvICsgMV0gPT0gJ3InIHx8ICgqaSlbbyArIDFdID09
ICdSJykKLSAgICAgICAgICAgICYmICgoKmkpW28gKyAyXSA9PSAnbCcgfHwgKCppKVtvICsgMl0g
PT0gJ0wnKQotICAgICAgICAgICAgJiYgKCppKVtvICsgM10gPT0gJygnCi0gICAgICAgICAgICAm
JiAoKmkpW28gKyBsIC0gMV0gPT0gJyknKSB7Ci0gICAgICAgIG8gKz0gNDsKLSAgICAgICAgbCAt
PSA1OwotICAgIH0KLQotICAgIHdoaWxlICgwIDwgbCAmJiAoKmkpW29dIDw9ICcgJykgewotICAg
ICAgICArK287Ci0gICAgICAgIC0tbDsKLSAgICB9Ci0gICAgd2hpbGUgKGwgPiAwICYmICgqaSlb
byArIGwgLSAxXSA8PSAnICcpCi0gICAgICAgIC0tbDsKLQotICAgIGlmIChsID49IDIgJiYgKCpp
KVtvXSA9PSAoKmkpW28gKyBsIC0gMV0gJiYgKCgqaSlbb10gPT0gJ1wnJyB8fCAoKmkpW29dID09
ICdcIicpKSB7Ci0gICAgICAgIG8rKzsKLSAgICAgICAgbCAtPSAyOwotICAgIH0KLQotICAgIHdo
aWxlICgwIDwgbCAmJiAoKmkpW29dIDw9ICcgJykgewotICAgICAgICArK287Ci0gICAgICAgIC0t
bDsKLSAgICB9Ci0gICAgd2hpbGUgKGwgPiAwICYmICgqaSlbbyArIGwgLSAxXSA8PSAnICcpCi0g
ICAgICAgIC0tbDsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gaS0+Y2hhcmFjdGVy
cygpOwotCi0gICAgLy8gT3B0aW1pemUgZm9yIHRoZSBsaWtlbHkgY2FzZSB0aGVyZSB0aGVyZSBp
cyBub3RoaW5nIHRvIHN0cmlwLgotICAgIGlmIChsID09IGxlbmd0aCkgewotICAgICAgICBpbnQg
azsKLSAgICAgICAgLy8gSWYgdGhlIFVSTCBoYXMgYW55IGNvbnRyb2wgY2hhcmFjdGVycyBpbiBp
dCwgd2UgaGF2ZSB0byBzdHJpcCB0aGVtLgotICAgICAgICAvLyAnXHInIChhc2NpaSB2YWx1ZSAx
MykgaXMgdGhlIGxhcmdlc3QgY29udHJvbCBjaGFyYWN0ZXIuCi0gICAgICAgIGZvciAoayA9IDA7
IGsgPCBsZW5ndGg7IGsrKykgewotICAgICAgICAgICAgaWYgKGNoYXJhY3RlcnNba10gPD0gJ1xy
JykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoayA9PSBs
ZW5ndGgpCi0gICAgICAgICAgICByZXR1cm4gdXJsOwotICAgIH0KLQotICAgIFZlY3RvcjxVQ2hh
ciwgMjA0OD4gYnVmZmVyKGwpOwotCi0gICAgaW50IG5sID0gMDsKLSAgICBmb3IgKGludCBrID0g
bzsgayA8IG8gKyBsOyBrKyspIHsKLSAgICAgICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNba107Ci0g
ICAgICAgIGlmIChjID4gJ1xyJykKLSAgICAgICAgICAgIGJ1ZmZlcltubCsrXSA9IGM7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBubCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0hlbHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU0hlbHBlci5oCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUv
Y3NzL0NTU0hlbHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLS8vIFVzZWQgaW4gbWFueSBpbmFwcHJvcHJpYXRlIGNvbnRleHRz
IHRocm91Z2hvdXQgV2ViQ29yZS4gTW9zdCBjYWxsZXJzIHNob3VsZCBiZSB1c2luZwotLy8gc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzIGluc3RlYWQuCi1TdHJpbmcgZGVwcmVjYXRl
ZFBhcnNlVVJMKGNvbnN0IFN0cmluZyYpOwotCiAvLyBXZSBhbHdheXMgYXNzdW1lIDk2IENTUyBw
aXhlbHMgaW4gYSBDU1MgaW5jaC4gVGhpcyBpcyB0aGUgY29sZCBoYXJkIHRydXRoIG9mIHRoZSBX
ZWIuCiAvLyBBdCBoaWdoIERQSSwgd2UgbWF5IHNjYWxlIGEgQ1NTIHBpeGVsLCBidXQgdGhlIHJh
dGlvIG9mIHRoZSBDU1MgcGl4ZWwgdG8gdGhlIHNvLWNhbGxlZAogLy8gImFic29sdXRlIiBDU1Mg
bGVuZ3RoIHVuaXRzIGxpa2UgaW5jaCBhbmQgcHQgaXMgYWx3YXlzIGZpeGVkIGFuZCBuZXZlciBj
aGFuZ2VzLgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJDU1NDYW52YXNWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0NoYXJzZXRSdWxlLmgiCiAjaW5jbHVk
ZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1
ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKICNpbmNs
dWRlICJDU1NGb250RmFjZVNyY1ZhbHVlLmgiCkBAIC0zNzYwLDYgKzM3NTksOCBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VGb250RmFjZVVuaWNvZGVSYW5nCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
Ky8vIEZJWE1FOiBUaGlzIGlzIHRoZSBzYW1lIGFzIGlzSFRNTFNwYWNlLCBzbyBJIHRoaW5rIHdl
IHNob3VsZCBlbGltaW5hdGUgdGhpcyBmdW5jdGlvbgorLy8gYW5kIHVzZSB0aGF0IGluc3RlYWQu
IFBlZGFudHMgd2hvIHNheSBDU1MgaXMgbm90IEhUTUwgbmVlZCBub3QgYXBwbHkuCiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDU1NXaGl0ZXNwYWNlKFVDaGFyIGMpCiB7CiAgICAgcmV0dXJuIGMgPT0g
JyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdccicgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1xmJzsK
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQXR0ci5oIgog
I2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNEQVRBU2VjdGlvbi5oIgotI2luY2x1
ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtODEs
NiArODAsNyBAQAogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBh
cnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MVGl0bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTIyNDAsNyAr
MjI0MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NCYXNlRWxlbWVudCgpCiAgICAgLy8gRklY
TUU6IFNpbmNlIHRoaXMgZG9lc24ndCBzaGFyZSBjb2RlIHdpdGggY29tcGxldGVVUkwgaXQgbWF5
IG5vdCBoYW5kbGUgZW5jb2RpbmdzIGNvcnJlY3RseS4KICAgICBLVVJMIGJhc2VFbGVtZW50VVJM
OwogICAgIGlmIChocmVmKSB7Ci0gICAgICAgIFN0cmluZyBzdHJpcHBlZEhyZWYgPSBkZXByZWNh
dGVkUGFyc2VVUkwoKmhyZWYpOworICAgICAgICBTdHJpbmcgc3RyaXBwZWRIcmVmID0gc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKCpocmVmKTsKICAgICAgICAgaWYgKCFzdHJpcHBl
ZEhyZWYuaXNFbXB0eSgpICYmICghZnJhbWUoKSB8fCBmcmFtZSgpLT5zY3JpcHQoKS0+eHNzQXVk
aXRvcigpLT5jYW5TZXRCYXNlRWxlbWVudFVSTCgqaHJlZikpKQogICAgICAgICAgICAgYmFzZUVs
ZW1lbnRVUkwgPSBLVVJMKHVybCgpLCBzdHJpcHBlZEhyZWYpOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTY4MCw3
ICs2ODEsNyBAQCBzdGF0aWMgYm9vbCBpc0V2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zCiAKIHN0
YXRpYyBib29sIGlzQXR0cmlidXRlVG9SZW1vdmUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsgICAgCi0gICAgcmV0dXJuIChuYW1lLmxvY2Fs
TmFtZSgpLmVuZHNXaXRoKGhyZWZBdHRyLmxvY2FsTmFtZSgpKSB8fCBuYW1lID09IHNyY0F0dHIg
fHwgbmFtZSA9PSBhY3Rpb25BdHRyKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChkZXByZWNhdGVk
UGFyc2VVUkwodmFsdWUpKTsgICAgICAgCisgICAgcmV0dXJuIChuYW1lLmxvY2FsTmFtZSgpLmVu
ZHNXaXRoKGhyZWZBdHRyLmxvY2FsTmFtZSgpKSB8fCBuYW1lID09IHNyY0F0dHIgfHwgbmFtZSA9
PSBhY3Rpb25BdHRyKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXModmFsdWUpKTsgICAgICAgCiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0QXR0
cmlidXRlTWFwKFBhc3NSZWZQdHI8TmFtZWROb2RlTWFwPiBsaXN0LCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gc2NyaXB0aW5nUGVybWlzc2lvbikKQEAgLTE2MTIsNyArMTYxMyw3IEBAIEtV
UkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWwKICAgICAgICAgICAgIEFTU0VS
VChpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpKTsKICAgICB9CiAjZW5kaWYKLSAgICByZXR1cm4g
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJpYnV0ZShu
YW1lKSkpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdB
bmRUcmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKSk7CiB9CiAKIEtVUkwgRWxl
bWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3QKQEAgLTE2MjMsNyArMTYyNCw3IEBAIEtVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoY28KICAgICAgICAgICAgIEFTU0VSVChpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUp
KTsKICAgICB9CiAjZW5kaWYKLSAgICBTdHJpbmcgdmFsdWUgPSBkZXByZWNhdGVkUGFyc2VVUkwo
Z2V0QXR0cmlidXRlKG5hbWUpKTsKKyAgICBTdHJpbmcgdmFsdWUgPSBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMoZ2V0QXR0cmlidXRlKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gS1VSTCgpOwogICAgIHJldHVybiBkb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh2YWx1ZSk7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTQ1LDcg
KzE0Niw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmQKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChpc0xpbmtDbGljayhldmVudCkgJiYgdHJlYXRMaW5rQXNMaXZl
Rm9yRXZlbnRUeXBlKGV2ZW50VHlwZShldmVudCkpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdXJs
ID0gZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJpYnV0ZShocmVmQXR0cikpOworICAgICAgICAg
ICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhnZXRBdHRy
aWJ1dGUoaHJlZkF0dHIpKTsKICAgICAgICAgICAgIGFwcGVuZFNlcnZlck1hcE1vdXNlUG9zaXRp
b24odXJsLCBldmVudCk7CiAgICAgICAgICAgICBoYW5kbGVMaW5rQ2xpY2soZXZlbnQsIGRvY3Vt
ZW50KCksIHVybCwgZ2V0QXR0cmlidXRlKHRhcmdldEF0dHIpLCBoYXNSZWwoUmVsYXRpb25Ob1Jl
ZmVycmVyKSk7CiAgICAgICAgICAgICBzZW5kUGluZ3MoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwo
dXJsKSk7CkBAIC0yMTAsNyArMjExLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaQogICAgICAgICBpZiAod2FzTGluayAhPSBpc0xpbmsoKSkKICAgICAgICAgICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgaWYgKGlzTGluaygpKSB7Ci0gICAgICAg
ICAgICBTdHJpbmcgcGFyc2VkVVJMID0gZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkp
OworICAgICAgICAgICAgU3RyaW5nIHBhcnNlZFVSTCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5p
c0ROU1ByZWZldGNoRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByb3RvY29sSXMo
cGFyc2VkVVJMLCAiaHR0cCIpIHx8IHByb3RvY29sSXMocGFyc2VkVVJMLCAiaHR0cHMiKSB8fCBw
YXJzZWRVUkwuc3RhcnRzV2l0aCgiLy8iKSkKICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VI
YW5kbGU6OnByZXBhcmVGb3JVUkwoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocGFyc2VkVVJMKSk7
CkBAIC0yNjEsNyArMjYyLDcgQEAgYm9vbCBIVE1MQW5jaG9yRWxlbWVudDo6ZHJhZ2dhYmxlKCkg
Y29ucwogCiBLVVJMIEhUTUxBbmNob3JFbGVtZW50OjpocmVmKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJpYnV0
ZShocmVmQXR0cikpKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGdldEF0dHJpYnV0ZShocmVmQXR0cikpKTsKIH0K
IAogdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6c2V0SHJlZihjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHJldmlzaW9uIDY4ODExKQorKysg
V2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVt
ZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTk1LDcgKzk2LDcgQEAgYm9vbCBIVE1MQm9keUVsZW1lbnQ6Om1hcFRvRW50
cnkoY29uc3QgUQogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IGJhY2tncm91bmRBdHRy
KSB7Ci0gICAgICAgIFN0cmluZyB1cmwgPSBkZXByZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUo
KSk7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFj
ZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2Us
IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCkuc3RyaW5nKCkpOwogICAgIH0gZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG1hcmdpbndpZHRoQXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gbGVmdG1h
cmdpbkF0dHIpIHsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4
ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKQEAgLTMzLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJNYWluUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVk
ZGVkT2JqZWN0LmgiCkBAIC05Nyw5ICs5Nyw5IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICAgICAgaWYgKCFpc0ltYWdlVHlwZSgpICYmIG1faW1hZ2VMb2Fk
ZXIpCiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLmNsZWFyKCk7CiAgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gY29kZUF0dHIpCi0gICAgICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNl
VVJMKHZhbHVlLnN0cmluZygpKTsKKyAgICAgICAgbV91cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXModmFsdWUuc3RyaW5nKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJMKHZhbHVl
LnN0cmluZygpKTsKKyAgICAgICAgbV91cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXModmFsdWUuc3RyaW5nKCkpOwogICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiBpc0ltYWdl
VHlwZSgpKSB7CiAgICAgICAgICAgICBpZiAoIW1faW1hZ2VMb2FkZXIpCiAgICAgICAgICAgICAg
ICAgbV9pbWFnZUxvYWRlciA9IGFkb3B0UHRyKG5ldyBIVE1MSW1hZ2VMb2FkZXIodGhpcykpOwpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA2ODgxMSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogCiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250
cm9sbGVyLmgiCkBAIC0zNSw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCkBAIC0xMTIsNyArMTEy
LDcgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6b3BlblVSTChib29sIAogdm9pZCBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc3JjQXR0cikKLSAgICAgICAgc2V0TG9jYXRpb24o
ZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpKTsKKyAgICAgICAgc2V0TG9jYXRpb24o
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkpKTsKICAgICBl
bHNlIGlmIChpc0lkQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpKSB7CiAgICAgICAgIC8vIElt
cG9ydGFudCB0byBjYWxsIHRocm91Z2ggdG8gYmFzZSBmb3IgdGhlIGlkIGF0dHJpYnV0ZSBzbyB0
aGUgaGFzSUQgYml0IGdldHMgc2V0LgogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKQEAgLTMyLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCiAKQEAgLTEz
MSw3ICsxMzEsNyBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAg
ICAgICAgIGlmIChhdHRyLT52YWx1ZSgpLnN0cmluZygpWzBdID09ICcjJykKICAgICAgICAgICAg
IHVzZW1hcCA9IGF0dHItPnZhbHVlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHVzZW1h
cCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChhdHRyLT52YWx1
ZSgpKSkuc3RyaW5nKCk7CisgICAgICAgICAgICB1c2VtYXAgPSBkb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSkpLnN0
cmluZygpOwogICAgICAgICBzZXRJc0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHJOYW1lID09IGlzbWFwQXR0cikKICAgICAgICAgaXNtYXAgPSB0cnVlOwpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEzICsyMiwxMyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUxvYWRlci5oIgogCi0jaW5j
bHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpT
RE9NV2luZG93QmFzZS5oIgpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6
ZGlzcGF0Y2hMb2FkRXZlbnQoCiAKIFN0cmluZyBIVE1MSW1hZ2VMb2FkZXI6OnNvdXJjZVVSSShj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlcHJlY2F0ZWRQ
YXJzZVVSTChhdHRyKTsKKyAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3Bh
Y2VzKGF0dHIpOwogfQogCiB2b2lkIEhUTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UqKQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4
ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNhY2hl
ZENTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0Lmgi
CiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAg
LTExOCw3ICsxMTgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
CiAgICAgICAgIHRva2VuaXplUmVsQXR0cmlidXRlKGF0dHItPnZhbHVlKCksIG1fcmVsQXR0cmli
dXRlKTsKICAgICAgICAgcHJvY2VzcygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGhyZWZBdHRyKSB7Ci0gICAgICAgIG1fdXJsID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVw
cmVjYXRlZFBhcnNlVVJMKGF0dHItPnZhbHVlKCkpKTsKKyAgICAgICAgbV91cmwgPSBkb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+
dmFsdWUoKSkpOwogICAgICAgICBwcm9jZXNzKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gdHlwZUF0dHIpIHsKICAgICAgICAgbV90eXBlID0gYXR0ci0+dmFsdWUoKTsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBA
CiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0LmgiCiAj
aW5jbHVkZSAiQ29udGVudFR5cGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDY4ODExKQorKysgV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50Lmgi
CiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCkBAIC0zNCw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcmFtRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5
LmgiCiAjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJJ
bWFnZS5oIgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpCiAgICAgICAgIGlmICghaXNJbWFnZVR5cGUoKSAmJiBtX2ltYWdlTG9hZGVyKQog
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5jbGVhcigpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IGRhdGFBdHRyKSB7Ci0gICAgICAgIG1fdXJsID0gZGVwcmVjYXRlZFBhcnNlVVJM
KGF0dHItPnZhbHVlKCkpOworICAgICAgICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKICAg
ICAgICAgICAgIHNldE5lZWRzV2lkZ2V0VXBkYXRlKHRydWUpOwogICAgICAgICAgICAgaWYgKGlz
SW1hZ2VUeXBlKCkpIHsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVtZW50
OjpwYXJhbWV0ZXJzRm9yUGx1CiAKICAgICAgICAgLy8gRklYTUU6IHVybCBhZGp1c3RtZW50IGRv
ZXMgbm90IGJlbG9uZyBpbiB0aGlzIGZ1bmN0aW9uLgogICAgICAgICBpZiAodXJsLmlzRW1wdHko
KSAmJiB1cmxQYXJhbWV0ZXIuaXNFbXB0eSgpICYmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAi
c3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIm1vdmllIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgImNvZGUiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidXJsIikpKQot
ICAgICAgICAgICAgdXJsUGFyYW1ldGVyID0gZGVwcmVjYXRlZFBhcnNlVVJMKHAtPnZhbHVlKCkp
OworICAgICAgICAgICAgdXJsUGFyYW1ldGVyID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKHAtPnZhbHVlKCkpOwogICAgICAgICAvLyBGSVhNRTogc2VydmljZVR5cGUgY2FsY3Vs
YXRpb24gZG9lcyBub3QgYmVsb25nIGluIHRoaXMgZnVuY3Rpb24uCiAgICAgICAgIGlmIChzZXJ2
aWNlVHlwZS5pc0VtcHR5KCkgJiYgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInR5cGUiKSkgewog
ICAgICAgICAgICAgc2VydmljZVR5cGUgPSBwLT52YWx1ZSgpOwpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
VE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgpAQCAtMzM2LDcgKzMzNyw3
IEBAIHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgICAg
IG1fYm9yZGVyQ29sb3JBdHRyID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IGJhY2tncm91bmRBdHRyKSB7Ci0gICAgICAgIFN0cmluZyB1cmwgPSBkZXBy
ZWNhdGVkUGFyc2VVUkwoYXR0ci0+dmFsdWUoKSk7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGlm
ICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZENTU0ltYWdlUHJvcGVydHkoYXR0ciwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCku
c3RyaW5nKCkpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZyYW1lQXR0cikgewpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODgxMSkK
KysrIFdlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVBhcnRFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBIVE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VNYXBwZWRBdAogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gYmdjb2xvckF0dHIpCiAgICAgICAgIGFkZENTU0NvbG9yKGF0dHIsIENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCBhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gYmFja2dyb3VuZEF0dHIpIHsKLSAgICAgICAgU3RyaW5nIHVybCA9IGRlcHJl
Y2F0ZWRQYXJzZVVSTChhdHRyLT52YWx1ZSgpKTsKKyAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhhdHRyLT52YWx1ZSgpKTsKICAgICAgICAgaWYg
KCF1cmwuaXNFbXB0eSgpKQogICAgICAgICAgICAgYWRkQ1NTSW1hZ2VQcm9wZXJ0eShhdHRyLCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5z
dHJpbmcoKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYm9yZGVyY29sb3JBdHRy
KSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODgxMSkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIK
SW5kZXg6IFdlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lv
biA2ODgxMSkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvQ1NTUHJlbG9hZFNjYW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IFRvcmNoIE1vYmlsZSwgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKQEAgLTI4
LDIzICsyOCwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1ByZWxvYWRT
Y2FubmVyLmgiCiAKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDYWNoZWRDU1NT
dHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJI
VE1MVG9rZW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGJvb2wg
aXNXaGl0ZXNwYWNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xu
JyB8fCBjID09ICdccicgfHwgYyA9PSAnXHQnOwotfQotCiBDU1NQcmVsb2FkU2Nhbm5lcjo6Q1NT
UHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1
bWVudCkKKyAgICA6IG1fc3RhdGUoSW5pdGlhbCkKKyAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQp
CiB7Ci0gICAgcmVzZXQoKTsKIH0KIAogdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6cmVzZXQoKQpA
QCAtNTksMTAgKzU0LDggQEAgdm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBIVE1M
VAogICAgIG1fc2Nhbm5pbmdCb2R5ID0gc2Nhbm5pbmdCb2R5OwogCiAgICAgY29uc3QgSFRNTFRv
a2VuOjpEYXRhVmVjdG9yJiBjaGFyYWN0ZXJzID0gdG9rZW4uY2hhcmFjdGVycygpOwotICAgIGZv
ciAoSFRNTFRva2VuOjpEYXRhVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gY2hhcmFjdGVy
cy5iZWdpbigpOwotICAgICAgICAgaXRlciAhPSBjaGFyYWN0ZXJzLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICBmb3IgKEhUTUxUb2tlbjo6RGF0YVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGNo
YXJhY3RlcnMuYmVnaW4oKTsgaXRlciAhPSBjaGFyYWN0ZXJzLmVuZCgpOyArK2l0ZXIpCiAgICAg
ICAgIHRva2VuaXplKCppdGVyKTsKLSAgICB9CiB9CiAKIGlubGluZSB2b2lkIENTU1ByZWxvYWRT
Y2FubmVyOjp0b2tlbml6ZShVQ2hhciBjKQpAQCAtMTA0LDcgKzk3LDcgQEAgaW5saW5lIHZvaWQg
Q1NTUHJlbG9hZFNjYW5uZXI6OnRva2VuaXplKAogICAgICAgICAgICAgbV9zdGF0ZSA9IEluaXRp
YWw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUnVsZToKLSAgICAgICAgaWYgKGlzV2hpdGVz
cGFjZShjKSkKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGMpKQogICAgICAgICAgICAgbV9zdGF0
ZSA9IEFmdGVyUnVsZTsKICAgICAgICAgZWxzZSBpZiAoYyA9PSAnOycpCiAgICAgICAgICAgICBt
X3N0YXRlID0gSW5pdGlhbDsKQEAgLTExMiw3ICsxMDUsNyBAQCBpbmxpbmUgdm9pZCBDU1NQcmVs
b2FkU2Nhbm5lcjo6dG9rZW5pemUoCiAgICAgICAgICAgICBtX3J1bGUuYXBwZW5kKGMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFmdGVyUnVsZToKLSAgICAgICAgaWYgKGlzV2hpdGVzcGFj
ZShjKSkKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGMpKQogICAgICAgICAgICAgOwogICAgICAg
ICBlbHNlIGlmIChjID09ICc7JykKICAgICAgICAgICAgIG1fc3RhdGUgPSBJbml0aWFsOwpAQCAt
MTIyLDcgKzExNSw3IEBAIGlubGluZSB2b2lkIENTU1ByZWxvYWRTY2FubmVyOjp0b2tlbml6ZSgK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFJ1bGVWYWx1ZToKLSAgICAgICAg
aWYgKGlzV2hpdGVzcGFjZShjKSkKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKGMpKQogICAgICAg
ICAgICAgbV9zdGF0ZSA9IEFmdGVyUnVsZVZhbHVlOwogICAgICAgICBlbHNlIGlmIChjID09ICc7
JykgewogICAgICAgICAgICAgZW1pdFJ1bGUoKTsKQEAgLTEzMSw3ICsxMjQsNyBAQCBpbmxpbmUg
dm9pZCBDU1NQcmVsb2FkU2Nhbm5lcjo6dG9rZW5pemUoCiAgICAgICAgICAgICBtX3J1bGVWYWx1
ZS5hcHBlbmQoYyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQWZ0ZXJSdWxlVmFsdWU6Ci0g
ICAgICAgIGlmIChpc1doaXRlc3BhY2UoYykpCisgICAgICAgIGlmIChpc0hUTUxTcGFjZShjKSkK
ICAgICAgICAgICAgIDsKICAgICAgICAgZWxzZSBpZiAoYyA9PSAnOycpIHsKICAgICAgICAgICAg
IGVtaXRSdWxlKCk7CkBAIC0xNDQsMTQgKzEzNyw1NiBAQCBpbmxpbmUgdm9pZCBDU1NQcmVsb2Fk
U2Nhbm5lcjo6dG9rZW5pemUoCiAgICAgfQogfQogCitzdGF0aWMgU3RyaW5nIHBhcnNlQ1NTU3Ry
aW5nT3JVUkwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCit7CisgICAg
c2l6ZV90IG9mZnNldCA9IDA7CisgICAgc2l6ZV90IHJlZHVjZWRMZW5ndGggPSBsZW5ndGg7CisK
KyAgICB3aGlsZSAocmVkdWNlZExlbmd0aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW29mZnNl
dF0pKSB7CisgICAgICAgICsrb2Zmc2V0OworICAgICAgICAtLXJlZHVjZWRMZW5ndGg7CisgICAg
fQorICAgIHdoaWxlIChyZWR1Y2VkTGVuZ3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbb2Zm
c2V0ICsgcmVkdWNlZExlbmd0aCAtIDFdKSkKKyAgICAgICAgLS1yZWR1Y2VkTGVuZ3RoOworCisg
ICAgaWYgKHJlZHVjZWRMZW5ndGggPj0gNQorICAgICAgICAgICAgJiYgKGNoYXJhY3RlcnNbb2Zm
c2V0XSA9PSAndScgfHwgY2hhcmFjdGVyc1tvZmZzZXRdID09ICdVJykKKyAgICAgICAgICAgICYm
IChjaGFyYWN0ZXJzW29mZnNldCArIDFdID09ICdyJyB8fCBjaGFyYWN0ZXJzW29mZnNldCArIDFd
ID09ICdSJykKKyAgICAgICAgICAgICYmIChjaGFyYWN0ZXJzW29mZnNldCArIDJdID09ICdsJyB8
fCBjaGFyYWN0ZXJzW29mZnNldCArIDJdID09ICdMJykKKyAgICAgICAgICAgICYmIGNoYXJhY3Rl
cnNbb2Zmc2V0ICsgM10gPT0gJygnCisgICAgICAgICAgICAmJiBjaGFyYWN0ZXJzW29mZnNldCAr
IHJlZHVjZWRMZW5ndGggLSAxXSA9PSAnKScpIHsKKyAgICAgICAgb2Zmc2V0ICs9IDQ7CisgICAg
ICAgIHJlZHVjZWRMZW5ndGggLT0gNTsKKyAgICB9CisKKyAgICB3aGlsZSAocmVkdWNlZExlbmd0
aCAmJiBpc0hUTUxTcGFjZShjaGFyYWN0ZXJzW29mZnNldF0pKSB7CisgICAgICAgICsrb2Zmc2V0
OworICAgICAgICAtLXJlZHVjZWRMZW5ndGg7CisgICAgfQorICAgIHdoaWxlIChyZWR1Y2VkTGVu
Z3RoICYmIGlzSFRNTFNwYWNlKGNoYXJhY3RlcnNbb2Zmc2V0ICsgcmVkdWNlZExlbmd0aCAtIDFd
KSkKKyAgICAgICAgLS1yZWR1Y2VkTGVuZ3RoOworCisgICAgaWYgKHJlZHVjZWRMZW5ndGggPCAy
IHx8IGNoYXJhY3RlcnNbb2Zmc2V0XSAhPSBjaGFyYWN0ZXJzW29mZnNldCArIHJlZHVjZWRMZW5n
dGggLSAxXSB8fCAhKGNoYXJhY3RlcnNbb2Zmc2V0XSA9PSAnXCcnIHx8IGNoYXJhY3RlcnNbb2Zm
c2V0XSA9PSAnIicpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgb2Zmc2V0Kys7Cisg
ICAgcmVkdWNlZExlbmd0aCAtPSAyOworCisgICAgd2hpbGUgKHJlZHVjZWRMZW5ndGggJiYgaXNI
VE1MU3BhY2UoY2hhcmFjdGVyc1tvZmZzZXRdKSkgeworICAgICAgICArK29mZnNldDsKKyAgICAg
ICAgLS1yZWR1Y2VkTGVuZ3RoOworICAgIH0KKyAgICB3aGlsZSAocmVkdWNlZExlbmd0aCAmJiBp
c0hUTUxTcGFjZShjaGFyYWN0ZXJzW29mZnNldCArIHJlZHVjZWRMZW5ndGggLSAxXSkpCisgICAg
ICAgIC0tcmVkdWNlZExlbmd0aDsKKworICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVycyArIG9m
ZnNldCwgcmVkdWNlZExlbmd0aCk7Cit9CisKIHZvaWQgQ1NTUHJlbG9hZFNjYW5uZXI6OmVtaXRS
dWxlKCkKIHsKLSAgICBTdHJpbmcgcnVsZShtX3J1bGUuZGF0YSgpLCBtX3J1bGUuc2l6ZSgpKTsK
LSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocnVsZSwgImltcG9ydCIpICYmICFtX3J1bGVWYWx1
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgU3RyaW5nIHZhbHVlKG1fcnVsZVZhbHVlLmRhdGEoKSwg
bV9ydWxlVmFsdWUuc2l6ZSgpKTsKLSAgICAgICAgU3RyaW5nIHVybCA9IGRlcHJlY2F0ZWRQYXJz
ZVVSTCh2YWx1ZSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1f
ZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6
OkNTU1N0eWxlU2hlZXQsIHVybCwgU3RyaW5nKCksIG1fc2Nhbm5pbmdCb2R5KTsKKyAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoImltcG9ydCIsIG1fcnVsZS5kYXRhKCksIG1fcnVsZS5zaXplKCkp
KSB7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IHBhcnNlQ1NTU3RyaW5nT3JVUkwobV9ydWxlVmFs
dWUuZGF0YSgpLCBtX3J1bGVWYWx1ZS5zaXplKCkpOworICAgICAgICBpZiAoIXZhbHVlLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnBy
ZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQsIHZhbHVlLCBTdHJpbmcoKSwgbV9z
Y2FubmluZ0JvZHkpOwogICAgIH0KICAgICBtX3J1bGUuY2xlYXIoKTsKICAgICBtX3J1bGVWYWx1
ZS5jbGVhcigpOwpJbmRleDogV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3Bw
CShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgU3RyaW5nIHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcwogICAgIH0KIAogICAgIGlmIChudW1MZWFkaW5nU3BhY2Vz
ID09IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICAgICAgcmV0dXJuIHN0
cmluZy5pc051bGwoKSA/IHN0cmluZyA6IGVtcHR5QXRvbS5zdHJpbmcoKTsKIAogICAgIHVuc2ln
bmVkIG51bVRyYWlsaW5nU3BhY2VzOwogICAgIGZvciAobnVtVHJhaWxpbmdTcGFjZXMgPSAwOyBu
dW1UcmFpbGluZ1NwYWNlcyA8IGxlbmd0aDsgKytudW1UcmFpbGluZ1NwYWNlcykgewpAQCAtNTMs
NyArNTMsNyBAQCBTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzCiAKICAg
ICBBU1NFUlQobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2VzIDwgbGVuZ3RoKTsK
IAotICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKG51bUxlYWRpbmdTcGFjZXMsIGxlbmd0aCAt
IG51bVRyYWlsaW5nU3BhY2VzKTsKKyAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFk
aW5nU3BhY2VzLCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2Vz
KSk7CiB9CiAKIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCklu
ZGV4OiBXZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCShyZXZpc2lv
biA2ODgxMSkKKysrIFdlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCiAKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXpl
ci5oIgogI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0
bWwjYXR0cmlidXRlLW5hbWUtc3RhdGUKICAgICAgICAgaWYgKCFtX3VybFRvTG9hZC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fdXJsVG9Mb2FkID0gZGVwcmVjYXRl
ZFBhcnNlVVJMKGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgbV91cmxUb0xvYWQgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpOwogICAgIH0KIAogICAg
IHZvaWQgcHJlbG9hZChEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgc2Nhbm5pbmdCb2R5KQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb3JtU3VibWlzc2lvbi5oIgogCi0j
aW5jbHVkZSAiQ1NTSGVscGVyLmgiCiAjaW5jbHVkZSAiRE9NRm9ybURhdGEuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5j
bHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CkBAIC04NSw3ICs4NSw3IEBAIHN0YXRpYyB2b2lk
IGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVIKIHZvaWQgRm9ybVN1Ym1pc3Npb246OkF0dHJp
YnV0ZXM6OnBhcnNlQWN0aW9uKGNvbnN0IFN0cmluZyYgYWN0aW9uKQogewogICAgIC8vIEZJWE1F
OiBDYW4gd2UgcGFyc2UgaW50byBhIEtVUkw/Ci0gICAgbV9hY3Rpb24gPSBkZXByZWNhdGVkUGFy
c2VVUkwoYWN0aW9uKTsKKyAgICBtX2FjdGlvbiA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRN
TFNwYWNlcyhhY3Rpb24pOwogfQogCiB2b2lkIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjpw
YXJzZUVuY29kaW5nVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkltYWdlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRmlsZUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJOYW1lZE5vZGVNYXAuaCIKQEAgLTI3NSw3ICsyNzYsNyBAQCB2b2lkIENsaXBib2FyZENocm9t
aXVtOjpkZWNsYXJlQW5kV3JpdGVECiAgICAgaWYgKGltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZ1bGxVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoZGVwcmVjYXRlZFBhcnNlVVJMKGltYWdlVVJMKSk7CisgICAgU3RyaW5nIGZ1bGxV
UkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKGltYWdlVVJMKSk7CiAgICAgaWYgKGZ1bGxVUkwuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2Fy
ZENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bh
c3RlYm9hcmRDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2
ICszOCw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAt
MTQ3LDcgKzE0OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZShOb2RlKiBub2RlLCAK
ICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsK
ICAgICAgICAgdXJsU3RyaW5nID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGVsZW1lbnQtPmltYWdl
U291cmNlQXR0cmlidXRlTmFtZSgpKTsKICAgICB9Ci0gICAgS1VSTCB1cmwgPSB1cmxTdHJpbmcu
aXNFbXB0eSgpID8gS1VSTCgpIDogbm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVj
YXRlZFBhcnNlVVJMKHVybFN0cmluZykpOworICAgIEtVUkwgdXJsID0gdXJsU3RyaW5nLmlzRW1w
dHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKIAogICAgIENocm9taXVtQnJpZGdl
OjpjbGlwYm9hcmRXcml0ZUltYWdlKGJpdG1hcCwgdXJsLCB0aXRsZSk7CiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL3F0L0NsaXBib2FyZFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZFF0LmgiCiAKLSNpbmNs
dWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKQEAgLTM2LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJGaWxlTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBDbGlwYm9hcmRRdDo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYQogICAgIGlmIChpbWFn
ZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgZnVsbFVSTCA9IGZy
YW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwoaW1hZ2VVUkwp
KTsKKyAgICBLVVJMIGZ1bGxVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGltYWdlVVJMKSk7CiAgICAgaWYgKGZ1bGxV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
d2luL0NsaXBib2FyZFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4v
Q2xpcGJvYXJkV2luLmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKQEAgLTUwLDcgKzUxLDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV0NEYXRhT2JqZWN0LmgiCi0j
aW5jbHVkZSAiY3NzaGVscGVyLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8c2hs
d2FwaS5oPgogI2luY2x1ZGUgPHdpbmluZXQuaD4KQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIENs
aXBib2FyZFdpbjo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltCiAgICAgaWYgKGltYWdlVVJMLmlzRW1w
dHkoKSkgCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmdWxsVVJMID0gZnJhbWUtPmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChpbWFnZVVSTCkpLnN0cmlu
ZygpOworICAgIFN0cmluZyBmdWxsVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhpbWFnZVVSTCkpLnN0cmluZygpOwog
ICAgIGlmIChmdWxsVVJMLmlzRW1wdHkoKSkgCiAgICAgICAgIHJldHVybjsKICAgICBTVEdNRURJ
VU0gbWVkaXVtID0gezB9OwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJl
dmlzaW9uIDY4ODExKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5o
IgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIu
aCIKQEAgLTMwNSwxNCArMzA2LDE0IEBAIEtVUkwgSGl0VGVzdFJlc3VsdDo6YWJzb2x1dGVJbWFn
ZVVSTCgpIGMKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIEtVUkwoKTsKIAotICAgIHJldHVy
biBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoZGVwcmVjYXRl
ZFBhcnNlVVJMKHVybFN0cmluZykpOworICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2Vz
KHVybFN0cmluZykpOwogfQogCiBLVVJMIEhpdFRlc3RSZXN1bHQ6OmFic29sdXRlTWVkaWFVUkwo
KSBjb25zdAogewogI2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbHQgPSBtZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFy
ZWROb2RlLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwobWVkaWFF
bHQtPmN1cnJlbnRTcmMoKSkpOworICAgICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUt
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhtZWRpYUVsdC0+Y3VycmVudFNyYygpKSk7CiAgICAgcmV0dXJuIEtVUkwoKTsKICNlbHNlCiAg
ICAgcmV0dXJuIEtVUkwoKTsKQEAgLTQ2MSw3ICs0NjIsNyBAQCBLVVJMIEhpdFRlc3RSZXN1bHQ6
OmFic29sdXRlTGlua1VSTCgpIGNvCiAgICAgZWxzZQogICAgICAgICByZXR1cm4gS1VSTCgpOwog
Ci0gICAgcmV0dXJuIG1faW5uZXJVUkxFbGVtZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChk
ZXByZWNhdGVkUGFyc2VVUkwodXJsU3RyaW5nKSk7CisgICAgcmV0dXJuIG1faW5uZXJVUkxFbGVt
ZW50LT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxT
cGFjZXModXJsU3RyaW5nKSk7CiB9CiAKIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNMaXZlTGluaygp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9u
IDY4ODExKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkFuaW1hdGlvbkxpc3QuaCIKICNp
bmNsdWRlICJCb3JkZXJEYXRhLmgiCiAjaW5jbHVkZSAiQm9yZGVyVmFsdWUuaCIKLSNpbmNsdWRl
ICJDU1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVk
ZSAiQXR0ci5oIgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIkNTU0hlbHBlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgpAQCAtMzUsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkhUTUxBbmNo
b3JFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBTVkdBRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdgogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzTGlua0NsaWNr
KGV2ZW50KSkgewotICAgICAgICAgICAgU3RyaW5nIHVybCA9IGRlcHJlY2F0ZWRQYXJzZVVSTCho
cmVmKCkpOworICAgICAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcyhocmVmKCkpOwogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAgICAgICAg
ICAgICBpZiAodXJsWzBdID09ICcjJykgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcAkocmV2
aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL3N2Zy9TVkdJbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJT
VkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogCkBAIC00OCw3ICs0
OSw3IEBAIHZvaWQgU1ZHSW1hZ2VMb2FkZXI6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIAogU3RyaW5n
IFNWR0ltYWdlTG9hZGVyOjpzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyKSBjb25z
dAogewotICAgIHJldHVybiBLVVJMKGVsZW1lbnQoKS0+YmFzZVVSSSgpLCBkZXByZWNhdGVkUGFy
c2VVUkwoYXR0cikpLnN0cmluZygpOworICAgIHJldHVybiBLVVJMKGVsZW1lbnQoKS0+YmFzZVVS
SSgpLCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cikpLnN0cmluZygpOwog
fQogCiB9CkluZGV4OiBXZWJDb3JlL3dtbC9XTUxBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93bWwvV01MQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYkNvcmUv
d21sL1dNTEFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgV01MQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXYKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChpc0xpbmtDbGljayhldmVudCkpIHsKLSAgICAgICAgICAgIGhhbmRsZUxpbmtDbGlj
ayhldmVudCwgZG9jdW1lbnQoKSwgZGVwcmVjYXRlZFBhcnNlVVJMKGdldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OmhyZWZBdHRyKSksIHRhcmdldCgpLCBldmVudCk7CisgICAgICAgICAgICBoYW5kbGVM
aW5rQ2xpY2soZXZlbnQsIGRvY3VtZW50KCksIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhnZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpocmVmQXR0cikpLCB0YXJnZXQoKSwgZXZlbnQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpJbmRleDogV2ViQ29yZS93
bWwvV01MSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTEltYWdl
TG9hZGVyLmNwcAkocmV2aXNpb24gNjg4MTEpCisrKyBXZWJDb3JlL3dtbC9XTUxJbWFnZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICNpbmNsdWRlICJXTUxJbWFn
ZUxvYWRlci5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJDU1NIZWxw
ZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJXTUxJbWFnZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJXTUxOYW1lcy5oIgpAQCAtNDksNyArNDgsNyBAQCB2b2lkIFdNTEltYWdl
TG9hZGVyOjpkaXNwYXRjaExvYWRFdmVudCgpCiAKIFN0cmluZyBXTUxJbWFnZUxvYWRlcjo6c291
cmNlVVJJKGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cikgY29uc3QKIHsKLSAgICByZXR1cm4gS1VS
TChlbGVtZW50KCktPmJhc2VVUkkoKSwgZGVwcmVjYXRlZFBhcnNlVVJMKGF0dHIpKTsKKyAgICBy
ZXR1cm4gS1VSTChlbGVtZW50KCktPmJhc2VVUkkoKSwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdI
VE1MU3BhY2VzKGF0dHIpKTsKIH0KIAogdm9pZCBXTUxJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqIGltYWdlKQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4ODEzKQorKysgV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0w
OS0zMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyBjYWxscyB0byBk
ZXByZWNhdGVkUGFyc2VVUkwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2NTk5CisKKyAgICAgICAgKiBET00vV2ViRE9NT3BlcmF0aW9ucy5tbToKKyAg
ICAgICAgKC1bRE9NRG9jdW1lbnQgVVJMV2l0aEF0dHJpYnV0ZVN0cmluZzpdKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQbHVnaW4pOgorICAgICAgICBDYWxsIHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nSFRNTFNwYWNlcyBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWRQYXJzZVVSTC4KKwog
MjAxMC0wOS0zMCAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogV2ViS2l0L21hYy9ET00vV2ViRE9NT3Bl
cmF0aW9ucy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0RPTS9XZWJET01PcGVyYXRpb25z
Lm1tCShyZXZpc2lvbiA2ODgxMSkKKysrIFdlYktpdC9tYWMvRE9NL1dlYkRPTU9wZXJhdGlvbnMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAKICNpbXBvcnQgIldlYkZyYW1lUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV2ViS2l0TlNTdHJpbmdFeHRyYXMuaCIKICNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0FQSUNhc3QuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ1NTSGVscGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxQYXJzZXJJZGlv
bXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xl
Z2FjeVdlYkFyY2hpdmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CkBAIC0xMjksNyAr
MTI5LDcgQEAgLSAoV2ViRnJhbWUgKil3ZWJGcmFtZQogCiAtIChOU1VSTCAqKVVSTFdpdGhBdHRy
aWJ1dGVTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nCiB7Ci0gICAgcmV0dXJuIGNvcmUoc2VsZikt
PmNvbXBsZXRlVVJMKGRlcHJlY2F0ZWRQYXJzZVVSTChzdHJpbmcpKTsKKyAgICByZXR1cm4gY29y
ZShzZWxmKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHN0
cmluZykpOwogfQogCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDY4ODExKQorKysgV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpA
QCAtOTQsMTAgKzk0LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1lRWxlbWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MRnJhbWVPd25lckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSFRNTEhlYWRFbGVtZW50Lmg+Ci0jaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8p
Ci0jaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KLSNlbmRpZgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MTmFtZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC0x
MjQsNiArMTIyLDEwIEBACiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogI2ltcG9ydCA8d3Rm
L1RocmVhZGluZy5oPgogCisjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCisjaW1w
b3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEpB
VkFfQlJJREdFKQogI2ltcG9ydCAiV2ViSmF2YVBsdWdJbi5oIgogI2VuZGlmCkBAIC0xNjY4LDcg
KzE2NzAsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6CiAgICAg
aWYgKGVycm9yQ29kZSAmJiBtX3dlYkZyYW1lKSB7CiAgICAgICAgIFdlYlJlc291cmNlRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVzb3Vy
Y2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CiAgICAgICAgIGlmIChpbXBs
ZW1lbnRhdGlvbnMtPnBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmMpIHsKLSAgICAgICAgICAgIEtV
UkwgcGx1Z2luUGFnZVVSTCA9IGRvY3VtZW50LT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VV
UkwocGFyYW1ldGVyVmFsdWUocGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJwbHVnaW5zcGFnZSIp
KSk7CisgICAgICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBkb2N1bWVudC0+Y29tcGxldGVV
Ukwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBhcmFtZXRlclZhbHVlKHBhcmFt
TmFtZXMsIHBhcmFtVmFsdWVzLCAicGx1Z2luc3BhZ2UiKSkpOwogICAgICAgICAgICAgaWYgKCFw
bHVnaW5QYWdlVVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgICAgICAgICAgcGx1
Z2luUGFnZVVSTCA9IEtVUkwoKTsKICAgICAgICAgICAgIE5TU3RyaW5nICpwbHVnaW5OYW1lID0g
cGx1Z2luUGFja2FnZSA/IChOU1N0cmluZyAqKVtwbHVnaW5QYWNrYWdlIHBsdWdpbkluZm9dLm5h
bWUgOiBuaWw7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjg4MTMpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA5LTMwICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgcmVtYWluaW5nIGNhbGxzIHRvIGRlcHJlY2F0ZWRQYXJzZVVS
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OTkK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2lu
KToKKyAgICAgICAgQ2FsbCBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMgaW5zdGVh
ZCBvZiBkZXByZWNhdGVkUGFyc2VVUkwuCisKIDIwMTAtMDktMjggIEplbm4gQnJhaXRod2FpdGUg
IDxqZW5uYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92
LgpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDY4ODExKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE5hbWVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MUGFyc2VySWRpb21zLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9IVE1MUGx1Z0luRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSGlzdG9yeUl0ZW0u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KQEAgLTc2OCw3ICs3NjksNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhCiAgICAgQVNTRVJUKGZyYW1lID09IHBs
dWdpblZpZXctPnBhcmVudEZyYW1lKCkpOwogCiAgICAgaWYgKCFwbHVnaW5WaWV3LT5wbHVnaW5z
UGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIEtVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5k
b2N1bWVudCgpLT5jb21wbGV0ZVVSTChkZXByZWNhdGVkUGFyc2VVUkwocGx1Z2luVmlldy0+cGx1
Z2luc1BhZ2UoKSkpOworICAgICAgICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdp
blZpZXctPnBsdWdpbnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9j
b2xJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBs
dWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBzdHIoQWRvcHRDRiwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY4ODEzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMDktMzAgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSByZW1haW5pbmcgY2FsbHMgdG8gZGVwcmVjYXRlZFBhcnNlVVJMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5OQorCisgICAg
ICAgICogZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tc3BhY2VzLWV4cGVjdGVkLnR4dDogQ29w
aWVkIGZyb20KKyAgICAgICAgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0t
dXJsLWNvbnRyb2wtY2hhci1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9v
YmplY3QtcGFyYW0tc3BhY2VzLmh0bWw6IENvcGllZCBmcm9tCisgICAgICAgIExheW91dFRlc3Rz
L2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbC4KKyAgICAg
ICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwt
Y29udHJvbC1jaGFyLmh0bWw6IFJlbW92ZWQuCisgICAgICAgIENoYW5nZWQgdGhpcyB0ZXN0IHRv
IGV4cGVjdCBIVE1MIHN0YW5kYXJkIHNwYWNlIHRyaW1taW5nLCBidXQgbm90IHRoZSBXZWJLaXQt
b25seQorICAgICAgICBjb250cm9sIGNoYXJhY3RlciBzdHJpcHBpbmcgd2UgaGFkIGhpc3Rvcmlj
YWxseS4KKworICAgICAgICAqIGZhc3QvdXJsL3F1ZXJ5LWV4cGVjdGVkLnR4dDogVXBkYXRlZCB0
byBleHBlY3QgdGhlIHRlc3QgdG8gcGFzcy4KKworICAgICAgICAqIGZhc3QvdXJsL3NjcmlwdC10
ZXN0cy9zZWdtZW50cy1mcm9tLWRhdGEtdXJsLmpzOiBDaGFuZ2VkIGV4cGVjdGVkIHJlc3VsdCB0
byBub3QKKyAgICAgICAgZXhwZWN0IHN0cmlwcGluZyBvZiBuZXdsaW5lIGNoYXJhY3RlcnMuCisg
ICAgICAgICogZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NlZ21lbnRzLmpzOiBEaXR0by4KKyAgICAg
ICAgKiBmYXN0L3VybC9zZWdtZW50cy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgcmVzdWx0cy4KKyAg
ICAgICAgKiBmYXN0L3VybC9zZWdtZW50cy1mcm9tLWRhdGEtdXJsLWV4cGVjdGVkLnR4dDogRGl0
dG8uCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNj
cmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1sb2NhdGlvbi1odG1sZG9tLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNj
cmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtZ2V0QXR0cmlidXRlLXZhbHVlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwv
amF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtaHRtbGRvbS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFz
Y3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFz
Y3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5TLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2
YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJM
L2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5v
ZGVOUy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2Ny
aXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1nZXRBdHRy
aWJ1dGUtdmFsdWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
amF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMt
aHRtbGRvbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZh
c2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRB
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvamF2
YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0
QXR0cmlidXRlTlMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
amF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMt
c2V0QXR0cmlidXRlTm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1l
LXNyYy1zZXRBdHRyaWJ1dGVOb2RlTlMtZXhwZWN0ZWQudHh0OgorICAgICAgICBUaGVzZSB0ZXN0
cyBoYWQgbXVsdGlwbGUgdGVzdCBjYXNlcyB3aXRoIGVtYmVkZGVkIGNvbnRyb2wgY2hhcmFjdGVy
cy4gVGhlc2UgVVJMcyBubworICAgICAgICBsb25nZXIgcXVhbGlmeSBhcyBqYXZhc2NyaXB0IFVS
THMsIHNvIHRoZXJlIGFyZSBubyBsb25nZXIgYW55IHVuc2FmZSBKYXZhU2NyaXB0IGxvZworICAg
ICAgICBtZXNzYWdlcyBmb3IgdGhlbS4gVGhlIHRlc3QgY2FzZXMgdGhlbXNlbHZlcyBuZWVkIG5v
dCBiZSBjaGFuZ2VkIGF0IHRoaXMgdGltZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9lbWJlZC10YWctY29udHJvbC1jaGFyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivb2JqZWN0LWVtYmVkLXRhZy1jb250
cm9sLWNoYXItZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGVkIGV4cGVjdGVkIHJlc3VsdHMg
dG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHRoZSBjb250cm9sIGNoYXJhY3RlciBpcyBubyBsb25n
ZXIKKyAgICAgICAgc3RyaXBwZWQgZnJvbSB0aGUgVVJMIGluIHRoZXNlIGNhc2VzLiBUaGUgdGVz
dCBpcyBzdGlsbCB2YWxpZCwgYnV0IHRoZXNlIGFyZSBub3QgYXMKKyAgICAgICAgaW50ZXJlc3Rp
bmcgdGVzdCBjYXNlcyBhbnkgbW9yZSBzaW5jZSBjb250cm9sIGNoYXJhY3RlcnMgZG8gbm90IGhh
dmUgc3BlY2lhbCBoYW5kbGluZy4KKwogMjAxMC0wOS0yOSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRlc3QgZm9yIGNvbG9yOjggbWVkaWEgcXVlcmllcwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tc3BhY2VzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1w
YXJhbS1zcGFjZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODYxNCkJKGZyb20gTGF5b3V0VGVz
dHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRyb2wtY2hhci1leHBlY3RlZC50
eHQ6Njg2MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS1zcGFj
ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBhIFVSTCBzcGVjaWZpZWQgaW4gYSA8cGFyYW0+IG9mIGFuIDxvYmpl
Y3Q+IGlzIHBhcnNlZCB0aGUgc2FtZSBhcyBpZiBpdCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBkYXRh
IGF0dHJpYnV0ZSBvZiB0aGUgPG9iamVjdD4uIFNwZWNpZmljYWxseSwgdGhpcyB2ZXJpZmllcyB0
aGF0IGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFy
ZSBzdHJpcHBlZCwgYW5kIHRoYXQgYSByZXNvdXJjZSBzdXJyb3VuZGVkIHdpdGggdXJsKCcnKSBp
cyB1bmRlcnN0b29kLgorCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29i
amVjdC1wYXJhbS1zcGFjZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcmVwbGFjZWQvb2JqZWN0LXBhcmFtLXNwYWNlcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDY4NjE0KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tc3BhY2Vz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKIAotVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgYSBVUkwgc3BlY2lmaWVkIGluIGEgPHBhcmFtPiBvZiBhbiA8b2JqZWN0
PiBpcyBwYXJzZWQgdGhlIHNhbWUgYXMgaWYgaXQgd2FzIHNwZWNpZmllZCBhcyB0aGUgZGF0YSBh
dHRyaWJ1dGUgb2YgdGhlIDxvYmplY3Q+LiBTcGVjaWZpY2FsbHksIHRoaXMgdmVyaWZpZXMgdGhh
dCBjb250cm9sIGNoYXJhY3RlcnMgYW5kIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhcmUg
c3RyaXBwZWQsIGFuZCB0aGF0IGEgcmVzb3VyY2Ugc3Vycm91bmRlZCB3aXRoIHVybCgnJykgaXMg
dW5kZXJzdG9vZC4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgVVJMIHNwZWNpZmllZCBpbiBh
IDxwYXJhbT4gb2YgYW4gPG9iamVjdD4gaXMgcGFyc2VkIHRoZSBzYW1lIGFzIGlmIGl0IHdhcyBz
cGVjaWZpZWQgYXMgdGhlIGRhdGEgYXR0cmlidXRlIG9mIHRoZSA8b2JqZWN0Pi4gU3BlY2lmaWNh
bGx5LCB0aGlzIHZlcmlmaWVzIHRoYXQgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFyZSBz
dHJpcHBlZC4KIAogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3Qt
cGFyYW0tc3BhY2VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNl
ZC9vYmplY3QtcGFyYW0tc3BhY2VzLmh0bWwJKHJldmlzaW9uIDY4NjE0KQkoZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLmh0bWw6Njg2
MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS1zcGFjZXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVm
b3JlbG9hZCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgdmFyIGNvbnNvbGUg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOworCisgICAgICAgICAgICAgICAg
aWYgKGV2ZW50LnVybCA9PSAic2NoZW1lOi8vdXJsLXdpdGgtY29udHJvbC1jaGFyLyIpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBBU1MiOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAiRkFJTCI7
CisKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworIAorICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0sIHRy
dWUpOworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxvYmplY3Qgd2lkdGg9IjAiIGhlaWdodD0iMCIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC1uZXRzY2FwZSI+CisgICAgICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSIg
HCAgdVJsKCdzY2hlbWU6Ly91cmwtd2l0aC0FY29udHJvbC1jaGFyLycpIB4gIj4KKyAgICAgICAg
PC9vYmplY3Q+CisgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgVVJMIHNwZWNp
ZmllZCBpbiBhICZsdDtwYXJhbSZndDsgb2YgYW4gJmx0O29iamVjdCZndDsgaXMgcGFyc2VkIHRo
ZSBzYW1lIGFzIGlmIGl0IHdhcyBzcGVjaWZpZWQgYXMgdGhlIGRhdGEgYXR0cmlidXRlIG9mIHRo
ZSAmbHQ7b2JqZWN0Jmd0Oy4gU3BlY2lmaWNhbGx5LCB0aGlzIHZlcmlmaWVzIHRoYXQgY29udHJv
bCBjaGFyYWN0ZXJzIGFuZCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYXJlIHN0cmlwcGVk
LCBhbmQgdGhhdCBhIHJlc291cmNlIHN1cnJvdW5kZWQgd2l0aCB1cmwoJycpIGlzIHVuZGVyc3Rv
b2QuPC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS1zcGFj
ZXMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1w
YXJhbS1zcGFjZXMuaHRtbAkocmV2aXNpb24gNjg2MTQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL29iamVjdC1wYXJhbS1zcGFjZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCw3ICs4
LDcgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWxvYWQi
LCBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKIAotICAgICAgICAgICAgICAgIGlmIChldmVu
dC51cmwgPT0gInNjaGVtZTovL3VybC13aXRoLWNvbnRyb2wtY2hhci8iKQorICAgICAgICAgICAg
ICAgIGlmIChldmVudC51cmwgPT0gInNjaGVtZTovL3VybC13aXRoLWxlYWRpbmctYW5kLXRyYWls
aW5nLXNwYWNlLyIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIlBB
U1MiOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5p
bm5lckhUTUwgPSAiRkFJTCI7CkBAIC0yMiw5ICsyMiw5IEBACiAgICAgPC9oZWFkPgogICAgIDxi
b2R5PgogICAgICAgICA8b2JqZWN0IHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHR5cGU9ImFwcGxpY2F0
aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPgotICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1v
dmllIiB2YWx1ZT0iIBwgIHVSbCgnc2NoZW1lOi8vdXJsLXdpdGgtBWNvbnRyb2wtY2hhci8nKSAe
ICI+CisgICAgICAgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSIgIHNjaGVtZTovL3Vy
bC13aXRoLWxlYWRpbmctYW5kLXRyYWlsaW5nLXNwYWNlLyAgICAgIj4KICAgICAgICAgPC9vYmpl
Y3Q+Ci0gICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgVVJMIHNwZWNpZmllZCBp
biBhICZsdDtwYXJhbSZndDsgb2YgYW4gJmx0O29iamVjdCZndDsgaXMgcGFyc2VkIHRoZSBzYW1l
IGFzIGlmIGl0IHdhcyBzcGVjaWZpZWQgYXMgdGhlIGRhdGEgYXR0cmlidXRlIG9mIHRoZSAmbHQ7
b2JqZWN0Jmd0Oy4gU3BlY2lmaWNhbGx5LCB0aGlzIHZlcmlmaWVzIHRoYXQgY29udHJvbCBjaGFy
YWN0ZXJzIGFuZCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgYXJlIHN0cmlwcGVkLCBhbmQg
dGhhdCBhIHJlc291cmNlIHN1cnJvdW5kZWQgd2l0aCB1cmwoJycpIGlzIHVuZGVyc3Rvb2QuPC9w
PgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIFVSTCBzcGVjaWZpZWQgaW4g
YSAmbHQ7cGFyYW0mZ3Q7IG9mIGFuICZsdDtvYmplY3QmZ3Q7IGlzIHBhcnNlZCB0aGUgc2FtZSBh
cyBpZiBpdCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBkYXRhIGF0dHJpYnV0ZSBvZiB0aGUgJmx0O29i
amVjdCZndDsuIFNwZWNpZmljYWxseSwgdGhpcyB2ZXJpZmllcyB0aGF0IGxlYWRpbmcvdHJhaWxp
bmcgd2hpdGVzcGFjZSBhcmUgc3RyaXBwZWQuPC9wPgogICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KICAgICA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJv
bC1jaGFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICswLDAgQEAKLQotVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBV
Ukwgc3BlY2lmaWVkIGluIGEgPHBhcmFtPiBvZiBhbiA8b2JqZWN0PiBpcyBwYXJzZWQgdGhlIHNh
bWUgYXMgaWYgaXQgd2FzIHNwZWNpZmllZCBhcyB0aGUgZGF0YSBhdHRyaWJ1dGUgb2YgdGhlIDxv
YmplY3Q+LiBTcGVjaWZpY2FsbHksIHRoaXMgdmVyaWZpZXMgdGhhdCBjb250cm9sIGNoYXJhY3Rl
cnMgYW5kIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZSBhcmUgc3RyaXBwZWQsIGFuZCB0aGF0
IGEgcmVzb3VyY2Ugc3Vycm91bmRlZCB3aXRoIHVybCgnJykgaXMgdW5kZXJzdG9vZC4KLQotUEFT
UwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9vYmplY3QtcGFyYW0tdXJsLWNvbnRy
b2wtY2hhci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvb2Jq
ZWN0LXBhcmFtLXVybC1jb250cm9sLWNoYXIuaHRtbAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3JlcGxhY2VkL29iamVjdC1wYXJhbS11cmwtY29udHJvbC1jaGFyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAg
ICAgIDxzY3JpcHQ+Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9y
ZWxvYWQiLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgICAgIHZhciBjb25zb2xlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKLQotICAgICAgICAgICAgICAgIGlm
IChldmVudC51cmwgPT0gInNjaGVtZTovL3VybC13aXRoLWNvbnRyb2wtY2hhci8iKQotICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlLmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5uZXJIVE1MID0gIkZBSUwiOwot
Ci0gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9LCB0cnVl
KTsKLSAgICAgICAgPC9zY3JpcHQ+Ci0gICAgPC9oZWFkPgotICAgIDxib2R5PgotICAgICAgICA8
b2JqZWN0IHdpZHRoPSIwIiBoZWlnaHQ9IjAiIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiPgotICAgICAgICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iIBwg
IHVSbCgnc2NoZW1lOi8vdXJsLXdpdGgtBWNvbnRyb2wtY2hhci8nKSAeICI+Ci0gICAgICAgIDwv
b2JqZWN0PgotICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIFVSTCBzcGVjaWZp
ZWQgaW4gYSAmbHQ7cGFyYW0mZ3Q7IG9mIGFuICZsdDtvYmplY3QmZ3Q7IGlzIHBhcnNlZCB0aGUg
c2FtZSBhcyBpZiBpdCB3YXMgc3BlY2lmaWVkIGFzIHRoZSBkYXRhIGF0dHJpYnV0ZSBvZiB0aGUg
Jmx0O29iamVjdCZndDsuIFNwZWNpZmljYWxseSwgdGhpcyB2ZXJpZmllcyB0aGF0IGNvbnRyb2wg
Y2hhcmFjdGVycyBhbmQgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlIGFyZSBzdHJpcHBlZCwg
YW5kIHRoYXQgYSByZXNvdXJjZSBzdXJyb3VuZGVkIHdpdGggdXJsKCcnKSBpcyB1bmRlcnN0b29k
LjwvcD4KLSAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPC9ib2R5PgotPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC91cmwvcXVlcnktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdXJsL3F1ZXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3VybC9xdWVyeS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEEKIAogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20v
P2Zvbz1iYXInKSBpcyAnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/Zm9vPWJhcicKIFBBU1MgY2Fu
b25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tLz9hcz9kZicpIGlzICdodHRwOi8vd3d3
LmV4YW1wbGUuY29tLz9hcz9kZicKLUZBSUwgY2Fub25pY2FsaXplKCdodHRwOi8vd3d3LmV4YW1w
bGUuY29tLz9ceDAyaGVsbG9/IGJ5ZScpIHNob3VsZCBiZSBodHRwOi8vd3d3LmV4YW1wbGUuY29t
Lz8lMDJoZWxsbyU3RiUyMGJ5ZS4gV2FzIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vP2hlbGxvJTdG
JTIwYnllLgorUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vP1x4MDJo
ZWxsb38gYnllJykgaXMgJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vPyUwMmhlbGxvJTdGJTIwYnll
JwogUEFTUyBjYW5vbmljYWxpemUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vPyU0MCU0MTEyMycp
IGlzICdodHRwOi8vd3d3LmV4YW1wbGUuY29tLz8lNDAlNDExMjMnCiBQQVNTIGNhbm9uaWNhbGl6
ZSgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS8/cT3kvaDlpb0nKSBpcyAnaHR0cDovL3d3dy5leGFt
cGxlLmNvbS8/cT0lMjYlMjMyMDMyMCUzQiUyNiUyMzIyOTA5JTNCJwogUEFTUyBjYW5vbmljYWxp
emUoJ2h0dHA6Ly93d3cuZXhhbXBsZS5jb20vP3E9XHVkODAwXHVkODAwJykgaXMgJ2h0dHA6Ly93
d3cuZXhhbXBsZS5jb20vP3E9JTI2JTIzNTUyOTYlM0IlMjYlMjM1NTI5NiUzQicKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvdXJsL3NlZ21lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3VybC9zZWdtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY4ODEx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC91cmwvc2VnbWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBAIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOjAwMDAwMDAw
MDAwMDAwL2MKIEZBSUwgc2VnbWVudHMoJ2h0dHA6Ly9mOjAwMDAwMDAwMDAwMDAwMDAwMDAwMDgw
L2MnKSBzaG91bGQgYmUgWyJodHRwOiIsImYiLCIwIiwiL2MiLCIiLCIiXS4gV2FzIFsiaHR0cDoi
LCJmIiwiODAiLCIvYyIsIiIsIiJdLgogUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6Yi9jJykgaXMg
J1siOiIsIiIsIjAiLCIiLCIiLCIiXScKIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOiAvYycpIGlz
ICdbIjoiLCIiLCIwIiwiIiwiIiwiIl0nCi1QQVNTIHNlZ21lbnRzKCdodHRwOi8vZjpcbi9jJykg
aXMgJ1siaHR0cDoiLCJmIiwiMCIsIi9jIiwiIiwiIl0nCitQQVNTIHNlZ21lbnRzKCdodHRwOi8v
Zjpcbi9jJykgaXMgJ1siOiIsIiIsIjAiLCIiLCIiLCIiXScKIFBBU1Mgc2VnbWVudHMoJ2h0dHA6
Ly9mOmZpZnR5LXR3by9jJykgaXMgJ1siOiIsIiIsIjAiLCIiLCIiLCIiXScKIEZBSUwgc2VnbWVu
dHMoJ2h0dHA6Ly9mOjk5OTk5OS9jJykgc2hvdWxkIGJlIFsiOiIsIiIsIjAiLCIiLCIiLCIiXS4g
V2FzIFsiaHR0cDoiLCJmIiwiNjU1MzUiLCIvYyIsIiIsIiJdLgogUEFTUyBzZWdtZW50cygnaHR0
cDovL2Y6IDIxIC8gYiA/IGQgIyBlICcpIGlzICdbIjoiLCIiLCIwIiwiIiwiIiwiIl0nCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3VybC9zZWdtZW50cy1mcm9tLWRhdGEtdXJsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3VybC9zZWdtZW50cy1mcm9tLWRhdGEt
dXJsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Vy
bC9zZWdtZW50cy1mcm9tLWRhdGEtdXJsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTUsNyArMTUsNyBAQCBQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjowMDAwMDAwMDAwMDAwMC9jCiBG
QUlMIHNlZ21lbnRzKCdodHRwOi8vZjowMDAwMDAwMDAwMDAwMDAwMDAwMDA4MC9jJykgc2hvdWxk
IGJlIFsiaHR0cDoiLCJmIiwiMCIsIi9jIiwiIiwiIl0uIFdhcyBbImh0dHA6IiwiZiIsIjgwIiwi
L2MiLCIiLCIiXS4KIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOmIvYycpIGlzICdbIjoiLCIiLCIw
IiwiIiwiIiwiIl0nCiBQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjogL2MnKSBpcyAnWyI6IiwiIiwi
MCIsIiIsIiIsIiJdJwotUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6XG4vYycpIGlzICdbImh0dHA6
IiwiZiIsIjAiLCIvYyIsIiIsIiJdJworUEFTUyBzZWdtZW50cygnaHR0cDovL2Y6XG4vYycpIGlz
ICdbIjoiLCIiLCIwIiwiIiwiIiwiIl0nCiBQQVNTIHNlZ21lbnRzKCdodHRwOi8vZjpmaWZ0eS10
d28vYycpIGlzICdbIjoiLCIiLCIwIiwiIiwiIiwiIl0nCiBGQUlMIHNlZ21lbnRzKCdodHRwOi8v
Zjo5OTk5OTkvYycpIHNob3VsZCBiZSBbIjoiLCIiLCIwIiwiIiwiIiwiIl0uIFdhcyBbImh0dHA6
IiwiZiIsIjY1NTM1IiwiL2MiLCIiLCIiXS4KIFBBU1Mgc2VnbWVudHMoJ2h0dHA6Ly9mOiAyMSAv
IGIgPyBkICMgZSAnKSBpcyAnWyI6IiwiIiwiMCIsIiIsIiIsIiJdJwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NlZ21lbnRzLWZyb20tZGF0YS11cmwuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NlZ21lbnRzLWZyb20t
ZGF0YS11cmwuanMJKHJldmlzaW9uIDY4ODExKQorKysgTGF5b3V0VGVzdHMvZmFzdC91cmwvc2Ny
aXB0LXRlc3RzL3NlZ21lbnRzLWZyb20tZGF0YS11cmwuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0
LDcgKzE0LDcgQEAgY2FzZXMgPSBbIAogICBbImh0dHA6Ly9mOjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDgwL2MiLCAgICAgWyJodHRwOiIsImYiLCIwIiwiL2MiLCIiLCIiXV0sCiAgIFsiaHR0cDovL2Y6
Yi9jIiwgICAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwiIiwiIl1dLAog
ICBbImh0dHA6Ly9mOiAvYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIs
IiIsIiIsIiJdXSwKLSAgWyJodHRwOi8vZjpcXG4vYyIsICAgICAgICAgICAgICAgICAgICAgICAg
IFsiaHR0cDoiLCJmIiwiMCIsIi9jIiwiIiwiIl1dLAorICBbImh0dHA6Ly9mOlxcbi9jIiwgICAg
ICAgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIsIiIsIiIsIiJdXSwKICAgWyJodHRwOi8v
ZjpmaWZ0eS10d28vYyIsICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAiLCIiLCIiLCIiXV0s
CiAgIFsiaHR0cDovL2Y6OTk5OTk5L2MiLCAgICAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIw
IiwiIiwiIiwiIl1dLAogICBbImh0dHA6Ly9mOiAyMSAvIGIgPyBkICMgZSAiLCAgICAgICAgICAg
ICAgWyI6IiwiIiwiMCIsIiIsIiIsIiJdXSwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdXJsL3Nj
cmlwdC10ZXN0cy9zZWdtZW50cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Vy
bC9zY3JpcHQtdGVzdHMvc2VnbWVudHMuanMJKHJldmlzaW9uIDY4ODExKQorKysgTGF5b3V0VGVz
dHMvZmFzdC91cmwvc2NyaXB0LXRlc3RzL3NlZ21lbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0x
NCw3ICsxNCw3IEBAIGNhc2VzID0gWyAKICAgWyJodHRwOi8vZjowMDAwMDAwMDAwMDAwMDAwMDAw
MDA4MC9jIiwgICAgIFsiaHR0cDoiLCJmIiwiMCIsIi9jIiwiIiwiIl1dLAogICBbImh0dHA6Ly9m
OmIvYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwiMCIsIiIsIiIsIiJdXSwK
ICAgWyJodHRwOi8vZjogL2MiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAi
LCIiLCIiLCIiXV0sCi0gIFsiaHR0cDovL2Y6XFxuL2MiLCAgICAgICAgICAgICAgICAgICAgICAg
ICBbImh0dHA6IiwiZiIsIjAiLCIvYyIsIiIsIiJdXSwKKyAgWyJodHRwOi8vZjpcXG4vYyIsICAg
ICAgICAgICAgICAgICAgICAgICAgIFsiOiIsIiIsIjAiLCIiLCIiLCIiXV0sCiAgIFsiaHR0cDov
L2Y6ZmlmdHktdHdvL2MiLCAgICAgICAgICAgICAgICAgICBbIjoiLCIiLCIwIiwiIiwiIiwiIl1d
LAogICBbImh0dHA6Ly9mOjk5OTk5OS9jIiwgICAgICAgICAgICAgICAgICAgICAgWyI6IiwiIiwi
MCIsIiIsIiIsIiJdXSwKICAgWyJodHRwOi8vZjogMjEgLyBiID8gZCAjIGUgIiwgICAgICAgICAg
ICAgIFsiOiIsIiIsIjAiLCIiLCIiLCIiXV0sCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1m
cmFtZS1sb2NhdGlvbi1odG1sZG9tLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVj
dXRpb24tY29udGV4dC1mcmFtZS1sb2NhdGlvbi1odG1sZG9tLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRV
UkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1sb2NhdGlvbi1odG1sZG9t
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiw2IEBAIENPTlNPTEUgTUVT
U0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmkKIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0
bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2
YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLWxvY2F0aW9u
LWh0bWxkb20uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgog
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBh
Y2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0
aW9uLWNvbnRleHQtZnJhbWUtbG9jYXRpb24taHRtbGRvbS5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNh
ZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZy
b20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3Jp
cHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1sb2NhdGlvbi1odG1s
ZG9tLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNz
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1j
b250ZXh0LWZyYW1lLWxvY2F0aW9uLWh0bWxkb20uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLgotCiAKIAogLS0tLS0tLS0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1j
b250ZXh0LWZyYW1lLXNyYy1nZXRBdHRyaWJ1dGUtdmFsdWUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZh
c2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1nZXRBdHRyaWJ1dGUtdmFsdWUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODgxMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZy
YW1lLXNyYy1nZXRBdHRyaWJ1dGUtdmFsdWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0yLDEyICsyLDYgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaQog
CiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBh
Y2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0
aW9uLWNvbnRleHQtZnJhbWUtc3JjLWdldEF0dHJpYnV0ZS12YWx1ZS5odG1sLiBEb21haW5zLCBw
cm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ph
dmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtZ2V0
QXR0cmlidXRlLXZhbHVlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJM
LWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1nZXRBdHRyaWJ1dGUtdmFsdWUuaHRtbC4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUt
c3JjLWdldEF0dHJpYnV0ZS12YWx1ZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRz
IG11c3QgbWF0Y2guCi0KIAogCiAtLS0tLS0tLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQt
ZnJhbWUtc3JjLWh0bWxkb20tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlv
bi1jb250ZXh0LWZyYW1lLXNyYy1odG1sZG9tLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjg4MTEp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNj
cmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtaHRtbGRvbS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTog
VW5zYWZlIEphdmFTY3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNj
cmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUg
d2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2
YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtaHRtbGRvbS5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlm
cmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1z
cmMtaHRtbGRvbS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
Ci0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVj
dXRpb24tY29udGV4dC1mcmFtZS1zcmMtaHRtbGRvbS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUg
SmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20g
ZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRV
UkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtaHRtbGRvbS5odG1s
LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KIAogCiAtLS0tLS0t
LQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2ph
dmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9q
YXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNl
dEF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY4ODExKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9u
LWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFT
Y3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0
IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1l
eGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlLmh0bWwuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0
bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2
YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1zZXRB
dHRyaWJ1dGUuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgot
Ci1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBh
Y2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291
cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0
aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZS5odG1sLiBEb21haW5zLCBwcm90b2Nv
bHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNh
ZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZy
b20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3Jp
cHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmli
dXRlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogCiAK
IC0tLS0tLS0tCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3Jp
cHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmli
dXRlTlMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZy
YW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY4ODExKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRV
UkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5TLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiw2IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmkKIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZh
U2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9q
YXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy5o
dG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4
dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTlMuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBw
b3J0cyBtdXN0IG1hdGNoLgotCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFT
Y3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2ph
dmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5TLmh0
bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mt
ZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0
LWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBv
cnRzIG11c3QgbWF0Y2guCi0KIAogCiAtLS0tLS0tLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRl
eHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0
VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOb2RlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMt
c2V0QXR0cmlidXRlTm9kZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTIgKzIs
NiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpCiAKIENPTlNPTEUg
TUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4
dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5k
IHBvcnRzIG11c3QgbWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2
YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJh
bWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwv
amF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9k
ZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNP
TEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBm
cmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Ny
b3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29u
dGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMg
YW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUg
SmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20g
ZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRV
UkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRl
Tm9kZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KIAog
CiAtLS0tLS0tLQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2Ny
aXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJp
YnV0ZU5vZGVOUy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRl
eHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5vZGVOUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY4
ODExKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2ph
dmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5vZGVO
Uy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ph
dmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0
QXR0cmlidXRlTm9kZU5TLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJM
LWV4ZWN1dGlvbi1jb250ZXh0LWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOb2RlTlMuaHRtbC4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotCi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtZnJhbWUt
c3JjLXNldEF0dHJpYnV0ZU5vZGVOUy5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRz
IG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlw
dCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0
aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNj
cmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1mcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZU5TLmh0
bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogCiAKIC0tLS0t
LS0tCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwv
amF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLWdldEF0dHJpYnV0ZS12
YWx1ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZy
YW1lLXNyYy1nZXRBdHRyaWJ1dGUtdmFsdWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODgxMSkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2Ny
aXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtZ2V0QXR0cmlidXRlLXZhbHVlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiw2IEBAIENPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmkKIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVu
c2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwg
ZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNj
cmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtZ2V0QXR0
cmlidXRlLXZhbHVlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRj
aC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4
ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtZ2V0QXR0cmlidXRlLXZhbHVlLmh0bWwuIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZy
YW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1z
cmMtZ2V0QXR0cmlidXRlLXZhbHVlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0
IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2Ny
aXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtZ2V0QXR0cmlidXRlLXZhbHVlLmh0
bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0
IHBhc3NlcyBhcyBsb25nIGFzIHRoZSB3b3JkICdGQUlMJyBhbmQgYW4gYWNjb21wYW55aW5nIG1l
c3NhZ2UgZG8gbm90IGFwcGVhciBpbiB0aGUgc3ViZnJhbWUuCiAKIApJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0
aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1odG1sZG9tLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlw
dFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLWh0bWxkb20tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA2ODgxMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNj
cmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtaHRtbGRv
bS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ph
dmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLWh0
bWxkb20uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9u
LWNvbnRleHQtaWZyYW1lLXNyYy1odG1sZG9tLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQg
cG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZh
U2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9q
YXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtaHRtbGRvbS5odG1sLiBE
b21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1l
LWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJh
bWUtc3JjLWh0bWxkb20uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLgotCiBUaGlzIHRlc3QgcGFzc2VzIGFzIGxvbmcgYXMgdGhlIHdvcmQgJ0ZBSUwnIGFuZCBh
biBhY2NvbXBhbnlpbmcgbWVzc2FnZSBkbyBub3QgYXBwZWFyIGluIHRoZSBzdWJmcmFtZS4KIAog
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2
YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLXNldEF0dHJpYnV0ZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9q
YXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1z
ZXRBdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODgxMSkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlv
bi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMiwxMiArMiw2IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2
YVNjcmkKIAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVt
cHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJM
LWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlLmh0bWwuIERvbWFpbnMs
IHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1l
Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
amF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMt
c2V0QXR0cmlidXRlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRj
aC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4
ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlLmh0bWwuIERvbWFpbnMsIHBy
b3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0
bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2
YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0
QXR0cmlidXRlLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4K
LQogVGhpcyB0ZXN0IHBhc3NlcyBhcyBsb25nIGFzIHRoZSB3b3JkICdGQUlMJyBhbmQgYW4gYWNj
b21wYW55aW5nIG1lc3NhZ2UgZG8gbm90IGFwcGVhciBpbiB0aGUgc3ViZnJhbWUuCiAKIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3Jp
cHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZh
c2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRB
dHRyaWJ1dGVOUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDY4ODExKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9u
LWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEph
dmFTY3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRl
bXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVS
TC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5TLmh0bWwuIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZy
YW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1z
cmMtc2V0QXR0cmlidXRlTlMuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLgotCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0
ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRV
UkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOUy5odG1sLiBEb21h
aW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guCi0KLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVS
TCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlm
cmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUt
c3JjLXNldEF0dHJpYnV0ZU5TLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVz
dCBtYXRjaC4KLQogVGhpcyB0ZXN0IHBhc3NlcyBhcyBsb25nIGFzIHRoZSB3b3JkICdGQUlMJyBh
bmQgYW4gYWNjb21wYW55aW5nIG1lc3NhZ2UgZG8gbm90IGFwcGVhciBpbiB0aGUgc3ViZnJhbWUu
CiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJM
L2phdmFzY3JpcHRVUkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVO
b2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJh
bWUtc3JjLXNldEF0dHJpYnV0ZU5vZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2ODgxMSkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0
VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsMTIgKzIsNiBAQCBDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTogVW5zYWZlIEphdmFTY3JpCiAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUg
SmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20g
ZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRV
UkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1pZnJhbWUtc3JjLXNldEF0dHJpYnV0
ZU5vZGUuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRVUkwtZXhlY3V0aW9u
LWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOb2RlLmh0bWwuIERvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVu
c2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwg
ZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNj
cmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0
cmlidXRlTm9kZS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2gu
Ci0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVj
dXRpb24tY29udGV4dC1pZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5vZGUuaHRtbC4gRG9tYWlucywg
cHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgotCiBUaGlzIHRlc3QgcGFzc2VzIGFzIGxv
bmcgYXMgdGhlIHdvcmQgJ0ZBSUwnIGFuZCBhbiBhY2NvbXBhbnlpbmcgbWVzc2FnZSBkbyBub3Qg
YXBwZWFyIGluIHRoZSBzdWJmcmFtZS4KIAogCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2phdmFzY3JpcHRVUkwvamF2YXNjcmlwdFVSTC1leGVjdXRpb24tY29udGV4dC1p
ZnJhbWUtc3JjLXNldEF0dHJpYnV0ZU5vZGVOUy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9qYXZhc2NyaXB0VVJML2phdmFzY3JpcHRV
UkwtZXhlY3V0aW9uLWNvbnRleHQtaWZyYW1lLXNyYy1zZXRBdHRyaWJ1dGVOb2RlTlMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA2ODgxMSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1z
cmMtc2V0QXR0cmlidXRlTm9kZU5TLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwx
MiArMiw2IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmkKIAogQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNz
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1j
b250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZU5TLmh0bWwuIERvbWFpbnMsIHByb3Rv
Y29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVu
c2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwg
ZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNj
cmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0
cmlidXRlTm9kZU5TLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRj
aC4KLQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQg
dG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9y
ZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4
ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1zcmMtc2V0QXR0cmlidXRlTm9kZU5TLmh0bWwuIERvbWFp
bnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KLQotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJM
IGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZy
YW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvamF2YXNjcmlwdFVSTC9qYXZhc2NyaXB0VVJMLWV4ZWN1dGlvbi1jb250ZXh0LWlmcmFtZS1z
cmMtc2V0QXR0cmlidXRlTm9kZU5TLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMg
bXVzdCBtYXRjaC4KLQogVGhpcyB0ZXN0IHBhc3NlcyBhcyBsb25nIGFzIHRoZSB3b3JkICdGQUlM
JyBhbmQgYW4gYWNjb21wYW55aW5nIG1lc3NhZ2UgZG8gbm90IGFwcGVhciBpbiB0aGUgc3ViZnJh
bWUuCiAKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L2VtYmVkLXRhZy1jb250cm9sLWNoYXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9lbWJlZC10YWctY29udHJvbC1j
aGFyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3IvZW1iZWQtdGFnLWNvbnRyb2wtY2hhci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogUmVmdXNlZCB0byBsb2FkIGFuIG9iamVjdC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15
LnN3ZiIuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBsb2FkIGFuIG9iamVj
dC4gVVJMIGZvdW5kIHdpdGhpbiByZXF1ZXN0OiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2R1bW15LnN3ZgUiLgogCiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9vYmplY3QtZW1iZWQtdGFnLWNvbnRy
b2wtY2hhci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL29iamVjdC1lbWJlZC10YWctY29udHJvbC1jaGFyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gNjg4MTEpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivb2JqZWN0LWVtYmVkLXRhZy1jb250cm9sLWNoYXItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5z
d2YiLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3Qu
IFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YFIi4KIAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBvYmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVz
dDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9k
dW1teS5zd2YiLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gbG9hZCBhbiBv
YmplY3QuIFVSTCBmb3VuZCB3aXRoaW4gcmVxdWVzdDogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9kdW1teS5zd2YFIi4KIAogCg==
</data>
<flag name="review"
          id="59041"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>