<?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>37745</bug_id>
          
          <creation_ts>2010-04-16 20:28:43 -0700</creation_ts>
          <short_desc>Move string uniquing tables to (new) WTFThreadData</short_desc>
          <delta_ts>2010-04-19 16:07:12 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213571</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-16 20:28:43 -0700</bug_when>
    <thetext>Remove AtomicString&apos;s dependency on ThreadGlobalData so that we can move WebCore&apos;s string classes up to WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213572</commentid>
    <comment_count>1</comment_count>
      <attachid>53590</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-16 20:32:56 -0700</bug_when>
    <thetext>Created attachment 53590
The patch

Mainly uploading this patch to get the build bot to take a sniff at it, probably not worth reviewing right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213573</commentid>
    <comment_count>2</comment_count>
      <attachid>53591</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-16 21:19:07 -0700</bug_when>
    <thetext>Created attachment 53591
More useful patch, with build file changes – still for the build bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213580</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 21:59:32 -0700</bug_when>
    <thetext>Attachment 53590 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1605587</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213581</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 22:33:12 -0700</bug_when>
    <thetext>Attachment 53591 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1605589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213584</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 23:11:50 -0700</bug_when>
    <thetext>Attachment 53590 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/1676363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213688</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-17 16:25:25 -0700</bug_when>
    <thetext>The WTF prefix on the file and type name seems redundant, and completely inconsistent with other files in WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213698</commentid>
    <comment_count>7</comment_count>
      <attachid>53620</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-17 17:31:55 -0700</bug_when>
    <thetext>Created attachment 53620
Chromium build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213699</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-17 17:36:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The WTF prefix on the file and type name seems redundant, and completely
&gt; inconsistent with other files in WTF.

Most classes in the WTF directories are classes to be used by clients of WTF, not parts of WTF&apos;s internal implementation (for example ThreadSpecific, which is used instantiated by clients of WTF), and as such the name ThreadData seemed too generic - it did not seem clear that this was not something to be used by clients of WTF but instead something that WTF would use internally.  I added the prefix to try to make this distinction a little more clear.

What do you suggest for a class name, do you like just &quot;ThreadData&quot;? or any other suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213702</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-17 17:55:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; The WTF prefix on the file and type name seems redundant, and completely
&gt; &gt; inconsistent with other files in WTF.
&gt; 
&gt; Most classes in the WTF directories are classes to be used by clients of WTF,
&gt; not parts of WTF&apos;s internal implementation (for example ThreadSpecific, which
&gt; is used instantiated by clients of WTF), and as such the name ThreadData seemed
&gt; too generic - it did not seem clear that this was not something to be used by
&gt; clients of WTF but instead something that WTF would use internally.  I added
&gt; the prefix to try to make this distinction a little more clear.

A word like “private” or “internal” would bring with it the connotation that this is not supposed to be used outside of WTF.  Using WTF as a prefix just makes me wonder WTF this file happens to start with WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213704</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-17 18:31:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; A word like “private” or “internal” would bring with it the connotation that
&gt; this is not supposed to be used outside of WTF.  Using WTF as a prefix just
&gt; makes me wonder WTF this file happens to start with WTF.

While it is a part of WTF, it is also accessed from outside of WTF where certain thread-specific pieces of information need to be accessed (currently just the string uniquing tables), so the word &apos;private&apos; seems inappropriate.  While it is a part of WTF&apos;s implementation rather than a class vended to clients, it is a public piece of implementation.  We also have a ThreadGlobalData object in WebCore, and I wanted to be nice and clear and unambiguous about which thread specific data object was being accessed, for example consider the following line from the patch from within WebCore:

    WTFThreadData&amp; data = wtfThreadData();

It seems nice and clear that this is accessing the thread data from and pertaining to WTF, rather than WebCore&apos;s own thread data.  Would you suggest:

    InternalThreadData&amp; data = wtfThreadData(); ?
    InternalThreadData&amp; data = internalThreadData(); ?

I&apos;d suggest that having wtf in the name does make sense for this class and function, since it makes it completely clear whose thread data is being accessed (WTF&apos;s as opposed than WebCore&apos;s).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214171</commentid>
    <comment_count>11</comment_count>
      <attachid>53620</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-04-19 12:36:49 -0700</bug_when>
    <thetext>Comment on attachment 53620
Chromium build fix

&gt; +namespace JSC {
&gt; +class IdentifierTable;
&gt; +}
&gt; +
&gt;  namespace WebCore {
&gt; +class AtomicStringTable;
&gt; +}

How weird. Please put a comment explaining how this is a temporary measure while we finish the great string merger.

Otherwise, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214200</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 13:21:11 -0700</bug_when>
    <thetext>This broke windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214202</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 13:21:40 -0700</bug_when>
    <thetext>Sadly the windows EWS bot is offline otherwise it would have told us this. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214230</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-19 13:59:24 -0700</bug_when>
    <thetext>I got frustrated with windows case insensitive file system.  I can try bringing it back online.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214292</commentid>
    <comment_count>15</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-04-19 15:44:43 -0700</bug_when>
    <thetext>landed in http://trac.webkit.org/changeset/57829</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214306</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-19 16:07:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57829 might have broken Windows Debug (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/57829
http://trac.webkit.org/changeset/57830
http://trac.webkit.org/changeset/57831
http://trac.webkit.org/changeset/57832
http://trac.webkit.org/changeset/57833
http://trac.webkit.org/changeset/57834
http://trac.webkit.org/changeset/57835</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53590</attachid>
            <date>2010-04-16 20:32:56 -0700</date>
            <delta_ts>2010-04-16 21:19:07 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>patch.wtfThreadData.3.txt</filename>
            <type>text/plain</type>
            <size>40576</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzczKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDQtMTYgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1bmlxdWluZyB0YWJsZXMgdG8g
