<?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>66827</bug_id>
          
          <creation_ts>2011-08-23 17:27:22 -0700</creation_ts>
          <short_desc>Unzip initialization lists and constructors in JSCell hierarchy (1/7)</short_desc>
          <delta_ts>2011-08-25 16:30:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65288</dependson>
          <blocked>66567</blocked>
    
    <blocked>66957</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455866</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-23 17:27:22 -0700</bug_when>
    <thetext>This is the first level (i.e. all of JSCell&apos;s immediately subclasses) of the unzipping process described in https://bugs.webkit.org/show_bug.cgi?id=66567.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456605</commentid>
    <comment_count>1</comment_count>
      <attachid>105118</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-24 19:04:19 -0700</bug_when>
    <thetext>Created attachment 105118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456937</commentid>
    <comment_count>2</comment_count>
      <attachid>105204</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-25 10:00:07 -0700</bug_when>
    <thetext>Created attachment 105204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456995</commentid>
    <comment_count>3</comment_count>
      <attachid>105204</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-25 10:58:28 -0700</bug_when>
    <thetext>Comment on attachment 105204
Patch

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

I’m not sure constructorBody is a good name for this function if once we are done with this task it won’t be called inside C++ constructors any more. The name “constructor” belongs to the C++ language and has a specific meaning. Could we call these functions “initialize” or “finishInitialization” instead of “constructorBody”?

If someone makes the mistake of not calling the base class’s constructorBody function, is there some way we will quickly detect this at either compile time or runtime?

&gt; Source/JavaScriptCore/runtime/StructureChain.h:72
&gt; +            m_vector[i].clear();

Why is this needed? Wouldn’t that element in the vector already be 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457012</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-25 11:27:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 105204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105204&amp;action=review
&gt; 
&gt; I’m not sure constructorBody is a good name for this function if once we are done with this task it won’t be called inside C++ constructors any more. The name “constructor” belongs to the C++ language and has a specific meaning. Could we call these functions “initialize” or “finishInitialization” instead of “constructorBody”?
&gt; 

Geoff and I talked about this for a while, and we were never truly happy with the potential names we came up with.  The problem with associating these new functions with initialization is that it somewhat conflicts with the &quot;isInitializing&quot; flag name, since we&apos;re technically not doing initialization any more.  Initialization gets the object into a GC-safe state, and after that the constructor body runs.  Another option we considered was &quot;finishAllocations&quot;.  We scrapped that one because the function doesn&apos;t *just* do allocations--it does whatever the old non-trival constructor body did.  The reason we settled for constructorBody() is because it seemed the closest to what these functions were actually replacing.  I guess we could still discuss it further or brainstorm better names.

&gt; If someone makes the mistake of not calling the base class’s constructorBody function, is there some way we will quickly detect this at either compile time or runtime?

Yes, it will be caught at runtime. JSCell&apos;s constructorBody() will not be called if there is a break in the constructorBody() chain, therefore it will not clear the &quot;isInitializing&quot; flag and the next GC allocation will fail.  Unfortunately, it&apos;s not guaranteed that the failure will be anywhere near where the break in the constructorBody() chain is.

&gt; &gt; Source/JavaScriptCore/runtime/StructureChain.h:72
&gt; &gt; +            m_vector[i].clear();
&gt; 
&gt; Why is this needed? Wouldn’t that element in the vector already be 0?
 
I think you&apos;re right, since the default initialization of WriteBarrier is to set it to null.  I&apos;m just moving the code around right now :-)  Should I file a separate bug on it, or is it worth it to make the intention of the programmer less implicit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457032</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-25 11:50:04 -0700</bug_when>
    <thetext>&gt; The problem with associating these new functions with initialization is that it somewhat conflicts with
&gt; the &quot;isInitializing&quot; flag name, since we&apos;re technically not doing initialization any more.  

I think a bigger problem with &quot;initialize&quot; as a term is that &quot;initialize&quot; is also a C++ term of art, which we&apos;ll continue to take advantage of. We want a C++ constructor to run initializers, putting an object to a GC-safe state from the C++ perspective, after which we want to do non-trivial work to fill in an object to a behaviorally correct state from the JS perspective.

Whatever happens in the function currently named &quot;constructorBody&quot;, we want to clearly separate it from a prior step, which we&apos;ll call initialization.

Two other options:
    * a notification-style of naming: didConstruct(), didInitialize(), or didAllocate().
    * a command that reflects the caller being &quot;create()&quot;: finishCreation().

I&apos;m fine with any of those options. Mark, will you pick one?

&gt; &gt; If someone makes the mistake of not calling the base class’s constructorBody function, is there some way we will quickly detect this at either compile time or runtime?
&gt; 
&gt; Yes, it will be caught at runtime.

Specifically, an ASSERT will fire when the *next* object is allocated. Not perfect, but probably enough to catch any bug this fundamental.

&gt; &gt; &gt; Source/JavaScriptCore/runtime/StructureChain.h:72
&gt; &gt; &gt; +            m_vector[i].clear();
&gt; &gt; 
&gt; &gt; Why is this needed? Wouldn’t that element in the vector already be 0?
&gt; 
&gt; I think you&apos;re right, since the default initialization of WriteBarrier is to set it to null.  I&apos;m just moving the code around right now :-)  Should I file a separate bug on it, or is it worth it to make the intention of the programmer less implicit?

Let&apos;s just take it out in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457035</commentid>
    <comment_count>6</comment_count>
      <attachid>105204</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-25 11:50:34 -0700</bug_when>
    <thetext>Comment on attachment 105204
Patch

r- since there are some minor modifications to make here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457046</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-25 11:58:35 -0700</bug_when>
    <thetext>&gt; Two other options:
&gt;     * a notification-style of naming: didConstruct(), didInitialize(), or didAllocate().
&gt;     * a command that reflects the caller being &quot;create()&quot;: finishCreation().
&gt; 
&gt; I&apos;m fine with any of those options. Mark, will you pick one?
&gt; 
I think I like finishCreation() better, since the notification-style stuff makes me think more of delegates, and there&apos;s not really any delegation going on in this particular instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457056</commentid>
    <comment_count>8</comment_count>
      <attachid>105231</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-25 12:22:48 -0700</bug_when>
    <thetext>Created attachment 105231
Change constructorBody to finishCreation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457123</commentid>
    <comment_count>9</comment_count>
      <attachid>105231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-25 14:06:22 -0700</bug_when>
    <thetext>Comment on attachment 105231
Change constructorBody to finishCreation

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

&gt; Source/JavaScriptCore/runtime/JSString.h:312
&gt; +        // This constructor constructs a new string by concatenating v1, v2 &amp; v3.

Probably should reword the comment since it’s not a constructor any more. But I don’t want that to hold up this commit.

&gt; Source/JavaScriptCore/runtime/JSString.h:330
&gt; +            appendStringInConstruct(index, u1);

Seems like this function should be named appendStringDuringCreation now. Again, don’t want this to hold up this commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457144</commentid>
    <comment_count>10</comment_count>
      <attachid>105246</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-25 14:36:35 -0700</bug_when>
    <thetext>Created attachment 105246
Fixing review issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457175</commentid>
    <comment_count>11</comment_count>
      <attachid>105246</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-08-25 15:23:24 -0700</bug_when>
    <thetext>Comment on attachment 105246
Fixing review issues

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457249</commentid>
    <comment_count>12</comment_count>
      <attachid>105246</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 16:30:27 -0700</bug_when>
    <thetext>Comment on attachment 105246
Fixing review issues

Clearing flags on attachment: 105246

Committed r93835: &lt;http://trac.webkit.org/changeset/93835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457250</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-25 16:30:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105118</attachid>
            <date>2011-08-24 19:04:19 -0700</date>
            <delta_ts>2011-08-25 10:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66827-20110824190418.patch</filename>
            <type>text/plain</type>
            <size>28512</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJi
YTQ4NzJjZWJiNmNmMTJjZTFjZjkyMmVmYmQyZDkwM2M5M2I5ZTUuLmYwMzU4NWE1ZDQ2ZTQ1YTU2
ODE2YjkyMTQxZTM4YmRmODgyMzBmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA4LTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVj
dG9ycyBpbiBKU0NlbGwgaGllcmFyY2h5ICgxLzcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGNvbnN0cnVjdG9yQm9keSgpIG1ldGhvZHMgdG8g
YWxsIGltbWVkaWF0ZWx5IHN1YmNsYXNzZXMgb2YgSlNDZWxsIHdpdGgKKyAgICAgICAgbm9uLWVt
cHR5IGNvbnN0cnVjdG9ycy4gIFBhcnQgb2YgYSBsYXJnZXIgcmVmYWN0b3JpbmcgdG8gInVuemlw
IiBpbml0aWFsaXphdGlvbgorICAgICAgICBsaXN0cyBhbmQgY29uc3RydWN0b3IgYm9kaWVzLgor
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpFeGVjdXRhYmxlQmFzZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpj
b25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlcjo6R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1l
L0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpj
b25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAoSlNDOjpKU0FQSVZhbHVlV3JhcHBlcjo6SlNBUElW
YWx1ZVdyYXBwZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6
Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6SlNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
OgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxk
ZXI6OkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNvbnN0cnVjdG9yQm9k
eSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OlJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgor
ICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAo
SlNDOjpTY29wZUNoYWluTm9kZTo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNo
YWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y29uc3RydWN0b3JCb2R5KToKKwogMjAxMS0wOC0yNCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZSBzb21ldGltZXMgaGFzIHR3byBoZWFwIG9iamVjdCBjb25zdHJ1Y3Rpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2UyOThmZWM5NWEzNzA3
NzUxNjA3MjljMzY3M2ZkYzRmNWNjZTViNC4uZTZkMzYyNmFlODBmYzZhNWNhODg3ZDVhMTE1MGI0
YzY5OWNiZDNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNTgsMTIgKzU4LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX251
bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICAsIG1fbnVtUGFy
YW1ldGVyc0ZvckNvbnN0cnVjdChudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lk
IGNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEJhc2U6OmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICAgICAgV2VhazxFeGVjdXRhYmxlQmFzZT4gZmluYWxpemVyKGdsb2JhbERh
dGEsIHRoaXMsIGV4ZWN1dGFibGVGaW5hbGl6ZXIoKSk7CiAgICAgICAgICAgICBmaW5hbGl6ZXIu
bGVha0hhbmRsZSgpOwogI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgCisgCiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dldHRlclNldHRlci5oCmluZGV4IDAzZGJiNjZlYzE4YmM3NjU5ODExZWVmZGIz
MmNiMjc3MmQxMDAwYWYuLjA5OGE0ODdjM2YyNzFiZjMyZGY0ZmFiZjcyOTA0ODk4NGVkMGMxMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC00
MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBHZXR0ZXJTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LT5nbG9iYWxEYXRhKCkuZ2V0dGVyU2V0dGVyU3RydWN0dXJlLmdldCgpKQogICAgICAgICB7Cisg
ICAgICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAg
fQogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggNTY0OGZiODBiYTc0ZmVkNDdmOGU4NjBjNjQ5ZWNlY2Vh
ODVkZDAyNi4uNmIyOWM5MDUxN2I2NWU3Mjg2M2QzYmQyNTk3NmI0MjM0MDIwNTFkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCkBA
IC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEpTQVBJVmFsdWVXcmFwcGVyX2gKIAogI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIApAQCAtNTAsMTIgKzUxLDE5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVXcmFw
cGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYywgdmFsdWUpOwogICAg
ICAgICB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQmFz
ZTo6Y29uc3RydWN0b3JCb2R5KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgICAgICBtX3Zh
bHVlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIEFT
U0VSVCghdmFsdWUuaXNDZWxsKCkpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAg
ICBKU0FQSVZhbHVlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAg
ICAgICAgICA6IEpTQ2VsbChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5h
cGlXcmFwcGVyU3RydWN0dXJlLmdldCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3ZhbHVl
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgICAgIEFTU0VS
VCghdmFsdWUuaXNDZWxsKCkpOworICAgICAgICAgICAgY29uc3RydWN0b3JCb2R5KGV4ZWMsIHZh
bHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3ZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBkZjY5N2MwMmJkMDhl
ZDE1MjU0M2FlMzNhMDgwMTNmMjgzMWRmMWMyLi5mMjk1YjQwYzEzOWZmNzEwNjY1NWNlZDYzOTdi
OGUwNzIyMmNjNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
ODAsNyArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBleHBs
aWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQogICAgICAgICBKU0NlbGwoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CisgICAgICAgIEpTQ2VsbChDcmVhdGlu
Z0Vhcmx5Q2VsbFRhZyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVibGlj
OgpAQCAtMTcwLDEyICsxNzAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTQ2Vs
bDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIH0KIAotICAgIGlu
bGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKKyAgICBpbmxpbmUgSlNDZWxsOjpKU0Nl
bGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgewotICAgICAgICBjb25zdHJ1Y3RvckJvZHko
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7IAogICAgIH0KIAogICAg
IGlubGluZSB2b2lkIEpTQ2VsbDo6Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKQEAgLTE5Miw2ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9p
ZCBKU0NlbGw6OmNvbnN0cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKICAgICB7CiAjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLmlzSW5pdGlhbGl6aW5n
T2JqZWN0KCkpOwogICAgICAgICBnbG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxz
ZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCmluZGV4IDVhMGQwMWJjZTJhYWNhNGRjOTM0OWYxYTc4M2IwZDVl
MGQ3ZTRlNjcuLmNjMjZhNDAyNDMzYzczNDI3YTkxODMzNmYwMzZhNDhmMTZmYWQ5NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtMjU5LDYgKzI1OSwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3Rv
ckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2Jh
bERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VF
eHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUt
PmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwg
SGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CisgICAgICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0
PHZvaWQqPih0aGlzICsgMSkpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT50eXBl
SW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkBAIC00MzUsMTIgKzQ0
Niw3IEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVyCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKIHsKLSAg
ICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7Ci0g
ICAgQVNTRVJUKG1fc3RydWN0dXJlLT5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChwcm90b3R5cGUo
KS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkp
KTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRp
Y19jYXN0PHZvaWQqPih0aGlzICsgMSkpOwotICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+dHlwZUlu
Zm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERh
dGEsIGlubGluZVN0b3JhZ2UpOwogfQogCiBpbmxpbmUgSlNPYmplY3Q6On5KU09iamVjdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgKaW5kZXggMTgzMTBmYThjN2U4YjEyN2EzYmE4YTdlYzU1MTA0MjBkMjY2MDcyNC4u
NDQzMGJiZmYzODhhMzMxYzVlNTQ0NTZlMzZjNTgyNjIzNjQwYWM0NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApA
QCAtODcsNiArODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZvaWQgY29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlE
YXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6
OmNvbnN0cnVjdG9yQm9keShleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOjpQcm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9
IHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICAg
ICAgICAgIG1fanNTdHJpbmdzW2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3du
ZWRTdHJpbmcoZXhlYywgcHJvcGVydHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggOTA5OTRmYmUzODk4ZmU4ODZm
MjFlYjQzMWNhMWU1ZDNkZjhmNTg0NC4uNGIyMDU2YmYyYWVjZDk4ZjJmMDMzMDk4Y2IwNWZhYWI3
YzdiMDcwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0x
OTAsOCArMTkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFs
dWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoIW1fdmFsdWUuaXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlz
KS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAg
fQogCiAgICAgICAgIGVudW0gSGFzT3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CkBA
IC0yMDEsMjQgKzE5OSwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KDApCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7Ci0gICAgICAgICAgICBIZWFwOjpoZWFw
KHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QodmFsdWUuaW1wbCgpLT5jb3N0KCkpOwogICAg
ICAgICB9CisKICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVlLCBIYXNPdGhlck93bmVyVHlwZSkKICAgICAgICAgICAg
IDogSlNDZWxsKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RyaW5nU3RydWN0dXJlLmdldCgpKQog
ICAgICAgICAgICAgLCBtX2xlbmd0aCh2YWx1ZS0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAsIG1f
dmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNOdWxsKCkpOwogICAgICAgICB9CisKICAgICAg
ICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBs
PiByb3BlKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHJvcGUtPmxlbmd0aCgp
KQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoMSkKICAgICAgICAgewotICAgICAgICAgICAg
bV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYoKTsKICAgICAgICAgfQorCiAgICAgICAgIC8vIFRo
aXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBz
MSAmIHMyLgogICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVy
Q291bnQgPD0gMy4KICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1
bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKQEAgLTIyNiwx
MiArMjIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHMxLT5s
ZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVy
Q291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50IDw9IHNfbWF4
SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAg
ICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Ci0gICAgICAgICAg
ICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOwotICAgICAgICAgICAgQVNTRVJU
KGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CisKICAgICAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHMxICYgczIu
CiAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8
PSAzLgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVk
IGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwgY29uc3QgVVN0cmluZyYgdTIpCkBAIC0yMzksMTIg
KzIzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVu
Z3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVyQ291
bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50IDw9IHNfbWF4SW50
ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAg
ICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Ci0gICAgICAgICAgICBh
cHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOwotICAgICAgICAgICAgQVNTRVJUKGZp
YmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CisKICAgICAgICAgLy8gVGhpcyBjb25zdHJ1
Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRlbmF0aW5nIHMxICYgczIuCiAg
ICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8PSAz
LgogICAgICAgICBKU1N0cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZp
YmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCkBAIC0yNTIsMzQgKzI0
MSwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVuZ3Ro
KCkgKyBzMi0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChmaWJlckNvdW50
KQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVy
bmFsUm9wZUxlbmd0aCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTEpOwotICAgICAgICAgICAgYXBw
ZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKLSAgICAgICAgICAgIEFTU0VSVChmaWJl
ckNvdW50ID09IGluZGV4KTsKICAgICAgICAgfQotICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9y
IGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdjEsIHYyICYgdjMuCi0g
ICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8PSAz
IC4uLiB3aGljaCBzaW5jZSBldmVyeQotICAgICAgICAvLyB2YWx1ZSBtdXN0IHJlcXVpcmUgYSBm
aWJlckNvdW50IG9mIGF0IGxlYXN0IG9uZSBpbXBsaWVzIHRoYXQgdGhlIGxlbmd0aAotICAgICAg
ICAvLyBmb3IgZWFjaCB2YWx1ZSBtdXN0IGJlIGV4YWN0bHkgMSEKLSAgICAgICAgSlNTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1ZhbHVlIHYzKQorCisg
ICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIDogSlNDZWxsKGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQo
KSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50
KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1
Y3RvckJvZHkoZXhlYywgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KLQorICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBjb25zdHJ1Y3RzIGEgbmV3IHN0cmluZyBieSBjb25jYXRl
bmF0aW5nIHUxICYgdTIuCiAgICAgICAgIEpTU3RyaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgICAgICAgOiBK
U0NlbGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAg
ICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkpCiAgICAgICAgICAg
ICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRl
eCA9IDA7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTEpOwot
ICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsKLSAgICAgICAg
ICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5
IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCkBAIC0yODgsMTYgKzI2NCw2NCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVuZ3RoKCkgKyB1Mi5sZW5ndGgo
KSArIHUzLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoc19tYXhJbnRlcm5h
bFJvcGVMZW5ndGgpCiAgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29uc3Ry
dWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRh
KTsKKyAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7CisgICAgICAgICAgICBI
ZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QodmFsdWUuaW1wbCgpLT5jb3N0
KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3Rv
ckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNOdWxsKCkp
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQorICAgICAgICB7CisgICAg
ICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBt
X2ZpYmVyc1swXSA9IHJvcGUubGVha1JlZigpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBj
b25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNv
dW50LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICAgICAgeworICAgICAgICAgICAg
QmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGZp
YmVyQ291bnQgPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgs
IHUxKTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Cisg
ICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOworICAgICAgICAg
ICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJl
ckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQorICAgICAgICB7CisgICAg
ICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBB
U1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVj
dChpbmRleCwgczEpOwogICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgs
IHUyKTsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Myk7Ci0g
ICAgICAgICAgICBBU1NFUlQoaW5kZXggPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOworICAg
ICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAKLSAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5n
KiBzMikKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2Jh
bERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPD0gc19tYXhJbnRlcm5hbFJv
cGVMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICAgICAg
YXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUxKTsKKyAgICAgICAgICAgIGFwcGVuZFN0
cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMik7CisgICAgICAgICAgICBBU1NFUlQoZmliZXJDb3Vu
dCA9PSBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNv
bnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdjEsIHYyICYgdjMuCisgICAg
ICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8PSAzIC4u
LiB3aGljaCBzaW5jZSBldmVyeQorICAgICAgICAvLyB2YWx1ZSBtdXN0IHJlcXVpcmUgYSBmaWJl
ckNvdW50IG9mIGF0IGxlYXN0IG9uZSBpbXBsaWVzIHRoYXQgdGhlIGxlbmd0aAorICAgICAgICAv
LyBmb3IgZWFjaCB2YWx1ZSBtdXN0IGJlIGV4YWN0bHkgMSEKICAgICAgICAgdm9pZCBjb25zdHJ1
Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1ZhbHVl
IHYzKQogICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAg
ICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgs
IHYxKTsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5n
dGgoZXhlYywgaW5kZXgsIHYyKTsKQEAgLTMwNSw0NiArMzI5LDg2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsK
ICAgICAgICAgfQogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQorICAgICAg
ICB7CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNv
bnN0cnVjdChpbmRleCwgdTEpOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3Qo
aW5kZXgsIHUyKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9w
ZUxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9keShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1
MiwgY29uc3QgVVN0cmluZyYgdTMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmNvbnN0
cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
KyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1MSk7CisgICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOworICAgICAgICAgICAgYXBw
ZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUzKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRl
eCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgIH0KKwogICAgIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChh
bGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERh
dGEsIHZhbHVlKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGdsb2Jh
bERhdGEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAg
SlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxE
YXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcik7Cisg
ICAgICAgICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhLCB2YWx1ZSk7
CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CiAgICAgICAgIHN0YXRp
YyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJp
bmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcik7CisgICAgICAg
ICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3Bl
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHJvcGUpOworICAgICAg
ICAgICAgUmVmUHRyPFJvcGVJbXBsPiB0ZW1wUm9wZSA9IHJvcGU7CisgICAgICAgICAgICBKU1N0
cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEu
aGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHRlbXBSb3BlKTsKKyAgICAgICAgICAgIG5ld1N0
cmluZy0+Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIHRlbXBSb3BlKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBKU1N0
cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCBmaWJlckNvdW50LCBzMSwgczIpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0
cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgczIpOworICAgICAgICAgICAgbmV3U3Ry
aW5nLT5jb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpT
U3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNv
dW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkp
IEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7CisgICAgICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERh
dGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7CisgICAg
ICAgICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhLCBmaWJlckNvdW50
LCBzMSwgdTIpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogICAg
ICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVu
c2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMyKTsK
KyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0
cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwg
dTEsIHMyKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGdsb2JhbERh
dGEsIGZpYmVyQ291bnQsIHUxLCBzMik7CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwog
ICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPigqZXhlYy0+aGVhcCgpKSkg
SlNTdHJpbmcoZXhlYywgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3Ry
aW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KCpleGVjLT5oZWFwKCkpKSBKU1N0cmlu
ZyhleGVjKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGV4ZWMsIHYx
LCB2MiwgdjMpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogICAg
ICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1MikKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBK
U1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0
cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5jb25zdHJ1
Y3RvckJvZHkoZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJp
bmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNv
bnN0IFVTdHJpbmcmIHUzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEs
IHUxLCB1MiwgdTMpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxs
b2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRh
LCB1MSwgdTIsIHUzKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGds
b2JhbERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAg
ICAgICAgfQogCiAgICAgICAgIH5KU1N0cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmNwcAppbmRleCA1ZDE1ODkxN2Q0N2U5ZWFjNmM5YWRmNGMyMmUwOTExMDM1YTZi
ZTU2Li4wY2U1NTEzYzc2MzgzNGQxNTY3ZGJhZmY1NjViMDcxN2QzMWYwZDZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg4LDYgKzg4LDEyIEBAIFJlZ0V4
cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVy
blN0cmluZywgUmVnRXhwRmxhCiAgICAgLCBtX3J0TWF0Y2hGb3VuZENvdW50KDApCiAjZW5kaWYK
IHsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgUmVnRXhwOjpj
b25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6OmNv
bnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKICAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJu
KG1fcGF0dGVyblN0cmluZywgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSwgJm1fY29uc3RydWN0
aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKQogICAgICAgICBtX3N0YXRl
ID0gUGFyc2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXgg
ODEyYTg2Y2QxMWM2MjE1NTA3N2M3YWIxN2I1YzZjMmU0MDI1NGEwMS4uYTVhMDc2MDM1OTNkYzE1
NTZlZWExMWEyMjhmNGNlMzMzOWExMGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwLmgKQEAgLTc1LDYgKzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVn
RXhwS2V5IGtleSgpIHsgcmV0dXJuIFJlZ0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5TdHJpbmcp
OyB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xv
YmFsRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlZ0V4cENh
Y2hlOwogICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIFJlZ0V4
cEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRl
eCBjZjFhNTk2MDdmNWY3MmE4NGQxMzEyYjFkMTNmMGNjOGVhMWFjNDAwLi5jMmY4NWUxNWRlM2Q2
NDQ0YjgxM2M0NjA0ZDAwYjE0YzNmYjExNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC00Myw2ICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICwgZ2xvYmFsT2JqZWN0KCpnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxPYmplY3Qp
CiAgICAgICAgICAgICAsIGdsb2JhbFRoaXMoKmdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbFRoaXMp
CiAgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QpOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29u
c3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5
KCpnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDgzODEyYjZmMzFjZjRkZTllZjZhYTUy
NjdiNzk0ZDY2MzgyYmM0Li4yM2I2NmM3YTVjNzJlZDFlZjU1ZTY0YmJjZTI3NjYxNDVjZWUyMDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE3
Niw2ICsxNzYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogICAgICwgbV9wcmV2ZW50RXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsKKyAgICBjb25z
dHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlKTsKICAgICBB
U1NFUlQobV9wcm90b3R5cGUuaXNPYmplY3QoKSB8fCBtX3Byb3RvdHlwZS5pc051bGwoKSk7CiB9
CkBAIC0xODMsNyArMTg0LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8KIGNvbnN0IENsYXNz
SW5mbyBTdHJ1Y3R1cmU6OnNfaW5mbyA9IHsgIlN0cnVjdHVyZSIsIDAsIDAsIDAgfTsKIAogU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotICAgIDogSlNDZWxs
KGdsb2JhbERhdGEsIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKQorICAgIDogSlNDZWxsKENyZWF0
aW5nRWFybHlDZWxsKQogICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4pCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBqc051bGwo
KSkKICAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCkBAIC0xOTksNiArMjAwLDcgQEAgU3RydWN0
dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICwgbV9wcmV2ZW50
RXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsKKyAgICBj
b25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgdGhpcywgQ3JlYXRpbmdFYXJseUNlbGwpOwogICAg
IEFTU0VSVChtX3Byb3RvdHlwZSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzTnVsbCgpKTsK
ICAgICBBU1NFUlQoIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKQEAgLTIyMSw2ICsy
MjMsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25zKHByZXZp
b3VzLT5tX3ByZXZlbnRFeHRlbnNpb25zKQogICAgICwgbV9kaWRUcmFuc2l0aW9uKHRydWUpCiB7
CisgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChtX3Byb3RvdHlw
ZSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNO
dWxsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uY3BwCmluZGV4IDg5YTBlYzBjMjA2N2I0Njk2ZmEzMWUyNjliNTk3ZDdjNmI5OWJhZmYu
LjBiOTVlYjNmYWQwYTdiZmJmOTk3MjgzZDZkN2FmYmZjYzEwMmM4ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTM3LDE2ICsz
Nyw3IEBAIENsYXNzSW5mbyBTdHJ1Y3R1cmVDaGFpbjo6c19pbmZvID0geyAiU3RydWN0dXJlQ2hh
aW4iLCAwLCAwLCAwIH07CiBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKLSAgICBzaXplX3Qgc2l6ZSA9
IDA7Ci0gICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50
ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3Vy
cmVudC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKLSAgICAgICAgKytzaXplOwot
ICAgIAotICAgIG1fdmVjdG9yID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT5bc2l6ZSArIDFdKTsKLQotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKFN0cnVjdHVy
ZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90
b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUo
KSktPnN0cnVjdHVyZSgpKQotICAgICAgICBtX3ZlY3RvcltpKytdLnNldChnbG9iYWxEYXRhLCB0
aGlzLCBjdXJyZW50KTsKLSAgICBtX3ZlY3RvcltpXS5jbGVhcigpOworICAgIGNvbnN0cnVjdG9y
Qm9keShnbG9iYWxEYXRhLCBoZWFkKTsKIH0KIAogU3RydWN0dXJlQ2hhaW46On5TdHJ1Y3R1cmVD
aGFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAppbmRleCBmODZhOWFhODY1ZDJmODhmMzkyODNlNTE1NmY4MGI1ZGNmZGMxZDkxLi5jY2ExZDM2
OTk4YzNiNGQzMjc3N2EwMjYwNDc2MmFmNjc4MzQ1ZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgU3RydWN0dXJlQ2hhaW5faAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgpAQCAtNDQsNyArNDUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKSB7
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0YS5oZWFw
KSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0
cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgICAg
IHsgCisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+
KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEu
c3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyAKKyAgICAgICAgfQogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgp
OyB9CiAgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCkBAIC01Miw2
ICs1NiwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBDbGFz
c0luZm8gc19pbmZvOwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGNvbnN0cnVjdG9y
Qm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkKKyAgICAgICAg
eworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOworICAgICAg
ICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJl
bnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCku
aXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1
Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICArK3NpemU7CisgICAgCisgICAgICAgICAgICBtX3Zl
Y3RvciA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W3NpemUgKyAx
XSk7CisKKyAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgIGZvciAoU3RydWN0
dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFBy
b3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlw
ZSgpKS0+c3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV92ZWN0b3JbaSsrXS5zZXQoZ2xv
YmFsRGF0YSwgdGhpcywgY3VycmVudCk7CisgICAgICAgICAgICBtX3ZlY3RvcltpXS5jbGVhcigp
OworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGhlYWQpOwogICAgICAgICB+U3RydWN0
dXJlQ2hhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105204</attachid>
            <date>2011-08-25 10:00:07 -0700</date>
            <delta_ts>2011-08-25 12:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66827-20110825100007.patch</filename>
            <type>text/plain</type>
            <size>28005</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJi
YTQ4NzJjZWJiNmNmMTJjZTFjZjkyMmVmYmQyZDkwM2M5M2I5ZTUuLmYwMzU4NWE1ZDQ2ZTQ1YTU2
ODE2YjkyMTQxZTM4YmRmODgyMzBmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDExLTA4LTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVj
dG9ycyBpbiBKU0NlbGwgaGllcmFyY2h5ICgxLzcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGNvbnN0cnVjdG9yQm9keSgpIG1ldGhvZHMgdG8g
YWxsIGltbWVkaWF0ZWx5IHN1YmNsYXNzZXMgb2YgSlNDZWxsIHdpdGgKKyAgICAgICAgbm9uLWVt
cHR5IGNvbnN0cnVjdG9ycy4gIFBhcnQgb2YgYSBsYXJnZXIgcmVmYWN0b3JpbmcgdG8gInVuemlw
IiBpbml0aWFsaXphdGlvbgorICAgICAgICBsaXN0cyBhbmQgY29uc3RydWN0b3IgYm9kaWVzLgor
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFi
bGVCYXNlOjpFeGVjdXRhYmxlQmFzZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVCYXNlOjpj
b25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAg
ICAgIChKU0M6OkdldHRlclNldHRlcjo6R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1l
L0pTQVBJVmFsdWVXcmFwcGVyLmg6CisgICAgICAgIChKU0M6OkpTQVBJVmFsdWVXcmFwcGVyOjpj
b25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAoSlNDOjpKU0FQSVZhbHVlV3JhcHBlcjo6SlNBUElW
YWx1ZVdyYXBwZXIpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0M6
OkpTQ2VsbDo6SlNDZWxsOjpKU0NlbGwpOgorICAgICAgICAoSlNDOjpKU0NlbGw6OkpTQ2VsbDo6
Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0Ojpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6SlNPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
OgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxk
ZXI6OkpTU3RyaW5nKToKKyAgICAgICAgKEpTQzo6Um9wZUJ1aWxkZXI6OmNvbnN0cnVjdG9yQm9k
eSk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6
OlJlZ0V4cCk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgor
ICAgICAgICAoSlNDOjpTY29wZUNoYWluTm9kZTo6U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAo
SlNDOjpTY29wZUNoYWluTm9kZTo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6U3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlQ2hhaW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNo
YWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y29uc3RydWN0b3JCb2R5KToKKwogMjAxMS0wOC0yNCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZSBzb21ldGltZXMgaGFzIHR3byBoZWFwIG9iamVjdCBjb25zdHJ1Y3Rpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggY2UyOThmZWM5NWEzNzA3
NzUxNjA3MjljMzY3M2ZkYzRmNWNjZTViNC4uYzIwODZlMDBiYjliODdhYWM0ZThlNjBlNmJhOGM2
Yjc0NzFkMzQwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aApAQCAtNTgsNiArNTgsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fbnVt
UGFyYW1ldGVyc0ZvckNhbGwobnVtUGFyYW1ldGVycykKICAgICAgICAgICAgICwgbV9udW1QYXJh
bWV0ZXJzRm9yQ29uc3RydWN0KG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAg
ICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgICAgICBXZWFrPEV4ZWN1dGFibGVCYXNlPiBmaW5hbGl6ZXIoZ2xvYmFsRGF0
YSwgdGhpcywgZXhlY3V0YWJsZUZpbmFsaXplcigpKTsKICAgICAgICAgICAgIGZpbmFsaXplci5s
ZWFrSGFuZGxlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRl
ci5oCmluZGV4IDAzZGJiNjZlYzE4YmM3NjU5ODExZWVmZGIzMmNiMjc3MmQxMDAwYWYuLjA5OGE0
ODdjM2YyNzFiZjMyZGY0ZmFiZjcyOTA0ODk4NGVkMGMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAg
ICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkuZ2V0dGVy
U2V0dGVyU3RydWN0dXJlLmdldCgpKQogICAgICAgICB7CisgICAgICAgICAgICBjb25zdHJ1Y3Rv
ckJvZHkoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgfQogCiAgICAgcHVibGljOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5k
ZXggNTY0OGZiODBiYTc0ZmVkNDdmOGU4NjBjNjQ5ZWNlY2VhODVkZDAyNi4uNmIyOWM5MDUxN2I2
NWU3Mjg2M2QzYmQyNTk3NmI0MjM0MDIwNTFkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVm
aW5lIEpTQVBJVmFsdWVXcmFwcGVyX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTVmFsdWUuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKIApAQCAtNTAsMTIgKzUxLDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkg
SlNBUElWYWx1ZVdyYXBwZXIoZXhlYywgdmFsdWUpOwogICAgICAgICB9CiAKKyAgICBwcm90ZWN0
ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGV4
ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9iYWxE
YXRhKCksIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkp
OworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBKU0FQSVZhbHVlV3JhcHBlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgICAgICA6IEpTQ2VsbChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5hcGlXcmFwcGVyU3RydWN0dXJlLmdl
dCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3ZhbHVlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIHZhbHVlKTsKLSAgICAgICAgICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkpOwor
ICAgICAgICAgICAgY29uc3RydWN0b3JCb2R5KGV4ZWMsIHZhbHVlKTsKICAgICAgICAgfQogCiAg
ICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCBkZjY5N2MwMmJkMDhlZDE1MjU0M2FlMzNhMDgwMTNmMjgz
MWRmMWMyLi5mMjk1YjQwYzEzOWZmNzEwNjY1NWNlZDYzOTdiOGUwNzIyMmNjNzFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtODAsNyArODAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFs
aW5nSGFja1R5cGUpIHsgfQogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7Ci0gICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBDcmVhdGluZ0Vh
cmx5Q2VsbFRhZyk7CisgICAgICAgIEpTQ2VsbChDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CiAgICAg
ICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVibGljOgpAQCAtMTcwLDEyICsxNzAsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogbV9zdHJ1Y3R1
cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgY29uc3RydWN0
b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIH0KIAotICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vh
cmx5Q2VsbFRhZykKKyAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxU
YWcpCiAgICAgewotICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBDcmVhdGluZ0Vhcmx5Q2VsbCk7IAogICAgIH0KIAogICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6
Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTE5Miw2ICsxOTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmNvbnN0cnVjdG9y
Qm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVh
dGluZ0Vhcmx5Q2VsbFRhZykKICAgICB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCisgICAg
ICAgIEFTU0VSVChnbG9iYWxEYXRhLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwogICAgICAgICBn
bG9iYWxEYXRhLnNldEluaXRpYWxpemluZ09iamVjdChmYWxzZSk7CiAgICAgICAgIGlmIChzdHJ1
Y3R1cmUpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmlu
ZGV4IDVhMGQwMWJjZTJhYWNhNGRjOTM0OWYxYTc4M2IwZDVlMGQ3ZTRlNjcuLmNjMjZhNDAyNDMz
YzczNDI3YTkxODMzNmYwMzZhNDhmMTZmYWQ5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaApAQCAtMjU5LDYgKzI1OSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOworICAgICAgICAgICAg
QVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVy
ZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0
eSk7CisgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKSk7CisgICAgICAg
ICAgICBBU1NFUlQocHJvdG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBI
ZWFwOjpoZWFwKHByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpOwor
ICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmpl
Y3RUeXBlKTsKKyAgICAgICAgfQorCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkBAIC00MzUsMTIgKzQ0Niw3IEBAIGlubGluZSBKU09iamVj
dDo6SlNPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUHJvcGVyCiAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9w
cm9wZXJ0eVN0b3JhZ2UoaW5saW5lU3RvcmFnZSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNf
aW5mbykpOwotICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSA8IGJhc2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7Ci0gICAgQVNTRVJUKG1fc3RydWN0dXJl
LT5pc0VtcHR5KCkpOwotICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpo
ZWFwKHRoaXMpID09IEhlYXA6OmhlYXAocHJvdG90eXBlKCkpKTsKLSAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8dm9pZCo+KGlubGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsg
MSkpOwotICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0
VHlwZSk7CisgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIGlubGluZVN0b3JhZ2UpOwog
fQogCiBpbmxpbmUgSlNPYmplY3Q6On5KU09iamVjdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKaW5kZXggMTgzMTBm
YThjN2U4YjEyN2EzYmE4YTdlYzU1MTA0MjBkMjY2MDcyNC4uNDQzMGJiZmYzODhhMzMxYzVlNTQ0
NTZlMzZjNTgyNjIzNjQwYWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaApAQCAtODcsNiArODcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJh
eURhdGEpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmNvbnN0cnVjdG9yQm9keShleGVj
LT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQcm9w
ZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5RGF0
YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIG1fanNTdHJpbmdzW2ld
LnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJvcGVy
dHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKaW5kZXggOTA5OTRmYmUzODk4ZmU4ODZmMjFlYjQzMWNhMWU1ZDNkZjhmNTg0
NC4uOWNhYzE1ZTBjNGEzNWE5N2I1MDQxOGMyYTAwOGY1MWU4MzExMDRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xOTAsOCArMTkwLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAsIG1f
ZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNO
dWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlD
b3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGVudW0gSGFz
T3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CkBAIC0yMDEsOCArMTk5LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAs
IG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUu
aXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1v
cnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0cmlu
ZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUs
IEhhc090aGVyT3duZXJUeXBlKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwgZ2xv
YmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCkBAIC0yMTAsMTQgKzIwNiwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAgICwg
bV9maWJlckNvdW50KDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5p
c051bGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQogICAgICAgICAgICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAg
ICAsIG1fbGVuZ3RoKHJvcGUtPmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQo
MSkKICAgICAgICAgewotICAgICAgICAgICAgbV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYoKTsK
ICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcg
c3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8gVGhpcyBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0yMjYsMTEgKzIyMCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3RoKCkgKyBz
Mi0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChmaWJlckNvdW50KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9w
ZUxlbmd0aCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBh
cHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczEpOwotICAgICAgICAgICAgYXBwZW5kU3Ry
aW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50
ID09IGluZGV4KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0
cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8g
VGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0yMzks
MTEgKzIyOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+
bGVuZ3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZpYmVy
Q291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50IDw9IHNfbWF4
SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAg
ICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Ci0gICAgICAgICAg
ICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOwotICAgICAgICAgICAgQVNTRVJU
KGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIC8vIFRoaXMgY29uc3Ry
dWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMyLgog
ICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVyQ291bnQgPD0g
My4KQEAgLTI1MiwyMiArMjM2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBt
X2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJl
ckNvdW50KGZpYmVyQ291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNv
dW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1MSk7
Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOwotICAgICAg
ICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAgIC8v
IFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGlu
ZyB2MSwgdjIgJiB2My4KLSAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0
aCBmaWJlckNvdW50IDw9IDMgLi4uIHdoaWNoIHNpbmNlIGV2ZXJ5Ci0gICAgICAgIC8vIHZhbHVl
IG11c3QgcmVxdWlyZSBhIGZpYmVyQ291bnQgb2YgYXQgbGVhc3Qgb25lIGltcGxpZXMgdGhhdCB0
aGUgbGVuZ3RoCi0gICAgICAgIC8vIGZvciBlYWNoIHZhbHVlIG11c3QgYmUgZXhhY3RseSAxIQot
ICAgICAgICBKU1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIs
IEpTVmFsdWUgdjMpCisgICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0cmlu
Z1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAgICAg
ICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNv
bmNhdGVuYXRpbmcgdTEgJiB1Mi4KQEAgLTI3NiwxMCArMjUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkpCiAgICAg
ICAgICAgICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwg
dTEpOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3Ry
aW5nIGJ5IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCkBAIC0yODgsMTYgKzI1OCw2NCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVuZ3RoKCkgKyB1Mi5s
ZW5ndGgoKSArIHUzLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoc19tYXhJ
bnRlcm5hbFJvcGVMZW5ndGgpCiAgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmNvbnN0cnVjdG9yQm9keShnbG9i
YWxEYXRhKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051bGwoKSk7CisgICAgICAg
ICAgICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QodmFsdWUuaW1wbCgp
LT5jb3N0KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpjb25z
dHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNO
dWxsKCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQorICAgICAgICB7
CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAg
ICAgICBtX2ZpYmVyc1swXSA9IHJvcGUubGVha1JlZigpOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBm
aWJlckNvdW50LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICAgICAgeworICAgICAg
ICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOworICAgICAgICAgICAgQVNT
RVJUKGZpYmVyQ291bnQgPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOwogICAgICAgICAgICAg
dW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3Qo
aW5kZXgsIHUxKTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBz
MSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOworICAg
ICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25l
ZCBmaWJlckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQorICAgICAgICB7
CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CisgICAgICAg
ICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNv
bnN0cnVjdChpbmRleCwgczEpOwogICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3Qo
aW5kZXgsIHUyKTsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1
Myk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5kZXggPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgp
OworICAgICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAK
LSAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpT
U3RyaW5nKiBzMikKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5
KGdsb2JhbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPD0gc19tYXhJbnRl
cm5hbFJvcGVMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAg
ICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUxKTsKKyAgICAgICAgICAgIGFw
cGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMik7CisgICAgICAgICAgICBBU1NFUlQoZmli
ZXJDb3VudCA9PSBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGlzIGNvbnN0cnVj
dG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdjEsIHYyICYgdjMu
CisgICAgICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggZmliZXJDb3VudCA8
PSAzIC4uLiB3aGljaCBzaW5jZSBldmVyeQorICAgICAgICAvLyB2YWx1ZSBtdXN0IHJlcXVpcmUg
YSBmaWJlckNvdW50IG9mIGF0IGxlYXN0IG9uZSBpbXBsaWVzIHRoYXQgdGhlIGxlbmd0aAorICAg
ICAgICAvLyBmb3IgZWFjaCB2YWx1ZSBtdXN0IGJlIGV4YWN0bHkgMSEKICAgICAgICAgdm9pZCBj
b25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBK
U1ZhbHVlIHYzKQogICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHko
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAg
ICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywg
aW5kZXgsIHYxKTsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1l
bnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsKQEAgLTMwNSw0NiArMzIzLDg2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHNfbWF4SW50ZXJuYWxSb3BlTGVu
Z3RoKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQor
ICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7
CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBhcHBlbmRTdHJp
bmdJbkNvbnN0cnVjdChpbmRleCwgdTEpOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25z
dHJ1Y3QoaW5kZXgsIHUyKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVy
bmFsUm9wZUxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNvbnN0cnVjdG9yQm9k
eShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3Ry
aW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6
OmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1MSk7Cisg
ICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOworICAgICAgICAg
ICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUzKTsKKyAgICAgICAgICAgIEFTU0VS
VChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgIH0KKwogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGds
b2JhbERhdGEsIHZhbHVlKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5
KGdsb2JhbERhdGEsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAg
ICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGVIYXNPdGhlck93bmVyKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgdmFsdWUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAg
ICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihn
bG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25l
cik7CisgICAgICAgICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhLCB2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CiAgICAgICAg
IHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAg
SlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxE
YXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJPd25lcik7Cisg
ICAgICAgICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3Ry
aW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBs
PiByb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHJvcGUpOwor
ICAgICAgICAgICAgUmVmUHRyPFJvcGVJbXBsPiB0ZW1wUm9wZSA9IHJvcGU7CisgICAgICAgICAg
ICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHRlbXBSb3BlKTsKKyAgICAgICAgICAg
IG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIHRlbXBSb3BlKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3Ry
aW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50
LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgczIpOworICAgICAgICAgICAgSlNTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgczIpOworICAgICAgICAgICAg
bmV3U3RyaW5nLT5jb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMy
KTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3Rh
dGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBm
aWJlckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEu
aGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7CisgICAgICAg
ICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGds
b2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7
CisgICAgICAgICAgICBuZXdTdHJpbmctPmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhLCBmaWJl
ckNvdW50LCBzMSwgdTIpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAg
fQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcmIHUxLCBKU1N0cmluZyogczIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEs
IHMyKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2Vs
bDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJD
b3VudCwgdTEsIHMyKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGds
b2JhbERhdGEsIGZpYmVyQ291bnQsIHUxLCBzMik7CisgICAgICAgICAgICByZXR1cm4gbmV3U3Ry
aW5nOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPigqZXhlYy0+aGVh
cCgpKSkgSlNTdHJpbmcoZXhlYywgdjEsIHYyLCB2Myk7CisgICAgICAgICAgICBKU1N0cmluZyog
bmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KCpleGVjLT5oZWFwKCkpKSBK
U1N0cmluZyhleGVjKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JCb2R5KGV4
ZWMsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAg
fQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1MikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgSlNTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5j
b25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAgICAgICAgIHJldHVybiBu
ZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYg
dTIsIGNvbnN0IFVTdHJpbmcmIHUzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2Jh
bERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9i
YWxEYXRhLCB1MSwgdTIsIHUzKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+Y29uc3RydWN0b3JC
b2R5KGdsb2JhbERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmlu
ZzsKICAgICAgICAgfQogCiAgICAgICAgIH5KU1N0cmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCA1ZDE1ODkxN2Q0N2U5ZWFjNmM5YWRmNGMyMmUwOTEx
MDM1YTZiZTU2Li4wY2U1NTEzYzc2MzgzNGQxNTY3ZGJhZmY1NjViMDcxN2QzMWYwZDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTg4LDYgKzg4LDEyIEBA
IFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVyblN0cmluZywgUmVnRXhwRmxhCiAgICAgLCBtX3J0TWF0Y2hGb3VuZENvdW50KDApCiAj
ZW5kaWYKIHsKKyAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgUmVn
RXhwOjpjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJh
c2U6OmNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRhKTsKICAgICBZYXJyOjpZYXJyUGF0dGVybiBw
YXR0ZXJuKG1fcGF0dGVyblN0cmluZywgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSwgJm1fY29u
c3RydWN0aW9uRXJyb3IpOwogICAgIGlmIChtX2NvbnN0cnVjdGlvbkVycm9yKQogICAgICAgICBt
X3N0YXRlID0gUGFyc2VFcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgK
aW5kZXggODEyYTg2Y2QxMWM2MjE1NTA3N2M3YWIxN2I1YzZjMmU0MDI1NGEwMS4uYTVhMDc2MDM1
OTNkYzE1NTZlZWExMWEyMjhmNGNlMzMzOWExMGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmgKQEAgLTc1LDYgKzc1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgUmVnRXhwS2V5IGtleSgpIHsgcmV0dXJuIFJlZ0V4cEtleShtX2ZsYWdzLCBtX3BhdHRlcm5T
dHJpbmcpOyB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5
KEpTR2xvYmFsRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJl
Z0V4cENhY2hlOwogICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYs
IFJlZ0V4cEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAppbmRleCBjZjFhNTk2MDdmNWY3MmE4NGQxMzEyYjFkMTNmMGNjOGVhMWFjNDAwLi5jMmY4NWUx
NWRlM2Q2NDQ0YjgxM2M0NjA0ZDAwYjE0YzNmYjExNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC00Myw2ICs0MywxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICwgZ2xvYmFsT2JqZWN0KCpnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxP
YmplY3QpCiAgICAgICAgICAgICAsIGdsb2JhbFRoaXMoKmdsb2JhbERhdGEsIHRoaXMsIGdsb2Jh
bFRoaXMpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yQm9keShnbG9iYWxEYXRh
LCBnbG9iYWxPYmplY3QpOworICAgICAgICB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZv
aWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0
b3JCb2R5KCpnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKICAg
ICAgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDgzODEyYjZmMzFjZjRkZTll
ZjZhYTUyNjdiNzk0ZDY2MzgyYmM0Li4yM2I2NmM3YTVjNzJlZDFlZjU1ZTY0YmJjZTI3NjYxNDVj
ZWUyMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAK
QEAgLTE3Niw2ICsxNzYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogICAgICwgbV9wcmV2
ZW50RXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsKKyAg
ICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlKTsK
ICAgICBBU1NFUlQobV9wcm90b3R5cGUuaXNPYmplY3QoKSB8fCBtX3Byb3RvdHlwZS5pc051bGwo
KSk7CiB9CkBAIC0xODMsNyArMTg0LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8KIGNvbnN0
IENsYXNzSW5mbyBTdHJ1Y3R1cmU6OnNfaW5mbyA9IHsgIlN0cnVjdHVyZSIsIDAsIDAsIDAgfTsK
IAogU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQotICAgIDog
SlNDZWxsKGdsb2JhbERhdGEsIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKQorICAgIDogSlNDZWxs
KENyZWF0aW5nRWFybHlDZWxsKQogICAgICwgbV90eXBlSW5mbyhDb21wb3VuZFR5cGUsIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW4pCiAgICAgLCBtX3Byb3RvdHlwZShnbG9iYWxEYXRhLCB0aGlzLCBq
c051bGwoKSkKICAgICAsIG1fY2xhc3NJbmZvKCZzX2luZm8pCkBAIC0xOTksNiArMjAwLDcgQEAg
U3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICwgbV9w
cmV2ZW50RXh0ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsK
KyAgICBjb25zdHJ1Y3RvckJvZHkoZ2xvYmFsRGF0YSwgdGhpcywgQ3JlYXRpbmdFYXJseUNlbGwp
OwogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzTnVs
bCgpKTsKICAgICBBU1NFUlQoIWdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKQEAgLTIy
MSw2ICsyMjMsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IFN0cnVjdHVyZSogcHJldmlvdXMpCiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25z
KHByZXZpb3VzLT5tX3ByZXZlbnRFeHRlbnNpb25zKQogICAgICwgbV9kaWRUcmFuc2l0aW9uKHRy
dWUpCiB7CisgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChtX3By
b3RvdHlwZSk7CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5
cGUuaXNOdWxsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uY3BwCmluZGV4IDg5YTBlYzBjMjA2N2I0Njk2ZmEzMWUyNjliNTk3ZDdjNmI5
OWJhZmYuLjBiOTVlYjNmYWQwYTdiZmJmOTk3MjgzZDZkN2FmYmZjYzEwMmM4ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTM3
LDE2ICszNyw3IEBAIENsYXNzSW5mbyBTdHJ1Y3R1cmVDaGFpbjo6c19pbmZvID0geyAiU3RydWN0
dXJlQ2hhaW4iLCAwLCAwLCAwIH07CiBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBo
ZWFkKQogICAgIDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKLSAgICBzaXplX3Qg
c2l6ZSA9IDA7Ci0gICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBj
dXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmpl
Y3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKLSAgICAgICAgKytz
aXplOwotICAgIAotICAgIG1fdmVjdG9yID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT5bc2l6ZSArIDFdKTsKLQotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKFN0
cnVjdHVyZSogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9y
ZWRQcm90b3R5cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90
b3R5cGUoKSktPnN0cnVjdHVyZSgpKQotICAgICAgICBtX3ZlY3RvcltpKytdLnNldChnbG9iYWxE
YXRhLCB0aGlzLCBjdXJyZW50KTsKLSAgICBtX3ZlY3RvcltpXS5jbGVhcigpOworICAgIGNvbnN0
cnVjdG9yQm9keShnbG9iYWxEYXRhLCBoZWFkKTsKIH0KIAogU3RydWN0dXJlQ2hhaW46On5TdHJ1
Y3R1cmVDaGFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAppbmRleCBmODZhOWFhODY1ZDJmODhmMzkyODNlNTE1NmY4MGI1ZGNmZGMxZDkxLi5j
Y2ExZDM2OTk4YzNiNGQzMjc3N2EwMjYwNDc2MmFmNjc4MzQ1ZDhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgU3RydWN0dXJlQ2hhaW5faAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIAogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgpAQCAtNDQsNyArNDUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0gICAgICAgIHN0YXRpYyBTdHJ1
Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBo
ZWFkKSB7IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0
YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVD
aGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0KKyAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNo
YWluKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCisg
ICAgICAgIHsgCisgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJl
Q2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2Jh
bERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyAKKyAgICAgICAgfQog
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9y
LmdldCgpOyB9CiAgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogCkBA
IC01Miw2ICs1NiwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHN0YXRp
YyBDbGFzc0luZm8gc19pbmZvOwogCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGNvbnN0
cnVjdG9yQm9keShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQmFzZTo6Y29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwor
ICAgICAgICAgICAgc2l6ZV90IHNpemUgPSAwOworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUq
IGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90
eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkp
LT5zdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICArK3NpemU7CisgICAgCisgICAgICAgICAg
ICBtX3ZlY3RvciA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W3Np
emUgKyAxXSk7CisKKyAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgIGZvciAo
U3RydWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0
b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFBy
b3RvdHlwZSgpKS0+c3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV92ZWN0b3JbaSsrXS5z
ZXQoZ2xvYmFsRGF0YSwgdGhpcywgY3VycmVudCk7CisgICAgICAgICAgICBtX3ZlY3RvcltpXS5j
bGVhcigpOworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmVDaGFp
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIGhlYWQpOwogICAgICAgICB+
U3RydWN0dXJlQ2hhaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105231</attachid>
            <date>2011-08-25 12:22:48 -0700</date>
            <delta_ts>2011-08-25 14:36:31 -0700</delta_ts>
            <desc>Change constructorBody to finishCreation</desc>
            <filename>bug-66827-20110825122249.patch</filename>
            <type>text/plain</type>
            <size>31265</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJi
YTQ4NzJjZWJiNmNmMTJjZTFjZjkyMmVmYmQyZDkwM2M5M2I5ZTUuLmQ1MTYwZWM4OGE4MDMyODg4
MjI2ZmI3Mzc2MGI3MWE4NTU1ZjJiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ5IEBACisyMDExLTA4LTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVj
dG9ycyBpbiBKU0NlbGwgaGllcmFyY2h5ICgxLzcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGZpbmlzaENyZWF0aW9uKCkgbWV0aG9kcyB0byBh
bGwgaW1tZWRpYXRlbHkgc3ViY2xhc3NlcyBvZiBKU0NlbGwgd2l0aAorICAgICAgICBub24tZW1w
dHkgY29uc3RydWN0b3JzLiAgUGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyB0byAidW56aXAi
IGluaXRpYWxpemF0aW9uCisgICAgICAgIGxpc3RzIGFuZCBjb25zdHJ1Y3RvciBib2RpZXMuICBB
bHNvIHJlbmFtZWQgSlNDZWxsJ3MgY29uc3RydWN0b3JCb2R5KCkgbWV0aG9kCisgICAgICAgIHRv
IGZpbmlzaENyZWF0aW9uKCkuCisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OkV4ZWN1dGFibGVCYXNlKToKKyAgICAgICAgKEpT
Qzo6RXhlY3V0YWJsZUJhc2U6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6
SlNBUElWYWx1ZVdyYXBwZXI6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgIChKU0M6OkpTQVBJ
VmFsdWVXcmFwcGVyOjpKU0FQSVZhbHVlV3JhcHBlcik6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsOjpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpSb3BlQnVp
bGRlcjo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb25z
dHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpTY29wZUNo
YWluTm9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjb25zdHJ1Y3RvckJvZHkp
OgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNvbWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNv
bnN0cnVjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKaW5kZXggNDhiZjE2M2RiYzllN2M0ODNjZTU1OGFmMDllZTZmMzg2NjE1NzcxZS4uZDhmMTcw
ZGQ0NzEzMzg4N2ZlOGU2M2QzNWNlOGNkOWEwOTBmNzA5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N5bWJvbFRhYmxl
KDApCiB7Ci0gICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwg
bGFzdExpbmUpOworICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUsIGZpcnN0TGlu
ZSwgbGFzdExpbmUpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyog
cGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCiB7CiAgICAg
bV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAg
IGNvbnN0cnVjdG9yQm9keShleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGZpcnN0TGluZSwgbGFz
dExpbmUpOworICAgIGZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwgZmly
c3RMaW5lLCBsYXN0TGluZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCmluZGV4IGNlMjk4ZmVjOTVhMzcwNzc1MTYwNzI5YzM2NzNmZGM0ZjVjY2U1
YjQuLmVmNzI3MmJhMGVhM2Q4ZTJhMmE3NTAwYTRmZWFkMDUwM2ZmNmNlMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTU4LDYgKzU4LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBh
cmFtZXRlcnMpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdChudW1Q
YXJhbWV0ZXJzKQogICAgICAgICB7CisgICAgICAgICAgICBmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgV2VhazxFeGVj
dXRhYmxlQmFzZT4gZmluYWxpemVyKGdsb2JhbERhdGEsIHRoaXMsIGV4ZWN1dGFibGVGaW5hbGl6
ZXIoKSk7CiAgICAgICAgICAgICBmaW5hbGl6ZXIubGVha0hhbmRsZSgpOwpAQCAtNTA1LDcgKzUx
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQgZmlyc3RMaW5lLCBp
bnQgbGFzdExpbmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmlyc3RMaW5lID0gZmlyc3RM
aW5lOwogICAgICAgICAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwM2RiYjY2ZWMxOGJjNzY1OTgx
MWVlZmRiMzJjYjI3NzJkMTAwMGFmLi5lY2VjNmFkZWU4Y2MyNzRkOWEzNzc0ZjNkNGRjOGE2Zjli
YTg0ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgR2V0dGVyU2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKICAgICAg
ICAgeworICAgICAgICAgICAgZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAg
ICAgICAgfQogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggNTY0OGZiODBiYTc0ZmVkNDdmOGU4NjBjNjQ5
ZWNlY2VhODVkZDAyNi4uNTQ1ODYwYmZkMTIzNzQxNzYxN2JkMTVmYzA0ZjkyOTRmZjdhODAxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBl
ci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEpTQVBJVmFsdWVXcmFwcGVyX2gKIAogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIApAQCAtNTAsMTIgKzUxLDE5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFs
dWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYywgdmFsdWUp
OwogICAgICAgICB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAgICAgICAg
bV92YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAg
ICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSlNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQog
ICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkuYXBpV3JhcHBlclN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewotICAgICAgICAgICAgbV92
YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIGZpbmlzaENyZWF0aW9uKGV4ZWMs
IHZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Zh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBkZjY5N2MwMmJk
MDhlZDE1MjU0M2FlMzNhMDgwMTNmMjgzMWRmMWMyLi4xZmZlOTdiYjZjNTQ0YTlkMWFjMzFkY2Q0
ZGM1OGJkMmQzODUyZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBl
eHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQogICAgICAgICBKU0NlbGwo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CisgICAgICAgIEpTQ2VsbChDcmVh
dGluZ0Vhcmx5Q2VsbFRhZyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVi
bGljOgpAQCAtMTUxLDggKzE1MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IDA7CiAK
LSAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIHZv
aWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFy
bHlDZWxsVGFnKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmKTsK
KyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGlt
cGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVy
dHlTbG90LgpAQCAtMTcwLDE1ICsxNzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5l
IEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIH0KIAot
ICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKKyAgICBpbmxpbmUgSlNDZWxs
OjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgewotICAgICAgICBjb25zdHJ1Y3Rv
ckJvZHkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7IAogICAgIH0K
IAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAg
ICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwpAQCAtMTg5
LDkgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJl
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmNvbnN0cnVjdG9yQm9keShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5
Q2VsbFRhZykKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxs
VGFnKQogICAgIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgQVNTRVJUKGds
b2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAgICAgICAgIGdsb2JhbERhdGEuc2V0
SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZSkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNWEwZDAxYmNl
MmFhY2E0ZGM5MzQ5ZjFhNzgzYjBkNWUwZDdlNGU2Ny4uODFjZTkxOTJlNjc0ZGM2NzM2ZjAzMzM5
ZTRiNTAxZjQ5OTAxNzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC0yNTksNiArMjU5LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQocHJv
dG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3Rv
dHlwZSgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0
b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpOworICAgICAgICAgICAgQVNT
RVJUKG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CkBAIC00MzUsMTIgKzQ0Niw3IEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVyCiAgICAg
OiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2Uo
aW5saW5lU3RvcmFnZSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIEFT
U0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5h
bFN0b3JhZ2VDYXBhY2l0eSk7Ci0gICAgQVNTRVJUKG1fc3RydWN0dXJlLT5pc0VtcHR5KCkpOwot
ICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhl
YXA6OmhlYXAocHJvdG90eXBlKCkpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlu
bGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpOwotICAgIEFTU0VS
VChtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgZmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaW5saW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09i
amVjdDo6fkpTT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggYzRjZjg4OGFkNmJhMWQ5M2Fk
Nzk4MGRjZTE3NmM4Njc4NDhkZTBlNC4uMDJkMjVjMmY4NGM0YjIwYWUwOWJiMzYxMmU2NTE1N2Yy
MDZkMGM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU4KICAgICAsIG1fanNTdHJpbmdzU2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKSkKICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJy
YXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkKIHsKLSAg
ICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKKyAgICBmaW5p
c2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwogfQogCiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCAxODMxMGZhOGM3ZThiMTI3YTNiYThh
N2VjNTUxMDQyMGQyNjYwNzI0Li40MjAyZWJiNTRkMzgzNWY2MjEwNGJkYjJiODM1NTg4YTQxNjA5
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC04NSw4ICs4NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSkKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1l
QXJyYXlEYXRhKQogICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQ
cm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5
RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIG1fanNTdHJpbmdz
W2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJv
cGVydHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggOTA5OTRmYmUzODk4ZmU4ODZmMjFlYjQzMWNhMWU1ZDNkZjhm
NTg0NC4uNTI0OWQyZThmYTUyNTdiZDFlNmZlY2Q5OWUzYTIxMTRiZmZkZTg1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xOTAsOCArMTkwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAs
IG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUu
aXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1v
cnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGVudW0g
SGFzT3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CkBAIC0yMDEsOCArMTk5LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAg
ICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFs
dWUuaXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0
cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFs
dWUsIEhhc090aGVyT3duZXJUeXBlKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCkBAIC0yMTAsMTQgKzIwNiwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAg
ICwgbV9maWJlckNvdW50KDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV92YWx1
ZS5pc051bGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQogICAgICAgICAgICAgOiBKU0Nl
bGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAg
ICAgICAsIG1fbGVuZ3RoKHJvcGUtPmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291
bnQoMSkKICAgICAgICAgewotICAgICAgICAgICAgbV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYo
KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBu
ZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8gVGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0yMjYsMTEgKzIyMCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3RoKCkg
KyBzMi0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChmaWJlckNvdW50KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFs
Um9wZUxlbmd0aCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAg
ICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczEpOwotICAgICAgICAgICAgYXBwZW5k
U3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNv
dW50ID09IGluZGV4KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNv
bnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAg
Ly8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0y
MzksMTEgKzIyOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChz
MS0+bGVuZ3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZp
YmVyQ291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50IDw9IHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
LSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Ci0gICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOwotICAgICAgICAgICAgQVNT
RVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIC8vIFRoaXMgY29u
c3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMy
LgogICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVyQ291bnQg
PD0gMy4KQEAgLTI1MiwyMiArMjM2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
LCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9m
aWJlckNvdW50KGZpYmVyQ291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJl
ckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1
MSk7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOwotICAg
ICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAg
IC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5h
dGluZyB2MSwgdjIgJiB2My4KLSAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQg
d2l0aCBmaWJlckNvdW50IDw9IDMgLi4uIHdoaWNoIHNpbmNlIGV2ZXJ5Ci0gICAgICAgIC8vIHZh
bHVlIG11c3QgcmVxdWlyZSBhIGZpYmVyQ291bnQgb2YgYXQgbGVhc3Qgb25lIGltcGxpZXMgdGhh
dCB0aGUgbGVuZ3RoCi0gICAgICAgIC8vIGZvciBlYWNoIHZhbHVlIG11c3QgYmUgZXhhY3RseSAx
IQotICAgICAgICBKU1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIsIEpTVmFsdWUgdjMpCisgICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAg
ICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5
IGNvbmNhdGVuYXRpbmcgdTEgJiB1Mi4KQEAgLTI3NiwxMCArMjUwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkpCiAg
ICAgICAgICAgICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRl
eCwgdTEpOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsK
LSAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcg
c3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCkBAIC0yODgsMTYgKzI1OCw2NCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9sZW5ndGgodTEubGVuZ3RoKCkgKyB1
Mi5sZW5ndGgoKSArIHUzLmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291bnQoc19t
YXhJbnRlcm5hbFJvcGVMZW5ndGgpCiAgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNOdWxsKCkpOworICAgICAg
ICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHZhbHVlLmltcGwo
KS0+Y29zdCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEFTU0VSVCghbV92YWx1ZS5pc051
bGwoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgUGFzc1JlZlB0cjxSb3BlSW1wbD4gcm9wZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAg
ICBtX2ZpYmVyc1swXSA9IHJvcGUubGVha1JlZigpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVy
Q291bnQsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQorICAgICAgICB7CisgICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEFTU0VSVChm
aWJlckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4
LCB1MSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczEpOwor
ICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKKyAgICAgICAg
ICAgIEFTU0VSVChmaWJlckNvdW50ID09IGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJl
ckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQorICAgICAgICB7CisgICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEFT
U0VSVChmaWJlckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0
KGluZGV4LCBzMSk7CiAgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwg
dTIpOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUzKTsKLSAg
ICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAg
ICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA9PSBpbmRleCk7CiAgICAgICAgIH0KIAotICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1ZhbHVlIHYzKQorICAgICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29u
c3QgVVN0cmluZyYgdTEsIEpTU3RyaW5nKiBzMikKICAgICAgICAgeworICAgICAgICAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoZmliZXJD
b3VudCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTEp
OworICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKKyAgICAg
ICAgICAgIEFTU0VSVChmaWJlckNvdW50ID09IGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5h
dGluZyB2MSwgdjIgJiB2My4KKyAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQg
d2l0aCBmaWJlckNvdW50IDw9IDMgLi4uIHdoaWNoIHNpbmNlIGV2ZXJ5CisgICAgICAgIC8vIHZh
bHVlIG11c3QgcmVxdWlyZSBhIGZpYmVyQ291bnQgb2YgYXQgbGVhc3Qgb25lIGltcGxpZXMgdGhh
dCB0aGUgbGVuZ3RoCisgICAgICAgIC8vIGZvciBlYWNoIHZhbHVlIG11c3QgYmUgZXhhY3RseSAx
IQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
MSwgSlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1l
bnRMZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKICAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25z
dHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsKQEAgLTMwNSw0NiArMzIz
LDg2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IHNfbWF4
SW50ZXJuYWxSb3BlTGVuZ3RoKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3Qg
VVN0cmluZyYgdTIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICAg
ICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUxKTsKKyAgICAgICAgICAgIGFwcGVu
ZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Mik7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXgg
PD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUx
LCBjb25zdCBVU3RyaW5nJiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5k
ZXgsIHUxKTsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Mik7
CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTMpOworICAgICAg
ICAgICAgQVNTRVJUKGluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAgICAg
fQorCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVh
cCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBu
ZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3U3Ry
aW5nOwogICAgICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJP
d25lcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHZhbHVlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGds
b2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlLCBIYXNPdGhlck93bmVy
KTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxK
U1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhh
c090aGVyT3duZXIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFsdWUpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUsIEhhc090aGVyT3duZXIpOworICAg
ICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5n
PihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwgSGFzT3RoZXJP
d25lcik7CisgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEp
OworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogICAgICAgICBzdGF0
aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8
Um9wZUltcGw+IHJvcGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwg
cm9wZSk7CisgICAgICAgICAgICBSZWZQdHI8Um9wZUltcGw+IHRlbXBSb3BlID0gcm9wZTsKKyAg
ICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdGVtcFJvcGUpOworICAg
ICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB0ZW1wUm9wZSk7
CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CiAgICAgICAgIHN0YXRp
YyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmli
ZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkg
SlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKTsKKyAgICAgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgczEsIHMyKTsKKyAgICAg
ICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwg
czEsIHMyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAg
ICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNp
Z25lZCBmaWJlckNvdW50LCBKU1N0cmluZyogczEsIGNvbnN0IFVTdHJpbmcmIHUyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCB1Mik7Cisg
ICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMx
LCB1Mik7CisgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEs
IGZpYmVyQ291bnQsIHMxLCB1Mik7CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAg
ICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgY29uc3QgVVN0cmluZyYgdTEsIEpTU3RyaW5n
KiBzMikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpT
U3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50
LCB1MSwgczIpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBm
aWJlckNvdW50LCB1MSwgczIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhLCBmaWJlckNvdW50LCB1MSwgczIpOworICAgICAgICAgICAgcmV0dXJuIG5l
d1N0cmluZzsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUgdjIsIEpTVmFsdWUgdjMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oKmV4ZWMt
PmhlYXAoKSkpIEpTU3RyaW5nKGV4ZWMsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPigqZXhlYy0+aGVhcCgp
KSkgSlNTdHJpbmcoZXhlYyk7CisgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIHYxLCB2MiwgdjMpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAg
ICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5nJiB1MikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRh
LmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgbmV3U3RyaW5n
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB1MSwgdTIpOworICAgICAgICAgICAgcmV0dXJu
IG5ld1N0cmluZzsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHUxLCBjb25zdCBVU3RyaW5n
JiB1MiwgY29uc3QgVVN0cmluZyYgdTMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xv
YmFsRGF0YSwgdTEsIHUyLCB1Myk7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGds
b2JhbERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJp
bmc7CiAgICAgICAgIH0KIAogICAgICAgICB+SlNTdHJpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggNWQxNTg5MTdkNDdlOWVhYzZjOWFkZjRjMjJlMDkx
MTAzNWE2YmU1Ni4uZDkwY2Q1NDM3MTcyYjEyNjI4Zjc5OGU2Mjc3MTcwMzhjYzZkYjE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC04OCw2ICs4OCwxMiBA
QCBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcm
IHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYQogICAgICwgbV9ydE1hdGNoRm91bmRDb3VudCgwKQog
I2VuZGlmCiB7CisgICAgZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgUmVn
RXhwOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0
dGVybihtX3BhdHRlcm5TdHJpbmcsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCksICZtX2NvbnN0
cnVjdGlvbkVycm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikKICAgICAgICAgbV9z
dGF0ZSA9IFBhcnNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmlu
ZGV4IDgxMmE4NmNkMTFjNjIxNTUwNzdjN2FiMTdiNWM2YzJlNDAyNTRhMDEuLjIyOTAxZTFhNTI5
MWUxNjBiNDg1NzA1ZjIxN2UzNWMyZGE5M2NjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCkBAIC03NSw2ICs3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IFJlZ0V4cEtleSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3Ry
aW5nKTsgfQogCisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlZ0V4
cENhY2hlOwogICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIFJl
Z0V4cEZsYWdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nj
b3BlQ2hhaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaApp
bmRleCBjZjFhNTk2MDdmNWY3MmE4NGQxMzEyYjFkMTNmMGNjOGVhMWFjNDAwLi4xYzExYjJjMTZk
OTZiM2NjMWJmMjYyNzYzNzBhMmUwMWNlNmE3ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5oCkBAIC00Myw2ICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICwgZ2xvYmFsT2JqZWN0KCpnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxPYmpl
Y3QpCiAgICAgICAgICAgICAsIGdsb2JhbFRoaXMoKmdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbFRo
aXMpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KCpnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDgzODEyYjZmMzFjZjRkZTllZjZhYTUy
NjdiNzk0ZDY2MzgyYmM0Li5mZGFlNTg0MGU1ZWMyMzc0OGZjYjJiMmEyZGQyNmM3NzMzYmI4ZjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE3
Niw2ICsxNzYsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogICAgICwgbV9wcmV2ZW50RXh0
ZW5zaW9ucyhmYWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsKKyAgICBmaW5p
c2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQobV9wcm90b3R5cGUpOwogICAgIEFT
U0VSVChtX3Byb3RvdHlwZS5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLmlzTnVsbCgpKTsKIH0K
QEAgLTE4Myw3ICsxODQsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogY29uc3QgQ2xhc3NJ
bmZvIFN0cnVjdHVyZTo6c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwgMCwgMCB9OwogCiBTdHJ1
Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAgOiBKU0NlbGwo
Z2xvYmFsRGF0YSwgdGhpcywgQ3JlYXRpbmdFYXJseUNlbGwpCisgICAgOiBKU0NlbGwoQ3JlYXRp
bmdFYXJseUNlbGwpCiAgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbikKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgp
KQogICAgICwgbV9jbGFzc0luZm8oJnNfaW5mbykKQEAgLTE5OSw2ICsyMDAsNyBAQCBTdHJ1Y3R1
cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgLCBtX3ByZXZlbnRF
eHRlbnNpb25zKGZhbHNlKQogICAgICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogeworICAgIGZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKTsKICAgICBB
U1NFUlQobV9wcm90b3R5cGUpOwogICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc051bGwoKSk7CiAg
ICAgQVNTRVJUKCFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CkBAIC0yMjEsNiArMjIz
LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBTdHJ1Y3R1cmUqIHByZXZpb3VzKQogICAgICwgbV9wcmV2ZW50RXh0ZW5zaW9ucyhwcmV2aW91
cy0+bV9wcmV2ZW50RXh0ZW5zaW9ucykKICAgICAsIG1fZGlkVHJhbnNpdGlvbih0cnVlKQogewor
ICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7
CiAgICAgQVNTRVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxs
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uY3BwCmluZGV4IDg5YTBlYzBjMjA2N2I0Njk2ZmEzMWUyNjliNTk3ZDdjNmI5OWJhZmYuLjgw
YmU5OGViYzQ1ZjRhNGI5YzFiYWI0ZjI5NDg1NDgyNmNlOTdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTM3LDE2ICszNyw3
IEBAIENsYXNzSW5mbyBTdHJ1Y3R1cmVDaGFpbjo6c19pbmZvID0geyAiU3RydWN0dXJlQ2hhaW4i
LCAwLCAwLCAwIH07CiBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBoZWFkKQogICAg
IDogSlNDZWxsKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKLSAgICBzaXplX3Qgc2l6ZSA9IDA7
Ci0gICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVu
dC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKLSAgICAgICAgKytzaXplOwotICAg
IAotICAgIG1fdmVjdG9yID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT5bc2l6ZSArIDFdKTsKLQotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKFN0cnVjdHVyZSog
Y3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90b3R5
cGUoKS5pc051bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKSkt
PnN0cnVjdHVyZSgpKQotICAgICAgICBtX3ZlY3RvcltpKytdLnNldChnbG9iYWxEYXRhLCB0aGlz
LCBjdXJyZW50KTsKLSAgICBtX3ZlY3RvcltpXS5jbGVhcigpOworICAgIGZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEsIGhlYWQpOwogfQogCiBTdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWlu
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmlu
ZGV4IGY4NmE5YWE4NjVkMmY4OGYzOTI4M2U1MTU2ZjgwYjVkY2ZkYzFkOTEuLmE1ZTRhMGJiYjM5
OWJiOWUxZjExY2YzOTc0MzI0YWY4NTQ2NGIzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBT
dHJ1Y3R1cmVDaGFpbl9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRy
Lmg+CkBAIC00NCw3ICs0NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWlu
KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBT
dHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0
dXJlLmdldCgpLCBoZWFkKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkKKyAgICAgICAgeyAK
KyAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xv
YmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1
Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IAorICAgICAgICB9CiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0K
ICAgICAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKQEAgLTUyLDYgKzU2
LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIENsYXNzSW5m
byBzX2luZm87CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAg
c2l6ZV90IHNpemUgPSAwOworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBo
ZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxs
KCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUo
KSkKKyAgICAgICAgICAgICAgICArK3NpemU7CisgICAgCisgICAgICAgICAgICBtX3ZlY3RvciA9
IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W3NpemUgKyAxXSk7CisK
KyAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBj
dXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlw
ZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+
c3RydWN0dXJlKCkpCisgICAgICAgICAgICAgICAgbV92ZWN0b3JbaSsrXS5zZXQoZ2xvYmFsRGF0
YSwgdGhpcywgY3VycmVudCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogaGVhZCk7
CiAgICAgICAgIH5TdHJ1Y3R1cmVDaGFpbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105246</attachid>
            <date>2011-08-25 14:36:35 -0700</date>
            <delta_ts>2011-08-25 16:30:27 -0700</delta_ts>
            <desc>Fixing review issues</desc>
            <filename>bug-66827-20110825143636.patch</filename>
            <type>text/plain</type>
            <size>33194</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJi
YTQ4NzJjZWJiNmNmMTJjZTFjZjkyMmVmYmQyZDkwM2M5M2I5ZTUuLmQ1MTYwZWM4OGE4MDMyODg4
MjI2ZmI3Mzc2MGI3MWE4NTU1ZjJiNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ5IEBACisyMDExLTA4LTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVW56aXAgaW5pdGlhbGl6YXRpb24gbGlzdHMgYW5kIGNvbnN0cnVj
dG9ycyBpbiBKU0NlbGwgaGllcmFyY2h5ICgxLzcpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjgyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGZpbmlzaENyZWF0aW9uKCkgbWV0aG9kcyB0byBh
bGwgaW1tZWRpYXRlbHkgc3ViY2xhc3NlcyBvZiBKU0NlbGwgd2l0aAorICAgICAgICBub24tZW1w
dHkgY29uc3RydWN0b3JzLiAgUGFydCBvZiBhIGxhcmdlciByZWZhY3RvcmluZyB0byAidW56aXAi
IGluaXRpYWxpemF0aW9uCisgICAgICAgIGxpc3RzIGFuZCBjb25zdHJ1Y3RvciBib2RpZXMuICBB
bHNvIHJlbmFtZWQgSlNDZWxsJ3MgY29uc3RydWN0b3JCb2R5KCkgbWV0aG9kCisgICAgICAgIHRv
IGZpbmlzaENyZWF0aW9uKCkuCisKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OkV4ZWN1dGFibGVCYXNlKToKKyAgICAgICAgKEpT
Qzo6RXhlY3V0YWJsZUJhc2U6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9H
ZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpHZXR0ZXJTZXR0ZXIp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6
SlNBUElWYWx1ZVdyYXBwZXI6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgIChKU0M6OkpTQVBJ
VmFsdWVXcmFwcGVyOjpKU0FQSVZhbHVlV3JhcHBlcik6CisgICAgICAgICogcnVudGltZS9KU0Nl
bGwuaDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpKU0NlbGw6OkpTQ2VsbCk6CisgICAgICAgIChK
U0M6OkpTQ2VsbDo6SlNDZWxsOjpjb25zdHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNvbnN0cnVjdG9yQm9keSk6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmNvbnN0cnVjdG9yQm9keSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6SlNTdHJpbmcpOgorICAgICAgICAoSlNDOjpSb3BlQnVp
bGRlcjo6Y29uc3RydWN0b3JCb2R5KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cC5jcHA6Cisg
ICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb25z
dHJ1Y3RvckJvZHkpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVu
dGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpTY29wZUNo
YWluTm9kZSk6CisgICAgICAgIChKU0M6OlNjb3BlQ2hhaW5Ob2RlOjpjb25zdHJ1Y3RvckJvZHkp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hhaW46
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjpjb25zdHJ1Y3RvckJvZHkp
OgorCiAyMDExLTA4LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlIHNvbWV0aW1lcyBoYXMgdHdvIGhlYXAgb2JqZWN0IGNv
bnN0cnVjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAKaW5kZXggNDhiZjE2M2RiYzllN2M0ODNjZTU1OGFmMDllZTZmMzg2NjE1NzcxZS4uZDhmMTcw
ZGQ0NzEzMzg4N2ZlOGU2M2QzNWNlOGNkOWEwOTBmNzA5OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBGdW5jdGlv
bkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpZQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N5bWJvbFRhYmxl
KDApCiB7Ci0gICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwg
bGFzdExpbmUpOworICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIG5hbWUsIGZpcnN0TGlu
ZSwgbGFzdExpbmUpOwogfQogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgYm9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyog
cGFyYW1ldGVycywgYm9vbCBpblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0
TGluZSkKQEAgLTE1NSw3ICsxNTUsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhl
Y3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsCiB7CiAgICAg
bV9maXJzdExpbmUgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwotICAg
IGNvbnN0cnVjdG9yQm9keShleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGZpcnN0TGluZSwgbGFz
dExpbmUpOworICAgIGZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwgZmly
c3RMaW5lLCBsYXN0TGluZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCmluZGV4IGNlMjk4ZmVjOTVhMzcwNzc1MTYwNzI5YzM2NzNmZGM0ZjVjY2U1
YjQuLmVmNzI3MmJhMGVhM2Q4ZTJhMmE3NTAwYTRmZWFkMDUwM2ZmNmNlMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKQEAgLTU4LDYgKzU4LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX251bVBhcmFtZXRlcnNGb3JDYWxsKG51bVBh
cmFtZXRlcnMpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNvbnN0cnVjdChudW1Q
YXJhbWV0ZXJzKQogICAgICAgICB7CisgICAgICAgICAgICBmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgV2VhazxFeGVj
dXRhYmxlQmFzZT4gZmluYWxpemVyKGdsb2JhbERhdGEsIHRoaXMsIGV4ZWN1dGFibGVGaW5hbGl6
ZXIoKSk7CiAgICAgICAgICAgICBmaW5hbGl6ZXIubGVha0hhbmRsZSgpOwpAQCAtNTA1LDcgKzUx
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUpCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQgZmlyc3RMaW5lLCBp
bnQgbGFzdExpbmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fZmlyc3RMaW5lID0gZmlyc3RM
aW5lOwogICAgICAgICAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIuaAppbmRleCAwM2RiYjY2ZWMxOGJjNzY1OTgx
MWVlZmRiMzJjYjI3NzJkMTAwMGFmLi5lY2VjNmFkZWU4Y2MyNzRkOWEzNzc0ZjNkNGRjOGE2Zjli
YTg0ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJT
ZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZXR0ZXJTZXR0ZXIu
aApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgR2V0dGVyU2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+Z2xvYmFsRGF0YSgpLmdldHRlclNldHRlclN0cnVjdHVyZS5nZXQoKSkKICAgICAg
ICAgeworICAgICAgICAgICAgZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAg
ICAgICAgfQogCiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKaW5kZXggNTY0OGZiODBiYTc0ZmVkNDdmOGU4NjBjNjQ5
ZWNlY2VhODVkZDAyNi4uNTQ1ODYwYmZkMTIzNzQxNzYxN2JkMTVmYzA0ZjkyOTRmZjdhODAxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBl
ci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIEpTQVBJVmFsdWVXcmFwcGVyX2gKIAogI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKIApAQCAtNTAsMTIgKzUxLDE5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFs
dWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYywgdmFsdWUp
OwogICAgICAgICB9CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgICAgICAgICAg
bV92YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgICAg
ICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSlNBUElWYWx1ZVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQog
ICAgICAgICAgICAgOiBKU0NlbGwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkuYXBpV3JhcHBlclN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgewotICAgICAgICAgICAgbV92
YWx1ZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCB2YWx1ZSk7Ci0gICAgICAgICAgICBB
U1NFUlQoIXZhbHVlLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIGZpbmlzaENyZWF0aW9uKGV4ZWMs
IHZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBtX3Zh
bHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBkZjY5N2MwMmJk
MDhlZDE1MjU0M2FlMzNhMDgwMTNmMjgzMWRmMWMyLi4xZmZlOTdiYjZjNTQ0YTlkMWFjMzFkY2Q0
ZGM1OGJkMmQzODUyZmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApA
QCAtODAsNyArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBl
eHBsaWNpdCBKU0NlbGwoVlB0clN0ZWFsaW5nSGFja1R5cGUpIHsgfQogICAgICAgICBKU0NlbGwo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0gICAgICAgIEpTQ2VsbChKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CisgICAgICAgIEpTQ2VsbChDcmVh
dGluZ0Vhcmx5Q2VsbFRhZyk7CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOwogCiAgICAgcHVi
bGljOgpAQCAtMTUxLDggKzE1MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFub255bW91c1Nsb3RDb3VudCA9IDA7CiAK
LSAgICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIHZv
aWQgY29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIENyZWF0aW5nRWFy
bHlDZWxsVGFnKTsKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmKTsK
KyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBD
cmVhdGluZ0Vhcmx5Q2VsbFRhZyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBCYXNlIGlt
cGxlbWVudGF0aW9uOyBmb3Igbm9uLW9iamVjdCBjbGFzc2VzIGltcGxlbWVudHMgZ2V0UHJvcGVy
dHlTbG90LgpAQCAtMTcwLDE1ICsxNzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5l
IEpTQ2VsbDo6SlNDZWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIDogbV9zdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgdGhpcywgc3RydWN0dXJl
KQogICAgIHsKLSAgICAgICAgY29uc3RydWN0b3JCb2R5KGdsb2JhbERhdGEpOwogICAgIH0KIAot
ICAgIGlubGluZSBKU0NlbGw6OkpTQ2VsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbFRhZykKKyAgICBpbmxpbmUgSlNDZWxs
OjpKU0NlbGwoQ3JlYXRpbmdFYXJseUNlbGxUYWcpCiAgICAgewotICAgICAgICBjb25zdHJ1Y3Rv
ckJvZHkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5Q2VsbCk7IAogICAgIH0K
IAotICAgIGlubGluZSB2b2lkIEpTQ2VsbDo6Y29uc3RydWN0b3JCb2R5KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7CiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAg
ICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwpAQCAtMTg5
LDkgKzE4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJl
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmNvbnN0cnVjdG9yQm9keShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDcmVhdGluZ0Vhcmx5
Q2VsbFRhZykKKyAgICBpbmxpbmUgdm9pZCBKU0NlbGw6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENyZWF0aW5nRWFybHlDZWxs
VGFnKQogICAgIHsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKKyAgICAgICAgQVNTRVJUKGds
b2JhbERhdGEuaXNJbml0aWFsaXppbmdPYmplY3QoKSk7CiAgICAgICAgIGdsb2JhbERhdGEuc2V0
SW5pdGlhbGl6aW5nT2JqZWN0KGZhbHNlKTsKICAgICAgICAgaWYgKHN0cnVjdHVyZSkKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggNWEwZDAxYmNl
MmFhY2E0ZGM5MzQ5ZjFhNzgzYjBkNWUwZDdlNGU2Ny4uODFjZTkxOTJlNjc0ZGM2NzM2ZjAzMzM5
ZTRiNTAxZjQ5OTAxNzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCkBAIC0yNTksNiArMjU5LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKGluaGVyaXRz
KCZzX2luZm8pKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5hbFN0b3JhZ2VDYXBhY2l0eSk7CisgICAgICAgICAg
ICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBU1NFUlQocHJv
dG90eXBlKCkuaXNOdWxsKCkgfHwgSGVhcDo6aGVhcCh0aGlzKSA9PSBIZWFwOjpoZWFwKHByb3Rv
dHlwZSgpKSk7CisgICAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlubGluZVN0
b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpOworICAgICAgICAgICAgQVNT
RVJUKG1fc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBPYmplY3RUeXBlKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3VudCwgJnNf
aW5mbyk7CkBAIC00MzUsMTIgKzQ0Niw3IEBAIGlubGluZSBKU09iamVjdDo6SlNPYmplY3QoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUHJvcGVyCiAgICAg
OiBKU0NlbGwoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2Uo
aW5saW5lU3RvcmFnZSkKIHsKLSAgICBBU1NFUlQoaW5oZXJpdHMoJnNfaW5mbykpOwotICAgIEFT
U0VSVChtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA8IGJhc2VFeHRlcm5h
bFN0b3JhZ2VDYXBhY2l0eSk7Ci0gICAgQVNTRVJUKG1fc3RydWN0dXJlLT5pc0VtcHR5KCkpOwot
ICAgIEFTU0VSVChwcm90b3R5cGUoKS5pc051bGwoKSB8fCBIZWFwOjpoZWFwKHRoaXMpID09IEhl
YXA6OmhlYXAocHJvdG90eXBlKCkpKTsKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KGlu
bGluZVN0b3JhZ2UpID09IHN0YXRpY19jYXN0PHZvaWQqPih0aGlzICsgMSkpOwotICAgIEFTU0VS
VChtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlwZSk7CisgICAgZmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgaW5saW5lU3RvcmFnZSk7CiB9CiAKIGlubGluZSBKU09i
amVjdDo6fkpTT2JqZWN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKaW5kZXggYzRjZjg4OGFkNmJhMWQ5M2Fk
Nzk4MGRjZTE3NmM4Njc4NDhkZTBlNC4uMDJkMjVjMmY4NGM0YjIwYWUwOWJiMzYxMmU2NTE1N2Yy
MDZkMGM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgaW5saW5lIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU4KICAgICAsIG1fanNTdHJpbmdzU2l6ZShwcm9wZXJ0eU5hbWVBcnJheURhdGEt
PnByb3BlcnR5TmFtZVZlY3RvcigpLnNpemUoKSkKICAgICAsIG1fanNTdHJpbmdzKGFkb3B0QXJy
YXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlttX2pzU3RyaW5nc1NpemVdKSkKIHsKLSAg
ICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsKKyAgICBmaW5p
c2hDcmVhdGlvbihleGVjLCBwcm9wZXJ0eU5hbWVBcnJheURhdGEpOwogfQogCiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAppbmRleCAxODMxMGZhOGM3ZThiMTI3YTNiYThh
N2VjNTUxMDQyMGQyNjYwNzI0Li40MjAyZWJiNTRkMzgzNWY2MjEwNGJkYjJiODM1NTg4YTQxNjA5
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCkBAIC04NSw4ICs4NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgdm9pZCBjb25zdHJ1Y3RvckJvZHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVB
cnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSkKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1l
QXJyYXlEYXRhKQogICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihl
eGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgUHJvcGVydHlOYW1lQXJyYXlEYXRhOjpQ
cm9wZXJ0eU5hbWVWZWN0b3ImIHByb3BlcnR5TmFtZVZlY3RvciA9IHByb3BlcnR5TmFtZUFycmF5
RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9yKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIG1fanNTdHJpbmdz
W2ldLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIGpzT3duZWRTdHJpbmcoZXhlYywgcHJv
cGVydHlOYW1lVmVjdG9yW2ldLnVzdHJpbmcoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKaW5kZXggOTA5OTRmYmUzODk4ZmU4ODZmMjFlYjQzMWNhMWU1ZDNkZjhm
NTg0NC4uNWE4NDlmZDQ4OTdjYmY4YTU2ZGNhYzQ5MDZjY2UxOGUwMDY5NDQ1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC0xOTAsOCArMTkwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAgICAs
IG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUu
aXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1v
cnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGVudW0g
SGFzT3RoZXJPd25lclR5cGUgeyBIYXNPdGhlck93bmVyIH07CkBAIC0yMDEsOCArMTk5LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgICAg
ICAsIG1fZmliZXJDb3VudCgwKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fdmFs
dWUuaXNOdWxsKCkpOwotICAgICAgICAgICAgSGVhcDo6aGVhcCh0aGlzKS0+cmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KHZhbHVlLmltcGwoKS0+Y29zdCgpKTsKICAgICAgICAgfQogICAgICAgICBKU1N0
cmluZyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdmFs
dWUsIEhhc090aGVyT3duZXJUeXBlKQogICAgICAgICAgICAgOiBKU0NlbGwoZ2xvYmFsRGF0YSwg
Z2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCkBAIC0yMTAsMTQgKzIwNiwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgICAg
ICwgbV9maWJlckNvdW50KDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghbV92YWx1
ZS5pc051bGwoKSk7CiAgICAgICAgIH0KICAgICAgICAgSlNTdHJpbmcoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQogICAgICAgICAgICAgOiBKU0Nl
bGwoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAg
ICAgICAsIG1fbGVuZ3RoKHJvcGUtPmxlbmd0aCgpKQogICAgICAgICAgICAgLCBtX2ZpYmVyQ291
bnQoMSkKICAgICAgICAgewotICAgICAgICAgICAgbV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYo
KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBu
ZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAgLy8gVGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0yMjYsMTEgKzIyMCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChzMS0+bGVuZ3RoKCkg
KyBzMi0+bGVuZ3RoKCkpCiAgICAgICAgICAgICAsIG1fZmliZXJDb3VudChmaWJlckNvdW50KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21heEludGVybmFs
Um9wZUxlbmd0aCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAg
ICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczEpOwotICAgICAgICAgICAgYXBwZW5k
U3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMyKTsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNv
dW50ID09IGluZGV4KTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNv
bnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgczEgJiBzMi4KICAgICAgICAg
Ly8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMuCkBAIC0y
MzksMTEgKzIyOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX2xlbmd0aChz
MS0+bGVuZ3RoKCkgKyB1Mi5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KGZp
YmVyQ291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50IDw9IHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
LSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCBzMSk7Ci0gICAgICAg
ICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgdTIpOwotICAgICAgICAgICAgQVNT
RVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIC8vIFRoaXMgY29u
c3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5hdGluZyBzMSAmIHMy
LgogICAgICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIGZpYmVyQ291bnQg
PD0gMy4KQEAgLTI1MiwyMiArMjM2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
LCBtX2xlbmd0aCh1MS5sZW5ndGgoKSArIHMyLT5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9m
aWJlckNvdW50KGZpYmVyQ291bnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChmaWJl
ckNvdW50IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1
MSk7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRleCwgczIpOwotICAg
ICAgICAgICAgQVNTRVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9Ci0gICAgICAg
IC8vIFRoaXMgY29uc3RydWN0b3IgY29uc3RydWN0cyBhIG5ldyBzdHJpbmcgYnkgY29uY2F0ZW5h
dGluZyB2MSwgdjIgJiB2My4KLSAgICAgICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQg
d2l0aCBmaWJlckNvdW50IDw9IDMgLi4uIHdoaWNoIHNpbmNlIGV2ZXJ5Ci0gICAgICAgIC8vIHZh
bHVlIG11c3QgcmVxdWlyZSBhIGZpYmVyQ291bnQgb2YgYXQgbGVhc3Qgb25lIGltcGxpZXMgdGhh
dCB0aGUgbGVuZ3RoCi0gICAgICAgIC8vIGZvciBlYWNoIHZhbHVlIG11c3QgYmUgZXhhY3RseSAx
IQotICAgICAgICBKU1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdjEsIEpTVmFsdWUg
djIsIEpTVmFsdWUgdjMpCisgICAgICAgIEpTU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgICAgIDogSlNDZWxsKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnN0
cmluZ1N0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgICwgbV9sZW5ndGgoMCkKICAgICAgICAg
ICAgICwgbV9maWJlckNvdW50KHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb25zdHJ1Y3RvckJvZHkoZXhlYywgdjEsIHYyLCB2Myk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcgc3RyaW5nIGJ5
IGNvbmNhdGVuYXRpbmcgdTEgJiB1Mi4KQEAgLTI3NiwxMCArMjUwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsgdTIubGVuZ3RoKCkpCiAg
ICAgICAgICAgICAsIG1fZmliZXJDb3VudCgyKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRl
eCwgdTEpOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsK
LSAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGNvbnN0cnVjdHMgYSBuZXcg
c3RyaW5nIGJ5IGNvbmNhdGVuYXRpbmcgdTEsIHUyICYgdTMuCkBAIC0yODgsNjMgKzI1OCwxNTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fbGVuZ3RoKHUxLmxlbmd0aCgpICsg
dTIubGVuZ3RoKCkgKyB1My5sZW5ndGgoKSkKICAgICAgICAgICAgICwgbV9maWJlckNvdW50KHNf
bWF4SW50ZXJuYWxSb3BlTGVuZ3RoKQogICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmlu
ZyYgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLmlzTnVsbCgpKTsKKyAgICAg
ICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdCh2YWx1ZS5pbXBs
KCktPmNvc3QoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUuaXNO
dWxsKCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFBhc3NSZWZQdHI8Um9wZUltcGw+IHJvcGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAg
ICAgbV9maWJlcnNbMF0gPSByb3BlLmxlYWtSZWYoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJl
ckNvdW50LCBKU1N0cmluZyogczEsIEpTU3RyaW5nKiBzMikKKyAgICAgICAgeworICAgICAgICAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQo
ZmliZXJDb3VudCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7Ci0gICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNvbnN0cnVjdChpbmRl
eCwgdTEpOwotICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHUyKTsK
LSAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KGluZGV4LCB1Myk7Ci0gICAgICAg
ICAgICBBU1NFUlQoaW5kZXggPD0gc19tYXhJbnRlcm5hbFJvcGVMZW5ndGgpOworICAgICAgICAg
ICAgYXBwZW5kU3RyaW5nSW5DcmVhdGUoaW5kZXgsIHMxKTsKKyAgICAgICAgICAgIGFwcGVuZFN0
cmluZ0luQ3JlYXRlKGluZGV4LCBzMik7CisgICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA9
PSBpbmRleCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBj
b25zdCBVU3RyaW5nJiB1MikKKyAgICAgICAgeworICAgICAgICAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoZmliZXJDb3VudCA8PSBzX21h
eEludGVybmFsUm9wZUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7Cisg
ICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgczEpOworICAgICAgICAgICAg
YXBwZW5kU3RyaW5nSW5DcmVhdGUoaW5kZXgsIHUyKTsKKyAgICAgICAgICAgIEFTU0VSVChmaWJl
ckNvdW50ID09IGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBmaWJlckNvdW50LCBjb25zdCBV
U3RyaW5nJiB1MSwgSlNTdHJpbmcqIHMyKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEFTU0VSVChmaWJlckNvdW50
IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ3JlYXRlKGluZGV4LCB1MSk7CisgICAg
ICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgczIpOworICAgICAgICAgICAgQVNT
RVJUKGZpYmVyQ291bnQgPT0gaW5kZXgpOwogICAgICAgICB9CiAKLSAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZvaWQgY29uc3RydWN0b3JCb2R5KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2MSwg
SlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKKyAgICAgICAgLy8gRmlsbHMgaW4gdGhlIG5ldyBzdHJp
bmcgYnkgY29uY2F0ZW5hdGluZyB2MSwgdjIgJiB2My4KKyAgICAgICAgLy8gVGhpcyBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2l0aCBmaWJlckNvdW50IDw9IDMgLi4uIHdoaWNoIHNpbmNlIGV2ZXJ5
CisgICAgICAgIC8vIHZhbHVlIG11c3QgcmVxdWlyZSBhIGZpYmVyQ291bnQgb2YgYXQgbGVhc3Qg
b25lIGltcGxpZXMgdGhhdCB0aGUgbGVuZ3RoCisgICAgICAgIC8vIGZvciBlYWNoIHZhbHVlIG11
c3QgYmUgZXhhY3RseSAxIQorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2MSwgSlNWYWx1ZSB2MiwgSlNWYWx1ZSB2MykKICAgICAgICAgeworICAg
ICAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25z
dHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKLSAgICAgICAgICAgIGFw
cGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsK
LSAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoZXhl
YywgaW5kZXgsIHYzKTsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5DcmVhdGVBbmRJbmNyZW1l
bnRMZW5ndGgoZXhlYywgaW5kZXgsIHYxKTsKKyAgICAgICAgICAgIGFwcGVuZFZhbHVlSW5DcmVh
dGVBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYyKTsKKyAgICAgICAgICAgIGFwcGVu
ZFZhbHVlSW5DcmVhdGVBbmRJbmNyZW1lbnRMZW5ndGgoZXhlYywgaW5kZXgsIHYzKTsKICAgICAg
ICAgICAgIEFTU0VSVChpbmRleCA9PSBzX21heEludGVybmFsUm9wZUxlbmd0aCk7CiAgICAgICAg
IH0KIAorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgdTEsIGNvbnN0IFVTdHJpbmcmIHUyKQorICAgICAgICB7CisgICAg
ICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGFwcGVuZFN0cmluZ0luQ3JlYXRlKGluZGV4
LCB1MSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNyZWF0ZShpbmRleCwgdTIpOworICAg
ICAgICAgICAgQVNTRVJUKGluZGV4IDw9IHNfbWF4SW50ZXJuYWxSb3BlTGVuZ3RoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcm
IHUzKQorICAgICAgICB7CisgICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxE
YXRhKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIGFwcGVu
ZFN0cmluZ0luQ3JlYXRlKGluZGV4LCB1MSk7CisgICAgICAgICAgICBhcHBlbmRTdHJpbmdJbkNy
ZWF0ZShpbmRleCwgdTIpOworICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5DcmVhdGUoaW5kZXgs
IHUzKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8PSBzX21heEludGVybmFsUm9wZUxlbmd0
aCk7CisgICAgICAgIH0KKwogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihn
bG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAg
ICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsKKyAgICAgICAgICAgIG5l
d1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNy
ZWF0ZUhhc090aGVyT3duZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiB2YWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSwg
SGFzT3RoZXJPd25lcik7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChh
bGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERh
dGEsIHZhbHVlLCBIYXNPdGhlck93bmVyKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmlu
ZzsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3du
ZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHZhbHVl
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlLCBIYXNPdGhl
ck93bmVyKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFs
dWUsIEhhc090aGVyT3duZXIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0K
ICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBQYXNzUmVmUHRyPFJvcGVJbXBsPiByb3BlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5n
KGdsb2JhbERhdGEsIHJvcGUpOworICAgICAgICAgICAgUmVmUHRyPFJvcGVJbXBsPiB0ZW1wUm9w
ZSA9IHJvcGU7CisgICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0
ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHRl
bXBSb3BlKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0
YSwgdGVtcFJvcGUpOworICAgICAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQog
ICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IHVuc2lnbmVkIGZpYmVyQ291bnQsIEpTU3RyaW5nKiBzMSwgSlNTdHJpbmcqIHMyKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMxLCBzMik7Cisg
ICAgICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJp
bmc+KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIGZpYmVyQ291bnQsIHMx
LCBzMik7CisgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEs
IGZpYmVyQ291bnQsIHMxLCBzMik7CisgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAg
ICAgICB9CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgdW5zaWduZWQgZmliZXJDb3VudCwgSlNTdHJpbmcqIHMxLCBjb25zdCBVU3RyaW5n
JiB1MikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpT
U3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBmaWJlckNvdW50
LCBzMSwgdTIpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2Nh
dGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCBm
aWJlckNvdW50LCBzMSwgdTIpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhLCBmaWJlckNvdW50LCBzMSwgdTIpOworICAgICAgICAgICAgcmV0dXJuIG5l
d1N0cmluZzsKICAgICAgICAgfQogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGZpYmVyQ291bnQsIGNvbnN0IFVTdHJpbmcm
IHUxLCBKU1N0cmluZyogczIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0
YSwgZmliZXJDb3VudCwgdTEsIHMyKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmco
Z2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMyKTsKKyAgICAgICAgICAgIG5ld1N0cmluZy0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZmliZXJDb3VudCwgdTEsIHMyKTsKKyAgICAgICAg
ICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5n
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyLCBKU1ZhbHVl
IHYzKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNT
dHJpbmc+KCpleGVjLT5oZWFwKCkpKSBKU1N0cmluZyhleGVjLCB2MSwgdjIsIHYzKTsKKyAgICAg
ICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4o
KmV4ZWMtPmhlYXAoKSkpIEpTU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgbmV3U3RyaW5nLT5m
aW5pc2hDcmVhdGlvbihleGVjLCB2MSwgdjIsIHYzKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdT
dHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwgY29uc3QgVVN0cmluZyYgdTIp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAg
ICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAgICAg
ICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdTEsIHUyKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIEpTU3Ry
aW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiB1MSwg
Y29uc3QgVVN0cmluZyYgdTIsIGNvbnN0IFVTdHJpbmcmIHUzKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEuaGVhcCkp
IEpTU3RyaW5nKGdsb2JhbERhdGEsIHUxLCB1MiwgdTMpOworICAgICAgICAgICAgSlNTdHJpbmcq
IG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXAp
KSBKU1N0cmluZyhnbG9iYWxEYXRhLCB1MSwgdTIsIHUzKTsKKyAgICAgICAgICAgIG5ld1N0cmlu
Zy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgdTEsIHUyLCB1Myk7CisgICAgICAgICAgICBy
ZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CiAKICAgICAgICAgfkpTU3RyaW5nKCkKQEAgLTM5
Nyw3ICs0NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBvdXRPZk1lbW9yeShF
eGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgSlNTdHJpbmcqIHN1YnN0cmluZ0Zyb21Sb3BlKEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAgICAgICB2
b2lkIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KHVuc2lnbmVkJiBpbmRleCwgY29uc3QgVVN0cmlu
ZyYgc3RyaW5nKQorICAgICAgICB2b2lkIGFwcGVuZFN0cmluZ0luQ3JlYXRlKHVuc2lnbmVkJiBp
bmRleCwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogICAgICAgICB7CiAgICAgICAgICAgICBTdHJp
bmdJbXBsKiBpbXBsID0gc3RyaW5nLmltcGwoKTsKICAgICAgICAgICAgIGltcGwtPnJlZigpOwpA
QCAtNDA1LDcgKzQ2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgSGVhcDo6aGVh
cCh0aGlzKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KHN0cmluZy5pbXBsKCktPmNvc3QoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGFwcGVuZFN0cmluZ0luQ29uc3RydWN0KHVuc2lnbmVk
JiBpbmRleCwgSlNTdHJpbmcqIGpzU3RyaW5nKQorICAgICAgICB2b2lkIGFwcGVuZFN0cmluZ0lu
Q3JlYXRlKHVuc2lnbmVkJiBpbmRleCwgSlNTdHJpbmcqIGpzU3RyaW5nKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoanNTdHJpbmctPmlzUm9wZSgpKSB7CiAgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGpzU3RyaW5nLT5tX2ZpYmVyQ291bnQ7ICsraSkgewpAQCAt
NDE0LDE2ICs0NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgIG1f
ZmliZXJzW2luZGV4KytdID0gZmliZXI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIGpz
U3RyaW5nLT5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgYXBwZW5kU3RyaW5nSW5DcmVhdGUo
aW5kZXgsIGpzU3RyaW5nLT5zdHJpbmcoKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGFw
cGVuZFZhbHVlSW5Db25zdHJ1Y3RBbmRJbmNyZW1lbnRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCYgaW5kZXgsIEpTVmFsdWUgdikKKyAgICAgICAgdm9pZCBhcHBlbmRWYWx1ZUluQ3Jl
YXRlQW5kSW5jcmVtZW50TGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQmIGluZGV4LCBK
U1ZhbHVlIHYpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh2LmlzU3RyaW5nKCkpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQodi5hc0NlbGwoKS0+aXNTdHJpbmcoKSk7CiAgICAgICAgICAg
ICAgICAgSlNTdHJpbmcqIHMgPSBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KHYuYXNDZWxsKCkpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChzLT5maWJlckNvdW50KCkgPT0gMSk7Ci0gICAgICAgICAg
ICAgICAgYXBwZW5kU3RyaW5nSW5Db25zdHJ1Y3QoaW5kZXgsIHMpOworICAgICAgICAgICAgICAg
IGFwcGVuZFN0cmluZ0luQ3JlYXRlKGluZGV4LCBzKTsKICAgICAgICAgICAgICAgICBtX2xlbmd0
aCArPSBzLT5sZW5ndGgoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
VVN0cmluZyB1KHYudG9TdHJpbmcoZXhlYykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKaW5kZXggNWQxNTg5MTdkNDdlOWVhYzZjOWFkZjRjMjJlMDkxMTAzNWE2YmU1
Ni4uZDkwY2Q1NDM3MTcyYjEyNjI4Zjc5OGU2Mjc3MTcwMzhjYzZkYjE5NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC04OCw2ICs4OCwxMiBAQCBSZWdFeHA6
OlJlZ0V4cChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm5T
dHJpbmcsIFJlZ0V4cEZsYQogICAgICwgbV9ydE1hdGNoRm91bmRDb3VudCgwKQogI2VuZGlmCiB7
CisgICAgZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgUmVnRXhwOjpmaW5p
c2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3Bh
dHRlcm5TdHJpbmcsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCksICZtX2NvbnN0cnVjdGlvbkVy
cm9yKTsKICAgICBpZiAobV9jb25zdHJ1Y3Rpb25FcnJvcikKICAgICAgICAgbV9zdGF0ZSA9IFBh
cnNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IDgxMmE4
NmNkMTFjNjIxNTUwNzdjN2FiMTdiNWM2YzJlNDAyNTRhMDEuLjIyOTAxZTFhNTI5MWUxNjBiNDg1
NzA1ZjIxN2UzNWMyZGE5M2NjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cC5oCkBAIC03NSw2ICs3NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ0V4cEtl
eSBrZXkoKSB7IHJldHVybiBSZWdFeHBLZXkobV9mbGFncywgbV9wYXR0ZXJuU3RyaW5nKTsgfQog
CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0
YSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlZ0V4cENhY2hlOwog
ICAgICAgICBSZWdFeHAoSlNHbG9iYWxEYXRhJiwgY29uc3QgVVN0cmluZyYsIFJlZ0V4cEZsYWdz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAppbmRleCBjZjFh
NTk2MDdmNWY3MmE4NGQxMzEyYjFkMTNmMGNjOGVhMWFjNDAwLi4xYzExYjJjMTZkOTZiM2NjMWJm
MjYyNzYzNzBhMmUwMWNlNmE3ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCkBAIC00Myw2ICs0MywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICwgZ2xvYmFsT2JqZWN0KCpnbG9iYWxEYXRhLCB0aGlzLCBnbG9iYWxPYmplY3QpCiAgICAg
ICAgICAgICAsIGdsb2JhbFRoaXMoKmdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbFRoaXMpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKCpnbG9iYWxE
YXRhKTsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VS
VChnbG9iYWxPYmplY3QpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCA0MDgzODEyYjZmMzFjZjRkZTllZjZhYTUyNjdiNzk0ZDY2
MzgyYmM0Li5mZGFlNTg0MGU1ZWMyMzc0OGZjYjJiMmEyZGQyNmM3NzMzYmI4ZjZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTE3Niw2ICsxNzYs
NyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFs
dWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogICAgICwgbV9wcmV2ZW50RXh0ZW5zaW9ucyhm
YWxzZSkKICAgICAsIG1fZGlkVHJhbnNpdGlvbihmYWxzZSkKIHsKKyAgICBmaW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICBBU1NFUlQobV9wcm90b3R5cGUpOwogICAgIEFTU0VSVChtX3By
b3RvdHlwZS5pc09iamVjdCgpIHx8IG1fcHJvdG90eXBlLmlzTnVsbCgpKTsKIH0KQEAgLTE4Myw3
ICsxODQsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbwogY29uc3QgQ2xhc3NJbmZvIFN0cnVj
dHVyZTo6c19pbmZvID0geyAiU3RydWN0dXJlIiwgMCwgMCwgMCB9OwogCiBTdHJ1Y3R1cmU6OlN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCi0gICAgOiBKU0NlbGwoZ2xvYmFsRGF0
YSwgdGhpcywgQ3JlYXRpbmdFYXJseUNlbGwpCisgICAgOiBKU0NlbGwoQ3JlYXRpbmdFYXJseUNl
bGwpCiAgICAgLCBtX3R5cGVJbmZvKENvbXBvdW5kVHlwZSwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bikKICAgICAsIG1fcHJvdG90eXBlKGdsb2JhbERhdGEsIHRoaXMsIGpzTnVsbCgpKQogICAgICwg
bV9jbGFzc0luZm8oJnNfaW5mbykKQEAgLTE5OSw2ICsyMDAsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVj
dHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgLCBtX3ByZXZlbnRFeHRlbnNpb25z
KGZhbHNlKQogICAgICwgbV9kaWRUcmFuc2l0aW9uKGZhbHNlKQogeworICAgIGZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEsIHRoaXMsIENyZWF0aW5nRWFybHlDZWxsKTsKICAgICBBU1NFUlQobV9w
cm90b3R5cGUpOwogICAgIEFTU0VSVChtX3Byb3RvdHlwZS5pc051bGwoKSk7CiAgICAgQVNTRVJU
KCFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CkBAIC0yMjEsNiArMjIzLDcgQEAgU3Ry
dWN0dXJlOjpTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBTdHJ1Y3R1
cmUqIHByZXZpb3VzKQogICAgICwgbV9wcmV2ZW50RXh0ZW5zaW9ucyhwcmV2aW91cy0+bV9wcmV2
ZW50RXh0ZW5zaW9ucykKICAgICAsIG1fZGlkVHJhbnNpdGlvbih0cnVlKQogeworICAgIGZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgIEFTU0VSVChtX3Byb3RvdHlwZSk7CiAgICAgQVNT
RVJUKG1fcHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgbV9wcm90b3R5cGUuaXNOdWxsKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmlu
ZGV4IDg5YTBlYzBjMjA2N2I0Njk2ZmEzMWUyNjliNTk3ZDdjNmI5OWJhZmYuLjgwYmU5OGViYzQ1
ZjRhNGI5YzFiYWI0ZjI5NDg1NDgyNmNlOTdjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAKQEAgLTM3LDE2ICszNyw3IEBAIENsYXNz
SW5mbyBTdHJ1Y3R1cmVDaGFpbjo6c19pbmZvID0geyAiU3RydWN0dXJlQ2hhaW4iLCAwLCAwLCAw
IH07CiBTdHJ1Y3R1cmVDaGFpbjo6U3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlKiBoZWFkKQogICAgIDogSlNDZWxs
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKIHsKLSAgICBzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgZm9y
IChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+
c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDogYXNPYmplY3QoY3VycmVudC0+c3RvcmVk
UHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKLSAgICAgICAgKytzaXplOwotICAgIAotICAgIG1f
dmVjdG9yID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT5bc2l6ZSAr
IDFdKTsKLQotICAgIHNpemVfdCBpID0gMDsKLSAgICBmb3IgKFN0cnVjdHVyZSogY3VycmVudCA9
IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKS5pc051
bGwoKSA/IDAgOiBhc09iamVjdChjdXJyZW50LT5zdG9yZWRQcm90b3R5cGUoKSktPnN0cnVjdHVy
ZSgpKQotICAgICAgICBtX3ZlY3RvcltpKytdLnNldChnbG9iYWxEYXRhLCB0aGlzLCBjdXJyZW50
KTsKLSAgICBtX3ZlY3RvcltpXS5jbGVhcigpOworICAgIGZpbmlzaENyZWF0aW9uKGdsb2JhbERh
dGEsIGhlYWQpOwogfQogCiBTdHJ1Y3R1cmVDaGFpbjo6flN0cnVjdHVyZUNoYWluKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IGY4NmE5
YWE4NjVkMmY4OGYzOTI4M2U1MTU2ZjgwYjVkY2ZkYzFkOTEuLmE1ZTRhMGJiYjM5OWJiOWUxZjEx
Y2YzOTc0MzI0YWY4NTQ2NGIzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBTdHJ1Y3R1cmVD
aGFpbl9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogCiAjaW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CkBAIC00
NCw3ICs0NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CiAKLSAgICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFN0cnVjdHVyZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVD
aGFpbihnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgp
LCBoZWFkKTsgfQorICAgICAgICBzdGF0aWMgU3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogaGVhZCkKKyAgICAgICAgeyAKKyAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0YS5o
ZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFp
blN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IAorICAgICAgICB9CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAgICAg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKQEAgLTUyLDYgKzU2LDIxIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgc3RhdGljIENsYXNzSW5mbyBzX2luZm87
CiAKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIGhlYWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICAgICAgc2l6ZV90IHNp
emUgPSAwOworICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIGN1cnJlbnQgPSBoZWFkOyBjdXJy
ZW50OyBjdXJyZW50ID0gY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkuaXNOdWxsKCkgPyAwIDog
YXNPYmplY3QoY3VycmVudC0+c3RvcmVkUHJvdG90eXBlKCkpLT5zdHJ1Y3R1cmUoKSkKKyAgICAg
ICAgICAgICAgICArK3NpemU7CisgICAgCisgICAgICAgICAgICBtX3ZlY3RvciA9IGFkb3B0QXJy
YXlQdHIobmV3IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W3NpemUgKyAxXSk7CisKKyAgICAgICAg
ICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0g
aGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVs
bCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJl
KCkpCisgICAgICAgICAgICAgICAgbV92ZWN0b3JbaSsrXS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywg
Y3VycmVudCk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cnVjdHVyZUNo
YWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogaGVhZCk7CiAgICAgICAg
IH5TdHJ1Y3R1cmVDaGFpbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>