KG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBSZW1vdmUgQXRvbWljU3RyaW5n
J3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQgd2UgY2FuIG1vdmUKKyAg
ICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdURi4KKworICAgICAgICBXVEZU
aHJlYWREYXRhLmNwcC8uaCBhcmUgYmFzZWQgb24gVGhyZWFkR2xvYmFsRGF0YSBmcm9tIFdlYkNv
cmUuCisgICAgICAgIE1vdmVkIEpTQyAmIFdlYkNvcmUncyBzdHJpbmcgdW5pcXVpbmcgdGFibGVz
IHRvIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvQVBJU2hpbXMuaDoKKyAgICAgICAgKEpT
Qzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6OkFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKToKKyAg
ICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6On5BUElFbnRyeVNoaW1XaXRob3V0
TG9jayk6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrU2hpbTo6QVBJQ2FsbGJhY2tTaGltKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGltOjp+QVBJQ2FsbGJhY2tTaGltKToKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRh
eCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmdPbmNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5jcHA6IENvcGllZCBmcm9tIFdl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAuCisgICAgICAgIChXVEY6OldURlRo
cmVhZERhdGE6OldURlRocmVhZERhdGEpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjp+
V1RGVGhyZWFkRGF0YSk6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDogQ29waWVkIGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmguCisgICAgICAgIChXVEY6OldU
RlRocmVhZERhdGE6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6aW5pdGlhbGl6ZUlkZW50aWZpZXJUYWJsZSk6CisgICAgICAgIChXVEY6OldURlRocmVh
ZERhdGE6OmN1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWRE
YXRhOjpzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6cmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6d3RmVGhy
ZWFkRGF0YSk6CisKIDIwMTAtMDQtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG5vYm9keSwgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw4ICsxOTYs
NiBAQCBfX1pOM0pTQzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFCiBfX1pOM0pTQzIz
c2V0VXBTdGF0aWNGdW5jdGlvblNsb3RFUE5TXzlFeGVjU3RhdGVFUEtOU185SGFzaEVudHJ5RVBO
U184SlNPYmplY3RFUktOU18xMElkZW50aWZpZXJFUk5TXzEyUHJvcGVydHlTbG90RQogX19aTjNK
U0MyNGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4zSlNDMjVl
dmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18x
NEpTR2xvYmFsT2JqZWN0RQotX19aTjNKU0MyNWdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWNFCi1f
X1pOM0pTQzI5Y3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWNFdgogX19aTjNKU0MzNWNyZWF0
ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFsRGF0YUUKIF9fWk4z
SlNDM05hTkUKIF9fWk4zSlNDNEhlYXAxNHByaW1hcnlIZWFwRW5kRXYKQEAgLTMxOSw2ICszMTcs
OSBAQCBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURjEyZGV0
YWNoVGhyZWFkRWoKIF9fWk4zV1RGMTJpc01haW5UaHJlYWRFdgogX19aTjNXVEYxMnJhbmRvbU51
bWJlckV2CitfX1pOM1dURjEzV1RGVGhyZWFkRGF0YTEwc3RhdGljRGF0YUUKK19fWk4zV1RGMTNX
VEZUaHJlYWREYXRhQzFFdgorX19aTjNXVEYxM1dURlRocmVhZERhdGFEMUV2CiBfX1pOM1dURjEz
Y3VycmVudFRocmVhZEV2CiBfX1pOM1dURjEzdHJ5RmFzdENhbGxvY0VtbQogX19aTjNXVEYxM3Ry
eUZhc3RNYWxsb2NFbQpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgJKHJldmlzaW9uIDU3NzY1KQor
KysgSmF2YVNjcmlwdENvcmUvQVBJL0FQSVNoaW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgY2xhc3MgQVBJRW50cnlTaGltV2l0aG91dExvY2sgewogcHJvdGVjdGVkOgogICAg
IEFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBy
ZWdpc3RlclRocmVhZCkKICAgICAgICAgOiBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKLSAgICAg
ICAgLCBtX2VudHJ5SWRlbnRpZmllclRhYmxlKHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2xv
YmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKSkKKyAgICAgICAgLCBtX2VudHJ5SWRlbnRpZmllclRh
YmxlKHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGEt
PmlkZW50aWZpZXJUYWJsZSkpCiAgICAgewogICAgICAgICBpZiAocmVnaXN0ZXJUaHJlYWQpCiAg
ICAgICAgICAgICBnbG9iYWxEYXRhLT5oZWFwLnJlZ2lzdGVyVGhyZWFkKCk7CkBAIC00NSw3ICs0
NSw3IEBAIHByb3RlY3RlZDoKICAgICB+QVBJRW50cnlTaGltV2l0aG91dExvY2soKQogICAgIHsK
ICAgICAgICAgbV9nbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7Ci0gICAgICAgIHNl
dEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9lbnRyeUlkZW50aWZpZXJUYWJsZSk7CisgICAgICAg
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKG1fZW50cnlJZGVudGlm
aWVyVGFibGUpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTc5LDEyICs3OSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIDogbV9kcm9wQWxsTG9ja3MoZXhlYykKICAgICAgICAgLCBtX2dsb2JhbERhdGEo
JmV4ZWMtPmdsb2JhbERhdGEoKSkKICAgICB7Ci0gICAgICAgIHJlc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZSgpOworICAgICAgICB3dGZUaHJlYWREYXRhKCkucmVzZXRDdXJyZW50SWRlbnRpZmll
clRhYmxlKCk7CiAgICAgfQogCiAgICAgfkFQSUNhbGxiYWNrU2hpbSgpCiAgICAgewotICAgICAg
ICBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKG1fZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
KTsKKyAgICAgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9n
bG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUpOwogICAgIH0KIAogcHJpdmF0ZToKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3Jp
cHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIz
LDcgQEAgdm9pZCBKU0dsb2JhbENvbnRleHRSZWxlYXNlKEpTR2xvYmFsQ29udAogCiAgICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIEpTR2xvYmFs
T2JqZWN0KiBkZ28gPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCk7Ci0gICAgSWRlbnRpZmll
clRhYmxlKiBzYXZlZElkZW50aWZpZXJUYWJsZSA9IHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUo
Z2xvYmFsRGF0YS5pZGVudGlmaWVyVGFibGUpOworICAgIElkZW50aWZpZXJUYWJsZSogc2F2ZWRJ
ZGVudGlmaWVyVGFibGUgPSB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJs
ZShnbG9iYWxEYXRhLmlkZW50aWZpZXJUYWJsZSk7CiAKICAgICAvLyBPbmUgcmVmZXJlbmNlIGlz
IGhlbGQgYnkgSlNHbG9iYWxPYmplY3QsIGFub3RoZXIgYWRkZWQgYnkgSlNHbG9iYWxDb250ZXh0
UmV0YWluKCkuCiAgICAgYm9vbCByZWxlYXNpbmdDb250ZXh0R3JvdXAgPSBnbG9iYWxEYXRhLnJl
ZkNvdW50KCkgPT0gMjsKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFJl
bGVhc2UoSlNHbG9iYWxDb250CiAKICAgICBnbG9iYWxEYXRhLmRlcmVmKCk7CiAKLSAgICBzZXRD
dXJyZW50SWRlbnRpZmllclRhYmxlKHNhdmVkSWRlbnRpZmllclRhYmxlKTsKKyAgICB3dGZUaHJl
YWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShzYXZlZElkZW50aWZpZXJUYWJsZSk7
CiB9CiAKIEpTT2JqZWN0UmVmIEpTQ29udGV4dEdldEdsb2JhbE9iamVjdChKU0NvbnRleHRSZWYg
Y3R4KQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMiw2ICsyMTIsOCBAQAogCQk4NkNDODVBMzBFRTc5Qjc0MDAyODg2ODIgLyogSklU
Q2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkNDODVBMjBFRTc5Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAgKi87IH07CiAJCTg2Q0M4NUM0
MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVDMzBFRTdBODk0MDAyODg2ODIg
LyogSklUUHJvcGVydHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdG
OUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENvZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NkQwOEQ1MzExNzkzNjEzMDA2
RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkQwOEQ1MTExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0
YS5jcHAgKi87IH07CisJCTg2RDA4RDU0MTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQwOEQ1
MjExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAv
KiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi87
IH07CiAJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMwMTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLzsgfTsKIAkJODZEM0IyQzUxMDE1NkJERTAwMjg2
NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMxMTAxNTZCREUwMDI4NjVFNyAv
KiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87IH07CkBAIC03NDEsNiArNzQz
LDggQEAKIAkJODZDQzg1QTIwRUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ2FsbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Q0NFRkREMEY0MTNG
ODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODZEMDhENTExMTc5MzYx
MzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTg2RDA4RDUyMTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk1Bc3NlbWJsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjJDMDEwMTU2QkRFMDAyODY1RTcg
LyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSTUFz
c2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjJDMTEwMTU2QkRF
MDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg0LDYgKzEzODgsOCBAQAogCQkJCTY1
OTJDMzE2MDk4QjdERTEwMDAzRDRGNiAvKiBWZWN0b3IuaCAqLywKIAkJCQk2NTkyQzMxNzA5OEI3
REUxMDAwM0Q0RjYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJOTZERDczNzgwRjlEQTMxMDAw
MjdGQkNDIC8qIFZNVGFncy5oICovLAorCQkJCTg2RDA4RDUxMTE3OTM2MTMwMDZFNUVEMCAvKiBX
VEZUaHJlYWREYXRhLmNwcCAqLywKKwkJCQk4NkQwOEQ1MjExNzkzNjEzMDA2RTVFRDAgLyogV1RG
VGhyZWFkRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMjAzNSw2ICsyMDQxLDcgQEAKIAkJCQk4NjU2NTc0MzExNUJFM0RBMDAy
OTFGNDAgLyogQ1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc0ODJCOTMxMTY3MTE0NzAw
M0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJODZEMDhENTQxMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVh
ZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ3OCw2ICsyNDg1LDcgQEAKIAkJCQlFMUVGNzlB
QTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjU2NTc0
MjExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQ4
MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk4NkQwOEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Q29tcGxldGlvbiBjaGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKIHsKICAgICBKU0xvY2sgbG9jayhleGVjKTsKLSAgICBBU1NFUlQoZXhlYy0+Z2xv
YmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSA9PSBjdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwor
ICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVh
ZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogCiAgICAgUmVmUHRyPFByb2dyYW1F
eGVjdXRhYmxlPiBwcm9ncmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3Vy
Y2UpOwogICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPmNoZWNrU3ludGF4KGV4ZWMpOwpA
QCAtNDksNyArNDksNyBAQCBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywg
CiBDb21wbGV0aW9uIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbiYgc2NvcGVD
aGFpbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAg
ICBKU0xvY2sgbG9jayhleGVjKTsKLSAgICBBU1NFUlQoZXhlYy0+Z2xvYmFsRGF0YSgpLmlkZW50
aWZpZXJUYWJsZSA9PSBjdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOworICAgIEFTU0VSVChleGVj
LT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50
SWRlbnRpZmllclRhYmxlKCkpOwogCiAgICAgUmVmUHRyPFByb2dyYW1FeGVjdXRhYmxlPiBwcm9n
cmFtID0gUHJvZ3JhbUV4ZWN1dGFibGU6OmNyZWF0ZShleGVjLCBzb3VyY2UpOwogICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IHByb2dyYW0tPmNvbXBpbGUoZXhlYywgc2NvcGVDaGFpbi5ub2RlKCkpOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCShyZXZpc2lvbiA1Nzc2NSkK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyOCw3ICsyMjgsNyBAQCBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gSWRlbnRpZmllcjo6
YWRkCiAKIHZvaWQgSWRlbnRpZmllcjo6cmVtb3ZlKFVTdHJpbmc6OlJlcCogcikKIHsKLSAgICBj
dXJyZW50SWRlbnRpZmllclRhYmxlKCktPnJlbW92ZShyKTsKKyAgICB3dGZUaHJlYWREYXRhKCku
Y3VycmVudElkZW50aWZpZXJUYWJsZSgpLT5yZW1vdmUocik7CiB9CiAgICAgCiBJZGVudGlmaWVy
IElkZW50aWZpZXI6OmZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB2YWx1ZSkKQEAgLTI1
Miw3ICsyNTIsNyBAQCB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudElkZW50aWZpZXJUCiB7
CiAgICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZpZXIgdGFibGUgYWNjZXNzaWJsZSB0aHJvdWdoIHRo
ZSB0aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRoZQogICAgIC8vIGdsb2JhbERhdGEncyBpZGVudGlm
aWVyIHRhYmxlLgotICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aWRl
bnRpZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFk
RGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRpZmllcjo6
Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI2OSwzMCAr
MjY5LDQgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVAogCiAjZW5k
aWYKIAotVGhyZWFkU3BlY2lmaWM8VGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YT4qIGdfaWRlbnRp
ZmllclRhYmxlU3BlY2lmaWMgPSAwOwotCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURT
KQotCi1wdGhyZWFkX29uY2VfdCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpY09uY2UgPSBQ
VEhSRUFEX09OQ0VfSU5JVDsKLXN0YXRpYyB2b2lkIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNp
ZmljQ2FsbGJhY2soKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyk7
Ci0gICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJl
YWRJZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotdm9pZCBjcmVhdGVJZGVudGlmaWVyVGFibGVT
cGVjaWZpYygpCi17Ci0gICAgcHRocmVhZF9vbmNlKCZjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVj
aWZpY09uY2UsIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljQ2FsbGJhY2spOwotICAgIEFT
U0VSVChnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKTsKLX0KLQotI2Vsc2UgCi0KLXZvaWQgY3Jl
YXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVy
VGFibGVTcGVjaWZpYyk7Ci0gICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJl
YWRTcGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotCi0jZW5kaWYKLQog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAko
cmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5o
IgogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xNDAs
NjcgKzE0MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIElkZW50aWZpZXJUYWJsZSogY3JlYXRl
SWRlbnRpZmllclRhYmxlKCk7CiAgICAgdm9pZCBkZWxldGVJZGVudGlmaWVyVGFibGUoSWRlbnRp
ZmllclRhYmxlKik7CiAKLSAgICBzdHJ1Y3QgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSB7Ci0g
ICAgICAgIFRocmVhZElkZW50aWZpZXJUYWJsZURhdGEoKQotICAgICAgICAgICAgOiBkZWZhdWx0
SWRlbnRpZmllclRhYmxlKDApCi0gICAgICAgICAgICAsIGN1cnJlbnRJZGVudGlmaWVyVGFibGUo
MCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgSWRlbnRpZmllclRhYmxlKiBkZWZh
dWx0SWRlbnRpZmllclRhYmxlOwotICAgICAgICBJZGVudGlmaWVyVGFibGUqIGN1cnJlbnRJZGVu
dGlmaWVyVGFibGU7Ci0gICAgfTsKLQotICAgIGV4dGVybiBXVEY6OlRocmVhZFNwZWNpZmljPFRo
cmVhZElkZW50aWZpZXJUYWJsZURhdGE+KiBnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljOwotICAg
IHZvaWQgY3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKTsKLQotICAgIGlubGluZSBJZGVu
dGlmaWVyVGFibGUqIGRlZmF1bHRJZGVudGlmaWVyVGFibGUoKQotICAgIHsKLSAgICAgICAgaWYg
KCFnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmll
clRhYmxlU3BlY2lmaWMoKTsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0
YSA9ICoqZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYzsKLQotICAgICAgICByZXR1cm4gZGF0YS5k
ZWZhdWx0SWRlbnRpZmllclRhYmxlOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHNldERlZmF1
bHRJZGVudGlmaWVyVGFibGUoSWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUpCi0gICAg
ewotICAgICAgICBpZiAoIWdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWMpCi0gICAgICAgICAgICBj
cmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOwotICAgICAgICBUaHJlYWRJZGVudGlmaWVy
VGFibGVEYXRhJiBkYXRhID0gKipnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljOwotCi0gICAgICAg
IGRhdGEuZGVmYXVsdElkZW50aWZpZXJUYWJsZSA9IGlkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0K
LSAgICBpbmxpbmUgSWRlbnRpZmllclRhYmxlKiBjdXJyZW50SWRlbnRpZmllclRhYmxlKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKLSAgICAgICAgICAg
IGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7Ci0gICAgICAgIFRocmVhZElkZW50aWZp
ZXJUYWJsZURhdGEmIGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7Ci0KLSAgICAg
ICAgcmV0dXJuIGRhdGEuY3VycmVudElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgSWRlbnRpZmllclRhYmxlKiBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKElkZW50aWZpZXJU
YWJsZSogaWRlbnRpZmllclRhYmxlKQotICAgIHsKLSAgICAgICAgaWYgKCFnX2lkZW50aWZpZXJU
YWJsZVNwZWNpZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMo
KTsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9ICoqZ19pZGVudGlm
aWVyVGFibGVTcGVjaWZpYzsKLQotICAgICAgICBJZGVudGlmaWVyVGFibGUqIG9sZElkZW50aWZp
ZXJUYWJsZSA9IGRhdGEuY3VycmVudElkZW50aWZpZXJUYWJsZTsKLSAgICAgICAgZGF0YS5jdXJy
ZW50SWRlbnRpZmllclRhYmxlID0gaWRlbnRpZmllclRhYmxlOwotICAgICAgICByZXR1cm4gb2xk
SWRlbnRpZmllclRhYmxlOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHJlc2V0Q3VycmVudElk
ZW50aWZpZXJUYWJsZSgpCi0gICAgewotICAgICAgICBpZiAoIWdfaWRlbnRpZmllclRhYmxlU3Bl
Y2lmaWMpCi0gICAgICAgICAgICBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOwotICAg
ICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhJiBkYXRhID0gKipnX2lkZW50aWZpZXJUYWJs
ZVNwZWNpZmljOwotCi0gICAgICAgIGRhdGEuY3VycmVudElkZW50aWZpZXJUYWJsZSA9IGRhdGEu
ZGVmYXVsdElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gSWRlbnRpZmllcl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsNyBAQCBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW5pdGlhbGl6ZVRocmVhZGluCiBzdGF0
aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiB7CiAgICAgV1RGOjppbml0aWFsaXpl
VGhyZWFkaW5nKCk7CisgICAgd3RmVGhyZWFkRGF0YSgpOwogICAgIGluaXRpYWxpemVVU3RyaW5n
KCk7CiAgICAgSlNHbG9iYWxEYXRhOjpzdG9yZVZQdHJzKCk7CiAjaWYgRU5BQkxFKEpTQ19NVUxU
SVBMRV9USFJFQURTKQpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw4ICsyMDMsNyBAQCBQYXNzUmVmUHRyPEpTR2xv
YmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjCiBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4gSlNHbG9i
YWxEYXRhOjpjcmVhdGUoKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IG5ldyBK
U0dsb2JhbERhdGEoZmFsc2UpOwotICAgIHNldERlZmF1bHRJZGVudGlmaWVyVGFibGUoZ2xvYmFs
RGF0YS0+aWRlbnRpZmllclRhYmxlKTsKLSAgICBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGds
b2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLmluaXRpYWxp
emVJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKICAgICByZXR1
cm4gYWRvcHRSZWYoZ2xvYmFsRGF0YSk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAJKHJldmlzaW9uIDU3NzY1KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL1RocmVh
ZEdsb2JhbERhdGEuY3BwOjU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKworI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSAiVGhy
ZWFkVGltZXJzLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKKyNpZiBVU0UoSUNV
X1VOSUNPREUpCisjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCisjZW5kaWYKKworI2lmIFBMQVRG
T1JNKE1BQykKKyNpbmNsdWRlICJUZXh0Q29kZWNNYWMuaCIKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFdPUktFUlMpCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTcGVjaWZpYy5oPgordXNpbmcgbmFtZXNwYWNlIFdURjsKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoV09SS0VSUykKK1RocmVhZFNwZWNpZmljPFRocmVhZEds
b2JhbERhdGE+KiBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhOworI2Vsc2UKK1RocmVhZEds
b2JhbERhdGEqIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CisjZW5kaWYKKworVGhyZWFk
R2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCisgICAgOiBtX2F0b21pY1N0cmluZ1RhYmxl
KG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwqPikKKyAgICAsIG1fZXZlbnROYW1lcyhuZXcgRXZlbnRO
YW1lcykKKyAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRUaW1lcnMpCisjaWZuZGVmIE5E
RUJVRworICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCisjZW5kaWYKKyNpZiBV
U0UoSUNVX1VOSUNPREUpCisgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShuZXcgSUNVQ29udmVy
dGVyV3JhcHBlcikKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fY2FjaGVkQ29u
dmVydGVyVEVDKG5ldyBURUNDb252ZXJ0ZXJXcmFwcGVyKQorI2VuZGlmCit7CisgICAgLy8gU3Ry
aW5nSW1wbDo6ZW1wdHkoKSBkb2VzIG5vdCBjb25zdHJ1Y3QgaXRzIHN0YXRpYyBzdHJpbmcgaW4g
YSB0aHJlYWRzYWZlIGZhc2hpb24sCisgICAgLy8gc28gZW5zdXJlIGl0IGhhcyBiZWVuIGluaXRp
YWxpemVkIGZyb20gaGVyZS4KKyAgICAvLworICAgIC8vIFRoaXMgY29uc3RydWN0b3Igd2lsbCBo
YXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2FsbGVkIG9u
CisgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRo
cmVhZC4KKyAgICBTdHJpbmdJbXBsOjplbXB0eSgpOworfQorCitUaHJlYWRHbG9iYWxEYXRhOjp+
VGhyZWFkR2xvYmFsRGF0YSgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRlbGV0ZSBtX2Nh
Y2hlZENvbnZlcnRlclRFQzsKKyNlbmRpZgorI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICBkZWxl
dGUgbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CisjZW5kaWYKKyAgICBkZWxldGUgbV9ldmVudE5hbWVz
OworICAgIGRlbGV0ZSBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgIGRlbGV0ZSBtX3RocmVhZFRp
bWVyczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogSmF2YVNjcmlwdENvcmUv
d3RmL1dURlRocmVhZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9X
VEZUaHJlYWREYXRhLmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDY4ICsyNSwyOCBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5j
bHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1
ZGUgIlN0cmluZ0ltcGwuaCIKLSNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KK25hbWVzcGFjZSBXVEYgewogCi0jaWYgVVNFKElDVV9VTklDT0RF
KQotI2luY2x1ZGUgIlRleHRDb2RlY0lDVS5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMp
Ci0jaW5jbHVkZSAiVGV4dENvZGVjTWFjLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXT1JLRVJT
KQotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lm
aWMuaD4KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi1UaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRh
PiogVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRBX01VTFRJ
VEhSRUFERUQKK1RocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWREYXRhOjpz
dGF0aWNEYXRhOwogI2Vsc2UKLVRocmVhZEdsb2JhbERhdGEqIFRocmVhZEdsb2JhbERhdGE6OnN0
YXRpY0RhdGE7CitXVEZUaHJlYWREYXRhKiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhOwogI2Vu
ZGlmCiAKLVRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDogbV9hdG9t
aWNTdHJpbmdUYWJsZShuZXcgSGFzaFNldDxTdHJpbmdJbXBsKj4pCi0gICAgLCBtX2V2ZW50TmFt
ZXMobmV3IEV2ZW50TmFtZXMpCi0gICAgLCBtX3RocmVhZFRpbWVycyhuZXcgVGhyZWFkVGltZXJz
KQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQot
I2VuZGlmCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJJQ1Uo
bmV3IElDVUNvbnZlcnRlcldyYXBwZXIpCi0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMpCi0gICAg
LCBtX2NhY2hlZENvbnZlcnRlclRFQyhuZXcgVEVDQ29udmVydGVyV3JhcHBlcikKLSNlbmRpZgor
V1RGVGhyZWFkRGF0YTo6V1RGVGhyZWFkRGF0YSgpCisgICAgOiBtX2F0b21pY1N0cmluZ1RhYmxl
KDApCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcigwKQorICAgICwgbV9kZWZh
dWx0SWRlbnRpZmllclRhYmxlKDApCisgICAgLCBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUoMCkK
IHsKLSAgICAvLyBTdHJpbmdJbXBsOjplbXB0eSgpIGRvZXMgbm90IGNvbnN0cnVjdCBpdHMgc3Rh
dGljIHN0cmluZyBpbiBhIHRocmVhZHNhZmUgZmFzaGlvbiwKLSAgICAvLyBzbyBlbnN1cmUgaXQg
aGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgIC8vCi0gICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBi
ZWluZyBjYWxsZWQgb24KLSAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMgb25seSBjYWxs
ZWQgb25jZSBwZXIgdGhyZWFkLgotICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAKLVRocmVh
ZEdsb2JhbERhdGE6On5UaHJlYWRHbG9iYWxEYXRhKCkKK1dURlRocmVhZERhdGE6On5XVEZUaHJl
YWREYXRhKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZGVsZXRlIG1fY2FjaGVkQ29udmVy
dGVyVEVDOwotI2VuZGlmCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgIGRlbGV0ZSBtX2NhY2hl
ZENvbnZlcnRlcklDVTsKLSNlbmRpZgotICAgIGRlbGV0ZSBtX2V2ZW50TmFtZXM7Ci0gICAgZGVs
ZXRlIG1fYXRvbWljU3RyaW5nVGFibGU7Ci0gICAgZGVsZXRlIG1fdGhyZWFkVGltZXJzOworICAg
IGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAgICAgICAgbV9hdG9taWNTdHJp
bmdUYWJsZURlc3RydWN0b3IobV9hdG9taWNTdHJpbmdUYWJsZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkocmV2aXNpb24g
NTc3NjUpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOjU3NzY1KQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFRocmVhZEdsb2JhbERhdGFfaAor
I2RlZmluZSBUaHJlYWRHbG9iYWxEYXRhX2gKKworI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cit1c2luZyBX
VEY6OlRocmVhZFNwZWNpZmljOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIEV2ZW50TmFtZXM7CisgICAgc3RydWN0IElDVUNvbnZlcnRlcldyYXBwZXI7CisgICAg
c3RydWN0IFRFQ0NvbnZlcnRlcldyYXBwZXI7CisgICAgY2xhc3MgVGhyZWFkVGltZXJzOworCisg
ICAgY2xhc3MgVGhyZWFkR2xvYmFsRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CisgICAgcHVi
bGljOgorICAgICAgICBUaHJlYWRHbG9iYWxEYXRhKCk7CisgICAgICAgIH5UaHJlYWRHbG9iYWxE
YXRhKCk7CisKKyAgICAgICAgRXZlbnROYW1lcyYgZXZlbnROYW1lcygpIHsgcmV0dXJuICptX2V2
ZW50TmFtZXM7IH0KKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0cmluZ1Rh
YmxlKCkgeyByZXR1cm4gKm1fYXRvbWljU3RyaW5nVGFibGU7IH0KKyAgICAgICAgVGhyZWFkVGlt
ZXJzJiB0aHJlYWRUaW1lcnMoKSB7IHJldHVybiAqbV90aHJlYWRUaW1lcnM7IH0KKworI2lmIFVT
RShJQ1VfVU5JQ09ERSkKKyAgICAgICAgSUNVQ29udmVydGVyV3JhcHBlciYgY2FjaGVkQ29udmVy
dGVySUNVKCkgeyByZXR1cm4gKm1fY2FjaGVkQ29udmVydGVySUNVOyB9CisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgVEVDQ29udmVydGVyV3JhcHBlciYgY2FjaGVkQ29udmVy
dGVyVEVDKCkgeyByZXR1cm4gKm1fY2FjaGVkQ29udmVydGVyVEVDOyB9CisjZW5kaWYKKworICAg
IHByaXZhdGU6CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+KiBtX2F0b21pY1N0cmluZ1Rh
YmxlOworICAgICAgICBFdmVudE5hbWVzKiBtX2V2ZW50TmFtZXM7CisgICAgICAgIFRocmVhZFRp
bWVycyogbV90aHJlYWRUaW1lcnM7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGJvb2wgbV9p
c01haW5UaHJlYWQ7CisjZW5kaWYKKworI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICAgICAgSUNV
Q29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICAgICAgVEVDQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0
ZXJURUM7CisjZW5kaWYKKworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgICAgICBzdGF0aWMgVGhy
ZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT4qIHN0YXRpY0RhdGE7CisjZWxzZQorICAgICAg
ICBzdGF0aWMgVGhyZWFkR2xvYmFsRGF0YSogc3RhdGljRGF0YTsKKyNlbmRpZgorICAgICAgICBm
cmllbmQgVGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOworICAgIH07CisKK2lu
bGluZSBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxEYXRhKCkgCit7CisgICAgLy8gRklY
TUU6IFdvcmtlcnMgYXJlIG5vdCBuZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRoYXQgbWFr
ZSBwZXItdGhyZWFkIGdsb2JhbCBkYXRhIG5lY2Vzc2FyeS4KKyAgICAvLyBXZSBuZWVkIHRvIGNo
ZWNrIGZvciBlLmcuIGRhdGFiYXNlIG9iamVjdHMgbWFuaXB1bGF0aW5nIHN0cmluZ3Mgb24gc2Vj
b25kYXJ5IHRocmVhZHMuCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICAvLyBUaHJlYWRHbG9i
YWxEYXRhIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJl
IHVzZWQgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9u
aXphdGlvbiBoZXJlLgorICAgIGlmICghVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSkKKyAg
ICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxU
aHJlYWRHbG9iYWxEYXRhPjsKKyAgICByZXR1cm4gKipUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNE
YXRhOworI2Vsc2UKKyAgICBpZiAoIVRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEpIHsKKyAg
ICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSA9IHN0YXRpY19jYXN0PFRocmVhZEds
b2JhbERhdGEqPihmYXN0TWFsbG9jKHNpemVvZihUaHJlYWRHbG9iYWxEYXRhKSkpOworICAgICAg
ICAvLyBUaHJlYWRHbG9iYWxEYXRhIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgdXNlcyBzdGF0aWNE
YXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1cCB0aGUgbWVtb3J5IGJlZm9yZSBpbnZva2luZyBpdC4K
KyAgICAgICAgbmV3IChUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhKSBUaHJlYWRHbG9iYWxE
YXRhOworICAgIH0KKyAgICByZXR1cm4gKlRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7Cisj
ZW5kaWYKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRocmVh
ZEdsb2JhbERhdGFfaApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lv
biA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDg5ICsyNCwxMTYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBUaHJlYWRHbG9i
YWxEYXRhX2gKLSNkZWZpbmUgVGhyZWFkR2xvYmFsRGF0YV9oCisjaWZuZGVmIFdURlRocmVhZERh
dGFfaAorI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKIAotI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLSNpZiBFTkFCTEUoV09SS0VSUykKKy8vIFRoaXMg
d2FzIEVOQUJMRShXT1JLRVJTKSBpbiBXZWJDb3JlLCBidXQgdGhpcyBpcyBub3QgZGVmaW5lZCB3
aGVuIGNvbXBpbGluZyBKU0MuCisvLyBIb3dldmVyIHRoaXMgY2hlY2sgd2FzIG5vdCBjb3JyZWN0
IGFueXdheSwgcmUgdGhpcyBjb21tZW50OgorLy8gICAgLy8gRklYTUU6IFdvcmtlcnMgYXJlIG5v
dCBuZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRoYXQgbWFrZSBwZXItdGhyZWFkIGdsb2Jh
bCBkYXRhIG5lY2Vzc2FyeS4KKy8vICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGUuZy4gZGF0
YWJhc2Ugb2JqZWN0cyBtYW5pcHVsYXRpbmcgc3RyaW5ncyBvbiBzZWNvbmRhcnkgdGhyZWFkcy4K
Ky8vIEFsd2F5cyBlbmFibGluZyB0aGlzIGlzIHNhZmUsIGFuZCBzaG91bGQgYmUgYSBiZXR0ZXIg
b3B0aW9uIHVudGlsIHdlIGNhbiBjb21lIHVwCisvLyB3aXRoIGEgYmV0dGVyIGRlZmluZS4KKyNk
ZWZpbmUgV1RGVEhSRUFEREFUQV9NVUxUSVRIUkVBREVEIDEKKworI2lmIFdURlRIUkVBRERBVEFf
TVVMVElUSFJFQURFRAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KLXVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAjZW5kaWYKIAor
bmFtZXNwYWNlIEpTQyB7CitjbGFzcyBJZGVudGlmaWVyVGFibGU7Cit9CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOworfQogCi0gICAgY2xhc3MgRXZlbnRO
YW1lczsKLSAgICBzdHJ1Y3QgSUNVQ29udmVydGVyV3JhcHBlcjsKLSAgICBzdHJ1Y3QgVEVDQ29u
dmVydGVyV3JhcHBlcjsKLSAgICBjbGFzcyBUaHJlYWRUaW1lcnM7Ci0KLSAgICBjbGFzcyBUaHJl
YWRHbG9iYWxEYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IFRocmVhZEdsb2JhbERhdGEoKTsKLSAgICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsKLQotICAg
ICAgICBFdmVudE5hbWVzJiBldmVudE5hbWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1lczsgfQot
ICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJldHVy
biAqbV9hdG9taWNTdHJpbmdUYWJsZTsgfQotICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRp
bWVycygpIHsgcmV0dXJuICptX3RocmVhZFRpbWVyczsgfQordHlwZWRlZiB2b2lkICgqQXRvbWlj
U3RyaW5nVGFibGVEZXN0cnVjdG9yKShXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZSopOwogCi0j
aWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyJiBjYWNoZWRD
b252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7IH0KLSNlbmRpZgor
bmFtZXNwYWNlIFdURiB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFRFQ0NvbnZlcnRl
cldyYXBwZXImIGNhY2hlZENvbnZlcnRlclRFQygpIHsgcmV0dXJuICptX2NhY2hlZENvbnZlcnRl
clRFQzsgfQotI2VuZGlmCitjbGFzcyBXVEZUaHJlYWREYXRhIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKK3B1YmxpYzoKKyAgICBXVEZUaHJlYWREYXRhKCk7CisgICAgfldURlRocmVhZERhdGEoKTsK
KworICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJsZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9CiAKLSAgICBw
cml2YXRlOgotICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiogbV9hdG9taWNTdHJpbmdUYWJs
ZTsKLSAgICAgICAgRXZlbnROYW1lcyogbV9ldmVudE5hbWVzOwotICAgICAgICBUaHJlYWRUaW1l
cnMqIG1fdGhyZWFkVGltZXJzOworI2lmIFVTRShKU0MpCisgICAgdm9pZCBpbml0aWFsaXplSWRl
bnRpZmllclRhYmxlKEpTQzo6SWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUpCisgICAg
eworICAgICAgICBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlmaWVyVGFibGU7Cisg
ICAgICAgIG1fY3VycmVudElkZW50aWZpZXJUYWJsZSA9IGlkZW50aWZpZXJUYWJsZTsKKyAgICB9
CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJvb2wgbV9pc01haW5UaHJlYWQ7Ci0jZW5kaWYK
KyAgICBKU0M6OklkZW50aWZpZXJUYWJsZSogY3VycmVudElkZW50aWZpZXJUYWJsZSgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9jdXJyZW50SWRlbnRpZmllclRhYmxlOworICAgIH0KKworICAg
IEpTQzo6SWRlbnRpZmllclRhYmxlKiBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKEpTQzo6SWRl
bnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUpCisgICAgeworICAgICAgICBKU0M6OklkZW50
aWZpZXJUYWJsZSogb2xkSWRlbnRpZmllclRhYmxlID0gbV9jdXJyZW50SWRlbnRpZmllclRhYmxl
OworICAgICAgICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlmaWVyVGFibGU7Cisg
ICAgICAgIHJldHVybiBvbGRJZGVudGlmaWVyVGFibGU7CisgICAgfQogCi0jaWYgVVNFKElDVV9V
TklDT0RFKQotICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZlcnRlcklD
VTsKKyAgICB2b2lkIHJlc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSgpCisgICAgeworICAgICAg
ICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGU7Cisg
ICAgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFRFQ0NvbnZlcnRlcldy
YXBwZXIqIG1fY2FjaGVkQ29udmVydGVyVEVDOworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpBdG9t
aWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICBBdG9taWNTdHJpbmdUYWJs
ZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3I7CisKKyNpZiBVU0UoSlND
KQorICAgIEpTQzo6SWRlbnRpZmllclRhYmxlKiBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGU7Cisg
ICAgSlNDOjpJZGVudGlmaWVyVGFibGUqIG1fY3VycmVudElkZW50aWZpZXJUYWJsZTsKICNlbmRp
ZgogCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxU
aHJlYWRHbG9iYWxEYXRhPiogc3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRBX01VTFRJVEhS
RUFERUQKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0YXRpY0Rh
dGE7CiAjZWxzZQotICAgICAgICBzdGF0aWMgVGhyZWFkR2xvYmFsRGF0YSogc3RhdGljRGF0YTsK
KyAgICBzdGF0aWMgV1RGVGhyZWFkRGF0YSogc3RhdGljRGF0YTsKICNlbmRpZgotICAgICAgICBm
cmllbmQgVGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOwotICAgIH07CisgICAg
ZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKKyAgICBmcmllbmQgY2xhc3Mg
V2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU7Cit9OwogCi1pbmxpbmUgVGhyZWFkR2xvYmFsRGF0
YSYgdGhyZWFkR2xvYmFsRGF0YSgpIAoraW5saW5lIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERh
dGEoKQogewotICAgIC8vIEZJWE1FOiBXb3JrZXJzIGFyZSBub3QgbmVjZXNzYXJpbHkgdGhlIG9u
bHkgZmVhdHVyZSB0aGF0IG1ha2UgcGVyLXRocmVhZCBnbG9iYWwgZGF0YSBuZWNlc3NhcnkuCi0g
ICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgZS5nLiBkYXRhYmFzZSBvYmplY3RzIG1hbmlwdWxh
dGluZyBzdHJpbmdzIG9uIHNlY29uZGFyeSB0aHJlYWRzLgotCi0jaWYgRU5BQkxFKFdPUktFUlMp
Ci0gICAgLy8gVGhyZWFkR2xvYmFsRGF0YSBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJlZm9yZSBp
dCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBu
byBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KLSAgICBpZiAoIVRocmVhZEdsb2JhbERh
dGE6OnN0YXRpY0RhdGEpCi0gICAgICAgIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEgPSBu
ZXcgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT47Ci0gICAgcmV0dXJuICoqVGhyZWFk
R2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRBX01VTFRJVEhSRUFERUQK
KyAgICAvLyBXUlQgV2ViQ29yZToKKyAgICAvLyAgICBXVEZUaHJlYWREYXRhIGlzIHVzZWQgb24g
bWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKKyAgICAvLyAgICBv
biBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9u
IGhlcmUuCisgICAgLy8gV1JUIEphdmFTY3JpcHRDb3JlOgorICAgIC8vICAgIHd0ZlRocmVhZERh
dGEoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygpLCBlbnN1
cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJlYWRfb25j
ZSBsb2NrZWQgY29udGV4dC4KKyAgICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpCisg
ICAgICAgIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEgPSBuZXcgVGhyZWFkU3BlY2lmaWM8V1RG
VGhyZWFkRGF0YT47CisgICAgcmV0dXJuICoqV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YTsKICNl
bHNlCi0gICAgaWYgKCFUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhKSB7Ci0gICAgICAgIFRo
cmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWRHbG9iYWxEYXRh
Kj4oZmFzdE1hbGxvYyhzaXplb2YoVGhyZWFkR2xvYmFsRGF0YSkpKTsKLSAgICAgICAgLy8gVGhy
ZWFkR2xvYmFsRGF0YSBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IHVzZXMgc3RhdGljRGF0YSwgc28g
d2UgbmVlZCB0byBzZXQgdXAgdGhlIG1lbW9yeSBiZWZvcmUgaW52b2tpbmcgaXQuCi0gICAgICAg
IG5ldyAoVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSkgVGhyZWFkR2xvYmFsRGF0YTsKKyAg
ICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpIHsKKyAgICAgICAgV1RGVGhyZWFkRGF0
YTo6c3RhdGljRGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihmYXN0TWFsbG9jKHNp
emVvZihXVEZUaHJlYWREYXRhKSkpOworICAgICAgICAvLyBXVEZUaHJlYWREYXRhIGNvbnN0cnVj
dG9yIGluZGlyZWN0bHkgdXNlcyBzdGF0aWNEYXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1cCB0aGUg
bWVtb3J5IGJlZm9yZSBpbnZva2luZyBpdC4KKyAgICAgICAgbmV3IChXVEZUaHJlYWREYXRhOjpz
dGF0aWNEYXRhKSBXVEZUaHJlYWREYXRhOwogICAgIH0KLSAgICByZXR1cm4gKlRocmVhZEdsb2Jh
bERhdGE6OnN0YXRpY0RhdGE7CisgICAgcmV0dXJuICpXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRh
OwogI2VuZGlmCiB9Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBU
aHJlYWRHbG9iYWxEYXRhX2gKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OldURlRo
cmVhZERhdGE7Cit1c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7CisKKyNlbmRpZiAvLyBXVEZUaHJl
YWREYXRhX2gKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzczKQorKysgSmF2YVNjcmlwdEds
dWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDQtMTYg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1bmlxdWluZyB0
YWJsZXMgdG8gKG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBSZW1vdmUgQXRv
bWljU3RyaW5nJ3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQgd2UgY2Fu
IG1vdmUKKyAgICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdURi4KKworICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmg6IEFkZGVkLgorICAg
ICAgICAqIEpTVXRpbHMuY3BwOiBVcGRhdGUgCisgICAgICAgIChKU0dsdWVBUElFbnRyeTo6SlNH
bHVlQVBJRW50cnkpOgorICAgICAgICAoSlNHbHVlQVBJRW50cnk6On5KU0dsdWVBUElFbnRyeSk6
CisgICAgICAgIChKU0dsdWVBUElDYWxsYmFjazo6SlNHbHVlQVBJQ2FsbGJhY2spOgorICAgICAg
ICAoSlNHbHVlQVBJQ2FsbGJhY2s6On5KU0dsdWVBUElDYWxsYmFjayk6CisKIDIwMTAtMDMtMzEg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAJKHJldmlzaW9uIDU3NzY1
KQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNywy
MyArNDI3LDIzIEBAIEV4ZWNTdGF0ZSogZ2V0VGhyZWFkR2xvYmFsRXhlY1N0YXRlKCkKIAogSlNH
bHVlQVBJRW50cnk6OkpTR2x1ZUFQSUVudHJ5KCkKICAgICA6IG1fbG9jayhMb2NrRm9yUmVhbCkK
LSAgICAsIG1fc3RvcmVkSWRlbnRpZmllclRhYmxlKGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSkK
KyAgICAsIG1fc3RvcmVkSWRlbnRpZmllclRhYmxlKHd0ZlRocmVhZERhdGEoKS5jdXJyZW50SWRl
bnRpZmllclRhYmxlKCkpCiB7Ci0gICAgc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnZXRUaHJl
YWRHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmllclRh
YmxlKTsKKyAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnZXRU
aHJlYWRHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCkuaWRlbnRpZmll
clRhYmxlKTsKIH0KIAogSlNHbHVlQVBJRW50cnk6On5KU0dsdWVBUElFbnRyeSgpCiB7Ci0gICAg
c2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX3N0b3JlZElkZW50aWZpZXJUYWJsZSk7CisgICAg
d3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9zdG9yZWRJZGVudGlm
aWVyVGFibGUpOwogfQogCiBKU0dsdWVBUElDYWxsYmFjazo6SlNHbHVlQVBJQ2FsbGJhY2soRXhl
Y1N0YXRlKiBleGVjKQogICAgIDogbV9kcm9wTG9ja3MoZXhlYykKIHsKLSAgICByZXNldEN1cnJl
bnRJZGVudGlmaWVyVGFibGUoKTsKKyAgICB3dGZUaHJlYWREYXRhKCkucmVzZXRDdXJyZW50SWRl
bnRpZmllclRhYmxlKCk7CiB9CiAKIEpTR2x1ZUFQSUNhbGxiYWNrOjp+SlNHbHVlQVBJQ2FsbGJh
Y2soKQogewotICAgIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhyZWFkR2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSk7CisgICAg
d3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhyZWFkR2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJsZSk7CiB9
CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvV1RGVGhyZWFkRGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9X
VEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV1RGVGhyZWFkRGF0YS5oPgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3Nzcz
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxMC0wNC0xNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQ1CisgICAgICAgIE1vdmUgc3RyaW5n
IHVuaXF1aW5nIHRhYmxlcyB0byAobmV3KSBXVEZUaHJlYWREYXRhIGNsYXNzLgorCisgICAgICAg
IFJlbW92ZSBBdG9taWNTdHJpbmcncyBkZXBlbmRlbmN5IG9uIFRocmVhZEdsb2JhbERhdGEgc28g
dGhhdCB3ZSBjYW4gbW92ZQorICAgICAgICBXZWJDb3JlJ3Mgc3RyaW5nIGNsYXNzZXMgdXAgdG8g
V1RGLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRocmVhZERhdGEuaDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHA6IFJlbW92ZSBt
X2F0b21pY1N0cmluZ1RhYmxlLCBhbGwgd3RmVGhyZWFkRGF0YSgpIHRvIGVuc3VyZSB0aHJlYWRz
YWZlbHkgaW5pdGlhbGl6ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjpU
aHJlYWRHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2JhbERhdGE6On5U
aHJlYWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmg6
IFJlbW92ZSBtX2F0b21pY1N0cmluZ1RhYmxlLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xv
YmFsRGF0YTo6ZXZlbnROYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJp
bmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZTo6dGFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6c3Ry
aW5nVGFibGUpOiBBY2Nlc3MgdGhlIEF0b21pY1N0cmluZ1RhYmxlIG9uIHd0ZlRocmVhZERhdGEo
KSByYXRoZXIgdGhlbiB0aHJlYWRHbG9iYWxEYXRhKCkuCisKIDIwMTAtMDQtMTYgIE5vJ2FtIFJv
c2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dU
RlRocmVhZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorI2lm
bmRlZiBXZWJDb3JlX0ZXRF9XVEZUaHJlYWREYXRhX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfV1RG
VGhyZWFkRGF0YV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV1RGVGhyZWFkRGF0YS5oPgor
I2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9u
IDU3NzY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKICNpbmNs
dWRlICJUaHJlYWRUaW1lcnMuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNs
dWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCiAjaWYgVVNFKElDVV9VTklDT0RFKQogI2luY2x1
ZGUgIlRleHRDb2RlY0lDVS5oIgpAQCAtNTUsOCArNTYsNyBAQCBUaHJlYWRHbG9iYWxEYXRhKiBU
aHJlYWRHbG9iYWxEYXRhOjpzdGF0CiAjZW5kaWYKIAogVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFk
R2xvYmFsRGF0YSgpCi0gICAgOiBtX2F0b21pY1N0cmluZ1RhYmxlKG5ldyBIYXNoU2V0PFN0cmlu
Z0ltcGwqPikKLSAgICAsIG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykKKyAgICA6IG1fZXZl
bnROYW1lcyhuZXcgRXZlbnROYW1lcykKICAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRU
aW1lcnMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFk
KCkpCkBAIC02OCwxMSArNjgsMTEgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0
YSgpCiAgICAgLCBtX2NhY2hlZENvbnZlcnRlclRFQyhuZXcgVEVDQ29udmVydGVyV3JhcHBlcikK
ICNlbmRpZgogewotICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBub3QgY29uc3RydWN0
IGl0cyBzdGF0aWMgc3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAotICAgIC8vIHNvIGVu
c3VyZSBpdCBoYXMgYmVlbiBpbml0aWFsaXplZCBmcm9tIGhlcmUuCi0gICAgLy8KICAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQg
YmVmb3JlIGJlaW5nIGNhbGxlZCBvbgotICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBpcyBv
bmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQuCisgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5k
IGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCDigJMgdGhpcyBtYWtlcyB0aGlzIGEgY29u
dmVuaWVudAorICAgIC8vIHBvaW50IHRvIGNhbGwgbWV0aG9kcyB0aGF0IGludGVybmFsbHkgcGVy
Zm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIHRoYXQgaXMgbm90CisgICAgLy8gdGhyZWFk
c2FmZS4KKyAgICB3dGZUaHJlYWREYXRhKCk7CiAgICAgU3RyaW5nSW1wbDo6ZW1wdHkoKTsKIH0K
IApAQCAtODUsNyArODUsNiBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgp
CiAgICAgZGVsZXRlIG1fY2FjaGVkQ29udmVydGVySUNVOwogI2VuZGlmCiAgICAgZGVsZXRlIG1f
ZXZlbnROYW1lczsKLSAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgICBkZWxldGUg
bV90aHJlYWRUaW1lcnM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5o
CShyZXZpc2lvbiA1Nzc2NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsKIAogICAgICAgICBFdmVudE5hbWVzJiBldmVudE5h
bWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1lczsgfQotICAgICAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJldHVybiAqbV9hdG9taWNTdHJpbmdUYWJsZTsg
fQogICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygpIHsgcmV0dXJuICptX3RocmVh
ZFRpbWVyczsgfQogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAtNjMsNyArNjIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEhhc2hTZXQ8
U3RyaW5nSW1wbCo+KiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgICAgICBFdmVudE5hbWVzKiBt
X2V2ZW50TmFtZXM7CiAgICAgICAgIFRocmVhZFRpbWVycyogbV90aHJlYWRUaW1lcnM7CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCShyZXZpc2lvbiA1Nzc2NikK
KysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxNSArMjgsNDYgQEAKIAogI2luY2x1ZGUgIlN0YXRpY0NvbnN0cnVjdG9ycy5oIgog
I2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCiAj
aW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBBdG9taWNTdHJpbmdUYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIEF0b21pY1N0cmluZ1Rh
YmxlKiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIHRhYmxlID0g
bmV3IEF0b21pY1N0cmluZ1RhYmxlOworCisgICAgICAgIFdURlRocmVhZERhdGEmIGRhdGEgPSB3
dGZUaHJlYWREYXRhKCk7CisgICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZSA9IHRhYmxl
OworICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yID0gQXRvbWljU3Ry
aW5nVGFibGU6OmRlc3Ryb3k7CisKKyAgICAgICAgcmV0dXJuIHRhYmxlOworICAgIH0KKworICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJsZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV90
YWJsZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShBdG9taWNT
dHJpbmdUYWJsZSogdGFibGUpCisgICAgeworICAgICAgICBkZWxldGUgdGFibGU7CisgICAgfQor
CisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4gbV90YWJsZTsKK307CisKIHN0YXRpYyBpbmxpbmUg
SGFzaFNldDxTdHJpbmdJbXBsKj4mIHN0cmluZ1RhYmxlKCkKIHsKLSAgICByZXR1cm4gdGhyZWFk
R2xvYmFsRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCk7CisgICAgLy8gT25jZSBwb3NzaWJsZSB3
ZSBzaG91bGQgbWFrZSB0aGlzIG5vbi1sYXp5IChjb25zdHJ1Y3RlZCBpbiBXVEZUaHJlYWREYXRh
J3MgY29uc3RydWN0b3IpLgorICAgIEF0b21pY1N0cmluZ1RhYmxlKiB0YWJsZSA9IHd0ZlRocmVh
ZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpOworICAgIGlmIChVTkxJS0VMWSghdGFibGUpKQor
ICAgICAgICB0YWJsZSA9IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKTsKKyAgICByZXR1cm4g
dGFibGUtPnRhYmxlKCk7CiB9CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvciB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53591</attachid>
            <date>2010-04-16 21:19:07 -0700</date>
            <delta_ts>2010-04-17 17:31:55 -0700</delta_ts>
            <desc>More useful patch, with build file changes – still for the build bot.</desc>
            <filename>patch.wtfThreadData.4.txt</filename>
            <type>text/plain</type>
            <size>44336</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzczKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDQtMTYgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1bmlxdWluZyB0YWJsZXMgdG8g
KG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBSZW1vdmUgQXRvbWljU3RyaW5n
J3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQgd2UgY2FuIG1vdmUKKyAg
ICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdURi4KKworICAgICAgICBXVEZU
aHJlYWREYXRhLmNwcC8uaCBhcmUgYmFzZWQgb24gVGhyZWFkR2xvYmFsRGF0YSBmcm9tIFdlYkNv
cmUuCisgICAgICAgIE1vdmVkIEpTQyAmIFdlYkNvcmUncyBzdHJpbmcgdW5pcXVpbmcgdGFibGVz
IHRvIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvQVBJU2hpbXMuaDoKKyAgICAgICAgKEpT
Qzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6OkFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKToKKyAg
ICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6On5BUElFbnRyeVNoaW1XaXRob3V0
TG9jayk6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrU2hpbTo6QVBJQ2FsbGJhY2tTaGltKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGltOjp+QVBJQ2FsbGJhY2tTaGltKToKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRh
eCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmdPbmNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5jcHA6IENvcGllZCBmcm9tIFdl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAuCisgICAgICAgIChXVEY6OldURlRo
cmVhZERhdGE6OldURlRocmVhZERhdGEpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjp+
V1RGVGhyZWFkRGF0YSk6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDogQ29waWVkIGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmguCisgICAgICAgIChXVEY6OldU
RlRocmVhZERhdGE6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6aW5pdGlhbGl6ZUlkZW50aWZpZXJUYWJsZSk6CisgICAgICAgIChXVEY6OldURlRocmVh
ZERhdGE6OmN1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWRE
YXRhOjpzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6cmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6d3RmVGhy
ZWFkRGF0YSk6CisKIDIwMTAtMDQtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG5vYm9keSwgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0FuZHJvaWQu
bWsJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0g
XAogCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAorCXd0Zi9XVEZUaHJlYWREYXRh
LmNwcCBcCiAJXAogCXd0Zi9UeXBlVHJhaXRzLmNwcCBcCiAJd3RmL2R0b2EuY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0FuZHJvaWQudjgud3RmLm1rCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRD
b3JlL0FuZHJvaWQudjgud3RmLm1rCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3Bw
IFwKIAl3dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCisJ
d3RmL1dURlRocmVhZERhdGEuY3BwIFwKIAlcCiAJd3RmL2FuZHJvaWQvTWFpblRocmVhZEFuZHJv
aWQuY3BwIFwKIAlcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNTc3NjUpCisr
KyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYg
KzI4NCw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0
Zi9WYWx1ZUNoZWNrLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL1ZlY3RvclRyYWl0cy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmggXAogCUph
dmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvZ29iamVjdC9HT3duUHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQ
dHIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDU3NzY1
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTYsOCArMTk2LDYgQEAgX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3RyaW5nRVBOU185
RQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNf
OUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183
SlNWYWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKLV9fWk4zSlNDMjVnX2lkZW50aWZpZXJUYWJs
ZVNwZWNpZmljRQotX19aTjNKU0MyOWNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljRXYKIF9f
Wk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2Jh
bERhdGFFCiBfX1pOM0pTQzNOYU5FCiBfX1pOM0pTQzRIZWFwMTRwcmltYXJ5SGVhcEVuZEV2CkBA
IC0zMTksNiArMzE3LDkgQEAgX19aTjNXVEYxMmNyZWF0ZVRocmVhZEVQRlB2UzBfRVMwX1BLYwog
X19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYKIF9fWk4z
V1RGMTJyYW5kb21OdW1iZXJFdgorX19aTjNXVEYxM1dURlRocmVhZERhdGExMHN0YXRpY0RhdGFF
CitfX1pOM1dURjEzV1RGVGhyZWFkRGF0YUMxRXYKK19fWk4zV1RGMTNXVEZUaHJlYWREYXRhRDFF
dgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0K
IF9fWk4zV1RGMTN0cnlGYXN0TWFsbG9jRW0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNiArNDM1LDggQEAKICAgICAgICAgICAgICd3dGYv
VmVjdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9WZWN0b3JUcmFpdHMuaCcsCiAgICAgICAgICAg
ICAnd3RmL1ZNVGFncy5oJywKKyAgICAgICAgICAgICd3dGYvV1RGVGhyZWFkRGF0YS5jcHAnLAor
ICAgICAgICAgICAgJ3d0Zi9XVEZUaHJlYWREYXRhLmgnLAogICAgICAgICAgICAgJ3d0Zi93aW4v
TWFpblRocmVhZFdpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi93eC9NYWluVGhyZWFkV3guY3Bw
JywKICAgICAgICAgICAgICd5YXJyL1JlZ2V4Q29tcGlsZXIuY3BwJywKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgd3RmL1RocmVhZGluZ05vbmUuY3BwIFwKICAgICB3dGYvVGhyZWFkaW5nLmNw
cCBcCiAgICAgd3RmL1R5cGVUcmFpdHMuY3BwIFwKKyAgICB3dGYvV1RGVGhyZWFkRGF0YS5jcHAg
XAogICAgIHd0Zi90ZXh0L0NTdHJpbmcuY3BwIFwKICAgICB3dGYvdW5pY29kZS9Db2xsYXRvckRl
ZmF1bHQuY3BwIFwKICAgICB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0FQSS9BUElTaGltcy5oCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0FQ
SS9BUElTaGltcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlIDx3dGYvV1RGVGhy
ZWFkRGF0YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzUsNyArMzYsNyBAQCBjbGFzcyBB
UElFbnRyeVNoaW1XaXRob3V0TG9jayB7CiBwcm90ZWN0ZWQ6CiAgICAgQVBJRW50cnlTaGltV2l0
aG91dExvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIHJlZ2lzdGVyVGhyZWFkKQog
ICAgICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQotICAgICAgICAsIG1fZW50cnlJZGVu
dGlmaWVyVGFibGUoc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLT5pZGVudGlm
aWVyVGFibGUpKQorICAgICAgICAsIG1fZW50cnlJZGVudGlmaWVyVGFibGUod3RmVGhyZWFkRGF0
YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
KSkKICAgICB7CiAgICAgICAgIGlmIChyZWdpc3RlclRocmVhZCkKICAgICAgICAgICAgIGdsb2Jh
bERhdGEtPmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJvdGVjdGVk
OgogICAgIH5BUElFbnRyeVNoaW1XaXRob3V0TG9jaygpCiAgICAgewogICAgICAgICBtX2dsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLSAgICAgICAgc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShtX2VudHJ5SWRlbnRpZmllclRhYmxlKTsKKyAgICAgICAgd3RmVGhyZWFkRGF0YSgp
LnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9lbnRyeUlkZW50aWZpZXJUYWJsZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtNzksMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2Ry
b3BBbGxMb2NrcyhleGVjKQogICAgICAgICAsIG1fZ2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0
YSgpKQogICAgIHsKLSAgICAgICAgcmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKCk7CisgICAg
ICAgIHd0ZlRocmVhZERhdGEoKS5yZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsKICAgICB9
CiAKICAgICB+QVBJQ2FsbGJhY2tTaGltKCkKICAgICB7Ci0gICAgICAgIHNldEN1cnJlbnRJZGVu
dGlmaWVyVGFibGUobV9nbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUpOworICAgICAgICB3dGZU
aHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX2dsb2JhbERhdGEtPmlkZW50
aWZpZXJUYWJsZSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGRnbyA9IGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRl
bnRpZmllclRhYmxlID0gc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLmlkZW50
aWZpZXJUYWJsZSk7CisgICAgSWRlbnRpZmllclRhYmxlKiBzYXZlZElkZW50aWZpZXJUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGEuaWRl
bnRpZmllclRhYmxlKTsKIAogICAgIC8vIE9uZSByZWZlcmVuY2UgaXMgaGVsZCBieSBKU0dsb2Jh
bE9iamVjdCwgYW5vdGhlciBhZGRlZCBieSBKU0dsb2JhbENvbnRleHRSZXRhaW4oKS4KICAgICBi
b29sIHJlbGVhc2luZ0NvbnRleHRHcm91cCA9IGdsb2JhbERhdGEucmVmQ291bnQoKSA9PSAyOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShKU0dsb2JhbENv
bnQKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKIAotICAgIHNldEN1cnJlbnRJZGVudGlmaWVy
VGFibGUoc2F2ZWRJZGVudGlmaWVyVGFibGUpOworICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJy
ZW50SWRlbnRpZmllclRhYmxlKHNhdmVkSWRlbnRpZmllclRhYmxlKTsKIH0KIAogSlNPYmplY3RS
ZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
CShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTY0LDYgKzU2NCwxNCBAQAogCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVmVjdG9yVHJhaXRzLmgiDQogCQkJPg0KIAkJPC9GaWxl
Pg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxXVEZUaHJlYWREYXRhLmNw
cCINCisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
d3RmXFdURlRocmVhZERhdGEuaCINCisJCQk+DQorCQk8L0ZpbGU+DQogCTwvRmlsZXM+DQogCTxH
bG9iYWxzPg0KIAk8L0dsb2JhbHM+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1Nzc2
NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsOCBAQAogCQk4NkNDODVBMzBFRTc5
Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVBMjBFRTc5Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAg
Ki87IH07CiAJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVD
MzBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkND
RUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENv
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NkQwOEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQwOEQ1MTExNzkzNjEzMDA2RTVF
RDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CisJCTg2RDA4RDU0MTE3OTM2MTMwMDZFNUVE
MCAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQwOEQ1MjExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2RDNCMkMz
MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgKi87IH07CiAJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLzsgfTsKIAkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMx
MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87
IH07CkBAIC03NDEsNiArNzQzLDggQEAKIAkJODZDQzg1QTIwRUU3OUI3NDAwMjg4NjgyIC8qIEpJ
VENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ2FsbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4
MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODZEMDhENTExMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDA4RDUyMTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJl
YWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3
IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjJD
MDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50
UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXJX
aXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg0LDYg
KzEzODgsOCBAQAogCQkJCTY1OTJDMzE2MDk4QjdERTEwMDAzRDRGNiAvKiBWZWN0b3IuaCAqLywK
IAkJCQk2NTkyQzMxNzA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJ
OTZERDczNzgwRjlEQTMxMDAwMjdGQkNDIC8qIFZNVGFncy5oICovLAorCQkJCTg2RDA4RDUxMTE3
OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKKwkJCQk4NkQwOEQ1MjExNzkz
NjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjAzNSw2ICsyMDQxLDcgQEAKIAkJCQk4
NjU2NTc0MzExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZEMDhENTQxMTc5MzYxMzAw
NkU1RUQwIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ3OCw2ICsyNDg1
LDcgQEAKIAkJCQlFMUVGNzlBQTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjU2NTc0MjExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFw
UmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkQwOEQ1MzExNzkzNjEzMDA2RTVF
RDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKQogewogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwotICAgIEFTU0VSVChleGVjLT5n
bG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7
CisgICAgQVNTRVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhy
ZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3Jh
bUV4ZWN1dGFibGU+IHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNv
dXJjZSk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7
CkBAIC00OSw3ICs1MCw3IEBAIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVj
LCAKIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluJiBzY29w
ZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewog
ICAgIEpTTG9jayBsb2NrKGV4ZWMpOwotICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRl
bnRpZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgQVNTRVJUKGV4
ZWMtPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJl
bnRJZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3JhbUV4ZWN1dGFibGU+IHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShleGVjLCBzY29wZUNoYWluLm5vZGUoKSk7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDU3NzY1
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAKQEAg
LTIyOCw3ICsyMjksNyBAQCBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gSWRlbnRpZmllcjo6YWRk
CiAKIHZvaWQgSWRlbnRpZmllcjo6cmVtb3ZlKFVTdHJpbmc6OlJlcCogcikKIHsKLSAgICBjdXJy
ZW50SWRlbnRpZmllclRhYmxlKCktPnJlbW92ZShyKTsKKyAgICB3dGZUaHJlYWREYXRhKCkuY3Vy
cmVudElkZW50aWZpZXJUYWJsZSgpLT5yZW1vdmUocik7CiB9CiAgICAgCiBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB2YWx1ZSkKQEAgLTI1Miw3
ICsyNTMsNyBAQCB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudElkZW50aWZpZXJUCiB7CiAg
ICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZpZXIgdGFibGUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB0
aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRoZQogICAgIC8vIGdsb2JhbERhdGEncyBpZGVudGlmaWVy
IHRhYmxlLgotICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aWRlbnRp
ZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0
YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRpZmllcjo6Y2hl
Y2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI2OSwzMCArMjcw
LDQgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVAogCiAjZW5kaWYK
IAotVGhyZWFkU3BlY2lmaWM8VGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YT4qIGdfaWRlbnRpZmll
clRhYmxlU3BlY2lmaWMgPSAwOwotCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQot
Ci1wdGhyZWFkX29uY2VfdCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpY09uY2UgPSBQVEhS
RUFEX09OQ0VfSU5JVDsKLXN0YXRpYyB2b2lkIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmlj
Q2FsbGJhY2soKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyk7Ci0g
ICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRJ
ZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotdm9pZCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVj
aWZpYygpCi17Ci0gICAgcHRocmVhZF9vbmNlKCZjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZp
Y09uY2UsIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljQ2FsbGJhY2spOwotICAgIEFTU0VS
VChnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKTsKLX0KLQotI2Vsc2UgCi0KLXZvaWQgY3JlYXRl
SWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVyVGFi
bGVTcGVjaWZpYyk7Ci0gICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJlYWRT
cGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotCi0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2
aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQwLDY3ICsxNDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBJZGVu
dGlmaWVyVGFibGUqIGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpOwogICAgIHZvaWQgZGVsZXRlSWRl
bnRpZmllclRhYmxlKElkZW50aWZpZXJUYWJsZSopOwogCi0gICAgc3RydWN0IFRocmVhZElkZW50
aWZpZXJUYWJsZURhdGEgewotICAgICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhKCkKLSAg
ICAgICAgICAgIDogZGVmYXVsdElkZW50aWZpZXJUYWJsZSgwKQotICAgICAgICAgICAgLCBjdXJy
ZW50SWRlbnRpZmllclRhYmxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIElk
ZW50aWZpZXJUYWJsZSogZGVmYXVsdElkZW50aWZpZXJUYWJsZTsKLSAgICAgICAgSWRlbnRpZmll
clRhYmxlKiBjdXJyZW50SWRlbnRpZmllclRhYmxlOwotICAgIH07Ci0KLSAgICBleHRlcm4gV1RG
OjpUaHJlYWRTcGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPiogZ19pZGVudGlmaWVy
VGFibGVTcGVjaWZpYzsKLSAgICB2b2lkIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7
Ci0KLSAgICBpbmxpbmUgSWRlbnRpZmllclRhYmxlKiBkZWZhdWx0SWRlbnRpZmllclRhYmxlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKLSAgICAgICAg
ICAgIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7Ci0gICAgICAgIFRocmVhZElkZW50
aWZpZXJUYWJsZURhdGEmIGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7Ci0KLSAg
ICAgICAgcmV0dXJuIGRhdGEuZGVmYXVsdElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgdm9pZCBzZXREZWZhdWx0SWRlbnRpZmllclRhYmxlKElkZW50aWZpZXJUYWJsZSogaWRl
bnRpZmllclRhYmxlKQotICAgIHsKLSAgICAgICAgaWYgKCFnX2lkZW50aWZpZXJUYWJsZVNwZWNp
ZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKTsKLSAgICAg
ICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9ICoqZ19pZGVudGlmaWVyVGFibGVT
cGVjaWZpYzsKLQotICAgICAgICBkYXRhLmRlZmF1bHRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlm
aWVyVGFibGU7Ci0gICAgfQotCi0gICAgaW5saW5lIElkZW50aWZpZXJUYWJsZSogY3VycmVudElk
ZW50aWZpZXJUYWJsZSgpCi0gICAgewotICAgICAgICBpZiAoIWdfaWRlbnRpZmllclRhYmxlU3Bl
Y2lmaWMpCi0gICAgICAgICAgICBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOwotICAg
ICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhJiBkYXRhID0gKipnX2lkZW50aWZpZXJUYWJs
ZVNwZWNpZmljOwotCi0gICAgICAgIHJldHVybiBkYXRhLmN1cnJlbnRJZGVudGlmaWVyVGFibGU7
Ci0gICAgfQotCi0gICAgaW5saW5lIElkZW50aWZpZXJUYWJsZSogc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJsZSkKLSAgICB7Ci0gICAgICAg
IGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKLSAgICAgICAgICAgIGNyZWF0ZUlkZW50
aWZpZXJUYWJsZVNwZWNpZmljKCk7Ci0gICAgICAgIFRocmVhZElkZW50aWZpZXJUYWJsZURhdGEm
IGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7Ci0KLSAgICAgICAgSWRlbnRpZmll
clRhYmxlKiBvbGRJZGVudGlmaWVyVGFibGUgPSBkYXRhLmN1cnJlbnRJZGVudGlmaWVyVGFibGU7
Ci0gICAgICAgIGRhdGEuY3VycmVudElkZW50aWZpZXJUYWJsZSA9IGlkZW50aWZpZXJUYWJsZTsK
LSAgICAgICAgcmV0dXJuIG9sZElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
dm9pZCByZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKQotICAgIHsKLSAgICAgICAgaWYgKCFn
X2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRh
YmxlU3BlY2lmaWMoKTsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9
ICoqZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYzsKLQotICAgICAgICBkYXRhLmN1cnJlbnRJZGVu
dGlmaWVyVGFibGUgPSBkYXRhLmRlZmF1bHRJZGVudGlmaWVyVGFibGU7Ci0gICAgfQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJfaApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiA1Nzc2
NSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKQEAgLTQ4
LDYgKzQ5LDcgQEAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRpbgogc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQogewogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOworICAgIHd0ZlRocmVhZERhdGEoKTsKICAgICBpbml0aWFsaXplVVN0cmlu
ZygpOwogICAgIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycygpOwogI2lmIEVOQUJMRShKU0NfTVVM
VElQTEVfVEhSRUFEUykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3
dGYvV1RGVGhyZWFkRGF0YS5oPgogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTIwMyw4ICsyMDQsNyBAQCBQYXNzUmVmUHRy
PEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjCiBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGUoKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
IG5ldyBKU0dsb2JhbERhdGEoZmFsc2UpOwotICAgIHNldERlZmF1bHRJZGVudGlmaWVyVGFibGUo
Z2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKLSAgICBzZXRDdXJyZW50SWRlbnRpZmllclRh
YmxlKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLmlu
aXRpYWxpemVJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKICAg
ICByZXR1cm4gYWRvcHRSZWYoZ2xvYmFsRGF0YSk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9XVEZUaHJlYWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5jcHAJKHJldmlzaW9uIDU3NzY1KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuY3BwOjU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRo
cmVhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVk
ZSAiVGhyZWFkVGltZXJzLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKKyNpZiBV
U0UoSUNVX1VOSUNPREUpCisjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJUZXh0Q29kZWNNYWMuaCIKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgordXNpbmcgbmFtZXNwYWNlIFdURjsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoV09SS0VSUykKK1RocmVhZFNwZWNpZmljPFRo
cmVhZEdsb2JhbERhdGE+KiBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhOworI2Vsc2UKK1Ro
cmVhZEdsb2JhbERhdGEqIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CisjZW5kaWYKKwor
VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCisgICAgOiBtX2F0b21pY1N0cmlu
Z1RhYmxlKG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwqPikKKyAgICAsIG1fZXZlbnROYW1lcyhuZXcg
RXZlbnROYW1lcykKKyAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRUaW1lcnMpCisjaWZu
ZGVmIE5ERUJVRworICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCisjZW5kaWYK
KyNpZiBVU0UoSUNVX1VOSUNPREUpCisgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShuZXcgSUNV
Q29udmVydGVyV3JhcHBlcikKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fY2Fj
aGVkQ29udmVydGVyVEVDKG5ldyBURUNDb252ZXJ0ZXJXcmFwcGVyKQorI2VuZGlmCit7CisgICAg
Ly8gU3RyaW5nSW1wbDo6ZW1wdHkoKSBkb2VzIG5vdCBjb25zdHJ1Y3QgaXRzIHN0YXRpYyBzdHJp
bmcgaW4gYSB0aHJlYWRzYWZlIGZhc2hpb24sCisgICAgLy8gc28gZW5zdXJlIGl0IGhhcyBiZWVu
IGluaXRpYWxpemVkIGZyb20gaGVyZS4KKyAgICAvLworICAgIC8vIFRoaXMgY29uc3RydWN0b3Ig
d2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2Fs
bGVkIG9uCisgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
cGVyIHRocmVhZC4KKyAgICBTdHJpbmdJbXBsOjplbXB0eSgpOworfQorCitUaHJlYWRHbG9iYWxE
YXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRlbGV0
ZSBtX2NhY2hlZENvbnZlcnRlclRFQzsKKyNlbmRpZgorI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAg
ICBkZWxldGUgbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CisjZW5kaWYKKyAgICBkZWxldGUgbV9ldmVu
dE5hbWVzOworICAgIGRlbGV0ZSBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgIGRlbGV0ZSBtX3Ro
cmVhZFRpbWVyczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL1dURlRocmVhZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9XVEZUaHJlYWREYXRhLmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvV1RGVGhyZWFkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDY4ICsyNSwyOCBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgot
I2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKLSNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KK25hbWVzcGFjZSBXVEYgewogCi0jaWYgVVNFKElDVV9V
TklDT0RFKQotI2luY2x1ZGUgIlRleHRDb2RlY0lDVS5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShNQUMpCi0jaW5jbHVkZSAiVGV4dENvZGVjTWFjLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShX
T1JLRVJTKQotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi1UaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9i
YWxEYXRhPiogVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRB
X01VTFRJVEhSRUFERUQKK1RocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhOwogI2Vsc2UKLVRocmVhZEdsb2JhbERhdGEqIFRocmVhZEdsb2JhbERh
dGE6OnN0YXRpY0RhdGE7CitXVEZUaHJlYWREYXRhKiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRh
OwogI2VuZGlmCiAKLVRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDog
bV9hdG9taWNTdHJpbmdUYWJsZShuZXcgSGFzaFNldDxTdHJpbmdJbXBsKj4pCi0gICAgLCBtX2V2
ZW50TmFtZXMobmV3IEV2ZW50TmFtZXMpCi0gICAgLCBtX3RocmVhZFRpbWVycyhuZXcgVGhyZWFk
VGltZXJzKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVh
ZCgpKQotI2VuZGlmCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgICwgbV9jYWNoZWRDb252ZXJ0
ZXJJQ1UobmV3IElDVUNvbnZlcnRlcldyYXBwZXIpCi0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgLCBtX2NhY2hlZENvbnZlcnRlclRFQyhuZXcgVEVDQ29udmVydGVyV3JhcHBlcikKLSNl
bmRpZgorV1RGVGhyZWFkRGF0YTo6V1RGVGhyZWFkRGF0YSgpCisgICAgOiBtX2F0b21pY1N0cmlu
Z1RhYmxlKDApCisgICAgLCBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcigwKQorICAgICwg
bV9kZWZhdWx0SWRlbnRpZmllclRhYmxlKDApCisgICAgLCBtX2N1cnJlbnRJZGVudGlmaWVyVGFi
bGUoMCkKIHsKLSAgICAvLyBTdHJpbmdJbXBsOjplbXB0eSgpIGRvZXMgbm90IGNvbnN0cnVjdCBp
dHMgc3RhdGljIHN0cmluZyBpbiBhIHRocmVhZHNhZmUgZmFzaGlvbiwKLSAgICAvLyBzbyBlbnN1
cmUgaXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgIC8vCi0gICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJl
Zm9yZSBiZWluZyBjYWxsZWQgb24KLSAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMgb25s
eSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkLgotICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAK
LVRocmVhZEdsb2JhbERhdGE6On5UaHJlYWRHbG9iYWxEYXRhKCkKK1dURlRocmVhZERhdGE6On5X
VEZUaHJlYWREYXRhKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgZGVsZXRlIG1fY2FjaGVk
Q29udmVydGVyVEVDOwotI2VuZGlmCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgIGRlbGV0ZSBt
X2NhY2hlZENvbnZlcnRlcklDVTsKLSNlbmRpZgotICAgIGRlbGV0ZSBtX2V2ZW50TmFtZXM7Ci0g
ICAgZGVsZXRlIG1fYXRvbWljU3RyaW5nVGFibGU7Ci0gICAgZGVsZXRlIG1fdGhyZWFkVGltZXJz
OworICAgIGlmIChtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcikKKyAgICAgICAgbV9hdG9t
aWNTdHJpbmdUYWJsZURlc3RydWN0b3IobV9hdG9taWNTdHJpbmdUYWJsZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkocmV2
aXNpb24gNTc3NjUpCShmcm9tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOjU3
NzY1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFRocmVhZEdsb2JhbERh
dGFfaAorI2RlZmluZSBUaHJlYWRHbG9iYWxEYXRhX2gKKworI2luY2x1ZGUgIlN0cmluZ0hhc2gu
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+Cit1
c2luZyBXVEY6OlRocmVhZFNwZWNpZmljOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworICAgIGNsYXNzIEV2ZW50TmFtZXM7CisgICAgc3RydWN0IElDVUNvbnZlcnRlcldyYXBwZXI7
CisgICAgc3RydWN0IFRFQ0NvbnZlcnRlcldyYXBwZXI7CisgICAgY2xhc3MgVGhyZWFkVGltZXJz
OworCisgICAgY2xhc3MgVGhyZWFkR2xvYmFsRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBUaHJlYWRHbG9iYWxEYXRhKCk7CisgICAgICAgIH5UaHJlYWRH
bG9iYWxEYXRhKCk7CisKKyAgICAgICAgRXZlbnROYW1lcyYgZXZlbnROYW1lcygpIHsgcmV0dXJu
ICptX2V2ZW50TmFtZXM7IH0KKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIGF0b21pY1N0
cmluZ1RhYmxlKCkgeyByZXR1cm4gKm1fYXRvbWljU3RyaW5nVGFibGU7IH0KKyAgICAgICAgVGhy
ZWFkVGltZXJzJiB0aHJlYWRUaW1lcnMoKSB7IHJldHVybiAqbV90aHJlYWRUaW1lcnM7IH0KKwor
I2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICAgICAgSUNVQ29udmVydGVyV3JhcHBlciYgY2FjaGVk
Q29udmVydGVySUNVKCkgeyByZXR1cm4gKm1fY2FjaGVkQ29udmVydGVySUNVOyB9CisjZW5kaWYK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgVEVDQ29udmVydGVyV3JhcHBlciYgY2FjaGVk
Q29udmVydGVyVEVDKCkgeyByZXR1cm4gKm1fY2FjaGVkQ29udmVydGVyVEVDOyB9CisjZW5kaWYK
KworICAgIHByaXZhdGU6CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+KiBtX2F0b21pY1N0
cmluZ1RhYmxlOworICAgICAgICBFdmVudE5hbWVzKiBtX2V2ZW50TmFtZXM7CisgICAgICAgIFRo
cmVhZFRpbWVycyogbV90aHJlYWRUaW1lcnM7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGJv
b2wgbV9pc01haW5UaHJlYWQ7CisjZW5kaWYKKworI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAgICAg
ICAgSUNVQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgVEVDQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRD
b252ZXJ0ZXJURUM7CisjZW5kaWYKKworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgICAgICBzdGF0
aWMgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT4qIHN0YXRpY0RhdGE7CisjZWxzZQor
ICAgICAgICBzdGF0aWMgVGhyZWFkR2xvYmFsRGF0YSogc3RhdGljRGF0YTsKKyNlbmRpZgorICAg
ICAgICBmcmllbmQgVGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOworICAgIH07
CisKK2lubGluZSBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxEYXRhKCkgCit7CisgICAg
Ly8gRklYTUU6IFdvcmtlcnMgYXJlIG5vdCBuZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRo
YXQgbWFrZSBwZXItdGhyZWFkIGdsb2JhbCBkYXRhIG5lY2Vzc2FyeS4KKyAgICAvLyBXZSBuZWVk
IHRvIGNoZWNrIGZvciBlLmcuIGRhdGFiYXNlIG9iamVjdHMgbWFuaXB1bGF0aW5nIHN0cmluZ3Mg
b24gc2Vjb25kYXJ5IHRocmVhZHMuCisKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICAvLyBUaHJl
YWRHbG9iYWxEYXRhIGlzIHVzZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3Np
Ymx5IGJlIHVzZWQgb24gc2Vjb25kYXJ5IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5
bmNocm9uaXphdGlvbiBoZXJlLgorICAgIGlmICghVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0
YSkKKyAgICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVj
aWZpYzxUaHJlYWRHbG9iYWxEYXRhPjsKKyAgICByZXR1cm4gKipUaHJlYWRHbG9iYWxEYXRhOjpz
dGF0aWNEYXRhOworI2Vsc2UKKyAgICBpZiAoIVRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEp
IHsKKyAgICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSA9IHN0YXRpY19jYXN0PFRo
cmVhZEdsb2JhbERhdGEqPihmYXN0TWFsbG9jKHNpemVvZihUaHJlYWRHbG9iYWxEYXRhKSkpOwor
ICAgICAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkgdXNlcyBz
dGF0aWNEYXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1cCB0aGUgbWVtb3J5IGJlZm9yZSBpbnZva2lu
ZyBpdC4KKyAgICAgICAgbmV3IChUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhKSBUaHJlYWRH
bG9iYWxEYXRhOworICAgIH0KKyAgICByZXR1cm4gKlRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0Rh
dGE7CisjZW5kaWYKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFRocmVhZEdsb2JhbERhdGFfaApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1dURlRocmVhZERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5oCShy
ZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDg5ICsyNCwxMTYgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBUaHJl
YWRHbG9iYWxEYXRhX2gKLSNkZWZpbmUgVGhyZWFkR2xvYmFsRGF0YV9oCisjaWZuZGVmIFdURlRo
cmVhZERhdGFfaAorI2RlZmluZSBXVEZUaHJlYWREYXRhX2gKIAotI2luY2x1ZGUgIlN0cmluZ0hh
c2guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKLSNpZiBFTkFCTEUoV09SS0VSUykKKy8v
IFRoaXMgd2FzIEVOQUJMRShXT1JLRVJTKSBpbiBXZWJDb3JlLCBidXQgdGhpcyBpcyBub3QgZGVm
aW5lZCB3aGVuIGNvbXBpbGluZyBKU0MuCisvLyBIb3dldmVyIHRoaXMgY2hlY2sgd2FzIG5vdCBj
b3JyZWN0IGFueXdheSwgcmUgdGhpcyBjb21tZW50OgorLy8gICAgLy8gRklYTUU6IFdvcmtlcnMg
YXJlIG5vdCBuZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRoYXQgbWFrZSBwZXItdGhyZWFk
IGdsb2JhbCBkYXRhIG5lY2Vzc2FyeS4KKy8vICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGUu
Zy4gZGF0YWJhc2Ugb2JqZWN0cyBtYW5pcHVsYXRpbmcgc3RyaW5ncyBvbiBzZWNvbmRhcnkgdGhy
ZWFkcy4KKy8vIEFsd2F5cyBlbmFibGluZyB0aGlzIGlzIHNhZmUsIGFuZCBzaG91bGQgYmUgYSBi
ZXR0ZXIgb3B0aW9uIHVudGlsIHdlIGNhbiBjb21lIHVwCisvLyB3aXRoIGEgYmV0dGVyIGRlZmlu
ZS4KKyNkZWZpbmUgV1RGVEhSRUFEREFUQV9NVUxUSVRIUkVBREVEIDEKKworI2lmIFdURlRIUkVB
RERBVEFfTVVMVElUSFJFQURFRAogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLXVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAjZW5k
aWYKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBJZGVudGlmaWVyVGFibGU7Cit9CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEF0b21pY1N0cmluZ1RhYmxlOworfQogCi0gICAgY2xhc3Mg
RXZlbnROYW1lczsKLSAgICBzdHJ1Y3QgSUNVQ29udmVydGVyV3JhcHBlcjsKLSAgICBzdHJ1Y3Qg
VEVDQ29udmVydGVyV3JhcHBlcjsKLSAgICBjbGFzcyBUaHJlYWRUaW1lcnM7Ci0KLSAgICBjbGFz
cyBUaHJlYWRHbG9iYWxEYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIFRocmVhZEdsb2JhbERhdGEoKTsKLSAgICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsK
LQotICAgICAgICBFdmVudE5hbWVzJiBldmVudE5hbWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1l
czsgfQotICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7
IHJldHVybiAqbV9hdG9taWNTdHJpbmdUYWJsZTsgfQotICAgICAgICBUaHJlYWRUaW1lcnMmIHRo
cmVhZFRpbWVycygpIHsgcmV0dXJuICptX3RocmVhZFRpbWVyczsgfQordHlwZWRlZiB2b2lkICgq
QXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKShXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZSop
OwogCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyJiBj
YWNoZWRDb252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7IH0KLSNl
bmRpZgorbmFtZXNwYWNlIFdURiB7CiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFRFQ0Nv
bnZlcnRlcldyYXBwZXImIGNhY2hlZENvbnZlcnRlclRFQygpIHsgcmV0dXJuICptX2NhY2hlZENv
bnZlcnRlclRFQzsgfQotI2VuZGlmCitjbGFzcyBXVEZUaHJlYWREYXRhIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBXVEZUaHJlYWREYXRhKCk7CisgICAgfldURlRocmVhZERh
dGEoKTsKKworICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlKiBhdG9taWNTdHJpbmdUYWJs
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICB9CiAK
LSAgICBwcml2YXRlOgotICAgICAgICBIYXNoU2V0PFN0cmluZ0ltcGwqPiogbV9hdG9taWNTdHJp
bmdUYWJsZTsKLSAgICAgICAgRXZlbnROYW1lcyogbV9ldmVudE5hbWVzOwotICAgICAgICBUaHJl
YWRUaW1lcnMqIG1fdGhyZWFkVGltZXJzOworI2lmIFVTRShKU0MpCisgICAgdm9pZCBpbml0aWFs
aXplSWRlbnRpZmllclRhYmxlKEpTQzo6SWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUp
CisgICAgeworICAgICAgICBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlmaWVyVGFi
bGU7CisgICAgICAgIG1fY3VycmVudElkZW50aWZpZXJUYWJsZSA9IGlkZW50aWZpZXJUYWJsZTsK
KyAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGJvb2wgbV9pc01haW5UaHJlYWQ7Ci0j
ZW5kaWYKKyAgICBKU0M6OklkZW50aWZpZXJUYWJsZSogY3VycmVudElkZW50aWZpZXJUYWJsZSgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJyZW50SWRlbnRpZmllclRhYmxlOworICAgIH0K
KworICAgIEpTQzo6SWRlbnRpZmllclRhYmxlKiBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKEpT
Qzo6SWRlbnRpZmllclRhYmxlKiBpZGVudGlmaWVyVGFibGUpCisgICAgeworICAgICAgICBKU0M6
OklkZW50aWZpZXJUYWJsZSogb2xkSWRlbnRpZmllclRhYmxlID0gbV9jdXJyZW50SWRlbnRpZmll
clRhYmxlOworICAgICAgICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlmaWVyVGFi
bGU7CisgICAgICAgIHJldHVybiBvbGRJZGVudGlmaWVyVGFibGU7CisgICAgfQogCi0jaWYgVVNF
KElDVV9VTklDT0RFKQotICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZl
cnRlcklDVTsKKyAgICB2b2lkIHJlc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZSgpCisgICAgewor
ICAgICAgICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBtX2RlZmF1bHRJZGVudGlmaWVyVGFi
bGU7CisgICAgfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIFRFQ0NvbnZl
cnRlcldyYXBwZXIqIG1fY2FjaGVkQ29udmVydGVyVEVDOworcHJpdmF0ZToKKyAgICBXZWJDb3Jl
OjpBdG9taWNTdHJpbmdUYWJsZSogbV9hdG9taWNTdHJpbmdUYWJsZTsKKyAgICBBdG9taWNTdHJp
bmdUYWJsZURlc3RydWN0b3IgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3I7CisKKyNpZiBV
U0UoSlNDKQorICAgIEpTQzo6SWRlbnRpZmllclRhYmxlKiBtX2RlZmF1bHRJZGVudGlmaWVyVGFi
bGU7CisgICAgSlNDOjpJZGVudGlmaWVyVGFibGUqIG1fY3VycmVudElkZW50aWZpZXJUYWJsZTsK
ICNlbmRpZgogCi0jaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgICAgIHN0YXRpYyBUaHJlYWRTcGVj
aWZpYzxUaHJlYWRHbG9iYWxEYXRhPiogc3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRBX01V
TFRJVEhSRUFERUQKKyAgICBzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V1RGVGhyZWFkRGF0YT4qIHN0
YXRpY0RhdGE7CiAjZWxzZQotICAgICAgICBzdGF0aWMgVGhyZWFkR2xvYmFsRGF0YSogc3RhdGlj
RGF0YTsKKyAgICBzdGF0aWMgV1RGVGhyZWFkRGF0YSogc3RhdGljRGF0YTsKICNlbmRpZgotICAg
ICAgICBmcmllbmQgVGhyZWFkR2xvYmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpOwotICAgIH07
CisgICAgZnJpZW5kIFdURlRocmVhZERhdGEmIHd0ZlRocmVhZERhdGEoKTsKKyAgICBmcmllbmQg
Y2xhc3MgV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU7Cit9OwogCi1pbmxpbmUgVGhyZWFkR2xv
YmFsRGF0YSYgdGhyZWFkR2xvYmFsRGF0YSgpIAoraW5saW5lIFdURlRocmVhZERhdGEmIHd0ZlRo
cmVhZERhdGEoKQogewotICAgIC8vIEZJWE1FOiBXb3JrZXJzIGFyZSBub3QgbmVjZXNzYXJpbHkg
dGhlIG9ubHkgZmVhdHVyZSB0aGF0IG1ha2UgcGVyLXRocmVhZCBnbG9iYWwgZGF0YSBuZWNlc3Nh
cnkuCi0gICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgZS5nLiBkYXRhYmFzZSBvYmplY3RzIG1h
bmlwdWxhdGluZyBzdHJpbmdzIG9uIHNlY29uZGFyeSB0aHJlYWRzLgotCi0jaWYgRU5BQkxFKFdP
UktFUlMpCi0gICAgLy8gVGhyZWFkR2xvYmFsRGF0YSBpcyB1c2VkIG9uIG1haW4gdGhyZWFkIGJl
Zm9yZSBpdCBjb3VsZCBwb3NzaWJseSBiZSB1c2VkIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0aGVy
ZSBpcyBubyBuZWVkIGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KLSAgICBpZiAoIVRocmVhZEds
b2JhbERhdGE6OnN0YXRpY0RhdGEpCi0gICAgICAgIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0Rh
dGEgPSBuZXcgVGhyZWFkU3BlY2lmaWM8VGhyZWFkR2xvYmFsRGF0YT47Ci0gICAgcmV0dXJuICoq
VGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRBX01VTFRJVEhS
RUFERUQKKyAgICAvLyBXUlQgV2ViQ29yZToKKyAgICAvLyAgICBXVEZUaHJlYWREYXRhIGlzIHVz
ZWQgb24gbWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQKKyAgICAv
LyAgICBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Igc3luY2hyb25p
emF0aW9uIGhlcmUuCisgICAgLy8gV1JUIEphdmFTY3JpcHRDb3JlOgorICAgIC8vICAgIHd0ZlRo
cmVhZERhdGEoKSBpcyBpbml0aWFsbHkgY2FsbGVkIGZyb20gaW5pdGlhbGl6ZVRocmVhZGluZygp
LCBlbnN1cmluZworICAgIC8vICAgIHRoaXMgaXMgaW5pdGlhbGx5IGNhbGxlZCBpbiBhIHB0aHJl
YWRfb25jZSBsb2NrZWQgY29udGV4dC4KKyAgICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0Rh
dGEpCisgICAgICAgIFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEgPSBuZXcgVGhyZWFkU3BlY2lm
aWM8V1RGVGhyZWFkRGF0YT47CisgICAgcmV0dXJuICoqV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0
YTsKICNlbHNlCi0gICAgaWYgKCFUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhKSB7Ci0gICAg
ICAgIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGEgPSBzdGF0aWNfY2FzdDxUaHJlYWRHbG9i
YWxEYXRhKj4oZmFzdE1hbGxvYyhzaXplb2YoVGhyZWFkR2xvYmFsRGF0YSkpKTsKLSAgICAgICAg
Ly8gVGhyZWFkR2xvYmFsRGF0YSBjb25zdHJ1Y3RvciBpbmRpcmVjdGx5IHVzZXMgc3RhdGljRGF0
YSwgc28gd2UgbmVlZCB0byBzZXQgdXAgdGhlIG1lbW9yeSBiZWZvcmUgaW52b2tpbmcgaXQuCi0g
ICAgICAgIG5ldyAoVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSkgVGhyZWFkR2xvYmFsRGF0
YTsKKyAgICBpZiAoIVdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpIHsKKyAgICAgICAgV1RGVGhy
ZWFkRGF0YTo6c3RhdGljRGF0YSA9IHN0YXRpY19jYXN0PFdURlRocmVhZERhdGEqPihmYXN0TWFs
bG9jKHNpemVvZihXVEZUaHJlYWREYXRhKSkpOworICAgICAgICAvLyBXVEZUaHJlYWREYXRhIGNv
bnN0cnVjdG9yIGluZGlyZWN0bHkgdXNlcyBzdGF0aWNEYXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1
cCB0aGUgbWVtb3J5IGJlZm9yZSBpbnZva2luZyBpdC4KKyAgICAgICAgbmV3IChXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhKSBXVEZUaHJlYWREYXRhOwogICAgIH0KLSAgICByZXR1cm4gKlRocmVh
ZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CisgICAgcmV0dXJuICpXVEZUaHJlYWREYXRhOjpzdGF0
aWNEYXRhOwogI2VuZGlmCiB9Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRp
ZiAvLyBUaHJlYWRHbG9iYWxEYXRhX2gKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6
OldURlRocmVhZERhdGE7Cit1c2luZyBXVEY6Ond0ZlRocmVhZERhdGE7CisKKyNlbmRpZiAvLyBX
VEZUaHJlYWREYXRhX2gKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzczKQorKysgSmF2YVNj
cmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAt
MDQtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1bmlx
dWluZyB0YWJsZXMgdG8gKG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBSZW1v
dmUgQXRvbWljU3RyaW5nJ3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQg
d2UgY2FuIG1vdmUKKyAgICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdURi4K
KworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmg6IEFkZGVk
LgorICAgICAgICAqIEpTVXRpbHMuY3BwOiBVcGRhdGUgCisgICAgICAgIChKU0dsdWVBUElFbnRy
eTo6SlNHbHVlQVBJRW50cnkpOgorICAgICAgICAoSlNHbHVlQVBJRW50cnk6On5KU0dsdWVBUElF
bnRyeSk6CisgICAgICAgIChKU0dsdWVBUElDYWxsYmFjazo6SlNHbHVlQVBJQ2FsbGJhY2spOgor
ICAgICAgICAoSlNHbHVlQVBJQ2FsbGJhY2s6On5KU0dsdWVBUElDYWxsYmFjayk6CisKIDIwMTAt
MDMtMzEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgpJbmRleDogSmF2YVNjcmlwdEdsdWUvSlNVdGls
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAJKHJldmlzaW9u
IDU3NzY1KQorKysgSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJVc2VyT2JqZWN0SW1wLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dURlRocmVhZERhdGEuaD4K
IAogc3RydWN0IE9iamVjdEltcExpc3QgewogICAgIEpTT2JqZWN0KiBpbXA7CkBAIC00MjcsMjMg
KzQyOCwyMyBAQCBFeGVjU3RhdGUqIGdldFRocmVhZEdsb2JhbEV4ZWNTdGF0ZSgpCiAKIEpTR2x1
ZUFQSUVudHJ5OjpKU0dsdWVBUElFbnRyeSgpCiAgICAgOiBtX2xvY2soTG9ja0ZvclJlYWwpCi0g
ICAgLCBtX3N0b3JlZElkZW50aWZpZXJUYWJsZShjdXJyZW50SWRlbnRpZmllclRhYmxlKCkpCisg
ICAgLCBtX3N0b3JlZElkZW50aWZpZXJUYWJsZSh3dGZUaHJlYWREYXRhKCkuY3VycmVudElkZW50
aWZpZXJUYWJsZSgpKQogewotICAgIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhyZWFk
R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJUYWJs
ZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhy
ZWFkR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJU
YWJsZSk7CiB9CiAKIEpTR2x1ZUFQSUVudHJ5Ojp+SlNHbHVlQVBJRW50cnkoKQogewotICAgIHNl
dEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9zdG9yZWRJZGVudGlmaWVyVGFibGUpOworICAgIHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKG1fc3RvcmVkSWRlbnRpZmll
clRhYmxlKTsKIH0KIAogSlNHbHVlQVBJQ2FsbGJhY2s6OkpTR2x1ZUFQSUNhbGxiYWNrKEV4ZWNT
dGF0ZSogZXhlYykKICAgICA6IG1fZHJvcExvY2tzKGV4ZWMpCiB7Ci0gICAgcmVzZXRDdXJyZW50
SWRlbnRpZmllclRhYmxlKCk7CisgICAgd3RmVGhyZWFkRGF0YSgpLnJlc2V0Q3VycmVudElkZW50
aWZpZXJUYWJsZSgpOwogfQogCiBKU0dsdWVBUElDYWxsYmFjazo6fkpTR2x1ZUFQSUNhbGxiYWNr
KCkKIHsKLSAgICBzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdldFRocmVhZEdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUpOworICAgIHd0
ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdldFRocmVhZEdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCktPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUpOwogfQpJ
bmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRocmVhZERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvV1RG
VGhyZWFkRGF0YS5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1dURlRocmVhZERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dURlRocmVhZERhdGEuaD4KSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Nzc3MykK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTAtMDQtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1
bmlxdWluZyB0YWJsZXMgdG8gKG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBS
ZW1vdmUgQXRvbWljU3RyaW5nJ3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRo
YXQgd2UgY2FuIG1vdmUKKyAgICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdU
Ri4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwOiBSZW1vdmUgbV9h
dG9taWNTdHJpbmdUYWJsZSwgYWxsIHd0ZlRocmVhZERhdGEoKSB0byBlbnN1cmUgdGhyZWFkc2Fm
ZWx5IGluaXRpYWxpemVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkR2xvYmFsRGF0YTo6VGhy
ZWFkR2xvYmFsRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRHbG9iYWxEYXRhOjp+VGhy
ZWFkR2xvYmFsRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5oOiBS
ZW1vdmUgbV9hdG9taWNTdHJpbmdUYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEdsb2Jh
bERhdGE6OmV2ZW50TmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU6OnRhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkF0b21pY1N0cmluZ1RhYmxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlu
Z1RhYmxlKTogQWNjZXNzIHRoZSBBdG9taWNTdHJpbmdUYWJsZSBvbiB3dGZUaHJlYWREYXRhKCkg
cmF0aGVyIHRoZW4gdGhyZWFkR2xvYmFsRGF0YSgpLgorCiAyMDEwLTA0LTE2ICBObydhbSBSb3Nl
bnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW50dGkgS29pdmlzdG8uCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZU
aHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
V1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfV1RGVGhyZWFkRGF0YV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1dURlRo
cmVhZERhdGFfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dURlRocmVhZERhdGEuaD4KKyNl
bmRpZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwCShyZXZpc2lvbiA1
Nzc2NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkVGltZXJzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisjaW5jbHVk
ZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKICNpbmNsdWRl
ICJUZXh0Q29kZWNJQ1UuaCIKQEAgLTU1LDggKzU2LDcgQEAgVGhyZWFkR2xvYmFsRGF0YSogVGhy
ZWFkR2xvYmFsRGF0YTo6c3RhdAogI2VuZGlmCiAKIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEds
b2JhbERhdGEoKQotICAgIDogbV9hdG9taWNTdHJpbmdUYWJsZShuZXcgSGFzaFNldDxTdHJpbmdJ
bXBsKj4pCi0gICAgLCBtX2V2ZW50TmFtZXMobmV3IEV2ZW50TmFtZXMpCisgICAgOiBtX2V2ZW50
TmFtZXMobmV3IEV2ZW50TmFtZXMpCiAgICAgLCBtX3RocmVhZFRpbWVycyhuZXcgVGhyZWFkVGlt
ZXJzKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVhZCgp
KQpAQCAtNjgsMTEgKzY4LDExIEBAIFRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEo
KQogICAgICwgbV9jYWNoZWRDb252ZXJ0ZXJURUMobmV3IFRFQ0NvbnZlcnRlcldyYXBwZXIpCiAj
ZW5kaWYKIHsKLSAgICAvLyBTdHJpbmdJbXBsOjplbXB0eSgpIGRvZXMgbm90IGNvbnN0cnVjdCBp
dHMgc3RhdGljIHN0cmluZyBpbiBhIHRocmVhZHNhZmUgZmFzaGlvbiwKLSAgICAvLyBzbyBlbnN1
cmUgaXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgZnJvbSBoZXJlLgotICAgIC8vCiAgICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgYmVlbiBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIGJl
Zm9yZSBiZWluZyBjYWxsZWQgb24KLSAgICAvLyBhbnkgb3RoZXIgdGhyZWFkLCBhbmQgaXMgb25s
eSBjYWxsZWQgb25jZSBwZXIgdGhyZWFkLgorICAgIC8vIGFueSBvdGhlciB0aHJlYWQsIGFuZCBp
cyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQg4oCTIHRoaXMgbWFrZXMgdGhpcyBhIGNvbnZl
bmllbnQKKyAgICAvLyBwb2ludCB0byBjYWxsIG1ldGhvZHMgdGhhdCBpbnRlcm5hbGx5IHBlcmZv
cm0gYSBvbmUtdGltZSBpbml0aWFsaXphdGlvbiB0aGF0IGlzIG5vdAorICAgIC8vIHRocmVhZHNh
ZmUuCisgICAgd3RmVGhyZWFkRGF0YSgpOwogICAgIFN0cmluZ0ltcGw6OmVtcHR5KCk7CiB9CiAK
QEAgLTg1LDcgKzg1LDYgQEAgVGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEoKQog
ICAgIGRlbGV0ZSBtX2NhY2hlZENvbnZlcnRlcklDVTsKICNlbmRpZgogICAgIGRlbGV0ZSBtX2V2
ZW50TmFtZXM7Ci0gICAgZGVsZXRlIG1fYXRvbWljU3RyaW5nVGFibGU7CiAgICAgZGVsZXRlIG1f
dGhyZWFkVGltZXJzOwogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAko
cmV2aXNpb24gNTc3NjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIH5UaHJlYWRHbG9iYWxEYXRhKCk7CiAKICAgICAgICAgRXZlbnROYW1lcyYgZXZlbnROYW1l
cygpIHsgcmV0dXJuICptX2V2ZW50TmFtZXM7IH0KLSAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBs
Kj4mIGF0b21pY1N0cmluZ1RhYmxlKCkgeyByZXR1cm4gKm1fYXRvbWljU3RyaW5nVGFibGU7IH0K
ICAgICAgICAgVGhyZWFkVGltZXJzJiB0aHJlYWRUaW1lcnMoKSB7IHJldHVybiAqbV90aHJlYWRU
aW1lcnM7IH0KIAogI2lmIFVTRShJQ1VfVU5JQ09ERSkKQEAgLTYzLDcgKzYyLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICBIYXNoU2V0PFN0
cmluZ0ltcGwqPiogbV9hdG9taWNTdHJpbmdUYWJsZTsKICAgICAgICAgRXZlbnROYW1lcyogbV9l
dmVudE5hbWVzOwogICAgICAgICBUaHJlYWRUaW1lcnMqIG1fdGhyZWFkVGltZXJzOwogCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcAkocmV2aXNpb24gNTc3NjYpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTUgKzI4LDQ2IEBACiAKICNpbmNsdWRlICJTdGF0aWNDb25zdHJ1Y3RvcnMuaCIKICNp
bmNsdWRlICJTdHJpbmdIYXNoLmgiCi0jaW5jbHVkZSAiVGhyZWFkR2xvYmFsRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QXRvbWljU3RyaW5nVGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBBdG9taWNTdHJpbmdUYWJs
ZSogY3JlYXRlKCkKKyAgICB7CisgICAgICAgIEF0b21pY1N0cmluZ1RhYmxlKiB0YWJsZSA9IG5l
dyBBdG9taWNTdHJpbmdUYWJsZTsKKworICAgICAgICBXVEZUaHJlYWREYXRhJiBkYXRhID0gd3Rm
VGhyZWFkRGF0YSgpOworICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGUgPSB0YWJsZTsK
KyAgICAgICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciA9IEF0b21pY1N0cmlu
Z1RhYmxlOjpkZXN0cm95OworCisgICAgICAgIHJldHVybiB0YWJsZTsKKyAgICB9CisKKyAgICBI
YXNoU2V0PFN0cmluZ0ltcGwqPiYgdGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdGFi
bGU7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQXRvbWljU3Ry
aW5nVGFibGUqIHRhYmxlKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRhYmxlOworICAgIH0KKwor
ICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+IG1fdGFibGU7Cit9OworCiBzdGF0aWMgaW5saW5lIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB7Ci0gICAgcmV0dXJuIHRocmVhZEds
b2JhbERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpOworICAgIC8vIE9uY2UgcG9zc2libGUgd2Ug
c2hvdWxkIG1ha2UgdGhpcyBub24tbGF6eSAoY29uc3RydWN0ZWQgaW4gV1RGVGhyZWFkRGF0YSdz
IGNvbnN0cnVjdG9yKS4KKyAgICBBdG9taWNTdHJpbmdUYWJsZSogdGFibGUgPSB3dGZUaHJlYWRE
YXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKTsKKyAgICBpZiAoVU5MSUtFTFkoIXRhYmxlKSkKKyAg
ICAgICAgdGFibGUgPSBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIHRh
YmxlLT50YWJsZSgpOwogfQogCiBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3Igewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53620</attachid>
            <date>2010-04-17 17:31:55 -0700</date>
            <delta_ts>2010-04-19 12:36:49 -0700</delta_ts>
            <desc>Chromium build fix</desc>
            <filename>patch.wtfThreadData.5.txt</filename>
            <type>text/plain</type>
            <size>44350</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzczKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTAtMDQtMTYgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzc0NQorICAgICAgICBNb3ZlIHN0cmluZyB1bmlxdWluZyB0YWJsZXMgdG8g
KG5ldykgV1RGVGhyZWFkRGF0YSBjbGFzcy4KKworICAgICAgICBSZW1vdmUgQXRvbWljU3RyaW5n
J3MgZGVwZW5kZW5jeSBvbiBUaHJlYWRHbG9iYWxEYXRhIHNvIHRoYXQgd2UgY2FuIG1vdmUKKyAg
ICAgICAgV2ViQ29yZSdzIHN0cmluZyBjbGFzc2VzIHVwIHRvIFdURi4KKworICAgICAgICBXVEZU
aHJlYWREYXRhLmNwcC8uaCBhcmUgYmFzZWQgb24gVGhyZWFkR2xvYmFsRGF0YSBmcm9tIFdlYkNv
cmUuCisgICAgICAgIE1vdmVkIEpTQyAmIFdlYkNvcmUncyBzdHJpbmcgdW5pcXVpbmcgdGFibGVz
IHRvIHRoaXMgY2xhc3MuCisKKyAgICAgICAgKiBBUEkvQVBJU2hpbXMuaDoKKyAgICAgICAgKEpT
Qzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6OkFQSUVudHJ5U2hpbVdpdGhvdXRMb2NrKToKKyAg
ICAgICAgKEpTQzo6QVBJRW50cnlTaGltV2l0aG91dExvY2s6On5BUElFbnRyeVNoaW1XaXRob3V0
TG9jayk6CisgICAgICAgIChKU0M6OkFQSUNhbGxiYWNrU2hpbTo6QVBJQ2FsbGJhY2tTaGltKToK
KyAgICAgICAgKEpTQzo6QVBJQ2FsbGJhY2tTaGltOjp+QVBJQ2FsbGJhY2tTaGltKToKKyAgICAg
ICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRh
eCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpyZW1vdmUpOgorICAgICAgICAoSlND
OjpJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5jcHA6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVUaHJlYWRpbmdPbmNlKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
Y3JlYXRlKToKKyAgICAgICAgKiB3dGYvV1RGVGhyZWFkRGF0YS5jcHA6IENvcGllZCBmcm9tIFdl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAuCisgICAgICAgIChXVEY6OldURlRo
cmVhZERhdGE6OldURlRocmVhZERhdGEpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWREYXRhOjp+
V1RGVGhyZWFkRGF0YSk6CisgICAgICAgICogd3RmL1dURlRocmVhZERhdGEuaDogQ29waWVkIGZy
b20gV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRhLmguCisgICAgICAgIChXVEY6OldU
RlRocmVhZERhdGE6OmF0b21pY1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6aW5pdGlhbGl6ZUlkZW50aWZpZXJUYWJsZSk6CisgICAgICAgIChXVEY6OldURlRocmVh
ZERhdGE6OmN1cnJlbnRJZGVudGlmaWVyVGFibGUpOgorICAgICAgICAoV1RGOjpXVEZUaHJlYWRE
YXRhOjpzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6V1RGVGhyZWFk
RGF0YTo6cmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKToKKyAgICAgICAgKFdURjo6d3RmVGhy
ZWFkRGF0YSk6CisKIDIwMTAtMDQtMTYgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IG5vYm9keSwgYnVpbGQgZml4LgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9BbmRyb2lkLm1rCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0FuZHJvaWQu
bWsJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0g
XAogCXd0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBcCiAJd3RmL1RocmVhZGlu
Zy5jcHAgXAogCXd0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgXAorCXd0Zi9XVEZUaHJlYWREYXRh
LmNwcCBcCiAJXAogCXd0Zi9UeXBlVHJhaXRzLmNwcCBcCiAJd3RmL2R0b2EuY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FuZHJvaWQudjgud3RmLm1rCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL0FuZHJvaWQudjgud3RmLm1rCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRD
b3JlL0FuZHJvaWQudjgud3RmLm1rCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIExP
Q0FMX1NSQ19GSUxFUyA6PSBcCiAJd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3Bw
IFwKIAl3dGYvVGhyZWFkaW5nLmNwcCBcCiAJd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBcCisJ
d3RmL1dURlRocmVhZERhdGEuY3BwIFwKIAlcCiAJd3RmL2FuZHJvaWQvTWFpblRocmVhZEFuZHJv
aWQuY3BwIFwKIAlcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNTc3NjUpCisr
KyBKYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDYg
KzI4NCw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCUphdmFTY3JpcHRDb3JlL3d0
Zi9WYWx1ZUNoZWNrLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaCBcCiAJSmF2YVNj
cmlwdENvcmUvd3RmL1ZlY3RvclRyYWl0cy5oIFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhy
ZWFkRGF0YS5jcHAgXAorCUphdmFTY3JpcHRDb3JlL3d0Zi9XVEZUaHJlYWREYXRhLmggXAogCUph
dmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dPd25QdHIuY3BwIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvZ29iamVjdC9HT3duUHRyLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9nb2JqZWN0L0dSZWZQ
dHIuY3BwIFwKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDU3NzY1
KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTYsOCArMTk2LDYgQEAgX19aTjNKU0MyM29iamVjdFByb3RvRnVuY1RvU3RyaW5nRVBOU185
RQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25TbG90RVBOU185RXhlY1N0YXRlRVBLTlNf
OUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5
U2xvdEUKIF9fWk4zSlNDMjRjcmVhdGVTdGFja092ZXJmbG93RXJyb3JFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOM0pTQzI1ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZUVSS05TXzdVU3RyaW5nRVJOU183
SlNWYWx1ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEUKLV9fWk4zSlNDMjVnX2lkZW50aWZpZXJUYWJs
ZVNwZWNpZmljRQotX19aTjNKU0MyOWNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljRXYKIF9f
Wk4zSlNDMzVjcmVhdGVJbnRlcnJ1cHRlZEV4ZWN1dGlvbkV4Y2VwdGlvbkVQTlNfMTJKU0dsb2Jh
bERhdGFFCiBfX1pOM0pTQzNOYU5FCiBfX1pOM0pTQzRIZWFwMTRwcmltYXJ5SGVhcEVuZEV2CkBA
IC0zMTksNiArMzE3LDkgQEAgX19aTjNXVEYxMmNyZWF0ZVRocmVhZEVQRlB2UzBfRVMwX1BLYwog
X19aTjNXVEYxMmRldGFjaFRocmVhZEVqCiBfX1pOM1dURjEyaXNNYWluVGhyZWFkRXYKIF9fWk4z
V1RGMTJyYW5kb21OdW1iZXJFdgorX19aTjNXVEYxM1dURlRocmVhZERhdGExMHN0YXRpY0RhdGFF
CitfX1pOM1dURjEzV1RGVGhyZWFkRGF0YUMxRXYKK19fWk4zV1RGMTNXVEZUaHJlYWREYXRhRDFF
dgogX19aTjNXVEYxM2N1cnJlbnRUaHJlYWRFdgogX19aTjNXVEYxM3RyeUZhc3RDYWxsb2NFbW0K
IF9fWk4zV1RGMTN0cnlGYXN0TWFsbG9jRW0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
Z3lwaQkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsNiArNDM1LDggQEAKICAgICAgICAgICAgICd3dGYv
VmVjdG9yLmgnLAogICAgICAgICAgICAgJ3d0Zi9WZWN0b3JUcmFpdHMuaCcsCiAgICAgICAgICAg
ICAnd3RmL1ZNVGFncy5oJywKKyAgICAgICAgICAgICd3dGYvV1RGVGhyZWFkRGF0YS5jcHAnLAor
ICAgICAgICAgICAgJ3d0Zi9XVEZUaHJlYWREYXRhLmgnLAogICAgICAgICAgICAgJ3d0Zi93aW4v
TWFpblRocmVhZFdpbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi93eC9NYWluVGhyZWFkV3guY3Bw
JywKICAgICAgICAgICAgICd5YXJyL1JlZ2V4Q29tcGlsZXIuY3BwJywKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcm8JKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgd3RmL1RocmVhZGluZ05vbmUuY3BwIFwKICAgICB3dGYvVGhyZWFkaW5nLmNw
cCBcCiAgICAgd3RmL1R5cGVUcmFpdHMuY3BwIFwKKyAgICB3dGYvV1RGVGhyZWFkRGF0YS5jcHAg
XAogICAgIHd0Zi90ZXh0L0NTdHJpbmcuY3BwIFwKICAgICB3dGYvdW5pY29kZS9Db2xsYXRvckRl
ZmF1bHQuY3BwIFwKICAgICB3dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwIFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FQSS9BUElTaGltcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0FQSS9BUElTaGltcy5oCShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0FQ
SS9BUElTaGltcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKKyNpbmNsdWRlIDx3dGYvV1RGVGhy
ZWFkRGF0YS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzUsNyArMzYsNyBAQCBjbGFzcyBB
UElFbnRyeVNoaW1XaXRob3V0TG9jayB7CiBwcm90ZWN0ZWQ6CiAgICAgQVBJRW50cnlTaGltV2l0
aG91dExvY2soSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBib29sIHJlZ2lzdGVyVGhyZWFkKQog
ICAgICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQotICAgICAgICAsIG1fZW50cnlJZGVu
dGlmaWVyVGFibGUoc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLT5pZGVudGlm
aWVyVGFibGUpKQorICAgICAgICAsIG1fZW50cnlJZGVudGlmaWVyVGFibGUod3RmVGhyZWFkRGF0
YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxl
KSkKICAgICB7CiAgICAgICAgIGlmIChyZWdpc3RlclRocmVhZCkKICAgICAgICAgICAgIGdsb2Jh
bERhdGEtPmhlYXAucmVnaXN0ZXJUaHJlYWQoKTsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJvdGVjdGVk
OgogICAgIH5BUElFbnRyeVNoaW1XaXRob3V0TG9jaygpCiAgICAgewogICAgICAgICBtX2dsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKLSAgICAgICAgc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShtX2VudHJ5SWRlbnRpZmllclRhYmxlKTsKKyAgICAgICAgd3RmVGhyZWFkRGF0YSgp
LnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9lbnRyeUlkZW50aWZpZXJUYWJsZSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtNzksMTIgKzgwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2Ry
b3BBbGxMb2NrcyhleGVjKQogICAgICAgICAsIG1fZ2xvYmFsRGF0YSgmZXhlYy0+Z2xvYmFsRGF0
YSgpKQogICAgIHsKLSAgICAgICAgcmVzZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKCk7CisgICAg
ICAgIHd0ZlRocmVhZERhdGEoKS5yZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsKICAgICB9
CiAKICAgICB+QVBJQ2FsbGJhY2tTaGltKCkKICAgICB7Ci0gICAgICAgIHNldEN1cnJlbnRJZGVu
dGlmaWVyVGFibGUobV9nbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUpOworICAgICAgICB3dGZU
aHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX2dsb2JhbERhdGEtPmlkZW50
aWZpZXJUYWJsZSk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29u
dGV4dFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpTR2xv
YmFsQ29udGV4dFJlbGVhc2UoSlNHbG9iYWxDb250CiAKICAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGRnbyA9IGV4
ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKTsKLSAgICBJZGVudGlmaWVyVGFibGUqIHNhdmVkSWRl
bnRpZmllclRhYmxlID0gc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShnbG9iYWxEYXRhLmlkZW50
aWZpZXJUYWJsZSk7CisgICAgSWRlbnRpZmllclRhYmxlKiBzYXZlZElkZW50aWZpZXJUYWJsZSA9
IHd0ZlRocmVhZERhdGEoKS5zZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGEuaWRl
bnRpZmllclRhYmxlKTsKIAogICAgIC8vIE9uZSByZWZlcmVuY2UgaXMgaGVsZCBieSBKU0dsb2Jh
bE9iamVjdCwgYW5vdGhlciBhZGRlZCBieSBKU0dsb2JhbENvbnRleHRSZXRhaW4oKS4KICAgICBi
b29sIHJlbGVhc2luZ0NvbnRleHRHcm91cCA9IGdsb2JhbERhdGEucmVmQ291bnQoKSA9PSAyOwpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShKU0dsb2JhbENv
bnQKIAogICAgIGdsb2JhbERhdGEuZGVyZWYoKTsKIAotICAgIHNldEN1cnJlbnRJZGVudGlmaWVy
VGFibGUoc2F2ZWRJZGVudGlmaWVyVGFibGUpOworICAgIHd0ZlRocmVhZERhdGEoKS5zZXRDdXJy
ZW50SWRlbnRpZmllclRhYmxlKHNhdmVkSWRlbnRpZmllclRhYmxlKTsKIH0KIAogSlNPYmplY3RS
ZWYgSlNDb250ZXh0R2V0R2xvYmFsT2JqZWN0KEpTQ29udGV4dFJlZiBjdHgpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9q
CShyZXZpc2lvbiA1Nzc2NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9XVEYvV1RGLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNTY0LDYgKzU2NCwxNCBAQAogCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlx3dGZcVmVjdG9yVHJhaXRzLmgiDQogCQkJPg0KIAkJPC9GaWxl
Pg0KKwkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxXVEZUaHJlYWREYXRhLmNw
cCINCisJCQk+DQorCQk8L0ZpbGU+DQorCQk8RmlsZQ0KKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
d3RmXFdURlRocmVhZERhdGEuaCINCisJCQk+DQorCQk8L0ZpbGU+DQogCTwvRmlsZXM+DQogCTxH
bG9iYWxzPg0KIAk8L0dsb2JhbHM+DQpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1Nzc2
NSkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsOCBAQAogCQk4NkNDODVBMzBFRTc5
Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVBMjBFRTc5Qjc0MDAyODg2ODIgLyogSklUQ2FsbC5jcHAg
Ki87IH07CiAJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkNDODVD
MzBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwICovOyB9OwogCQk4NkND
RUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQ0VGREQwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENv
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4
NkQwOEQ1MzExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkQwOEQ1MTExNzkzNjEzMDA2RTVF
RDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi87IH07CisJCTg2RDA4RDU0MTE3OTM2MTMwMDZFNUVE
MCAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkQwOEQ1MjExNzkzNjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2RDNCMkMz
MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgKi87IH07CiAJCTg2RDNCMkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2RDNCMkMwMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCAqLzsgfTsKIAkJODZE
M0IyQzUxMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RDNCMkMx
MTAxNTZCREUwMDI4NjVFNyAvKiBBc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmggKi87
IH07CkBAIC03NDEsNiArNzQzLDggQEAKIAkJODZDQzg1QTIwRUU3OUI3NDAwMjg4NjgyIC8qIEpJ
VENhbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQ2FsbC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2Q0M4NUMzMEVFN0E4OTQwMDI4ODY4
MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg2Q0NFRkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVENvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODZEMDhENTExMTc5MzYxMzAwNkU1RUQwIC8qIFdURlRocmVhZERhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV1RGVGhyZWFkRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2RDA4RDUyMTE3OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJl
YWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlRocmVhZERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODZEM0IyQkYxMDE1NkJERTAwMjg2NUU3
IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBUk1Bc3NlbWJsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkQzQjJD
MDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFSTUFzc2VtYmxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4NkQzQjJDMTEwMTU2QkRFMDAyODY1RTcgLyogQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50
UG9vbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3NlbWJsZXJCdWZmZXJX
aXRoQ29uc3RhbnRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzg0LDYg
KzEzODgsOCBAQAogCQkJCTY1OTJDMzE2MDk4QjdERTEwMDAzRDRGNiAvKiBWZWN0b3IuaCAqLywK
IAkJCQk2NTkyQzMxNzA5OEI3REUxMDAwM0Q0RjYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJ
OTZERDczNzgwRjlEQTMxMDAwMjdGQkNDIC8qIFZNVGFncy5oICovLAorCQkJCTg2RDA4RDUxMTE3
OTM2MTMwMDZFNUVEMCAvKiBXVEZUaHJlYWREYXRhLmNwcCAqLywKKwkJCQk4NkQwOEQ1MjExNzkz
NjEzMDA2RTVFRDAgLyogV1RGVGhyZWFkRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjAzNSw2ICsyMDQxLDcgQEAKIAkJCQk4
NjU2NTc0MzExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTc0ODJCOTMxMTY3MTE0NzAwM0IwNzEyIC8qIEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3NDgyRTkzMTE2QTdDQUQwMDNCMDcxMiAvKiBKU1dlYWtPYmpl
Y3RNYXBSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODZEMDhENTQxMTc5MzYxMzAw
NkU1RUQwIC8qIFdURlRocmVhZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjQ3OCw2ICsyNDg1
LDcgQEAKIAkJCQlFMUVGNzlBQTBDRTk3QkE2MDA4OEQ1MDAgLyogVVRGOC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjU2NTc0MjExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzQ4MkI5NDExNjcxMTQ3MDAzQjA3MTIgLyogSlNXZWFrT2JqZWN0TWFw
UmVmUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NkQwOEQ1MzExNzkzNjEzMDA2RTVF
RDAgLyogV1RGVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIldURlRocmVhZERhdGEuaCIKICNpbmNsdWRlIDxzdGRp
by5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM2LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBDb21wbGV0aW9uIGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKQogewogICAgIEpTTG9jayBsb2NrKGV4ZWMpOwotICAgIEFTU0VSVChleGVjLT5n
bG9iYWxEYXRhKCkuaWRlbnRpZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7
CisgICAgQVNTRVJUKGV4ZWMtPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhy
ZWFkRGF0YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3Jh
bUV4ZWN1dGFibGU+IHByb2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNv
dXJjZSk7CiAgICAgSlNPYmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y2hlY2tTeW50YXgoZXhlYyk7
CkBAIC00OSw3ICs1MCw3IEBAIENvbXBsZXRpb24gY2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVj
LCAKIENvbXBsZXRpb24gZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluJiBzY29w
ZUNoYWluLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFsdWUgdGhpc1ZhbHVlKQogewog
ICAgIEpTTG9jayBsb2NrKGV4ZWMpOwotICAgIEFTU0VSVChleGVjLT5nbG9iYWxEYXRhKCkuaWRl
bnRpZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgQVNTRVJUKGV4
ZWMtPmdsb2JhbERhdGEoKS5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0YSgpLmN1cnJl
bnRJZGVudGlmaWVyVGFibGUoKSk7CiAKICAgICBSZWZQdHI8UHJvZ3JhbUV4ZWN1dGFibGU+IHBy
b2dyYW0gPSBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIHNvdXJjZSk7CiAgICAgSlNP
YmplY3QqIGVycm9yID0gcHJvZ3JhbS0+Y29tcGlsZShleGVjLCBzY29wZUNoYWluLm5vZGUoKSk7
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5jcHAJKHJldmlzaW9uIDU3NzY1
KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIHVzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CiAKQEAg
LTIyOCw3ICsyMjksNyBAQCBQYXNzUmVmUHRyPFVTdHJpbmc6OlJlcD4gSWRlbnRpZmllcjo6YWRk
CiAKIHZvaWQgSWRlbnRpZmllcjo6cmVtb3ZlKFVTdHJpbmc6OlJlcCogcikKIHsKLSAgICBjdXJy
ZW50SWRlbnRpZmllclRhYmxlKCktPnJlbW92ZShyKTsKKyAgICB3dGZUaHJlYWREYXRhKCkuY3Vy
cmVudElkZW50aWZpZXJUYWJsZSgpLT5yZW1vdmUocik7CiB9CiAgICAgCiBJZGVudGlmaWVyIElk
ZW50aWZpZXI6OmZyb20oRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCB2YWx1ZSkKQEAgLTI1Miw3
ICsyNTMsNyBAQCB2b2lkIElkZW50aWZpZXI6OmNoZWNrQ3VycmVudElkZW50aWZpZXJUCiB7CiAg
ICAgLy8gQ2hlY2sgdGhlIGlkZW50aWZpZXIgdGFibGUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSB0
aHJlYWRzcGVjaWZpYyBtYXRjaGVzIHRoZQogICAgIC8vIGdsb2JhbERhdGEncyBpZGVudGlmaWVy
IHRhYmxlLgotICAgIEFTU0VSVF9VTlVTRUQoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+aWRlbnRp
ZmllclRhYmxlID09IGN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5pZGVudGlmaWVyVGFibGUgPT0gd3RmVGhyZWFkRGF0
YSgpLmN1cnJlbnRJZGVudGlmaWVyVGFibGUoKSk7CiB9CiAKIHZvaWQgSWRlbnRpZmllcjo6Y2hl
Y2tDdXJyZW50SWRlbnRpZmllclRhYmxlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI2OSwzMCArMjcw
LDQgQEAgdm9pZCBJZGVudGlmaWVyOjpjaGVja0N1cnJlbnRJZGVudGlmaWVyVAogCiAjZW5kaWYK
IAotVGhyZWFkU3BlY2lmaWM8VGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YT4qIGdfaWRlbnRpZmll
clRhYmxlU3BlY2lmaWMgPSAwOwotCi0jaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQot
Ci1wdGhyZWFkX29uY2VfdCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpY09uY2UgPSBQVEhS
RUFEX09OQ0VfSU5JVDsKLXN0YXRpYyB2b2lkIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmlj
Q2FsbGJhY2soKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyk7Ci0g
ICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRJ
ZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotdm9pZCBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVj
aWZpYygpCi17Ci0gICAgcHRocmVhZF9vbmNlKCZjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZp
Y09uY2UsIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljQ2FsbGJhY2spOwotICAgIEFTU0VS
VChnX2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKTsKLX0KLQotI2Vsc2UgCi0KLXZvaWQgY3JlYXRl
SWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKQotewotICAgIEFTU0VSVCghZ19pZGVudGlmaWVyVGFi
bGVTcGVjaWZpYyk7Ci0gICAgZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYyA9IG5ldyBUaHJlYWRT
cGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPigpOwotfQotCi0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkocmV2
aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQwLDY3ICsxNDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBJZGVu
dGlmaWVyVGFibGUqIGNyZWF0ZUlkZW50aWZpZXJUYWJsZSgpOwogICAgIHZvaWQgZGVsZXRlSWRl
bnRpZmllclRhYmxlKElkZW50aWZpZXJUYWJsZSopOwogCi0gICAgc3RydWN0IFRocmVhZElkZW50
aWZpZXJUYWJsZURhdGEgewotICAgICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhKCkKLSAg
ICAgICAgICAgIDogZGVmYXVsdElkZW50aWZpZXJUYWJsZSgwKQotICAgICAgICAgICAgLCBjdXJy
ZW50SWRlbnRpZmllclRhYmxlKDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIElk
ZW50aWZpZXJUYWJsZSogZGVmYXVsdElkZW50aWZpZXJUYWJsZTsKLSAgICAgICAgSWRlbnRpZmll
clRhYmxlKiBjdXJyZW50SWRlbnRpZmllclRhYmxlOwotICAgIH07Ci0KLSAgICBleHRlcm4gV1RG
OjpUaHJlYWRTcGVjaWZpYzxUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhPiogZ19pZGVudGlmaWVy
VGFibGVTcGVjaWZpYzsKLSAgICB2b2lkIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7
Ci0KLSAgICBpbmxpbmUgSWRlbnRpZmllclRhYmxlKiBkZWZhdWx0SWRlbnRpZmllclRhYmxlKCkK
LSAgICB7Ci0gICAgICAgIGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKLSAgICAgICAg
ICAgIGNyZWF0ZUlkZW50aWZpZXJUYWJsZVNwZWNpZmljKCk7Ci0gICAgICAgIFRocmVhZElkZW50
aWZpZXJUYWJsZURhdGEmIGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7Ci0KLSAg
ICAgICAgcmV0dXJuIGRhdGEuZGVmYXVsdElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgdm9pZCBzZXREZWZhdWx0SWRlbnRpZmllclRhYmxlKElkZW50aWZpZXJUYWJsZSogaWRl
bnRpZmllclRhYmxlKQotICAgIHsKLSAgICAgICAgaWYgKCFnX2lkZW50aWZpZXJUYWJsZVNwZWNp
ZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRhYmxlU3BlY2lmaWMoKTsKLSAgICAg
ICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9ICoqZ19pZGVudGlmaWVyVGFibGVT
cGVjaWZpYzsKLQotICAgICAgICBkYXRhLmRlZmF1bHRJZGVudGlmaWVyVGFibGUgPSBpZGVudGlm
aWVyVGFibGU7Ci0gICAgfQotCi0gICAgaW5saW5lIElkZW50aWZpZXJUYWJsZSogY3VycmVudElk
ZW50aWZpZXJUYWJsZSgpCi0gICAgewotICAgICAgICBpZiAoIWdfaWRlbnRpZmllclRhYmxlU3Bl
Y2lmaWMpCi0gICAgICAgICAgICBjcmVhdGVJZGVudGlmaWVyVGFibGVTcGVjaWZpYygpOwotICAg
ICAgICBUaHJlYWRJZGVudGlmaWVyVGFibGVEYXRhJiBkYXRhID0gKipnX2lkZW50aWZpZXJUYWJs
ZVNwZWNpZmljOwotCi0gICAgICAgIHJldHVybiBkYXRhLmN1cnJlbnRJZGVudGlmaWVyVGFibGU7
Ci0gICAgfQotCi0gICAgaW5saW5lIElkZW50aWZpZXJUYWJsZSogc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJsZSkKLSAgICB7Ci0gICAgICAg
IGlmICghZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYykKLSAgICAgICAgICAgIGNyZWF0ZUlkZW50
aWZpZXJUYWJsZVNwZWNpZmljKCk7Ci0gICAgICAgIFRocmVhZElkZW50aWZpZXJUYWJsZURhdGEm
IGRhdGEgPSAqKmdfaWRlbnRpZmllclRhYmxlU3BlY2lmaWM7Ci0KLSAgICAgICAgSWRlbnRpZmll
clRhYmxlKiBvbGRJZGVudGlmaWVyVGFibGUgPSBkYXRhLmN1cnJlbnRJZGVudGlmaWVyVGFibGU7
Ci0gICAgICAgIGRhdGEuY3VycmVudElkZW50aWZpZXJUYWJsZSA9IGlkZW50aWZpZXJUYWJsZTsK
LSAgICAgICAgcmV0dXJuIG9sZElkZW50aWZpZXJUYWJsZTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
dm9pZCByZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKQotICAgIHsKLSAgICAgICAgaWYgKCFn
X2lkZW50aWZpZXJUYWJsZVNwZWNpZmljKQotICAgICAgICAgICAgY3JlYXRlSWRlbnRpZmllclRh
YmxlU3BlY2lmaWMoKTsKLSAgICAgICAgVGhyZWFkSWRlbnRpZmllclRhYmxlRGF0YSYgZGF0YSA9
ICoqZ19pZGVudGlmaWVyVGFibGVTcGVjaWZpYzsKLQotICAgICAgICBkYXRhLmN1cnJlbnRJZGVu
dGlmaWVyVGFibGUgPSBkYXRhLmRlZmF1bHRJZGVudGlmaWVyVGFibGU7Ci0gICAgfQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIElkZW50aWZpZXJfaApJbmRleDogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiA1Nzc2
NSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJVU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1
ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKQEAgLTQ4
LDYgKzQ5LDcgQEAgc3RhdGljIHB0aHJlYWRfb25jZV90IGluaXRpYWxpemVUaHJlYWRpbgogc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZ09uY2UoKQogewogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOworICAgIHd0ZlRocmVhZERhdGEoKTsKICAgICBpbml0aWFsaXplVVN0cmlu
ZygpOwogICAgIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycygpOwogI2lmIEVOQUJMRShKU0NfTVVM
VElQTEVfVEhSRUFEUykKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3
dGYvV1RGVGhyZWFkRGF0YS5oPgogCiAjaWYgRU5BQkxFKEpTQ19NVUxUSVBMRV9USFJFQURTKQog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KQEAgLTIwMyw4ICsyMDQsNyBAQCBQYXNzUmVmUHRy
PEpTR2xvYmFsRGF0YT4gSlNHbG9iYWxEYXRhOjpjCiBQYXNzUmVmUHRyPEpTR2xvYmFsRGF0YT4g
SlNHbG9iYWxEYXRhOjpjcmVhdGUoKQogewogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
IG5ldyBKU0dsb2JhbERhdGEoZmFsc2UpOwotICAgIHNldERlZmF1bHRJZGVudGlmaWVyVGFibGUo
Z2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKLSAgICBzZXRDdXJyZW50SWRlbnRpZmllclRh
YmxlKGdsb2JhbERhdGEtPmlkZW50aWZpZXJUYWJsZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLmlu
aXRpYWxpemVJZGVudGlmaWVyVGFibGUoZ2xvYmFsRGF0YS0+aWRlbnRpZmllclRhYmxlKTsKICAg
ICByZXR1cm4gYWRvcHRSZWYoZ2xvYmFsRGF0YSk7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9XVEZUaHJlYWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
V1RGVGhyZWFkRGF0YS5jcHAJKHJldmlzaW9uIDU3NzY1KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3Jt
L1RocmVhZEdsb2JhbERhdGEuY3BwOjU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRo
cmVhZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKwor
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVk
ZSAiVGhyZWFkVGltZXJzLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CisKKyNpZiBV
U0UoSUNVX1VOSUNPREUpCisjaW5jbHVkZSAiVGV4dENvZGVjSUNVLmgiCisjZW5kaWYKKworI2lm
IFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJUZXh0Q29kZWNNYWMuaCIKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTcGVjaWZpYy5oPgordXNpbmcgbmFtZXNwYWNlIFdURjsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoV09SS0VSUykKK1RocmVhZFNwZWNpZmljPFRo
cmVhZEdsb2JhbERhdGE+KiBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhOworI2Vsc2UKK1Ro
cmVhZEdsb2JhbERhdGEqIFRocmVhZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CisjZW5kaWYKKwor
VGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCisgICAgOiBtX2F0b21pY1N0cmlu
Z1RhYmxlKG5ldyBIYXNoU2V0PFN0cmluZ0ltcGwqPikKKyAgICAsIG1fZXZlbnROYW1lcyhuZXcg
RXZlbnROYW1lcykKKyAgICAsIG1fdGhyZWFkVGltZXJzKG5ldyBUaHJlYWRUaW1lcnMpCisjaWZu
ZGVmIE5ERUJVRworICAgICwgbV9pc01haW5UaHJlYWQoaXNNYWluVGhyZWFkKCkpCisjZW5kaWYK
KyNpZiBVU0UoSUNVX1VOSUNPREUpCisgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShuZXcgSUNV
Q29udmVydGVyV3JhcHBlcikKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fY2Fj
aGVkQ29udmVydGVyVEVDKG5ldyBURUNDb252ZXJ0ZXJXcmFwcGVyKQorI2VuZGlmCit7CisgICAg
Ly8gU3RyaW5nSW1wbDo6ZW1wdHkoKSBkb2VzIG5vdCBjb25zdHJ1Y3QgaXRzIHN0YXRpYyBzdHJp
bmcgaW4gYSB0aHJlYWRzYWZlIGZhc2hpb24sCisgICAgLy8gc28gZW5zdXJlIGl0IGhhcyBiZWVu
IGluaXRpYWxpemVkIGZyb20gaGVyZS4KKyAgICAvLworICAgIC8vIFRoaXMgY29uc3RydWN0b3Ig
d2lsbCBoYXZlIGJlZW4gY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBiZWZvcmUgYmVpbmcgY2Fs
bGVkIG9uCisgICAgLy8gYW55IG90aGVyIHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2Ug
cGVyIHRocmVhZC4KKyAgICBTdHJpbmdJbXBsOjplbXB0eSgpOworfQorCitUaHJlYWRHbG9iYWxE
YXRhOjp+VGhyZWFkR2xvYmFsRGF0YSgpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRlbGV0
ZSBtX2NhY2hlZENvbnZlcnRlclRFQzsKKyNlbmRpZgorI2lmIFVTRShJQ1VfVU5JQ09ERSkKKyAg
ICBkZWxldGUgbV9jYWNoZWRDb252ZXJ0ZXJJQ1U7CisjZW5kaWYKKyAgICBkZWxldGUgbV9ldmVu
dE5hbWVzOworICAgIGRlbGV0ZSBtX2F0b21pY1N0cmluZ1RhYmxlOworICAgIGRlbGV0ZSBtX3Ro
cmVhZFRpbWVyczsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogSmF2YVNjcmlw
dENvcmUvd3RmL1dURlRocmVhZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9XVEZUaHJlYWREYXRhLmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvV1RGVGhyZWFkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDY4ICsyNSwzMCBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiV1RGVGhyZWFkRGF0YS5oIgogCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgot
I2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKLSNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKLSNpbmNs
dWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KK25hbWVzcGFjZSBXVEYgewogCi0jaWYgVVNFKElDVV9V
TklDT0RFKQotI2luY2x1ZGUgIlRleHRDb2RlY0lDVS5oIgotI2VuZGlmCi0KLSNpZiBQTEFURk9S
TShNQUMpCi0jaW5jbHVkZSAiVGV4dENvZGVjTWFjLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShX
T1JLRVJTKQotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFk
U3BlY2lmaWMuaD4KLXVzaW5nIG5hbWVzcGFjZSBXVEY7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0jaWYgRU5BQkxFKFdPUktFUlMpCi1UaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9i
YWxEYXRhPiogVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyNpZiBXVEZUSFJFQUREQVRB
X01VTFRJVEhSRUFERUQKK1RocmVhZFNwZWNpZmljPFdURlRocmVhZERhdGE+KiBXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhOwogI2Vsc2UKLVRocmVhZEdsb2JhbERhdGEqIFRocmVhZEdsb2JhbERh
dGE6OnN0YXRpY0RhdGE7CitXVEZUaHJlYWREYXRhKiBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRh
OwogI2VuZGlmCiAKLVRocmVhZEdsb2JhbERhdGE6OlRocmVhZEdsb2JhbERhdGEoKQotICAgIDog
bV9hdG9taWNTdHJpbmdUYWJsZShuZXcgSGFzaFNldDxTdHJpbmdJbXBsKj4pCi0gICAgLCBtX2V2
ZW50TmFtZXMobmV3IEV2ZW50TmFtZXMpCi0gICAgLCBtX3RocmVhZFRpbWVycyhuZXcgVGhyZWFk
VGltZXJzKQotI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVh
ZCgpKQotI2VuZGlmCi0jaWYgVVNFKElDVV9VTklDT0RFKQotICAgICwgbV9jYWNoZWRDb252ZXJ0
ZXJJQ1UobmV3IElDVUNvbnZlcnRlcldyYXBwZXIpCi0jZW5kaWYKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgLCBtX2NhY2hlZENvbnZlcnRlclRFQyhuZXcgVEVDQ29udmVydGVyV3JhcHBlcikKK1dU
RlRocmVhZERhdGE6OldURlRocmVhZERhdGEoKQorICAgIDogbV9hdG9taWNTdHJpbmdUYWJsZSgw
KQorICAgICwgbV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IoMCkKKyNpZiBVU0UoSlNDKQor
ICAgICwgbV9kZWZhdWx0SWRlbnRpZmllclRhYmxlKDApCisgICAgLCBtX2N1cnJlbnRJZGVudGlm
aWVyVGFibGUoMCkKICNlbmRpZgogewotICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBu
b3QgY29uc3RydWN0IGl0cyBzdGF0aWMgc3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAot
ICAgIC8vIHNvIGVuc3VyZSBpdCBoYXMgYmVlbiBpbml0aWFsaXplZCBmcm9tIGhlcmUuCi0gICAg
Ly8KLSAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgotICAgIC8vIGFueSBvdGhlciB0aHJl
YWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQuCi0gICAgU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKIH0KIAotVGhyZWFkR2xvYmFsRGF0YTo6flRocmVhZEdsb2JhbERhdGEoKQorV1RG
VGhyZWFkRGF0YTo6fldURlRocmVhZERhdGEoKQogewotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBk
ZWxldGUgbV9jYWNoZWRDb252ZXJ0ZXJURUM7Ci0jZW5kaWYKLSNpZiBVU0UoSUNVX1VOSUNPREUp
Ci0gICAgZGVsZXRlIG1fY2FjaGVkQ29udmVydGVySUNVOwotI2VuZGlmCi0gICAgZGVsZXRlIG1f
ZXZlbnROYW1lczsKLSAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdUYWJsZTsKLSAgICBkZWxldGUg
bV90aHJlYWRUaW1lcnM7CisgICAgaWYgKG1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yKQor
ICAgICAgICBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvcihtX2F0b21pY1N0cmluZ1RhYmxl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1dURlRocmVhZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhy
ZWFkRGF0YS5oCShyZXZpc2lvbiA1Nzc2NSkJKGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmg6NTc3NjUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvV1RGVGhyZWFkRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpZm5kZWYg
VGhyZWFkR2xvYmFsRGF0YV9oCisjZGVmaW5lIFRocmVhZEdsb2JhbERhdGFfaAorCisjaW5jbHVk
ZSAiU3RyaW5nSGFzaC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworI2lmIEVOQUJMRShX
T1JLRVJTKQorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KK3VzaW5nIFdURjo6VGhyZWFkU3BlY2lmaWM7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRXZlbnROYW1lczsKKyAgICBzdHJ1Y3QgSUNVQ29u
dmVydGVyV3JhcHBlcjsKKyAgICBzdHJ1Y3QgVEVDQ29udmVydGVyV3JhcHBlcjsKKyAgICBjbGFz
cyBUaHJlYWRUaW1lcnM7CisKKyAgICBjbGFzcyBUaHJlYWRHbG9iYWxEYXRhIDogcHVibGljIE5v
bmNvcHlhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRocmVhZEdsb2JhbERhdGEoKTsKKyAg
ICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsKKworICAgICAgICBFdmVudE5hbWVzJiBldmVudE5h
bWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1lczsgfQorICAgICAgICBIYXNoU2V0PFN0cmluZ0lt
cGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJldHVybiAqbV9hdG9taWNTdHJpbmdUYWJsZTsg
fQorICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygpIHsgcmV0dXJuICptX3RocmVh
ZFRpbWVyczsgfQorCisjaWYgVVNFKElDVV9VTklDT0RFKQorICAgICAgICBJQ1VDb252ZXJ0ZXJX
cmFwcGVyJiBjYWNoZWRDb252ZXJ0ZXJJQ1UoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJJ
Q1U7IH0KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBURUNDb252ZXJ0ZXJX
cmFwcGVyJiBjYWNoZWRDb252ZXJ0ZXJURUMoKSB7IHJldHVybiAqbV9jYWNoZWRDb252ZXJ0ZXJU
RUM7IH0KKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSGFzaFNldDxTdHJpbmdJbXBs
Kj4qIG1fYXRvbWljU3RyaW5nVGFibGU7CisgICAgICAgIEV2ZW50TmFtZXMqIG1fZXZlbnROYW1l
czsKKyAgICAgICAgVGhyZWFkVGltZXJzKiBtX3RocmVhZFRpbWVyczsKKworI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgYm9vbCBtX2lzTWFpblRocmVhZDsKKyNlbmRpZgorCisjaWYgVVNFKElDVV9V
TklDT0RFKQorICAgICAgICBJQ1VDb252ZXJ0ZXJXcmFwcGVyKiBtX2NhY2hlZENvbnZlcnRlcklD
VTsKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBURUNDb252ZXJ0ZXJXcmFw
cGVyKiBtX2NhY2hlZENvbnZlcnRlclRFQzsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFdPUktFUlMp
CisgICAgICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRhPiogc3RhdGlj
RGF0YTsKKyNlbHNlCisgICAgICAgIHN0YXRpYyBUaHJlYWRHbG9iYWxEYXRhKiBzdGF0aWNEYXRh
OworI2VuZGlmCisgICAgICAgIGZyaWVuZCBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxE
YXRhKCk7CisgICAgfTsKKworaW5saW5lIFRocmVhZEdsb2JhbERhdGEmIHRocmVhZEdsb2JhbERh
dGEoKSAKK3sKKyAgICAvLyBGSVhNRTogV29ya2VycyBhcmUgbm90IG5lY2Vzc2FyaWx5IHRoZSBv
bmx5IGZlYXR1cmUgdGhhdCBtYWtlIHBlci10aHJlYWQgZ2xvYmFsIGRhdGEgbmVjZXNzYXJ5Lgor
ICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGUuZy4gZGF0YWJhc2Ugb2JqZWN0cyBtYW5pcHVs
YXRpbmcgc3RyaW5ncyBvbiBzZWNvbmRhcnkgdGhyZWFkcy4KKworI2lmIEVOQUJMRShXT1JLRVJT
KQorICAgIC8vIFRocmVhZEdsb2JhbERhdGEgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUg
aXQgY291bGQgcG9zc2libHkgYmUgdXNlZCBvbiBzZWNvbmRhcnkgb25lcywgc28gdGhlcmUgaXMg
bm8gbmVlZCBmb3Igc3luY2hyb25pemF0aW9uIGhlcmUuCisgICAgaWYgKCFUaHJlYWRHbG9iYWxE
YXRhOjpzdGF0aWNEYXRhKQorICAgICAgICBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhID0g
bmV3IFRocmVhZFNwZWNpZmljPFRocmVhZEdsb2JhbERhdGE+OworICAgIHJldHVybiAqKlRocmVh
ZEdsb2JhbERhdGE6OnN0YXRpY0RhdGE7CisjZWxzZQorICAgIGlmICghVGhyZWFkR2xvYmFsRGF0
YTo6c3RhdGljRGF0YSkgeworICAgICAgICBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhID0g
c3RhdGljX2Nhc3Q8VGhyZWFkR2xvYmFsRGF0YSo+KGZhc3RNYWxsb2Moc2l6ZW9mKFRocmVhZEds
b2JhbERhdGEpKSk7CisgICAgICAgIC8vIFRocmVhZEdsb2JhbERhdGEgY29uc3RydWN0b3IgaW5k
aXJlY3RseSB1c2VzIHN0YXRpY0RhdGEsIHNvIHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBtZW1vcnkg
YmVmb3JlIGludm9raW5nIGl0LgorICAgICAgICBuZXcgKFRocmVhZEdsb2JhbERhdGE6OnN0YXRp
Y0RhdGEpIFRocmVhZEdsb2JhbERhdGE7CisgICAgfQorICAgIHJldHVybiAqVGhyZWFkR2xvYmFs
RGF0YTo6c3RhdGljRGF0YTsKKyNlbmRpZgorfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gVGhyZWFkR2xvYmFsRGF0YV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvV1RGVGhyZWFkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9XVEZU
aHJlYWREYXRhLmgJKHJldmlzaW9uIDU3NzY1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1dURlRo
cmVhZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsODkgKzI0LDExNiBAQAogICoKICAqLwog
Ci0jaWZuZGVmIFRocmVhZEdsb2JhbERhdGFfaAotI2RlZmluZSBUaHJlYWRHbG9iYWxEYXRhX2gK
KyNpZm5kZWYgV1RGVGhyZWFkRGF0YV9oCisjZGVmaW5lIFdURlRocmVhZERhdGFfaAogCi0jaW5j
bHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAotI2lmIEVOQUJM
RShXT1JLRVJTKQorLy8gVGhpcyB3YXMgRU5BQkxFKFdPUktFUlMpIGluIFdlYkNvcmUsIGJ1dCB0
aGlzIGlzIG5vdCBkZWZpbmVkIHdoZW4gY29tcGlsaW5nIEpTQy4KKy8vIEhvd2V2ZXIgdGhpcyBj
aGVjayB3YXMgbm90IGNvcnJlY3QgYW55d2F5LCByZSB0aGlzIGNvbW1lbnQ6CisvLyAgICAvLyBG
SVhNRTogV29ya2VycyBhcmUgbm90IG5lY2Vzc2FyaWx5IHRoZSBvbmx5IGZlYXR1cmUgdGhhdCBt
YWtlIHBlci10aHJlYWQgZ2xvYmFsIGRhdGEgbmVjZXNzYXJ5LgorLy8gICAgLy8gV2UgbmVlZCB0
byBjaGVjayBmb3IgZS5nLiBkYXRhYmFzZSBvYmplY3RzIG1hbmlwdWxhdGluZyBzdHJpbmdzIG9u
IHNlY29uZGFyeSB0aHJlYWRzLgorLy8gQWx3YXlzIGVuYWJsaW5nIHRoaXMgaXMgc2FmZSwgYW5k
IHNob3VsZCBiZSBhIGJldHRlciBvcHRpb24gdW50aWwgd2UgY2FuIGNvbWUgdXAKKy8vIHdpdGgg
YSBiZXR0ZXIgZGVmaW5lLgorI2RlZmluZSBXVEZUSFJFQUREQVRBX01VTFRJVEhSRUFERUQgMQor
CisjaWYgV1RGVEhSRUFEREFUQV9NVUxUSVRIUkVBREVECiAjaW5jbHVkZSA8d3RmL1RocmVhZFNw
ZWNpZmljLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgotdXNpbmcgV1RGOjpUaHJlYWRT
cGVjaWZpYzsKICNlbmRpZgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIElkZW50aWZpZXJUYWJs
ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQXRvbWljU3RyaW5nVGFibGU7Cit9
CiAKLSAgICBjbGFzcyBFdmVudE5hbWVzOwotICAgIHN0cnVjdCBJQ1VDb252ZXJ0ZXJXcmFwcGVy
OwotICAgIHN0cnVjdCBURUNDb252ZXJ0ZXJXcmFwcGVyOwotICAgIGNsYXNzIFRocmVhZFRpbWVy
czsKLQotICAgIGNsYXNzIFRocmVhZEdsb2JhbERhdGEgOiBwdWJsaWMgTm9uY29weWFibGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgVGhyZWFkR2xvYmFsRGF0YSgpOwotICAgICAgICB+VGhyZWFk
R2xvYmFsRGF0YSgpOwotCi0gICAgICAgIEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMoKSB7IHJldHVy
biAqbV9ldmVudE5hbWVzOyB9Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBhdG9taWNT
dHJpbmdUYWJsZSgpIHsgcmV0dXJuICptX2F0b21pY1N0cmluZ1RhYmxlOyB9Ci0gICAgICAgIFRo
cmVhZFRpbWVycyYgdGhyZWFkVGltZXJzKCkgeyByZXR1cm4gKm1fdGhyZWFkVGltZXJzOyB9Cit0
eXBlZGVmIHZvaWQgKCpBdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IpKFdlYkNvcmU6OkF0b21p
Y1N0cmluZ1RhYmxlKik7CiAKLSNpZiBVU0UoSUNVX1VOSUNPREUpCi0gICAgICAgIElDVUNvbnZl
cnRlcldyYXBwZXImIGNhY2hlZENvbnZlcnRlcklDVSgpIHsgcmV0dXJuICptX2NhY2hlZENvbnZl
cnRlcklDVTsgfQotI2VuZGlmCituYW1lc3BhY2UgV1RGIHsKIAotI2lmIFBMQVRGT1JNKE1BQykK
LSAgICAgICAgVEVDQ29udmVydGVyV3JhcHBlciYgY2FjaGVkQ29udmVydGVyVEVDKCkgeyByZXR1
cm4gKm1fY2FjaGVkQ29udmVydGVyVEVDOyB9Ci0jZW5kaWYKK2NsYXNzIFdURlRocmVhZERhdGEg
OiBwdWJsaWMgTm9uY29weWFibGUgeworcHVibGljOgorICAgIFdURlRocmVhZERhdGEoKTsKKyAg
ICB+V1RGVGhyZWFkRGF0YSgpOworCisgICAgV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGUqIGF0
b21pY1N0cmluZ1RhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2F0b21pY1N0cmluZ1Rh
YmxlOworICAgIH0KIAotICAgIHByaXZhdGU6Ci0gICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+
KiBtX2F0b21pY1N0cmluZ1RhYmxlOwotICAgICAgICBFdmVudE5hbWVzKiBtX2V2ZW50TmFtZXM7
Ci0gICAgICAgIFRocmVhZFRpbWVycyogbV90aHJlYWRUaW1lcnM7CisjaWYgVVNFKEpTQykKKyAg
ICB2b2lkIGluaXRpYWxpemVJZGVudGlmaWVyVGFibGUoSlNDOjpJZGVudGlmaWVyVGFibGUqIGlk
ZW50aWZpZXJUYWJsZSkKKyAgICB7CisgICAgICAgIG1fZGVmYXVsdElkZW50aWZpZXJUYWJsZSA9
IGlkZW50aWZpZXJUYWJsZTsKKyAgICAgICAgbV9jdXJyZW50SWRlbnRpZmllclRhYmxlID0gaWRl
bnRpZmllclRhYmxlOworICAgIH0KIAotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYm9vbCBtX2lz
TWFpblRocmVhZDsKLSNlbmRpZgorICAgIEpTQzo6SWRlbnRpZmllclRhYmxlKiBjdXJyZW50SWRl
bnRpZmllclRhYmxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2N1cnJlbnRJZGVudGlmaWVy
VGFibGU7CisgICAgfQorCisgICAgSlNDOjpJZGVudGlmaWVyVGFibGUqIHNldEN1cnJlbnRJZGVu
dGlmaWVyVGFibGUoSlNDOjpJZGVudGlmaWVyVGFibGUqIGlkZW50aWZpZXJUYWJsZSkKKyAgICB7
CisgICAgICAgIEpTQzo6SWRlbnRpZmllclRhYmxlKiBvbGRJZGVudGlmaWVyVGFibGUgPSBtX2N1
cnJlbnRJZGVudGlmaWVyVGFibGU7CisgICAgICAgIG1fY3VycmVudElkZW50aWZpZXJUYWJsZSA9
IGlkZW50aWZpZXJUYWJsZTsKKyAgICAgICAgcmV0dXJuIG9sZElkZW50aWZpZXJUYWJsZTsKKyAg
ICB9CiAKLSNpZiBVU0UoSUNVX1VOSUNPREUpCi0gICAgICAgIElDVUNvbnZlcnRlcldyYXBwZXIq
IG1fY2FjaGVkQ29udmVydGVySUNVOworICAgIHZvaWQgcmVzZXRDdXJyZW50SWRlbnRpZmllclRh
YmxlKCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudElkZW50aWZpZXJUYWJsZSA9IG1fZGVmYXVs
dElkZW50aWZpZXJUYWJsZTsKKyAgICB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgVEVDQ29udmVydGVyV3JhcHBlciogbV9jYWNoZWRDb252ZXJ0ZXJURUM7Citwcml2YXRl
OgorICAgIFdlYkNvcmU6OkF0b21pY1N0cmluZ1RhYmxlKiBtX2F0b21pY1N0cmluZ1RhYmxlOwor
ICAgIEF0b21pY1N0cmluZ1RhYmxlRGVzdHJ1Y3RvciBtX2F0b21pY1N0cmluZ1RhYmxlRGVzdHJ1
Y3RvcjsKKworI2lmIFVTRShKU0MpCisgICAgSlNDOjpJZGVudGlmaWVyVGFibGUqIG1fZGVmYXVs
dElkZW50aWZpZXJUYWJsZTsKKyAgICBKU0M6OklkZW50aWZpZXJUYWJsZSogbV9jdXJyZW50SWRl
bnRpZmllclRhYmxlOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICAgICAgc3Rh
dGljIFRocmVhZFNwZWNpZmljPFRocmVhZEdsb2JhbERhdGE+KiBzdGF0aWNEYXRhOworI2lmIFdU
RlRIUkVBRERBVEFfTVVMVElUSFJFQURFRAorICAgIHN0YXRpYyBUaHJlYWRTcGVjaWZpYzxXVEZU
aHJlYWREYXRhPiogc3RhdGljRGF0YTsKICNlbHNlCi0gICAgICAgIHN0YXRpYyBUaHJlYWRHbG9i
YWxEYXRhKiBzdGF0aWNEYXRhOworICAgIHN0YXRpYyBXVEZUaHJlYWREYXRhKiBzdGF0aWNEYXRh
OwogI2VuZGlmCi0gICAgICAgIGZyaWVuZCBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxE
YXRhKCk7Ci0gICAgfTsKKyAgICBmcmllbmQgV1RGVGhyZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgp
OworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZTsKK307CiAKLWlu
bGluZSBUaHJlYWRHbG9iYWxEYXRhJiB0aHJlYWRHbG9iYWxEYXRhKCkgCitpbmxpbmUgV1RGVGhy
ZWFkRGF0YSYgd3RmVGhyZWFkRGF0YSgpCiB7Ci0gICAgLy8gRklYTUU6IFdvcmtlcnMgYXJlIG5v
dCBuZWNlc3NhcmlseSB0aGUgb25seSBmZWF0dXJlIHRoYXQgbWFrZSBwZXItdGhyZWFkIGdsb2Jh
bCBkYXRhIG5lY2Vzc2FyeS4KLSAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBlLmcuIGRhdGFi
YXNlIG9iamVjdHMgbWFuaXB1bGF0aW5nIHN0cmluZ3Mgb24gc2Vjb25kYXJ5IHRocmVhZHMuCi0K
LSNpZiBFTkFCTEUoV09SS0VSUykKLSAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIGlzIHVzZWQgb24g
bWFpbiB0aHJlYWQgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGJlIHVzZWQgb24gc2Vjb25kYXJ5
IG9uZXMsIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHN5bmNocm9uaXphdGlvbiBoZXJlLgotICAg
IGlmICghVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSkKLSAgICAgICAgVGhyZWFkR2xvYmFs
RGF0YTo6c3RhdGljRGF0YSA9IG5ldyBUaHJlYWRTcGVjaWZpYzxUaHJlYWRHbG9iYWxEYXRhPjsK
LSAgICByZXR1cm4gKipUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhOworI2lmIFdURlRIUkVB
RERBVEFfTVVMVElUSFJFQURFRAorICAgIC8vIFdSVCBXZWJDb3JlOgorICAgIC8vICAgIFdURlRo
cmVhZERhdGEgaXMgdXNlZCBvbiBtYWluIHRocmVhZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkg
YmUgdXNlZAorICAgIC8vICAgIG9uIHNlY29uZGFyeSBvbmVzLCBzbyB0aGVyZSBpcyBubyBuZWVk
IGZvciBzeW5jaHJvbml6YXRpb24gaGVyZS4KKyAgICAvLyBXUlQgSmF2YVNjcmlwdENvcmU6Cisg
ICAgLy8gICAgd3RmVGhyZWFkRGF0YSgpIGlzIGluaXRpYWxseSBjYWxsZWQgZnJvbSBpbml0aWFs
aXplVGhyZWFkaW5nKCksIGVuc3VyaW5nCisgICAgLy8gICAgdGhpcyBpcyBpbml0aWFsbHkgY2Fs
bGVkIGluIGEgcHRocmVhZF9vbmNlIGxvY2tlZCBjb250ZXh0LgorICAgIGlmICghV1RGVGhyZWFk
RGF0YTo6c3RhdGljRGF0YSkKKyAgICAgICAgV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSA9IG5l
dyBUaHJlYWRTcGVjaWZpYzxXVEZUaHJlYWREYXRhPjsKKyAgICByZXR1cm4gKipXVEZUaHJlYWRE
YXRhOjpzdGF0aWNEYXRhOwogI2Vsc2UKLSAgICBpZiAoIVRocmVhZEdsb2JhbERhdGE6OnN0YXRp
Y0RhdGEpIHsKLSAgICAgICAgVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YSA9IHN0YXRpY19j
YXN0PFRocmVhZEdsb2JhbERhdGEqPihmYXN0TWFsbG9jKHNpemVvZihUaHJlYWRHbG9iYWxEYXRh
KSkpOwotICAgICAgICAvLyBUaHJlYWRHbG9iYWxEYXRhIGNvbnN0cnVjdG9yIGluZGlyZWN0bHkg
dXNlcyBzdGF0aWNEYXRhLCBzbyB3ZSBuZWVkIHRvIHNldCB1cCB0aGUgbWVtb3J5IGJlZm9yZSBp
bnZva2luZyBpdC4KLSAgICAgICAgbmV3IChUaHJlYWRHbG9iYWxEYXRhOjpzdGF0aWNEYXRhKSBU
aHJlYWRHbG9iYWxEYXRhOworICAgIGlmICghV1RGVGhyZWFkRGF0YTo6c3RhdGljRGF0YSkgewor
ICAgICAgICBXVEZUaHJlYWREYXRhOjpzdGF0aWNEYXRhID0gc3RhdGljX2Nhc3Q8V1RGVGhyZWFk
RGF0YSo+KGZhc3RNYWxsb2Moc2l6ZW9mKFdURlRocmVhZERhdGEpKSk7CisgICAgICAgIC8vIFdU
RlRocmVhZERhdGEgY29uc3RydWN0b3IgaW5kaXJlY3RseSB1c2VzIHN0YXRpY0RhdGEsIHNvIHdl
IG5lZWQgdG8gc2V0IHVwIHRoZSBtZW1vcnkgYmVmb3JlIGludm9raW5nIGl0LgorICAgICAgICBu
ZXcgKFdURlRocmVhZERhdGE6OnN0YXRpY0RhdGEpIFdURlRocmVhZERhdGE7CiAgICAgfQotICAg
IHJldHVybiAqVGhyZWFkR2xvYmFsRGF0YTo6c3RhdGljRGF0YTsKKyAgICByZXR1cm4gKldURlRo
cmVhZERhdGE6OnN0YXRpY0RhdGE7CiAjZW5kaWYKIH0KLSAgICAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAotI2VuZGlmIC8vIFRocmVhZEdsb2JhbERhdGFfaAorfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6V1RGVGhyZWFkRGF0YTsKK3VzaW5nIFdURjo6d3RmVGhyZWFkRGF0YTsK
KworI2VuZGlmIC8vIFdURlRocmVhZERhdGFfaApJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3
NzMpCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMC0wNC0xNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQ1CisgICAgICAgIE1v
dmUgc3RyaW5nIHVuaXF1aW5nIHRhYmxlcyB0byAobmV3KSBXVEZUaHJlYWREYXRhIGNsYXNzLgor
CisgICAgICAgIFJlbW92ZSBBdG9taWNTdHJpbmcncyBkZXBlbmRlbmN5IG9uIFRocmVhZEdsb2Jh
bERhdGEgc28gdGhhdCB3ZSBjYW4gbW92ZQorICAgICAgICBXZWJDb3JlJ3Mgc3RyaW5nIGNsYXNz
ZXMgdXAgdG8gV1RGLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRocmVh
ZERhdGEuaDogQWRkZWQuCisgICAgICAgICogSlNVdGlscy5jcHA6IFVwZGF0ZSAKKyAgICAgICAg
KEpTR2x1ZUFQSUVudHJ5OjpKU0dsdWVBUElFbnRyeSk6CisgICAgICAgIChKU0dsdWVBUElFbnRy
eTo6fkpTR2x1ZUFQSUVudHJ5KToKKyAgICAgICAgKEpTR2x1ZUFQSUNhbGxiYWNrOjpKU0dsdWVB
UElDYWxsYmFjayk6CisgICAgICAgIChKU0dsdWVBUElDYWxsYmFjazo6fkpTR2x1ZUFQSUNhbGxi
YWNrKToKKwogMjAxMC0wMy0zMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBKYXZhU2Ny
aXB0R2x1ZS9KU1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxz
LmNwcAkocmV2aXNpb24gNTc3NjUpCisrKyBKYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlVzZXJPYmplY3RJbXAuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1Byb3BlcnR5TmFtZUFycmF5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV1RG
VGhyZWFkRGF0YS5oPgogCiBzdHJ1Y3QgT2JqZWN0SW1wTGlzdCB7CiAgICAgSlNPYmplY3QqIGlt
cDsKQEAgLTQyNywyMyArNDI4LDIzIEBAIEV4ZWNTdGF0ZSogZ2V0VGhyZWFkR2xvYmFsRXhlY1N0
YXRlKCkKIAogSlNHbHVlQVBJRW50cnk6OkpTR2x1ZUFQSUVudHJ5KCkKICAgICA6IG1fbG9jayhM
b2NrRm9yUmVhbCkKLSAgICAsIG1fc3RvcmVkSWRlbnRpZmllclRhYmxlKGN1cnJlbnRJZGVudGlm
aWVyVGFibGUoKSkKKyAgICAsIG1fc3RvcmVkSWRlbnRpZmllclRhYmxlKHd0ZlRocmVhZERhdGEo
KS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpCiB7Ci0gICAgc2V0Q3VycmVudElkZW50aWZpZXJU
YWJsZShnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRhKCku
aWRlbnRpZmllclRhYmxlKTsKKyAgICB3dGZUaHJlYWREYXRhKCkuc2V0Q3VycmVudElkZW50aWZp
ZXJUYWJsZShnZXRUaHJlYWRHbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLT5nbG9iYWxEYXRh
KCkuaWRlbnRpZmllclRhYmxlKTsKIH0KIAogSlNHbHVlQVBJRW50cnk6On5KU0dsdWVBUElFbnRy
eSgpCiB7Ci0gICAgc2V0Q3VycmVudElkZW50aWZpZXJUYWJsZShtX3N0b3JlZElkZW50aWZpZXJU
YWJsZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUobV9z
dG9yZWRJZGVudGlmaWVyVGFibGUpOwogfQogCiBKU0dsdWVBUElDYWxsYmFjazo6SlNHbHVlQVBJ
Q2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQogICAgIDogbV9kcm9wTG9ja3MoZXhlYykKIHsKLSAg
ICByZXNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoKTsKKyAgICB3dGZUaHJlYWREYXRhKCkucmVz
ZXRDdXJyZW50SWRlbnRpZmllclRhYmxlKCk7CiB9CiAKIEpTR2x1ZUFQSUNhbGxiYWNrOjp+SlNH
bHVlQVBJQ2FsbGJhY2soKQogewotICAgIHNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0VGhy
ZWFkR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZpZXJU
YWJsZSk7CisgICAgd3RmVGhyZWFkRGF0YSgpLnNldEN1cnJlbnRJZGVudGlmaWVyVGFibGUoZ2V0
VGhyZWFkR2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKS0+Z2xvYmFsRGF0YSgpLmlkZW50aWZp
ZXJUYWJsZSk7CiB9CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
V1RGVGhyZWFkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvV1RGVGhyZWFkRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV1RGVGhyZWFkRGF0YS5oPgpJbmRl
eDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU3NzczKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNSBAQAorMjAxMC0wNC0xNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NzQ1CisgICAgICAg
IE1vdmUgc3RyaW5nIHVuaXF1aW5nIHRhYmxlcyB0byAobmV3KSBXVEZUaHJlYWREYXRhIGNsYXNz
LgorCisgICAgICAgIFJlbW92ZSBBdG9taWNTdHJpbmcncyBkZXBlbmRlbmN5IG9uIFRocmVhZEds
b2JhbERhdGEgc28gdGhhdCB3ZSBjYW4gbW92ZQorICAgICAgICBXZWJDb3JlJ3Mgc3RyaW5nIGNs
YXNzZXMgdXAgdG8gV1RGLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1dURlRo
cmVhZERhdGEuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHA6IFJlbW92ZSBtX2F0b21pY1N0cmluZ1RhYmxlLCBhbGwgd3RmVGhyZWFkRGF0YSgpIHRvIGVu
c3VyZSB0aHJlYWRzYWZlbHkgaW5pdGlhbGl6ZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRH
bG9iYWxEYXRhOjpUaHJlYWRHbG9iYWxEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZEds
b2JhbERhdGE6On5UaHJlYWRHbG9iYWxEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UaHJlYWRH
bG9iYWxEYXRhLmg6IFJlbW92ZSBtX2F0b21pY1N0cmluZ1RhYmxlLgorICAgICAgICAoV2ViQ29y
ZTo6VGhyZWFkR2xvYmFsRGF0YTo6ZXZlbnROYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNTdHJpbmdUYWJsZTo6dGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3kpOgorICAgICAgICAo
V2ViQ29yZTo6c3RyaW5nVGFibGUpOiBBY2Nlc3MgdGhlIEF0b21pY1N0cmluZ1RhYmxlIG9uIHd0
ZlRocmVhZERhdGEoKSByYXRoZXIgdGhlbiB0aHJlYWRHbG9iYWxEYXRhKCkuCisKIDIwMTAtMDQt
MTYgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvd3RmL1dURlRocmVhZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL0Zv
cndhcmRpbmdIZWFkZXJzL3d0Zi9XVEZUaHJlYWREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9XVEZUaHJlYWREYXRhX2gKKyNkZWZpbmUgV2Vi
Q29yZV9GV0RfV1RGVGhyZWFkRGF0YV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV1RGVGhy
ZWFkRGF0YS5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHAJKHJldmlzaW9uIDU3NzY1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRHbG9iYWxEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0cmluZ0lt
cGwuaCIKICNpbmNsdWRlICJUaHJlYWRUaW1lcnMuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFy
YW0uaD4KKyNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCiAjaWYgVVNFKElDVV9VTklD
T0RFKQogI2luY2x1ZGUgIlRleHRDb2RlY0lDVS5oIgpAQCAtNTUsOCArNTYsNyBAQCBUaHJlYWRH
bG9iYWxEYXRhKiBUaHJlYWRHbG9iYWxEYXRhOjpzdGF0CiAjZW5kaWYKIAogVGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCi0gICAgOiBtX2F0b21pY1N0cmluZ1RhYmxlKG5ldyBI
YXNoU2V0PFN0cmluZ0ltcGwqPikKLSAgICAsIG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykK
KyAgICA6IG1fZXZlbnROYW1lcyhuZXcgRXZlbnROYW1lcykKICAgICAsIG1fdGhyZWFkVGltZXJz
KG5ldyBUaHJlYWRUaW1lcnMpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pc01haW5UaHJlYWQo
aXNNYWluVGhyZWFkKCkpCkBAIC02OCwxMSArNjgsMTEgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhy
ZWFkR2xvYmFsRGF0YSgpCiAgICAgLCBtX2NhY2hlZENvbnZlcnRlclRFQyhuZXcgVEVDQ29udmVy
dGVyV3JhcHBlcikKICNlbmRpZgogewotICAgIC8vIFN0cmluZ0ltcGw6OmVtcHR5KCkgZG9lcyBu
b3QgY29uc3RydWN0IGl0cyBzdGF0aWMgc3RyaW5nIGluIGEgdGhyZWFkc2FmZSBmYXNoaW9uLAot
ICAgIC8vIHNvIGVuc3VyZSBpdCBoYXMgYmVlbiBpbml0aWFsaXplZCBmcm9tIGhlcmUuCi0gICAg
Ly8KICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQgYmVmb3JlIGJlaW5nIGNhbGxlZCBvbgotICAgIC8vIGFueSBvdGhlciB0aHJl
YWQsIGFuZCBpcyBvbmx5IGNhbGxlZCBvbmNlIHBlciB0aHJlYWQuCisgICAgLy8gYW55IG90aGVy
IHRocmVhZCwgYW5kIGlzIG9ubHkgY2FsbGVkIG9uY2UgcGVyIHRocmVhZCDigJMgdGhpcyBtYWtl
cyB0aGlzIGEgY29udmVuaWVudAorICAgIC8vIHBvaW50IHRvIGNhbGwgbWV0aG9kcyB0aGF0IGlu
dGVybmFsbHkgcGVyZm9ybSBhIG9uZS10aW1lIGluaXRpYWxpemF0aW9uIHRoYXQgaXMgbm90Cisg
ICAgLy8gdGhyZWFkc2FmZS4KKyAgICB3dGZUaHJlYWREYXRhKCk7CiAgICAgU3RyaW5nSW1wbDo6
ZW1wdHkoKTsKIH0KIApAQCAtODUsNyArODUsNiBAQCBUaHJlYWRHbG9iYWxEYXRhOjp+VGhyZWFk
R2xvYmFsRGF0YSgpCiAgICAgZGVsZXRlIG1fY2FjaGVkQ29udmVydGVySUNVOwogI2VuZGlmCiAg
ICAgZGVsZXRlIG1fZXZlbnROYW1lczsKLSAgICBkZWxldGUgbV9hdG9taWNTdHJpbmdUYWJsZTsK
ICAgICBkZWxldGUgbV90aHJlYWRUaW1lcnM7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
VGhyZWFkR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5oCShyZXZpc2lvbiA1Nzc2NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vVGhyZWFk
R2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgflRocmVhZEdsb2JhbERhdGEoKTsKIAogICAgICAgICBFdmVudE5h
bWVzJiBldmVudE5hbWVzKCkgeyByZXR1cm4gKm1fZXZlbnROYW1lczsgfQotICAgICAgICBIYXNo
U2V0PFN0cmluZ0ltcGwqPiYgYXRvbWljU3RyaW5nVGFibGUoKSB7IHJldHVybiAqbV9hdG9taWNT
dHJpbmdUYWJsZTsgfQogICAgICAgICBUaHJlYWRUaW1lcnMmIHRocmVhZFRpbWVycygpIHsgcmV0
dXJuICptX3RocmVhZFRpbWVyczsgfQogCiAjaWYgVVNFKElDVV9VTklDT0RFKQpAQCAtNjMsNyAr
NjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+KiBtX2F0b21pY1N0cmluZ1RhYmxlOwogICAgICAgICBF
dmVudE5hbWVzKiBtX2V2ZW50TmFtZXM7CiAgICAgICAgIFRocmVhZFRpbWVycyogbV90aHJlYWRU
aW1lcnM7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCShyZXZp
c2lvbiA1Nzc2NikKKysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCwxNSArMjgsNDYgQEAKIAogI2luY2x1ZGUgIlN0YXRpY0NvbnN0
cnVjdG9ycy5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKLSNpbmNsdWRlICJUaHJlYWRHbG9i
YWxEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIEF0
b21pY1N0cmluZ1RhYmxlKiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgQXRvbWljU3RyaW5nVGFi
bGUqIHRhYmxlID0gbmV3IEF0b21pY1N0cmluZ1RhYmxlOworCisgICAgICAgIFdURlRocmVhZERh
dGEmIGRhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdU
YWJsZSA9IHRhYmxlOworICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9y
ID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisKKyAgICAgICAgcmV0dXJuIHRhYmxlOwor
ICAgIH0KKworICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJsZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV90YWJsZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShBdG9taWNTdHJpbmdUYWJsZSogdGFibGUpCisgICAgeworICAgICAgICBkZWxldGUgdGFi
bGU7CisgICAgfQorCisgICAgSGFzaFNldDxTdHJpbmdJbXBsKj4gbV90YWJsZTsKK307CisKIHN0
YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHN0cmluZ1RhYmxlKCkKIHsKLSAgICBy
ZXR1cm4gdGhyZWFkR2xvYmFsRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCk7CisgICAgLy8gT25j
ZSBwb3NzaWJsZSB3ZSBzaG91bGQgbWFrZSB0aGlzIG5vbi1sYXp5IChjb25zdHJ1Y3RlZCBpbiBX
VEZUaHJlYWREYXRhJ3MgY29uc3RydWN0b3IpLgorICAgIEF0b21pY1N0cmluZ1RhYmxlKiB0YWJs
ZSA9IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpOworICAgIGlmIChVTkxJS0VM
WSghdGFibGUpKQorICAgICAgICB0YWJsZSA9IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKTsK
KyAgICByZXR1cm4gdGFibGUtPnRhYmxlKCk7CiB9CiAKIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRv
ciB7Cg==
</data>
<flag name="review"
          id="37389"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>