<?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>211499</bug_id>
          
          <creation_ts>2020-05-05 23:37:42 -0700</creation_ts>
          <short_desc>Make a helper for ICU functions that may need to be called twice to populate a buffer</short_desc>
          <delta_ts>2020-05-06 16:02:17 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1649514</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 23:37:42 -0700</bug_when>
    <thetext>Make a helper for the pattern of ICU functions that may need to be called twice to populate a buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649515</commentid>
    <comment_count>1</comment_count>
      <attachid>398594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 23:39:46 -0700</bug_when>
    <thetext>Created attachment 398594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649516</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 23:40:35 -0700</bug_when>
    <thetext>Looking for feedback on the name of the function template, and also the other design considerations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649525</commentid>
    <comment_count>3</comment_count>
      <attachid>398594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 00:01:34 -0700</bug_when>
    <thetext>Comment on attachment 398594
Patch

Have to rebase and re-upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649613</commentid>
    <comment_count>4</comment_count>
      <attachid>398617</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 08:08:14 -0700</bug_when>
    <thetext>Created attachment 398617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649621</commentid>
    <comment_count>5</comment_count>
      <attachid>398617</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 08:20:32 -0700</bug_when>
    <thetext>Comment on attachment 398617
Patch

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

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1614
&gt; +    Vector&lt;UChar&gt; buffer(s.length());

On reflection, I think I’ll change this to:

    Vector&lt;UChar&gt; buffer;
    buffer.reserveInitialCapacity(s.length());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649639</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 08:58:37 -0700</bug_when>
    <thetext>Guess this is not working right yet. Tests are failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649645</commentid>
    <comment_count>7</comment_count>
      <attachid>398624</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 09:13:33 -0700</bug_when>
    <thetext>Created attachment 398624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649719</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 11:38:30 -0700</bug_when>
    <thetext>Interesting, looks like one of the JSC stress tests is failing:

    stress/intl-relativetimeformat.js.intl-relativetimeformat-enabled

I don’t know much about how to investigate and debug; have to figure that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649789</commentid>
    <comment_count>9</comment_count>
      <attachid>398655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 14:06:17 -0700</bug_when>
    <thetext>Created attachment 398655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649794</commentid>
    <comment_count>10</comment_count>
      <attachid>398655</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-06 14:22:36 -0700</bug_when>
    <thetext>Comment on attachment 398655
Patch

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

r=me pending EWS, this is really cool.

&gt; Source/WTF/ChangeLog:10
&gt; +        specia considerations because of null character terminatorion, or destinations that are

spelling: specia, terminatorion

&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:77
&gt; +template&lt;typename FirstArgumentType, typename ...OtherArgumentTypes&gt; auto argumentTuple(FirstArgumentType&amp;&amp;, OtherArgumentTypes&amp;&amp;...);

How come this declaration is needed for argumentTuple but not for findVector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649802</commentid>
    <comment_count>11</comment_count>
      <attachid>398655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 14:31:22 -0700</bug_when>
    <thetext>Comment on attachment 398655
Patch

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

&gt;&gt; Source/WTF/ChangeLog:10
&gt;&gt; +        specia considerations because of null character terminatorion, or destinations that are
&gt; 
&gt; spelling: specia, terminatorion

OK, I’ll fix those.

&gt;&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:77
&gt;&gt; +template&lt;typename FirstArgumentType, typename ...OtherArgumentTypes&gt; auto argumentTuple(FirstArgumentType&amp;&amp;, OtherArgumentTypes&amp;&amp;...);
&gt; 
&gt; How come this declaration is needed for argumentTuple but not for findVector?

Must admit I am not 100% sure. Without it, the code does not compile, though!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649810</commentid>
    <comment_count>12</comment_count>
      <attachid>398655</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-06 14:40:10 -0700</bug_when>
    <thetext>Comment on attachment 398655
Patch

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

LGTM too

&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:81
&gt; +    return tuple_cat(std::make_tuple(buffer.data(), buffer.size()), argumentTuple(std::forward&lt;OtherArgumentTypes&gt;(otherArguments)...));

Nice

&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:91
&gt; +template&lt;typename FunctionType, typename ...ArgumentTypes&gt; UErrorCode callBufferProducingFunction(const FunctionType&amp; function, ArgumentTypes&amp;&amp;... arguments)

This is nice. I like how you solved passing in a Vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649825</commentid>
    <comment_count>13</comment_count>
      <attachid>398655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 14:56:59 -0700</bug_when>
    <thetext>Comment on attachment 398655
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/unicode/icu/ICUHelpers.h:77
&gt;&gt;&gt; +template&lt;typename FirstArgumentType, typename ...OtherArgumentTypes&gt; auto argumentTuple(FirstArgumentType&amp;&amp;, OtherArgumentTypes&amp;&amp;...);
&gt;&gt; 
&gt;&gt; How come this declaration is needed for argumentTuple but not for findVector?
&gt; 
&gt; Must admit I am not 100% sure. Without it, the code does not compile, though!

Oh, I figured it out. The difference is that the Vector overload of findVector never recursively calls the other findVector; just returns the reference to the vector. But in the case of argumentTuple, the overload that handles the Vector *does* recursively call argumentTuple. And to resolve it correctly it apparently needs to have already seen the template declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649830</commentid>
    <comment_count>14</comment_count>
      <attachid>398655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 15:00:29 -0700</bug_when>
    <thetext>Comment on attachment 398655
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp:622
&gt; -    Vector&lt;UChar, 32&gt; patternBuffer(32);
&gt; -    status = U_ZERO_ERROR;
&gt; -    auto patternLength = udatpg_getBestPatternWithOptions(generator, skeletonView.upconvertedCharacters(), skeletonView.length(), UDATPG_MATCH_HOUR_FIELD_LENGTH, patternBuffer.data(), patternBuffer.size(), &amp;status);
&gt; -    if (needsToGrowToProduceBuffer(status)) {
&gt; -        status = U_ZERO_ERROR;
&gt; -        patternBuffer.grow(patternLength);
&gt; -        udatpg_getBestPattern(generator, skeletonView.upconvertedCharacters(), skeletonView.length(), patternBuffer.data(), patternLength, &amp;status);
&gt; -    }
&gt; +    Vector&lt;UChar, 32&gt; patternBuffer;
&gt; +    status = callBufferProducingFunction(udatpg_getBestPatternWithOptions, generator, skeletonView.upconvertedCharacters(), skeletonView.length(), UDATPG_MATCH_HOUR_FIELD_LENGTH, patternBuffer);

I just noticed a behavior change here.

The old code called udatpg_getBestPatternWithOptions first, but then called udatpg_getBestPattern the second time. I suspect the refactoring fixed a potential bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649874</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-06 16:01:11 -0700</bug_when>
    <thetext>Committed r261257: &lt;https://trac.webkit.org/changeset/261257&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649875</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-06 16:02:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/62949588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398594</attachid>
            <date>2020-05-05 23:39:46 -0700</date>
            <delta_ts>2020-05-06 08:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211499-20200505233944.patch</filename>
            <type>text/plain</type>
            <size>31377</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NjE5YTE2ZGNmYmFhYTY4NmQyMTVmNTU5MzcwNzk1OTE3NjNlZjVmLi4yODEwYTY3ZTBlMzk4NjBj
YzI2NjVkZDk2YWJiMTAzNzM4NTdhOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNS0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0
aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFVz
ZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24uCisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVRpbWVab25lTmFtZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OmNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcp
OiBEaXR0by4KKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcpOiBEaXR0by4K
KyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbCBjb25zdCk6IERpdHRv
LgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNv
bnN0KTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjp0b0xvY2FsZUNhc2UpOiBEaXR0by4KKwogMjAyMC0wNS0wNSAgS2VpdGggTWls
bGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBjbG9iYmVyaXplIHZhbGlk
YXRvciBzaG91bGQgdXNlIGJyYW5jaFRlc3Q4IGRpcmVjdGx5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3ZGFhMWFhZDRkMzU4
ZjBiMjQ4YjBkZTc3ODhkZDVlOTQzMDI3ZjMxLi44NzMxMzg3MTc4ZTZmOThlMjI1ZDA3M2Q0ZmI5
MmJiYjI4ODg5MjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA1LTA1ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGEgaGVscGVyIGZvciB0aGUgcGF0
dGVybiBvZiBJQ1UgZnVuY3Rpb25zIHRoYXQgbWF5IG5lZWQgdG8gYmUgY2FsbGVkIHR3aWNlIHRv
IHBvcHVsYXRlIGEgYnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTE0OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElDVS5oOgorICAgICAg
ICAoV1RGOjpMaW5lQnJlYWtJdGVyYXRvclBvb2w6Om1ha2VMb2NhbGVXaXRoQnJlYWtLZXl3b3Jk
KTogVXNlIGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbi4KKworICAgICAgICAqIHd0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmg6CisgICAgICAgIChXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNl
QnVmZmVyKTogQ2hhbmdlZCB0byBjb25zdGV4cHIsIHNpbmNlIHdlIGNhbi4KKyAgICAgICAgKFdU
Rjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChXVEY6OkNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbjo6ZmluZFZlY3Rvcik6IEFkZGVkLiBJbXBsZW1lbnRh
dGlvbiBkZXRhaWwKKyAgICAgICAgb2YgY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uLgorICAg
ICAgICAoV1RGOjpDYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb246OmFyZ3VtZW50VHVwbGUpOiBE
aXR0by4KKyAgICAgICAgKFdURjo6Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKTogQWRkZWQu
CisKIDIwMjAtMDUtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDc3Y2M4Y2UxYmI3OTI4YWI1ZTY0M2Y4NzI3NDBmODg0MDUwM2NkNzkuLjRlYWY2NDIz
MzRjNTgwNjhlYWM4YjgzYTU1ZjYyYTA4OTI3YzJiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMC0wNS0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0aGF0IG1h
eSBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVy
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVDaGFyYWN0ZXJzKTogVXNlIGNh
bGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbi4KKwogMjAyMC0wNS0wNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNaW5vciBFdmVudEhhbmRsZXIgYW5k
IHRlc3QgY2xlYW51cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggNzQ0OTUyZjIwOGUxMWRjNTI5NDg0ZDIxODI2YTQ0
MjNiNWM0MGVkYi4uNWZjOWYwMjY2NGE3NjExZjdlNDJlOWMyYTk4NDNkNWViNzdkMGZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCkBAIC0xMDUsMjcgKzEwNSwxNSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlz
VVRDRXF1aXZhbGVudChTdHJpbmdWaWV3IHRpbWVab25lKQogLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1kZWZhdWx0dGltZXpvbmUKIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFRpbWVab25l
KCkKIHsKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBTdHJpbmcg
Y2Fub25pY2FsOwogCi0gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBhdXRv
IGJ1ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlci5zaXplKCksICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZl
cihzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYnVm
ZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgdWNhbF9nZXREZWZhdWx0VGltZVpvbmUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCAmc3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9y
PFVDaGFyLCAzMj4gYnVmZmVyOworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lLCBidWZmZXIpOwogICAgIGlm
IChVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0g
ICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcigzMik7Ci0gICAgICAgIGF1
dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVm
ZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgICAgICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOwot
ICAgICAgICAgICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxs
cHRyLCAmc3RhdHVzKTsKLSAgICAgICAgfQorICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5v
bmljYWxCdWZmZXI7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCksIGNhbm9uaWNhbEJ1ZmZlciwgbnVsbHB0cik7CiAgICAgICAgIGlmIChVX1NVQ0NFU1Moc3Rh
dHVzKSkKLSAgICAgICAgICAgIGNhbm9uaWNhbCA9IFN0cmluZyhjYW5vbmljYWxCdWZmZXIuZGF0
YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNh
bm9uaWNhbEJ1ZmZlcik7CiAgICAgfQogCiAgICAgaWYgKGNhbm9uaWNhbC5pc051bGwoKSB8fCBp
c1VUQ0VxdWl2YWxlbnQoY2Fub25pY2FsKSkKQEAgLTE0Niw3ICsxMzQsNyBAQCBzdGF0aWMgU3Ry
aW5nIGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShjb25zdCBTdHJpbmcmIHRpbWVab25lTmFtZSkK
ICAgICBkbyB7CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50MzJf
dCBpYW5hVGltZVpvbmVMZW5ndGg7Ci0gICAgICAgIC8vIFRpbWUgem9uZSBuYW1lcyBhcmUgcmVz
cHJlc2VudGVkIGFzIFVDaGFyW10gaW4gYWxsIHJlbGF0ZWQgSUNVIGFwaXMuCisgICAgICAgIC8v
IFRpbWUgem9uZSBuYW1lcyBhcmUgcmVwcmVzZW50ZWQgYXMgVUNoYXJbXSBpbiBhbGwgcmVsYXRl
ZCBJQ1UgQVBJcy4KICAgICAgICAgY29uc3QgVUNoYXIqIGlhbmFUaW1lWm9uZSA9IHVlbnVtX3Vu
ZXh0KHRpbWVab25lcywgJmlhbmFUaW1lWm9uZUxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIEFT
U0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAKQEAgLTE2MywxNiArMTUxLDEwIEBAIHN0YXRpYyBT
dHJpbmcgY2Fub25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1l
KQogICAgICAgICAvLyAxLiBMZXQgaWFuYVRpbWVab25lIGJlIHRoZSBab25lIG9yIExpbmsgbmFt
ZSBvZiB0aGUgSUFOQSBUaW1lIFpvbmUgRGF0YWJhc2Ugc3VjaCB0aGF0IHRpbWVab25lLCBjb252
ZXJ0ZWQgdG8gdXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLCBpcyBlcXVhbCB0byBpYW5h
VGltZVpvbmUsIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCiAg
ICAgICAgIC8vIDIuIElmIGlhbmFUaW1lWm9uZSBpcyBhIExpbmsgbmFtZSwgdGhlbiBsZXQgaWFu
YVRpbWVab25lIGJlIHRoZSBjb3JyZXNwb25kaW5nIFpvbmUgbmFtZSBhcyBzcGVjaWZpZWQgaW4g
dGhlIOKAnGJhY2t3YXJk4oCdIGZpbGUgb2YgdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLgog
Ci0gICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcihpYW5hVGltZVpvbmVMZW5ndGgpOwot
ICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVu
Z3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVa
b25lTGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBpYW5hVGltZVpvbmVMZW5ndGgsIG51bGxwdHIsICZz
dGF0dXMpOwotICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkg
ewotICAgICAgICAgICAgYnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKLSAgICAgICAgICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGlt
ZVpvbmVJRChpYW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxlbmd0aCwgYnVmZmVyLmRhdGEoKSwg
Y2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKLSAgICAgICAgfQorICAgICAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgaWFuYVRpbWVa
b25lLCBpYW5hVGltZVpvbmVMZW5ndGgsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgICAgIEFTU0VS
VChVX1NVQ0NFU1Moc3RhdHVzKSk7Ci0gICAgICAgIGNhbm9uaWNhbCA9IFN0cmluZyhidWZmZXIu
ZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgICAgICBjYW5vbmljYWwgPSBTdHJpbmcoYnVm
ZmVyKTsKICAgICB9IHdoaWxlIChjYW5vbmljYWwuaXNOdWxsKCkpOwogICAgIHVlbnVtX2Nsb3Nl
KHRpbWVab25lcyk7CiAKQEAgLTYzNiwxNCArNjE4LDggQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgU3RyaW5nIHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAg
ICAgU3RyaW5nVmlldyBza2VsZXRvblZpZXcoc2tlbGV0b24pOwotICAgIFZlY3RvcjxVQ2hhciwg
MzI+IHBhdHRlcm5CdWZmZXIoMzIpOwotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBh
dXRvIHBhdHRlcm5MZW5ndGggPSB1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucyhnZW5l
cmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3
Lmxlbmd0aCgpLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIu
ZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9H
cm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgICAgICBwYXR0ZXJuQnVmZmVyLmdyb3cocGF0dGVybkxlbmd0aCk7Ci0gICAgICAg
IHVkYXRwZ19nZXRCZXN0UGF0dGVybihnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuQnVmZmVyLmRhdGEo
KSwgcGF0dGVybkxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHBhdHRlcm5CdWZmZXI7CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVkYXRwZ19nZXRCZXN0UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IsIHNrZWxldG9uVmll
dy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFUUEdf
TUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIpOwogICAgIHVkYXRwZ19jbG9z
ZShnZW5lcmF0b3IpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0
ZVRpbWVGb3JtYXQiX3MpOwpAQCAtNjYyLDEyICs2MzgsMTEgQEAgdm9pZCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogCiAgICAgICAgIGJvb2wgaXNFc2NhcGVkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFz
SG91ciA9IGZhbHNlOwotICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBwYXR0ZXJuTGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIFVDaGFyIGMgPSBwYXR0ZXJuQnVmZmVyW2ldOworICAgICAg
ICBmb3IgKGF1dG8mIGMgOiBwYXR0ZXJuQnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoYyA9PSAn
XCcnKQogICAgICAgICAgICAgICAgIGlzRXNjYXBlZCA9ICFpc0VzY2FwZWQ7CiAgICAgICAgICAg
ICBlbHNlIGlmICghaXNFc2NhcGVkICYmIChjID09ICdoJyB8fCBjID09ICdIJyB8fCBjID09ICdr
JyB8fCBjID09ICdLJykpIHsKLSAgICAgICAgICAgICAgICBwYXR0ZXJuQnVmZmVyW2ldID0gaG91
cjsKKyAgICAgICAgICAgICAgICBjID0gaG91cjsKICAgICAgICAgICAgICAgICBoYXNIb3VyID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjc1LDcgKzY1MCw3IEBAIHZvaWQg
SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIG1faG91ckN5Y2xlID0gU3RyaW5nKCk7CiAg
ICAgfQogCi0gICAgU3RyaW5nVmlldyBwYXR0ZXJuKHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0
ZXJuTGVuZ3RoKTsKKyAgICBTdHJpbmdWaWV3IHBhdHRlcm4ocGF0dGVybkJ1ZmZlci5kYXRhKCks
IHBhdHRlcm5CdWZmZXIuc2l6ZSgpKTsKICAgICBzZXRGb3JtYXRzRnJvbVBhdHRlcm4ocGF0dGVy
bik7CiAKICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CkBAIC04OTQsMTggKzg2OSwxMiBAQCBK
U1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGRvdWJsZSB2YWx1ZSkgYwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUg
dmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXQoKSJfcyk7CiAKLSAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMy
PiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdWRhdF9mb3JtYXQobV9kYXRl
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgbnVsbHB0
ciwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykp
IHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3Jvdyhy
ZXN1bHRMZW5ndGgpOwotICAgICAgICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZh
bHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAg
IH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwg
dmFsdWUsIHJlc3VsdCwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBmb3JtYXQgZGF0ZSB2YWx1ZSJfcyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0s
IFN0cmluZyhyZXN1bHQpKTsKIH0KIAogc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmlu
ZyhVRGF0ZUZvcm1hdEZpZWxkIGZpZWxkKQpAQCAtOTg2LDE0ICs5NTUsOCBAQCBKU1ZhbHVlIElu
dGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdgogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVs
ZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0g
ICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMyKTsKLSAgICBhdXRvIHJlc3VsdExlbmd0aCA9
IHVkYXRfZm9ybWF0Rm9yRmllbGRzKG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5k
YXRhKCksIHJlc3VsdC5zaXplKCksIGZpZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5l
ZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAgICB1
ZGF0X2Zvcm1hdEZvckZpZWxkcyhtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0
YSgpLCByZXN1bHRMZW5ndGgsIGZpZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZl
Y3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWRhdF9mb3JtYXRGb3JGaWVsZHMsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUs
IHJlc3VsdCwgZmllbGRzLmdldCgpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBkYXRlIHZhbHVlIl9zKTsKIApAQCAtMTAwMSw5ICs5NjQsMTAgQEAgSlNWYWx1ZSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHYKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgYXV0byByZXN1bHRTdHJp
bmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBhdXRvIHJlc3Vs
dFN0cmluZyA9IFN0cmluZyhyZXN1bHQpOwogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwogCisgICAgaW50MzJfdCByZXN1bHRMZW5n
dGggPSByZXN1bHQuc2l6ZSgpOwogICAgIGludDMyX3QgcHJldmlvdXNFbmRJbmRleCA9IDA7CiAg
ICAgaW50MzJfdCBiZWdpbkluZGV4ID0gMDsKICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
aW5kZXggNWU3NDRkNWE3Y2E5ZjQwZTc1ZmU0YjM0NWJhZjBmOGJiYmMyZTU1NC4uZTZkODU4MDNh
MDAxMzVkZDI2YWY4ZmEzMGUwYTJmMjYzMmMzOTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTM0NywxOCArMzQ3LDEy
IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1
ZmZlcigzMik7Ci0gICAgYXV0byBsZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZShtX251bWJlckZv
cm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIG51bGxwdHIs
ICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7
Ci0gICAgICAgIGJ1ZmZlci5ncm93KGxlbmd0aCk7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKLSAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIHZh
bHVlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgIH0KKyAg
ICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9ybWF0LmdldCgp
LCB2YWx1ZSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJp
bmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJp
bmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtZm9ybWF0
bnVtYmVyCkBAIC0zNzUsMTggKzM2OSwxMiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZv
cm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFsdWUpCiAgICAg
QVNTRVJUKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJSSgpKTsKICAgICBhdXRv
KiByYXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcuY2hhcmFj
dGVyczgoKSk7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBW
ZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwotICAgIGF1dG8gbGVuZ3RoID0gdW51bV9mb3Jt
YXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmluZy5sZW5ndGgo
KSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAg
aWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgYnVmZmVy
Lmdyb3cobGVuZ3RoKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1
bnVtX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5n
Lmxlbmd0aCgpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAg
IH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1h
dC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVsbHB0cik7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKIAot
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwor
ICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCkBAIC01MzksMTcg
KzUyNywxMiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKLSAgICBWZWN0
b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQu
ZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAg
ICB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUs
IHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgZmllbGRJdHIuZ2V0KCksICZzdGF0dXMpOwot
ICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CisgICAgc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJl
ckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAKLSAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpOworICAg
IGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAKICAgICBKU0FycmF5KiBwYXJ0
cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwog
ICAgIGlmICghcGFydHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCmluZGV4IDRiNDZlYTk1ZmVlMjA4ZDNiZmQ1ZTA0M2Q4OGM3Y2UyYWI4NTU4ODguLmQz
NmY4NGMyNzI2MzliMzJjMjVhZjk3NzMzOWUyZmY0ZDI2NzQ2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNDksMjEgKzE0OSwxMyBAQCBT
dHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogCiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRJQ1VMb2NhbGVU
b0JDUDQ3TGFuZ3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxlSUQpCiB7Ci0gICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPGNoYXIsIDMyPiBidWZmZXIoMzIp
OwotICAgIGF1dG8gbGVuZ3RoID0gdWxvY190b0xhbmd1YWdlVGFnKGxvY2FsZUlELCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBmYWxzZSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9H
cm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgYnVmZmVyLmdyb3cobGVuZ3Ro
KTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1bG9jX3RvTGFuZ3Vh
Z2VUYWcobG9jYWxlSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGZhbHNlLCAmc3Rh
dHVzKTsKLSAgICB9Ci0gICAgaWYgKCFVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAvLyBU
aGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNo
YXJlZCBhY3Jvc3MgCi0gICAgICAgIC8vIEpTQyBleGVjdXRpb24gdGhyZWFkcy4gVGhpcyBtdXN0
IGJlIGltbW9ydGFsIHRvIG1ha2UgY29uY3VycmVudCByZWYvZGVyZWYKLSAgICAgICAgLy8gc2Fm
ZS4KLSAgICAgICAgcmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJ
bXBsKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpOwotICAgIH0KLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgVmVjdG9yPGNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY190b0xhbmd1YWdlVGFnLCBsb2NhbGVJRCwgYnVmZmVy
LCBmYWxzZSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgLy8gVGhpcyBpcyB1c2VkIHRvIHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxl
cyB0aGF0IG1heSBiZSBzaGFyZWQgYWNyb3NzIEpTQyBleGVjdXRpb24gdGhyZWFkcy4KKyAgICAv
LyBUaGlzIG11c3QgYmUgaW1tb3J0YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZl
LgorICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxB
dmFpbGFibGVMb2NhbGVzKCkKQEAgLTMzOCwxOCArMzMwLDEyIEBAIHN0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsaXplTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiAKICAgICBBU1NFUlQo
aW50ZXJtZWRpYXRlLmNvbnRhaW5zKCdcMCcpKTsKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICBWZWN0b3I8Y2hhciwgMzI+IHJlc3VsdCgzMik7Ci0gICAgYXV0byByZXN1bHRMZW5n
dGggPSB1bG9jX3RvTGFuZ3VhZ2VUYWcoaW50ZXJtZWRpYXRlLmRhdGEoKSwgcmVzdWx0LmRhdGEo
KSwgcmVzdWx0LnNpemUoKSwgZmFsc2UsICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0
aCk7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWxvY190b0xhbmd1
YWdlVGFnKGludGVybWVkaWF0ZS5kYXRhKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwg
ZmFsc2UsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8Y2hhciwgMzI+IHJlc3VsdDsKKyAg
ICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY190b0xhbmd1YWdlVGFn
LCBpbnRlcm1lZGlhdGUuZGF0YSgpLCByZXN1bHQsIGZhbHNlKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmco
cmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5k
YXRhKCksIHJlc3VsdC5zaXplKCkpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYWxlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5jcHAKaW5kZXggNmEyMDkwZGM0YjJhZGE0ZmFhNDhlYjJiM2JmY2ZhYzExN2Uw
MGZiMC4uODhhYWY3NmRiMzQ3YTA3MTdhNTljYTM1MjYzMzM5NmNlYjhjZTk1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5jcHAKQEAgLTI0NSwyMCArMjQ1LDE0IEBAIFN0cmluZyBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAK
ICAgICBhdXRvIGZvcm1hdFJlbGF0aXZlVGltZSA9IG1fbnVtZXJpYyA/IHVyZWxkYXRlZm10X2Zv
cm1hdE51bWVyaWMgOiB1cmVsZGF0ZWZtdF9mb3JtYXQ7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAg
IGF1dG8gcmVzdWx0TGVuZ3RoID0gZm9ybWF0UmVsYXRpdmVUaW1lKG1fcmVsYXRpdmVEYXRlVGlt
ZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3VsdC5kYXRhKCks
IHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1
ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAg
cmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgZm9ybWF0UmVsYXRpdmVUaW1lKG1f
cmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVlKCks
IHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IHJlc3VsdDsKKyAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbihmb3JtYXRSZWxhdGl2ZVRpbWUsIG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRl
ci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3VsdCk7CiAgICAgaWYgKFVOTElL
RUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zKTsKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBTdHJpbmcocmVzdWx0LmRh
dGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICByZXR1cm4gU3RyaW5nKHJlc3VsdCk7CiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lCkBAIC0yODgs
MTcgKzI4MiwxMiBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFy
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogCiAgICAgZG91YmxlIGFic1Zh
bHVlID0gc3RkOjphYnModmFsdWUpOwogCi0gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMy
KTsKLSAgICBhdXRvIG51bWJlckxlbmd0aCA9IHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVj
ZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAg
ICAgYnVmZmVyLmdyb3cobnVtYmVyTGVuZ3RoKTsKLSAgICAgICAgdW51bV9mb3JtYXREb3VibGVG
b3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBu
dW1iZXJMZW5ndGgsIGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9y
PFVDaGFyLCAzMj4gYnVmZmVyOworICAgIGF1dG8gbnVtYmVyTGVuZ3RoID0gY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1h
dC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlciwgaXRlcmF0b3IuZ2V0KCkpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOwogCi0gICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbnVtYmVyTGVuZ3RoKTsK
KyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IFN0cmluZyhidWZmZXIpOwogCiAgICAgSlNBcnJh
eSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMp
LCAwKTsKICAgICBpZiAoIXBhcnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMTNmY2ZkODNmMDFmYzUzMzQwMWNmNGZkZTBk
MWFmYmY1NTcxMGU5YS4uN2U0NTJmNzMyODA4YWI2NzljZTEyMzA1MWY3Yzk3NDE1ZWZlNDdkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCkBAIC0xNTU3LDEyICsxNTU3LDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxl
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGwKICAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBjb252ZXJ0Q2FzZSA9IFsmXSAoYXV0byYmLi4uIGFy
Z3MpIHsKLSAgICAgICAgaWYgKG1vZGUgPT0gQ2FzZUNvbnZlcnNpb25Nb2RlOjpMb3dlcikKLSAg
ICAgICAgICAgIHJldHVybiB1X3N0clRvTG93ZXIoc3RkOjpmb3J3YXJkPGRlY2x0eXBlKGFyZ3Mp
PihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiB1X3N0clRvVXBwZXIoc3RkOjpmb3J3YXJkPGRl
Y2x0eXBlKGFyZ3MpPihhcmdzKS4uLik7Ci0gICAgfTsKLQogICAgIC8vIDEuIExldCBPIGJlIFJl
cXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1ZSkuCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2VyY2libGUo
dGhpc1ZhbHVlKSkKQEAgLTE2MDksMTAgKzE2MDMsNiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
dG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bAogICAgIGlmIChsb2NhbGUuaXNOdWxsKCkpCiAgICAgICAgIGxvY2FsZSA9ICJ1bmQiX3M7CiAK
LSAgICBDU3RyaW5nIHV0ZjhMb2NhbGVCdWZmZXIgPSBsb2NhbGUudXRmOCgpOwotICAgIGNvbnN0
IFN0cmluZ1ZpZXcgdmlldyhzKTsKLSAgICBjb25zdCBpbnQzMl90IHZpZXdMZW5ndGggPSB2aWV3
Lmxlbmd0aCgpOwotCiAgICAgLy8gRGVsZWdhdGUgdGhlIGZvbGxvd2luZyBzdGVwcyB0byBpY3Ug
dV9zdHJUb0xvd2VyIG9yIHVfc3RyVG9VcHBlci4KICAgICAvLyAxMy4gTGV0IGNwTGlzdCBiZSBh
IExpc3QgY29udGFpbmluZyBpbiBvcmRlciB0aGUgY29kZSBwb2ludHMgb2YgUyBhcyBkZWZpbmVk
IGluIEVTMjAxNSwgNi4xLjQsIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBlbGVtZW50IG9mIFMuCiAg
ICAgLy8gMTQuIEZvciBlYWNoIGNvZGUgcG9pbnQgYyBpbiBjcExpc3QsIGlmIHRoZSBVbmljb2Rl
IENoYXJhY3RlciBEYXRhYmFzZSBwcm92aWRlcyBhIGxvd2VyKC91cHBlcikgY2FzZSBlcXVpdmFs
ZW50IG9mIGMgdGhhdCBpcyBlaXRoZXIgbGFuZ3VhZ2UgaW5zZW5zaXRpdmUgb3IgZm9yIHRoZSBs
YW5ndWFnZSBsb2NhbGUsIHRoZW4gcmVwbGFjZSBjIGluIGNwTGlzdCB3aXRoIHRoYXQvdGhvc2Ug
ZXF1aXZhbGVudCBjb2RlIHBvaW50KHMpLgpAQCAtMTYyMSwyNSArMTYxMSwxNCBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbAogICAgIC8vIDE3LiBMZXQgTCBiZSBhIFN0cmluZyB3aG9zZSBlbGVt
ZW50cyBhcmUsIGluIG9yZGVyLCB0aGUgZWxlbWVudHMgb2YgY3VMaXN0LgogCiAgICAgLy8gTW9z
dCBzdHJpbmdzIGxvd2VyL3VwcGVyIGNhc2Ugd2lsbCBiZSB0aGUgc2FtZSBzaXplIGFzIG9yaWdp
bmFsLCBzbyB0cnkgdGhhdCBmaXJzdC4KLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VS
Uk9SOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHZpZXdMZW5ndGgpOwotICAgIFN0cmluZyBs
b3dlcjsKLSAgICBjb25zdCBpbnQzMl90IHJlc3VsdExlbmd0aCA9IGNvbnZlcnRDYXNlKGJ1ZmZl
ci5kYXRhKCksIHZpZXdMZW5ndGgsIHZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHZpZXdM
ZW5ndGgsIHV0ZjhMb2NhbGVCdWZmZXIuZGF0YSgpLCAmZXJyb3IpOwotICAgIGlmIChVX1NVQ0NF
U1MoZXJyb3IpKQotICAgICAgICBsb3dlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCByZXN1bHRM
ZW5ndGgpOwotICAgIGVsc2UgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKGVycm9yKSkg
ewotICAgICAgICAvLyBDb252ZXJ0ZWQgY2FzZSBuZWVkcyBtb3JlIHNwYWNlIHRoYW4gb3JpZ2lu
YWwuIFRyeSBhZ2Fpbi4KLSAgICAgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsK
LSAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgY29u
dmVydENhc2UoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hh
cmFjdGVycygpLCB2aWV3TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsK
LSAgICAgICAgaWYgKFVfRkFJTFVSRShlcnJvcikpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB1X2Vycm9yTmFtZShlcnJvcikpOwotICAg
ICAgICBsb3dlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwotICAgIH0g
ZWxzZQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHMubGVuZ3Ro
KCkpOworICAgIGF1dG8gY29udmVydENhc2UgPSBtb2RlID09IENhc2VDb252ZXJzaW9uTW9kZTo6
TG93ZXIgPyB1X3N0clRvTG93ZXIgOiB1X3N0clRvVXBwZXI7CisgICAgYXV0byBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oY29udmVydENhc2UsIGJ1ZmZlciwgU3RyaW5nVmll
dyB7IHMgfS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSwgbG9jYWxlLnV0Zjgo
KS5kYXRhKCkpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdV9lcnJvck5hbWUoc3RhdHVzKSk7
CiAKICAgICAvLyAxOC4gUmV0dXJuIEwuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyKSkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xv
Y2FsZUxvd2VyQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0
b3JQb29sSUNVLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0xpbmVCcmVha0l0ZXJhdG9yUG9vbElD
VS5oCmluZGV4IGFlZjYyYmVhYThlN2VhYmY3OWE5MmNkYjA2ZDNjZDNkNGI3MjgyNDMuLjFlYzRm
OGRhYzA4NDlkNzE0YmM2YWJhYzM3OTA1ZDhiNDg2MGJiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvTGluZUJyZWFrSXRlcmF0b3JQb29sSUNVLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9MaW5lQnJlYWtJdGVyYXRvclBvb2xJQ1UuaApAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEF0b21TdHJpbmcgbWFrZUxvY2FsZVdpdGhCcmVha0tleXdvcmQoY29u
c3QgQXRvbVN0cmluZyYgbG9jYWxlLCBMaW5lQnJlYWtJdGVyYXRvck1vZGUgbW9kZSkKICAgICB7
CiAgICAgICAgIC8vIFRoZSB1bG9jIGZ1bmN0aW9ucyBtb2RlbCBsb2NhbGVzIGFzIGNoYXIqLCBz
byB3ZSBoYXZlIHRvIGRvd25jb252ZXJ0IG91ciBBdG9tU3RyaW5nLgorICAgICAgICAvLyBGSVhN
RTogTm90IHN1cmUgVVRGLTggaXMgcmlnaHQgaGVyZS4gU2VlbXMgbGlrZWx5IHRoaXMgaXMgZ3Vh
cmFudGVlZCB0byBiZSBBU0NJSS4KICAgICAgICAgYXV0byB1dGY4TG9jYWxlID0gbG9jYWxlLnN0
cmluZygpLnV0ZjgoKTsKICAgICAgICAgaWYgKCF1dGY4TG9jYWxlLmxlbmd0aCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGxvY2FsZTsKQEAgLTcxLDIwICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwotICAgICAgICBpbnQzMl90IGxlbmd0aE5lZWRlZCA9IHVsb2Nfc2V0S2V5d29y
ZFZhbHVlKCJsYiIsIGtleXdvcmRWYWx1ZSwgc2NyYXRjaEJ1ZmZlci5kYXRhKCksIHNjcmF0Y2hC
dWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQot
ICAgICAgICAgICAgcmV0dXJuIEF0b21TdHJpbmc6OmZyb21VVEY4KHNjcmF0Y2hCdWZmZXIuZGF0
YSgpLCBsZW5ndGhOZWVkZWQpOwotICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZm
ZXIoc3RhdHVzKSkgewotICAgICAgICAgICAgc2NyYXRjaEJ1ZmZlci5ncm93KGxlbmd0aE5lZWRl
ZCArIDEpOwotICAgICAgICAgICAgbWVtc2V0KHNjcmF0Y2hCdWZmZXIuZGF0YSgpICsgdXRmOExv
Y2FsZS5sZW5ndGgoKSwgMCwgc2NyYXRjaEJ1ZmZlci5zaXplKCkgLSB1dGY4TG9jYWxlLmxlbmd0
aCgpKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIGlu
dDMyX3QgbGVuZ3RoTmVlZGVkMiA9IHVsb2Nfc2V0S2V5d29yZFZhbHVlKCJsYiIsIGtleXdvcmRW
YWx1ZSwgc2NyYXRjaEJ1ZmZlci5kYXRhKCksIHNjcmF0Y2hCdWZmZXIuc2l6ZSgpLCAmc3RhdHVz
KTsKLSAgICAgICAgICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykgfHwgbGVuZ3RoTmVlZGVkICE9
IGxlbmd0aE5lZWRlZDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKLSAgICAgICAg
ICAgIHJldHVybiBBdG9tU3RyaW5nOjpmcm9tVVRGOChzY3JhdGNoQnVmZmVyLmRhdGEoKSwgbGVu
Z3RoTmVlZGVkKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbG9jYWxlOworICAgICAgICBh
dXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bG9jX3NldEtleXdvcmRW
YWx1ZSwgImxiIiwga2V5d29yZFZhbHVlLCBzY3JhdGNoQnVmZmVyKTsKKyAgICAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTsKKyAgICAgICAgLy8g
RklYTUU6IE5vdCBzdXJlIFVURi04IGlzIHJpZ2h0IGhlcmUuIFNlZW1zIGxpa2VseSB0aGlzIGlz
IGd1YXJhbnRlZWQgdG8gYmUgQVNDSUkuCisgICAgICAgIHJldHVybiBBdG9tU3RyaW5nOjpmcm9t
VVRGOChzY3JhdGNoQnVmZmVyLmRhdGEoKSwgc2NyYXRjaEJ1ZmZlci5zaXplKCkpOwogICAgIH0K
IAogICAgIFVCcmVha0l0ZXJhdG9yKiB0YWtlKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsZSwgTGlu
ZUJyZWFrSXRlcmF0b3JNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmlj
b2RlL2ljdS9JQ1VIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxw
ZXJzLmgKaW5kZXggYjk3OWFkNmE3NThiMzM1MWQxMWRiNDZmYTE0ZjY4Y2Y4NDVmZjhmZi4uZmE2
ZjdlN2Q1NDgxZGIwYzI1OWE3M2JhM2QyZTE0YzBmMmMzMDFkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Vu
aWNvZGUvaWN1L0lDVUhlbHBlcnMuaApAQCAtMjUsMjEgKzI1LDg4IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotaW5saW5lIGJvb2wgbmVl
ZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKFVFcnJvckNvZGUgZXJyb3JDb2RlKQorY29uc3RleHBy
IGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoVUVycm9yQ29kZSk7Citjb25zdGV4cHIg
Ym9vbCBuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmcoVUVycm9yQ29kZSk7CisKKy8vIFVzZSB0
aGlzIHRvIGNhbGwgYSBmdW5jdGlvbiBmcm9tIElDVSB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHBy
b3BlcnRpZXM6CisvLyAtIFRha2VzIGEgYnVmZmVyIHBvaW50ZXIgYW5kIGNhcGFjaXR5LgorLy8g
LSBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBuZWVkZWQuCisvLyAtIFRha2VzIGEg
VUVycm9yQ29kZSBwb2ludGVyIGFzIGl0cyBsYXN0IGFyZ3VtZW50LgorLy8gUGFzcyB0aGUgYXJn
dW1lbnRzLCBidXQgcGFzcyBhIFZlY3RvciBpbiBwbGFjZSBvZiB0aGUgYnVmZmVyIHBvaW50ZXIg
YW5kIGNhcGFjaXR5LCBhbmQgZG9uJ3QgcGFzcyBhIFVFcnJvckNvZGUqLgorLy8gVGhpcyB3aWxs
IGNhbGwgdGhlIGZ1bmN0aW9uLCBvbmNlIG9yIHR3aWNlIGFzIG5lZWRlZCwgcmVzaXppbmcgdGhl
IGJ1ZmZlciBhcyBuZWVkZWQuCisvLworLy8gRXhhbXBsZToKKy8vCisvLyAgICBWZWN0b3I8VUNo
YXIsIDMyPiBidWZmZXI7CisvLyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1Y2FsX2dldERlZmF1bHRUaW1lWm9uZSwgYnVmZmVyKTsKKy8vCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVF
cnJvckNvZGUgY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKEZ1bmN0aW9uVHlwZSwgQXJndW1l
bnRUeXBlcy4uLik7CisKKy8vIEltcGxlbWVudGF0aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGRlY2xh
cmVkIGFib3ZlLgorCitjb25zdGV4cHIgYm9vbCBuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihV
RXJyb3JDb2RlIGVycm9yQ29kZSkKIHsKLSAgICByZXR1cm4gZXJyb3JDb2RlID09IFVfQlVGRkVS
X09WRVJGTE9XX0VSUk9SIHx8IGVycm9yQ29kZSA9PSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9X
QVJOSU5HOworICAgIHJldHVybiBlcnJvckNvZGUgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I7
CiB9CiAKLWlubGluZSBib29sIG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKFVFcnJvckNvZGUg
ZXJyb3JDb2RlKQorY29uc3RleHByIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKFVF
cnJvckNvZGUgZXJyb3JDb2RlKQogewotICAgIHJldHVybiBlcnJvckNvZGUgPT0gVV9CVUZGRVJf
T1ZFUkZMT1dfRVJST1I7CisgICAgcmV0dXJuIG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKGVy
cm9yQ29kZSkgfHwgZXJyb3JDb2RlID09IFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkc7
Cit9CisKK25hbWVzcGFjZSBDYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24geworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IC4uLkFyZ3VtZW50VHlwZXM+IGF1dG8mIGZpbmRWZWN0b3IoVmVjdG9yPENoYXJhY3RlclR5cGUs
IGlubGluZUNhcGFjaXR5PiYgYnVmZmVyLCBBcmd1bWVudFR5cGVzJiYuLi4pCit7CisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RBcmd1bWVudFR5cGUsIHR5
cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IGF1dG8mIGZpbmRWZWN0b3IoRmlyc3RBcmd1bWVudFR5
cGUmJiwgQXJndW1lbnRUeXBlcyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gZmluZFZl
Y3RvcihzdGQ6OmZvcndhcmQ8QXJndW1lbnRUeXBlcz4oYXJndW1lbnRzKS4uLik7Cit9CisKK2Nv
bnN0ZXhwciBzdGQ6OnR1cGxlPD4gYXJndW1lbnRUdXBsZSgpIHsgcmV0dXJuIHsgfTsgfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdEFyZ3VtZW50VHlwZSwgdHlwZW5hbWUgLi4uT3RoZXJBcmd1
bWVudFR5cGVzPiBhdXRvIGFyZ3VtZW50VHVwbGUoRmlyc3RBcmd1bWVudFR5cGUmJiwgT3RoZXJB
cmd1bWVudFR5cGVzJiYuLi4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIC4uLk90aGVyQXJndW1lbnRUeXBlcz4gYXV0
byBhcmd1bWVudFR1cGxlKFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eT4mIGJ1
ZmZlciwgT3RoZXJBcmd1bWVudFR5cGVzJiYuLi4gb3RoZXJBcmd1bWVudHMpCit7CisgICAgcmV0
dXJuIHR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSksIGFyZ3VtZW50VHVwbGUoc3RkOjpmb3J3YXJkPE90aGVyQXJndW1lbnRUeXBlcz4ob3RoZXJB
cmd1bWVudHMpLi4uKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0QXJndW1lbnRUeXBl
LCB0eXBlbmFtZSAuLi5PdGhlckFyZ3VtZW50VHlwZXM+IGF1dG8gYXJndW1lbnRUdXBsZShGaXJz
dEFyZ3VtZW50VHlwZSYmIGZpcnN0QXJndW1lbnQsIE90aGVyQXJndW1lbnRUeXBlcyYmLi4uIG90
aGVyQXJndW1lbnRzKQoreworICAgIHJldHVybiB0dXBsZV9jYXQoc3RkOjptYWtlX3R1cGxlKHN0
ZDo6Zm9yd2FyZDxGaXJzdEFyZ3VtZW50VHlwZT4oZmlyc3RBcmd1bWVudCkpLCBhcmd1bWVudFR1
cGxlKHN0ZDo6Zm9yd2FyZDxPdGhlckFyZ3VtZW50VHlwZXM+KG90aGVyQXJndW1lbnRzKS4uLikp
OworfQorCit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4u
QXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oRnVu
Y3Rpb25UeXBlIGZ1bmN0aW9uLCBBcmd1bWVudFR5cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICB1
c2luZyBuYW1lc3BhY2UgQ2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOworICAgIGF1dG8mIGJ1
ZmZlciA9IGZpbmRWZWN0b3IoYXJndW1lbnRzLi4uKTsKKyAgICBidWZmZXIuZ3JvdyhidWZmZXIu
Y2FwYWNpdHkoKSk7CisgICAgYXV0byBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBy
ZXN1bHRMZW5ndGggPSBhcHBseShmdW5jdGlvbiwgYXJndW1lbnRUdXBsZShhcmd1bWVudHMuLi4s
ICZzdGF0dXMpKTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIGJ1ZmZlci5z
aHJpbmsocmVzdWx0TGVuZ3RoKTsKKyAgICBlbHNlIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1
ZmZlcihzdGF0dXMpKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
YnVmZmVyLmdyb3cocmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgYXBwbHkoZnVuY3Rpb24sIGFyZ3Vt
ZW50VHVwbGUoYXJndW1lbnRzLi4uLCAmc3RhdHVzKSk7CisgICAgfQorICAgIHJldHVybiBzdGF0
dXM7CiB9CiAKIH0KIAordXNpbmcgV1RGOjpjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb247CiB1
c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZzsKIHVzaW5nIFdURjo6bmVlZHNU
b0dyb3dUb1Byb2R1Y2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAKaW5kZXggZjllZDViYmIzYjdiNjkyZDU3Y2RhOTQzZmYwNmYzMmFiYjYzNDY2Yy4uNWJkY2U4
OWNhNjU4MTFhZTA1MDlmNGEwZWFjYmViM2M4MzA5YzNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTgzMSwyMSArMTgzMSwxMiBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgY29udGFpbnNLYW5hTGV0dGVycyhjb25zdCBTdHJpbmcmIHBhdHRlcm4pCiBzdGF0aWMg
dm9pZCBub3JtYWxpemVDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICBjb25zdCBVTm9ybWFsaXplcjIqIG5vcm1hbGl6ZXIgPSB1
bm9ybTJfZ2V0TkZDSW5zdGFuY2UoJnN0YXR1cyk7CisgICAgYXV0byogbm9ybWFsaXplciA9IHVu
b3JtMl9nZXRORkNJbnN0YW5jZSgmc3RhdHVzKTsKICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1
cykpOwogCi0gICAgYnVmZmVyLnJlc2l6ZShsZW5ndGgpOworICAgIGJ1ZmZlci5yZXNlcnZlQ2Fw
YWNpdHkobGVuZ3RoKTsKIAotICAgIGF1dG8gbm9ybWFsaXplZExlbmd0aCA9IHVub3JtMl9ub3Jt
YWxpemUobm9ybWFsaXplciwgY2hhcmFjdGVycywgbGVuZ3RoLCBidWZmZXIuZGF0YSgpLCBsZW5n
dGgsICZzdGF0dXMpOwotICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSB8fCBuZWVkc1RvR3Jv
d1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKTsKLQotICAgIGJ1ZmZlci5yZXNpemUobm9ybWFsaXpl
ZExlbmd0aCk7Ci0KLSAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICB1bm9ybTJfbm9ybWFsaXplKG5vcm1h
bGl6ZXIsIGNoYXJhY3RlcnMsIGxlbmd0aCwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVz
KTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW5vcm0yX25vcm1h
bGl6ZSwgbm9ybWFsaXplciwgY2hhcmFjdGVycywgbGVuZ3RoLCBidWZmZXIpOwogICAgIEFTU0VS
VChVX1NVQ0NFU1Moc3RhdHVzKSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398617</attachid>
            <date>2020-05-06 08:08:14 -0700</date>
            <delta_ts>2020-05-06 09:13:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211499-20200506080812.patch</filename>
            <type>text/plain</type>
            <size>32674</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NjY4Yzc2NTQzNjE3MzQ0ZjU0ODVmZTYwZWM5MWM0ZDNhZjM2ZGQ0Li44MzNkNjQ0YmI3Yjg0MTAw
MzZhNzE2ODBiY2UxZGQzM2Y2YWQxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0
aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFVz
ZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24uCisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVRpbWVab25lTmFtZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRvQ2Fu
b25pY2FsKTogRGl0dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6Omxhbmd1YWdlKTogRGl0
dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OnNjcmlwdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsTG9jYWxlOjpyZWdpb24pOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Omxhbmd1YWdlVGFnRm9yTG9jYWxlSUQpOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0
b0xvY2FsZUNhc2UpOiBEaXR0by4KKwogMjAyMC0wNS0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5M
b2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggN2RhYTFhYWQ0ZDM1OGYwYjI0OGIwZGU3Nzg4ZGQ1ZTk0MzAyN2YzMS4uMTFi
ZDBjYTcwZGZlNThlMDZhODM2MDVlMGI0ZDU5YmYwMTMyOTM0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0aGF0IG1heSBu
ZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaXJzdCBjdXQgdmVyc2lv
biBpcyByZWFkeSB0byBiZSB1c2VkIGluIG1vc3QsIGJ1dCBub3QgYWxsLCBvZiB0aGUgcGxhY2Vz
IHdlIHVzZSB0aGUKKyAgICAgICAgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIgZnVuY3Rpb24u
IFRoZSBwbGFjZXMgaXQgaXMgbm90IHJpZ2h0IGZvciB5ZXQgYXJlIG9uZXMgdGhhdCBoYXZlCisg
ICAgICAgIHNwZWNpYSBjb25zaWRlcmF0aW9ucyBiZWNhdXNlIG9mIG51bGwgY2hhcmFjdGVyIHRl
cm1pbmF0b3Jpb24sIG9yIGRlc3RpbmF0aW9ucyB0aGF0IGFyZQorICAgICAgICBub3QgYSBWZWN0
b3IuIExhdGVyIHdlIGNhbiByZWZpbmUgdGhhdCBmdXJ0aGVyLCBpZiB3ZSBsaWtlLCBhbmQgcG9z
c2libHkgdXNlIHNvbWV0aGluZworICAgICAgICBzaW1pbGFyIGluIGNhbGwgc2l0ZXMgdGhhdCB1
c2UgbmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nIGFzIHdlbGwuCisKKyAgICAgICAgKiB3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oOgorICAgICAgICAoV1RGOjpuZWVkc1RvR3Jvd1RvUHJv
ZHVjZUJ1ZmZlcik6IENoYW5nZWQgdG8gY29uc3RleHByLCBzaW5jZSB3ZSBjYW4uCisgICAgICAg
IChXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV1RG
OjpDYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb246OmZpbmRWZWN0b3IpOiBBZGRlZC4gSW1wbGVt
ZW50YXRpb24gZGV0YWlsCisgICAgICAgIG9mIGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbi4K
KyAgICAgICAgKFdURjo6Q2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOjphcmd1bWVudFR1cGxl
KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbik6IEFk
ZGVkLgorCiAyMDIwLTA1LTA1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgSEFWRShBVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxZjhmNjA4YTdkYWMxZGY4NjUxZWEwYjU2MTFmMmI4MzkwYWEyZDA4Li4zNTVl
MDcyNTRiMzQ0MmViOGEwMzg3OThlMjg2YWU4ODJmZTJlNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjAtMDUtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1ha2UgYSBoZWxwZXIgZm9yIHRoZSBwYXR0ZXJuIG9mIElDVSBmdW5jdGlvbnMgdGhh
dCBtYXkgbmVlZCB0byBiZSBjYWxsZWQgdHdpY2UgdG8gcG9wdWxhdGUgYSBidWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTQ5OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplQ2hhcmFjdGVycyk6IFVz
ZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24uCisKIDIwMjAtMDUtMDYgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luIHNob3VsZCBzcGVjaWFsIGNhc2UgdGhlIHRhYmxl
IGJveApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGlt
ZUZvcm1hdC5jcHAKaW5kZXggNzQ0OTUyZjIwOGUxMWRjNTI5NDg0ZDIxODI2YTQ0MjNiNWM0MGVk
Yi4uNjg2YmU3Yjk5NDkyYTdhM2U0NDg0YmY4ODNmN2UxNzNiZDFmN2ViZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBA
IC0xMDUsMjcgKzEwNSwxNSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVVRDRXF1aXZh
bGVudChTdHJpbmdWaWV3IHRpbWVab25lKQogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1kZWZhdWx0dGltZXpvbmUKIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFRpbWVab25lKCkKIHsKLSAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBTdHJpbmcgY2Fub25pY2Fs
OwogCi0gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBhdXRvIGJ1ZmZlckxl
bmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCksICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMp
KSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYnVmZmVyLmdyb3co
YnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgdWNhbF9nZXREZWZhdWx0VGltZVpvbmUoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyTGVuZ3RoLCAmc3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gYnVmZmVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
KHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lLCBidWZmZXIpOwogICAgIGlmIChVX1NVQ0NFU1Moc3Rh
dHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFZlY3RvcjxV
Q2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcigzMik7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVu
Z3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxl
bmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLnNpemUoKSwgbnVs
bHB0ciwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihz
dGF0dXMpKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgICAg
ICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOwotICAgICAgICAgICAgdWNh
bF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgY2Fu
b25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsK
LSAgICAgICAgfQorICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZmZXI7Cisg
ICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9u
aWNhbFRpbWVab25lSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9uaWNhbEJ1
ZmZlciwgbnVsbHB0cik7CiAgICAgICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkKLSAgICAgICAg
ICAgIGNhbm9uaWNhbCA9IFN0cmluZyhjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxM
ZW5ndGgpOworICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNhbEJ1ZmZlcik7
CiAgICAgfQogCiAgICAgaWYgKGNhbm9uaWNhbC5pc051bGwoKSB8fCBpc1VUQ0VxdWl2YWxlbnQo
Y2Fub25pY2FsKSkKQEAgLTE0Niw3ICsxMzQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6
ZVRpbWVab25lTmFtZShjb25zdCBTdHJpbmcmIHRpbWVab25lTmFtZSkKICAgICBkbyB7CiAgICAg
ICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBpYW5hVGltZVpvbmVM
ZW5ndGg7Ci0gICAgICAgIC8vIFRpbWUgem9uZSBuYW1lcyBhcmUgcmVzcHJlc2VudGVkIGFzIFVD
aGFyW10gaW4gYWxsIHJlbGF0ZWQgSUNVIGFwaXMuCisgICAgICAgIC8vIFRpbWUgem9uZSBuYW1l
cyBhcmUgcmVwcmVzZW50ZWQgYXMgVUNoYXJbXSBpbiBhbGwgcmVsYXRlZCBJQ1UgQVBJcy4KICAg
ICAgICAgY29uc3QgVUNoYXIqIGlhbmFUaW1lWm9uZSA9IHVlbnVtX3VuZXh0KHRpbWVab25lcywg
JmlhbmFUaW1lWm9uZUxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Mo
c3RhdHVzKSk7CiAKQEAgLTE2MywxNiArMTUxLDEwIEBAIHN0YXRpYyBTdHJpbmcgY2Fub25pY2Fs
aXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAgICAgICAvLyAx
LiBMZXQgaWFuYVRpbWVab25lIGJlIHRoZSBab25lIG9yIExpbmsgbmFtZSBvZiB0aGUgSUFOQSBU
aW1lIFpvbmUgRGF0YWJhc2Ugc3VjaCB0aGF0IHRpbWVab25lLCBjb252ZXJ0ZWQgdG8gdXBwZXIg
Y2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLCBpcyBlcXVhbCB0byBpYW5hVGltZVpvbmUsIGNvbnZl
cnRlZCB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCiAgICAgICAgIC8vIDIuIElm
IGlhbmFUaW1lWm9uZSBpcyBhIExpbmsgbmFtZSwgdGhlbiBsZXQgaWFuYVRpbWVab25lIGJlIHRo
ZSBjb3JyZXNwb25kaW5nIFpvbmUgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIOKAnGJhY2t3YXJk
4oCdIGZpbGUgb2YgdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLgogCi0gICAgICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcihpYW5hVGltZVpvbmVMZW5ndGgpOwotICAgICAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNhbF9nZXRD
YW5vbmljYWxUaW1lWm9uZUlEKGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZm
ZXIuZGF0YSgpLCBpYW5hVGltZVpvbmVMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgICAg
ICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICAgICAg
YnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKLSAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChpYW5hVGlt
ZVpvbmUsIGlhbmFUaW1lWm9uZUxlbmd0aCwgYnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3Ro
LCBudWxscHRyLCAmc3RhdHVzKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoVV9TVUNDRVNT
KHN0YXR1cykpOwotICAgICAgICBjYW5vbmljYWwgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgY2Fu
b25pY2FsTGVuZ3RoKTsKKyAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgICAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldENhbm9u
aWNhbFRpbWVab25lSUQsIGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZmZXIs
IG51bGxwdHIpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1
cykpOworICAgICAgICBjYW5vbmljYWwgPSBTdHJpbmcoYnVmZmVyKTsKICAgICB9IHdoaWxlIChj
YW5vbmljYWwuaXNOdWxsKCkpOwogICAgIHVlbnVtX2Nsb3NlKHRpbWVab25lcyk7CiAKQEAgLTYz
NiwxNCArNjE4LDggQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGlt
ZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgU3RyaW5nIHNrZWxl
dG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nVmlldyBza2VsZXRv
blZpZXcoc2tlbGV0b24pOwotICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5CdWZmZXIoMzIp
OwotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIHBhdHRlcm5MZW5ndGggPSB1
ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucyhnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFUUEdfTUFU
Q0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVy
LnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0
YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBwYXR0ZXJu
QnVmZmVyLmdyb3cocGF0dGVybkxlbmd0aCk7Ci0gICAgICAgIHVkYXRwZ19nZXRCZXN0UGF0dGVy
bihnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0
b25WaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkxlbmd0aCwgJnN0
YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5CdWZmZXI7CisgICAg
c3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRCZXN0UGF0dGVy
bldpdGhPcHRpb25zLCBnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5H
VEgsIHBhdHRlcm5CdWZmZXIpOwogICAgIHVkYXRwZ19jbG9zZShnZW5lcmF0b3IpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3MpOwpAQCAt
NjYyLDEyICs2MzgsMTEgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAgIGJvb2wg
aXNFc2NhcGVkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzSG91ciA9IGZhbHNlOwotICAgICAg
ICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBwYXR0ZXJuTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IFVDaGFyIGMgPSBwYXR0ZXJuQnVmZmVyW2ldOworICAgICAgICBmb3IgKGF1dG8mIGMgOiBwYXR0
ZXJuQnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoYyA9PSAnXCcnKQogICAgICAgICAgICAgICAg
IGlzRXNjYXBlZCA9ICFpc0VzY2FwZWQ7CiAgICAgICAgICAgICBlbHNlIGlmICghaXNFc2NhcGVk
ICYmIChjID09ICdoJyB8fCBjID09ICdIJyB8fCBjID09ICdrJyB8fCBjID09ICdLJykpIHsKLSAg
ICAgICAgICAgICAgICBwYXR0ZXJuQnVmZmVyW2ldID0gaG91cjsKKyAgICAgICAgICAgICAgICBj
ID0gaG91cjsKICAgICAgICAgICAgICAgICBoYXNIb3VyID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtNjc1LDcgKzY1MCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpp
bml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICAgICAgICAgIG1faG91ckN5Y2xlID0gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgU3RyaW5nVmll
dyBwYXR0ZXJuKHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuTGVuZ3RoKTsKKyAgICBTdHJp
bmdWaWV3IHBhdHRlcm4ocGF0dGVybkJ1ZmZlci5kYXRhKCksIHBhdHRlcm5CdWZmZXIuc2l6ZSgp
KTsKICAgICBzZXRGb3JtYXRzRnJvbVBhdHRlcm4ocGF0dGVybik7CiAKICAgICBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CkBAIC04OTQsMTggKzg2OSwxMiBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZv
cm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkg
YwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBp
biBEYXRlVGltZUZvcm1hdCBmb3JtYXQoKSJfcyk7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1
dG8gcmVzdWx0TGVuZ3RoID0gdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwg
cmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAg
ICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgbnVsbHB0
cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSJf
cyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1
bHRMZW5ndGgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQpKTsKIH0K
IAogc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZpZWxkIGZp
ZWxkKQpAQCAtOTg2LDE0ICs5NTUsOCBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9y
bWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJf
cyk7CiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4g
cmVzdWx0KDMyKTsKLSAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVkYXRfZm9ybWF0Rm9yRmllbGRz
KG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCks
IGZpZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVm
ZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBy
ZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAgICB1ZGF0X2Zvcm1hdEZvckZpZWxkcyht
X2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIGZp
ZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3Vs
dDsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdF9mb3JtYXRG
b3JGaWVsZHMsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRzLmdldCgp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9z
KTsKIApAQCAtMTAwMSw5ICs5NjQsMTAgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZv
cm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICBp
ZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOwogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRh
dGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1
bHQpOwogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxp
dGVyYWwiX3MpOwogCisgICAgaW50MzJfdCByZXN1bHRMZW5ndGggPSByZXN1bHQuc2l6ZSgpOwog
ICAgIGludDMyX3QgcHJldmlvdXNFbmRJbmRleCA9IDA7CiAgICAgaW50MzJfdCBiZWdpbkluZGV4
ID0gMDsKICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggYzI2NDhiZGQxZWZiNGJiYzM1M2IzNmNlMTc0
ZGFmMjQ5YmZhNjEwNC4uOTEyZjRiNTYyNjAwYmZjMDhlOTE0NTY0YTc5ODRlZmRmMmRjNmExZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTkw
LDE4ICs5MCwxMiBAQCBDU3RyaW5nIExvY2FsZUlEQnVpbGRlcjo6dG9DYW5vbmljYWwoKQogewog
ICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkpOwogCi0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8g
cmVzdWx0TGVuZ3RoID0gdWxvY19jYW5vbmljYWxpemUobV9idWZmZXIuZGF0YSgpLCByZXN1bHQu
ZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1By
b2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgp
OwotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVsb2NfY2Fub25pY2Fs
aXplKG1fYnVmZmVyLmRhdGEoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCAmc3RhdHVz
KTsKLSAgICB9CisgICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19jYW5vbmljYWxpemUsIG1fYnVmZmVy
LmRhdGEoKSwgcmVzdWx0KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiBDU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gQ1N0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1
bHRMZW5ndGgpOworICAgIHJldHVybiBDU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXpl
KCkpOwogfQogCiAvLyBCZWNhdXNlIElDVSdzIEMgQVBJIGRvZXNuJ3QgaGF2ZSBzZXRbTGFuZ3Vh
Z2V8U2NyaXB0fFJlZ2lvbl0gZnVuY3Rpb25zLi4uCkBAIC0zODYsMTcgKzM4MCwxMCBAQCBjb25z
dCBTdHJpbmcmIEludGxMb2NhbGU6OmJhc2VOYW1lKCkKIGNvbnN0IFN0cmluZyYgSW50bExvY2Fs
ZTo6bGFuZ3VhZ2UoKQogewogICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKSB7Ci0gICAgICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBWZWN0b3I8Y2hhciwg
OD4gYnVmZmVyKDgpOwotICAgICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfZ2V0TGFuZ3Vh
Z2UobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0
dXMpOwotICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewot
ICAgICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVsb2NfZ2V0TGFuZ3VhZ2UobV9sb2NhbGVJ
RC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgICAgICBtX2xhbmd1
YWdlID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgICAgIFZlY3Rv
cjxjaGFyLCA4PiBidWZmZXI7CisgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVsb2NfZ2V0TGFuZ3VhZ2UsIG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIp
OworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykpOworICAg
ICAgICBtX2xhbmd1YWdlID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwog
ICAgIH0KICAgICByZXR1cm4gbV9sYW5ndWFnZTsKIH0KQEAgLTQwNSwxNyArMzkyLDEwIEBAIGNv
bnN0IFN0cmluZyYgSW50bExvY2FsZTo6bGFuZ3VhZ2UoKQogY29uc3QgU3RyaW5nJiBJbnRsTG9j
YWxlOjpzY3JpcHQoKQogewogICAgIGlmIChtX3NjcmlwdC5pc051bGwoKSkgewotICAgICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVmVjdG9yPGNoYXIsIDQ+
IGJ1ZmZlcig0KTsKLSAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldFNjcmlwdCht
X2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7
Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAg
ICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgdWxvY19nZXRTY3JpcHQobV9sb2NhbGVJRC5kYXRh
KCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgICAgICBtX3NjcmlwdCA9IFN0
cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgICAgICBWZWN0b3I8Y2hhciwg
ND4gYnVmZmVyOworICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbih1bG9jX2dldFNjcmlwdCwgbV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgIG1fc2Ny
aXB0ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9zY3JpcHQ7CiB9CkBAIC00MjQsMTcgKzQwNCwxMCBAQCBjb25zdCBTdHJpbmcmIElu
dGxMb2NhbGU6OnNjcmlwdCgpCiBjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OnJlZ2lvbigpCiB7
CiAgICAgaWYgKG1fcmVnaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBWZWN0b3I8Y2hhciwgMz4gYnVmZmVyKDMpOwotICAg
ICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfZ2V0Q291bnRyeShtX2xvY2FsZUlELmRhdGEo
KSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChu
ZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBidWZmZXIu
Z3JvdyhidWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwot
ICAgICAgICAgICAgdWxvY19nZXRDb3VudHJ5KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0
YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChV
X1NVQ0NFU1Moc3RhdHVzKSk7Ci0KLSAgICAgICAgbV9yZWdpb24gPSBTdHJpbmcoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDM+IGJ1ZmZlcjsKKyAg
ICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19nZXRD
b3VudHJ5LCBtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgQVNTRVJUX1VOVVNF
RChzdGF0dXMsIFVfU1VDQ0VTUyhzdGF0dXMpKTsKKyAgICAgICAgbV9yZWdpb24gPSBTdHJpbmco
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3JlZ2lv
bjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKaW5kZXggNWU3NDRkNWE3Y2E5ZjQwZTc1ZmU0YjM0NWJhZjBmOGJiYmMyZTU1NC4u
ZTZkODU4MDNhMDAxMzVkZDI2YWY4ZmEzMGUwYTJmMjYzMmMzOTAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTM0Nywx
OCArMzQ3LDEyIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGJ1ZmZlcigzMik7Ci0gICAgYXV0byBsZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZSht
X251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCks
IG51bGxwdHIsICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihz
dGF0dXMpKSB7Ci0gICAgICAgIGJ1ZmZlci5ncm93KGxlbmd0aCk7Ci0gICAgICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXQu
Z2V0KCksIHZhbHVlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwot
ICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9y
bWF0LmdldCgpLCB2YWx1ZSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
KHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtZm9ybWF0bnVtYmVyCkBAIC0zNzUsMTggKzM2OSwxMiBAQCBKU1ZhbHVlIEludGxOdW1iZXJG
b3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0ludCogdmFs
dWUpCiAgICAgQVNTRVJUKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJSSgpKTsK
ICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJp
bmcuY2hhcmFjdGVyczgoKSk7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwotICAgIGF1dG8gbGVuZ3RoID0g
dW51bV9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0cmlu
Zy5sZW5ndGgoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1
cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAg
ICAgYnVmZmVyLmdyb3cobGVuZ3RoKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwot
ICAgICAgICB1bnVtX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXQuZ2V0KCksIHJhd1N0cmlu
Zywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIsICZzdGF0
dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251
bWJlckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlciwgbnVs
bHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQu
Il9zKTsKIAotICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwogfQogCiBB
U0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCkBA
IC01MzksMTcgKzUyNywxMiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFy
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAK
LSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3Ro
ID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVl
LCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7
Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgp
OwotICAgICAgICB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5nZXQo
KSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgZmllbGRJdHIuZ2V0KCksICZz
dGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CisgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRz
LCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRJdHIuZ2V0KCkpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAK
LSAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5n
dGgpOworICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAKICAgICBKU0Fy
cmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91
cyksIDApOwogICAgIGlmICghcGFydHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCmluZGV4IDU3MWE5OTczNzI3ZWNhNTU5ZTgzNTk3OWM0MWY1NDBlNmRi
N2U5NmUuLjYyOTkyNTQ5ZWZiYTVlY2JjOWQwODljMDE0NDUwNzQ0NGU5ZDRhY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNzgsMjMgKzE3
OCwxNyBAQCBWZWN0b3I8Y2hhciwgMzI+IGxvY2FsZUlEQnVmZmVyRm9yTGFuZ3VhZ2VUYWcoY29u
c3QgQ1N0cmluZyYgdGFnKQogCiBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRChjb25zdCBj
aGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogewotICAgIFVFcnJvckNvZGUgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBh
dXRvIGxlbmd0aCA9IHVsb2NfdG9MYW5ndWFnZVRhZyhsb2NhbGVJRCwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSwgZmFsc2UsICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJv
ZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIGJ1ZmZlci5ncm93KGxlbmd0aCk7Ci0gICAg
ICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWxvY190b0xhbmd1YWdlVGFnKGxv
Y2FsZUlELCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIGZhbHNlLCAmc3RhdHVzKTsKLSAgICB9Cisg
ICAgVmVjdG9yPGNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb24odWxvY190b0xhbmd1YWdlVGFnLCBsb2NhbGVJRCwgYnVmZmVyLCBm
YWxzZSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVz
IHRoYXQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLgogICAgIC8v
IFRoaXMgbXVzdCBiZSBpbW1vcnRhbCB0byBtYWtlIGNvbmN1cnJlbnQgcmVmL2RlcmVmIHNhZmUu
CiAgICAgaWYgKGlzSW1tb3J0YWwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoU3RyaW5nSW1wbDo6
Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKKyAgICAgICAg
cmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0K
IAogY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuY3BwCmluZGV4IDZhMjA5MGRjNGIyYWRhNGZhYTQ4ZWIyYjNiZmNmYWMxMTdlMDBmYjAuLjg4
YWFmNzZkYjM0N2EwNzE3YTU5Y2EzNTI2MzMzOTZjZWI4Y2U5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
CkBAIC0yNDUsMjAgKzI0NSwxNCBAQCBTdHJpbmcgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9y
bWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogCiAgICAgYXV0
byBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBtX251bWVyaWMgPyB1cmVsZGF0ZWZtdF9mb3JtYXROdW1l
cmljIDogdXJlbGRhdGVmbXRfZm9ybWF0OwogCi0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMyKTsKLSAgICBhdXRvIHJl
c3VsdExlbmd0aCA9IGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQu
c2l6ZSgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3Rh
dHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHJlc3VsdC5n
cm93KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQu
ZGF0YSgpLCByZXN1bHRMZW5ndGgsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24oZm9ybWF0UmVsYXRpdmVUaW1lLCBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCks
IHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQpOwogICAgIGlmIChVTkxJS0VMWShVX0ZB
SUxVUkUoc3RhdHVzKSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICB9CiAKLSAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJl
c3VsdExlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpOwogfQogCiAvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGltZQpAQCAtMjg4LDE3ICsyODIs
MTIgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKIAogICAgIGRvdWJsZSBhYnNWYWx1ZSA9IHN0
ZDo6YWJzKHZhbHVlKTsKIAotICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcigzMik7Ci0gICAg
YXV0byBudW1iZXJMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZv
cm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGl0ZXJh
dG9yLmdldCgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIo
c3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIGJ1ZmZl
ci5ncm93KG51bWJlckxlbmd0aCk7Ci0gICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRz
KG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgbnVtYmVyTGVu
Z3RoLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwg
MzI+IGJ1ZmZlcjsKKyAgICBhdXRvIG51bWJlckxlbmd0aCA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcywgbV9udW1iZXJGb3JtYXQuZ2V0KCks
IGFic1ZhbHVlLCBidWZmZXIsIGl0ZXJhdG9yLmdldCgpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zKTsKIAotICAgIGF1dG8gZm9ybWF0
dGVkTnVtYmVyID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG51bWJlckxlbmd0aCk7CisgICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyKTsKIAogICAgIEpTQXJyYXkqIHBhcnRz
ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAg
ICAgaWYgKCFwYXJ0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCmluZGV4IDEzZmNmZDgzZjAxZmM1MzM0MDFjZjRmZGUwZDFhZmJmNTU3
MTBlOWEuLjdlNDUyZjczMjgwOGFiNjc5Y2UxMjMwNTFmN2M5NzQxNWVmZTQ3ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAt
MTU1NywxMiArMTU1Nyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8gY29udmVydENhc2UgPSBbJl0gKGF1dG8mJi4uLiBhcmdzKSB7Ci0g
ICAgICAgIGlmIChtb2RlID09IENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXIpCi0gICAgICAgICAg
ICByZXR1cm4gdV9zdHJUb0xvd2VyKHN0ZDo6Zm9yd2FyZDxkZWNsdHlwZShhcmdzKT4oYXJncyku
Li4pOwotICAgICAgICByZXR1cm4gdV9zdHJUb1VwcGVyKHN0ZDo6Zm9yd2FyZDxkZWNsdHlwZShh
cmdzKT4oYXJncykuLi4pOwotICAgIH07Ci0KICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2Jq
ZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZy
YW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCkBAIC0xNjA5LDEwICsxNjAzLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxl
Q2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGwKICAgICBp
ZiAobG9jYWxlLmlzTnVsbCgpKQogICAgICAgICBsb2NhbGUgPSAidW5kIl9zOwogCi0gICAgQ1N0
cmluZyB1dGY4TG9jYWxlQnVmZmVyID0gbG9jYWxlLnV0ZjgoKTsKLSAgICBjb25zdCBTdHJpbmdW
aWV3IHZpZXcocyk7Ci0gICAgY29uc3QgaW50MzJfdCB2aWV3TGVuZ3RoID0gdmlldy5sZW5ndGgo
KTsKLQogICAgIC8vIERlbGVnYXRlIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gaWN1IHVfc3RyVG9M
b3dlciBvciB1X3N0clRvVXBwZXIuCiAgICAgLy8gMTMuIExldCBjcExpc3QgYmUgYSBMaXN0IGNv
bnRhaW5pbmcgaW4gb3JkZXIgdGhlIGNvZGUgcG9pbnRzIG9mIFMgYXMgZGVmaW5lZCBpbiBFUzIw
MTUsIDYuMS40LCBzdGFydGluZyBhdCB0aGUgZmlyc3QgZWxlbWVudCBvZiBTLgogICAgIC8vIDE0
LiBGb3IgZWFjaCBjb2RlIHBvaW50IGMgaW4gY3BMaXN0LCBpZiB0aGUgVW5pY29kZSBDaGFyYWN0
ZXIgRGF0YWJhc2UgcHJvdmlkZXMgYSBsb3dlcigvdXBwZXIpIGNhc2UgZXF1aXZhbGVudCBvZiBj
IHRoYXQgaXMgZWl0aGVyIGxhbmd1YWdlIGluc2Vuc2l0aXZlIG9yIGZvciB0aGUgbGFuZ3VhZ2Ug
bG9jYWxlLCB0aGVuIHJlcGxhY2UgYyBpbiBjcExpc3Qgd2l0aCB0aGF0L3Rob3NlIGVxdWl2YWxl
bnQgY29kZSBwb2ludChzKS4KQEAgLTE2MjEsMjUgKzE2MTEsMTQgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGwKICAgICAvLyAxNy4gTGV0IEwgYmUgYSBTdHJpbmcgd2hvc2UgZWxlbWVudHMgYXJl
LCBpbiBvcmRlciwgdGhlIGVsZW1lbnRzIG9mIGN1TGlzdC4KIAogICAgIC8vIE1vc3Qgc3RyaW5n
cyBsb3dlci91cHBlciBjYXNlIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSBhcyBvcmlnaW5hbCwgc28g
dHJ5IHRoYXQgZmlyc3QuCi0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19FUlJPUjsKLSAg
ICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcih2aWV3TGVuZ3RoKTsKLSAgICBTdHJpbmcgbG93ZXI7Ci0g
ICAgY29uc3QgaW50MzJfdCByZXN1bHRMZW5ndGggPSBjb252ZXJ0Q2FzZShidWZmZXIuZGF0YSgp
LCB2aWV3TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3TGVuZ3RoLCB1
dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKLSAgICBpZiAoVV9TVUNDRVNTKGVycm9y
KSkKLSAgICAgICAgbG93ZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsK
LSAgICBlbHNlIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihlcnJvcikpIHsKLSAgICAg
ICAgLy8gQ29udmVydGVkIGNhc2UgbmVlZHMgbW9yZSBzcGFjZSB0aGFuIG9yaWdpbmFsLiBUcnkg
YWdhaW4uCi0gICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIGNvbnZlcnRDYXNl
KGJ1ZmZlci5kYXRhKCksIHJlc3VsdExlbmd0aCwgdmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMo
KSwgdmlld0xlbmd0aCwgdXRmOExvY2FsZUJ1ZmZlci5kYXRhKCksICZlcnJvcik7Ci0gICAgICAg
IGlmIChVX0ZBSUxVUkUoZXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKLSAgICAgICAgbG93
ZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdV9lcnJv
ck5hbWUoZXJyb3IpKTsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzLmxlbmd0aCgpKTsKKyAg
ICBhdXRvIGNvbnZlcnRDYXNlID0gbW9kZSA9PSBDYXNlQ29udmVyc2lvbk1vZGU6Okxvd2VyID8g
dV9zdHJUb0xvd2VyIDogdV9zdHJUb1VwcGVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKGNvbnZlcnRDYXNlLCBidWZmZXIsIFN0cmluZ1ZpZXcgeyBzIH0u
dXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCksIGxvY2FsZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHVfZXJyb3JOYW1lKHN0YXR1cykpOwogCiAgICAg
Ly8gMTguIFJldHVybiBMLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKHZtLCBsb3dlcikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dl
ckNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmggYi9T
b3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKaW5kZXggYjk3OWFkNmE3NThi
MzM1MWQxMWRiNDZmYTE0ZjY4Y2Y4NDVmZjhmZi4uN2JiZWRkYmExZTFkMTVhMTIzNDRiY2NhYzI4
ZGMwNTQ4MzY0MDMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNV
SGVscGVycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaApA
QCAtMjUsMjEgKzI1LDg4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHVwbGU+CiAj
aW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAotaW5saW5lIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5n
KFVFcnJvckNvZGUgZXJyb3JDb2RlKQorY29uc3RleHByIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1
Y2VCdWZmZXIoVUVycm9yQ29kZSk7Citjb25zdGV4cHIgYm9vbCBuZWVkc1RvR3Jvd1RvUHJvZHVj
ZUNTdHJpbmcoVUVycm9yQ29kZSk7CisKKy8vIFVzZSB0aGlzIHRvIGNhbGwgYSBmdW5jdGlvbiBm
cm9tIElDVSB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisvLyAtIFRha2VzIGEg
YnVmZmVyIHBvaW50ZXIgYW5kIGNhcGFjaXR5LgorLy8gLSBSZXR1cm5zIHRoZSBsZW5ndGggb2Yg
dGhlIGJ1ZmZlciBuZWVkZWQuCisvLyAtIFRha2VzIGEgVUVycm9yQ29kZSBwb2ludGVyIGFzIGl0
cyBsYXN0IGFyZ3VtZW50LgorLy8gUGFzcyB0aGUgYXJndW1lbnRzLCBidXQgcGFzcyBhIFZlY3Rv
ciBpbiBwbGFjZSBvZiB0aGUgYnVmZmVyIHBvaW50ZXIgYW5kIGNhcGFjaXR5LCBhbmQgZG9uJ3Qg
cGFzcyBhIFVFcnJvckNvZGUqLgorLy8gVGhpcyB3aWxsIGNhbGwgdGhlIGZ1bmN0aW9uLCBvbmNl
IG9yIHR3aWNlIGFzIG5lZWRlZCwgcmVzaXppbmcgdGhlIGJ1ZmZlciBhcyBuZWVkZWQuCisvLwor
Ly8gRXhhbXBsZToKKy8vCisvLyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisvLyAgICBh
dXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dldERlZmF1bHRU
aW1lWm9uZSwgYnVmZmVyKTsKKy8vCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNvZGUgY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKEZ1bmN0aW9uVHlwZSwgQXJndW1lbnRUeXBlcy4uLik7CisKKy8vIEltcGxlbWVudGF0
aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGRlY2xhcmVkIGFib3ZlLgorCitjb25zdGV4cHIgYm9vbCBu
ZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihVRXJyb3JDb2RlIGVycm9yQ29kZSkKIHsKLSAgICBy
ZXR1cm4gZXJyb3JDb2RlID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SIHx8IGVycm9yQ29kZSA9
PSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HOworICAgIHJldHVybiBlcnJvckNvZGUg
PT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I7CiB9CiAKLWlubGluZSBib29sIG5lZWRzVG9Hcm93
VG9Qcm9kdWNlQnVmZmVyKFVFcnJvckNvZGUgZXJyb3JDb2RlKQorY29uc3RleHByIGJvb2wgbmVl
ZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKFVFcnJvckNvZGUgZXJyb3JDb2RlKQogewotICAgIHJl
dHVybiBlcnJvckNvZGUgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1I7CisgICAgcmV0dXJuIG5l
ZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKGVycm9yQ29kZSkgfHwgZXJyb3JDb2RlID09IFVfU1RS
SU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkc7Cit9CisKK25hbWVzcGFjZSBDYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24geworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IGF1dG8mIGZpbmRW
ZWN0b3IoVmVjdG9yPENoYXJhY3RlclR5cGUsIGlubGluZUNhcGFjaXR5PiYgYnVmZmVyLCBBcmd1
bWVudFR5cGVzJiYuLi4pCit7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRmlyc3RBcmd1bWVudFR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IGF1dG8m
IGZpbmRWZWN0b3IoRmlyc3RBcmd1bWVudFR5cGUmJiwgQXJndW1lbnRUeXBlcyYmLi4uIGFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gZmluZFZlY3RvcihzdGQ6OmZvcndhcmQ8QXJndW1lbnRUeXBl
cz4oYXJndW1lbnRzKS4uLik7Cit9CisKK2NvbnN0ZXhwciBzdGQ6OnR1cGxlPD4gYXJndW1lbnRU
dXBsZSgpIHsgcmV0dXJuIHsgfTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdEFyZ3VtZW50
VHlwZSwgdHlwZW5hbWUgLi4uT3RoZXJBcmd1bWVudFR5cGVzPiBhdXRvIGFyZ3VtZW50VHVwbGUo
Rmlyc3RBcmd1bWVudFR5cGUmJiwgT3RoZXJBcmd1bWVudFR5cGVzJiYuLi4pOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IC4uLk90aGVyQXJndW1lbnRUeXBlcz4gYXV0byBhcmd1bWVudFR1cGxlKFZlY3RvcjxDaGFyYWN0
ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZlciwgT3RoZXJBcmd1bWVudFR5cGVzJiYuLi4g
b3RoZXJBcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHR1cGxlX2NhdChzdGQ6Om1ha2VfdHVwbGUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSksIGFyZ3VtZW50VHVwbGUoc3RkOjpmb3J3YXJk
PE90aGVyQXJndW1lbnRUeXBlcz4ob3RoZXJBcmd1bWVudHMpLi4uKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEZpcnN0QXJndW1lbnRUeXBlLCB0eXBlbmFtZSAuLi5PdGhlckFyZ3VtZW50VHlw
ZXM+IGF1dG8gYXJndW1lbnRUdXBsZShGaXJzdEFyZ3VtZW50VHlwZSYmIGZpcnN0QXJndW1lbnQs
IE90aGVyQXJndW1lbnRUeXBlcyYmLi4uIG90aGVyQXJndW1lbnRzKQoreworICAgIHJldHVybiB0
dXBsZV9jYXQoc3RkOjptYWtlX3R1cGxlKHN0ZDo6Zm9yd2FyZDxGaXJzdEFyZ3VtZW50VHlwZT4o
Zmlyc3RBcmd1bWVudCkpLCBhcmd1bWVudFR1cGxlKHN0ZDo6Zm9yd2FyZDxPdGhlckFyZ3VtZW50
VHlwZXM+KG90aGVyQXJndW1lbnRzKS4uLikpOworfQorCit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gVUVycm9yQ29kZSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oRnVuY3Rpb25UeXBlIGZ1bmN0aW9uLCBBcmd1bWVudFR5
cGVzLi4uIGFyZ3VtZW50cykKK3sKKyAgICBhdXRvJiBidWZmZXIgPSBDYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb246OmZpbmRWZWN0b3IoYXJndW1lbnRzLi4uKTsKKyAgICBidWZmZXIuZ3Jvdyhi
dWZmZXIuY2FwYWNpdHkoKSk7CisgICAgYXV0byBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAg
YXV0byByZXN1bHRMZW5ndGggPSBhcHBseShmdW5jdGlvbiwgQ2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uOjphcmd1bWVudFR1cGxlKGFyZ3VtZW50cy4uLiwgJnN0YXR1cykpOworICAgIGlmIChV
X1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgYnVmZmVyLnNocmluayhyZXN1bHRMZW5ndGgpOwor
ICAgIGVsc2UgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKKyAgICAg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBidWZmZXIuZ3JvdyhyZXN1bHRMZW5n
dGgpOworICAgICAgICBhcHBseShmdW5jdGlvbiwgQ2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
Ojphcmd1bWVudFR1cGxlKGFyZ3VtZW50cy4uLiwgJnN0YXR1cykpOworICAgICAgICBBU1NFUlQo
VV9TVUNDRVNTKHN0YXR1cykpOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOwogfQogCiB9CiAK
K3VzaW5nIFdURjo6Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOwogdXNpbmcgV1RGOjpuZWVk
c1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmc7CiB1c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNl
QnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGY5ZWQ1
YmJiM2I3YjY5MmQ1N2NkYTk0M2ZmMDZmMzJhYmI2MzQ2NmMuLjViZGNlODljYTY1ODExYWUwNTA5
ZjRhMGVhY2JlYjNjODMwOWMzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKQEAgLTE4MzEsMjEgKzE4MzEsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGNvbnRhaW5z
S2FuYUxldHRlcnMoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogc3RhdGljIHZvaWQgbm9ybWFsaXpl
Q2hhcmFjdGVycyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBWZWN0
b3I8VUNoYXI+JiBidWZmZXIpCiB7CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgY29uc3QgVU5vcm1hbGl6ZXIyKiBub3JtYWxpemVyID0gdW5vcm0yX2dldE5GQ0lu
c3RhbmNlKCZzdGF0dXMpOworICAgIGF1dG8qIG5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZDSW5z
dGFuY2UoJnN0YXR1cyk7CiAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKIAotICAgIGJ1
ZmZlci5yZXNpemUobGVuZ3RoKTsKKyAgICBidWZmZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7
CiAKLSAgICBhdXRvIG5vcm1hbGl6ZWRMZW5ndGggPSB1bm9ybTJfbm9ybWFsaXplKG5vcm1hbGl6
ZXIsIGNoYXJhY3RlcnMsIGxlbmd0aCwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCAmc3RhdHVzKTsK
LSAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykgfHwgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZm
ZXIoc3RhdHVzKSk7Ci0KLSAgICBidWZmZXIucmVzaXplKG5vcm1hbGl6ZWRMZW5ndGgpOwotCi0g
ICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgdW5vcm0yX25vcm1hbGl6ZShub3JtYWxpemVyLCBjaGFyYWN0
ZXJzLCBsZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnN0YXR1cyk7CisgICAgc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVub3JtMl9ub3JtYWxpemUsIG5vcm1hbGl6
ZXIsIGNoYXJhY3RlcnMsIGxlbmd0aCwgYnVmZmVyKTsKICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0
YXR1cykpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398624</attachid>
            <date>2020-05-06 09:13:33 -0700</date>
            <delta_ts>2020-05-06 14:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211499-20200506091332.patch</filename>
            <type>text/plain</type>
            <size>32834</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NjY4Yzc2NTQzNjE3MzQ0ZjU0ODVmZTYwZWM5MWM0ZDNhZjM2ZGQ0Li44MzNkNjQ0YmI3Yjg0MTAw
MzZhNzE2ODBiY2UxZGQzM2Y2YWQxMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0
aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFVz
ZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24uCisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVRpbWVab25lTmFtZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRvQ2Fu
b25pY2FsKTogRGl0dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6Omxhbmd1YWdlKTogRGl0
dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OnNjcmlwdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsTG9jYWxlOjpyZWdpb24pOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Omxhbmd1YWdlVGFnRm9yTG9jYWxlSUQpOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0
b0xvY2FsZUNhc2UpOiBEaXR0by4KKwogMjAyMC0wNS0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5M
b2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggMmJiMGQ1MmQ2MDIxMzViZTg1ODhkZWZmODA0Y2MzODE1ZTBmMDYyYi4uOTJi
MmJjNWFmMzMzY2FkOGRjYTcxZTkzYmQ5M2E5M2U3M2U0NmQ4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBA
QAorMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0aGF0IG1heSBu
ZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaXJzdCBjdXQgdmVyc2lv
biBpcyByZWFkeSB0byBiZSB1c2VkIGluIG1vc3QsIGJ1dCBub3QgYWxsLCBvZiB0aGUgcGxhY2Vz
IHdlIHVzZSB0aGUKKyAgICAgICAgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIgZnVuY3Rpb24u
IFRoZSBwbGFjZXMgaXQgaXMgbm90IHJpZ2h0IGZvciB5ZXQgYXJlIG9uZXMgdGhhdCBoYXZlCisg
ICAgICAgIHNwZWNpYSBjb25zaWRlcmF0aW9ucyBiZWNhdXNlIG9mIG51bGwgY2hhcmFjdGVyIHRl
cm1pbmF0b3Jpb24sIG9yIGRlc3RpbmF0aW9ucyB0aGF0IGFyZQorICAgICAgICBub3QgYSBWZWN0
b3IuIExhdGVyIHdlIGNhbiByZWZpbmUgdGhhdCBmdXJ0aGVyLCBpZiB3ZSBsaWtlLCBhbmQgcG9z
c2libHkgdXNlIHNvbWV0aGluZworICAgICAgICBzaW1pbGFyIGluIGNhbGwgc2l0ZXMgdGhhdCB1
c2UgbmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nIGFzIHdlbGwuCisKKyAgICAgICAgKiB3dGYv
dW5pY29kZS9pY3UvSUNVSGVscGVycy5oOgorICAgICAgICAoV1RGOjpuZWVkc1RvR3Jvd1RvUHJv
ZHVjZUJ1ZmZlcik6IENoYW5nZWQgdG8gY29uc3RleHByLCBzaW5jZSB3ZSBjYW4uCisgICAgICAg
IChXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV1RG
OjpDYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb246OmZpbmRWZWN0b3IpOiBBZGRlZC4gSW1wbGVt
ZW50YXRpb24gZGV0YWlsCisgICAgICAgIG9mIGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbi4K
KyAgICAgICAgKFdURjo6Q2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOjphcmd1bWVudFR1cGxl
KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbik6IEFk
ZGVkLgorCiAyMDIwLTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZWR1Y2UgSEFWRShIT1NURURfQ09SRV9BTklNQVRJT04pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGUw
NTBlMzAzYzc0YTU1NGUzZjE4M2YwN2RiM2JiOTE3YjlmMzYyNS4uYjA0NWE0ZmVjZGViNDgyNDk3
ZjdjOTYxM2M2NzQxMzljNjM4NzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIw
LTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGEg
aGVscGVyIGZvciB0aGUgcGF0dGVybiBvZiBJQ1UgZnVuY3Rpb25zIHRoYXQgbWF5IG5lZWQgdG8g
YmUgY2FsbGVkIHR3aWNlIHRvIHBvcHVsYXRlIGEgYnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE0OTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZUNoYXJhY3RlcnMpOiBVc2UgY2FsbEJ1ZmZlclBy
b2R1Y2luZ0Z1bmN0aW9uLgorCiAyMDIwLTA1LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KIAogICAgICAgICBFbGltaW5hdGUgY2hlY2tzIG9mIFVTRShESUNUQVRJT05fQUxURVJO
QVRJVkVTKSBpbiBDb2NvYS1zcGVjaWZpYyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCA3NDQ5NTJmMjA4ZTEx
ZGM1Mjk0ODRkMjE4MjZhNDQyM2I1YzQwZWRiLi42ODZiZTdiOTk0OTJhN2EzZTQ0ODRiZjg4M2Y3
ZTE3M2JkMWY3ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTEwNSwyNyArMTA1LDE1IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNVVENFcXVpdmFsZW50KFN0cmluZ1ZpZXcgdGltZVpvbmUpCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWRlZmF1bHR0aW1lem9uZQogc3RhdGljIFN0cmlu
ZyBkZWZhdWx0VGltZVpvbmUoKQogewotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwogICAgIFN0cmluZyBjYW5vbmljYWw7CiAKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZm
ZXIoMzIpOwotICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWNhbF9nZXREZWZhdWx0VGltZVpvbmUo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9H
cm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOwotICAgICAgICB1Y2FsX2dl
dERlZmF1bHRUaW1lWm9uZShidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwot
ICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXREZWZhdWx0VGltZVpvbmUsIGJ1ZmZl
cik7CiAgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gY2Fub25pY2FsQnVmZmVyKDMyKTsK
LSAgICAgICAgYXV0byBjYW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25l
SUQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBj
YW5vbmljYWxCdWZmZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKLSAgICAgICAgaWYgKG5l
ZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIGNhbm9uaWNhbEJ1ZmZlci5ncm93KGNhbm9uaWNh
bExlbmd0aCk7Ci0gICAgICAgICAgICB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCBjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5vbmljYWxM
ZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgICAgICB9CisgICAgICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcjsKKyAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSwgY2Fub25pY2FsQnVmZmVyLCBudWxscHRyKTsKICAgICAgICAgaWYgKFVf
U1VDQ0VTUyhzdGF0dXMpKQotICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNh
bEJ1ZmZlci5kYXRhKCksIGNhbm9uaWNhbExlbmd0aCk7CisgICAgICAgICAgICBjYW5vbmljYWwg
PSBTdHJpbmcoY2Fub25pY2FsQnVmZmVyKTsKICAgICB9CiAKICAgICBpZiAoY2Fub25pY2FsLmlz
TnVsbCgpIHx8IGlzVVRDRXF1aXZhbGVudChjYW5vbmljYWwpKQpAQCAtMTQ2LDcgKzEzNCw3IEBA
IHN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGlt
ZVpvbmVOYW1lKQogICAgIGRvIHsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
ICAgICBpbnQzMl90IGlhbmFUaW1lWm9uZUxlbmd0aDsKLSAgICAgICAgLy8gVGltZSB6b25lIG5h
bWVzIGFyZSByZXNwcmVzZW50ZWQgYXMgVUNoYXJbXSBpbiBhbGwgcmVsYXRlZCBJQ1UgYXBpcy4K
KyAgICAgICAgLy8gVGltZSB6b25lIG5hbWVzIGFyZSByZXByZXNlbnRlZCBhcyBVQ2hhcltdIGlu
IGFsbCByZWxhdGVkIElDVSBBUElzLgogICAgICAgICBjb25zdCBVQ2hhciogaWFuYVRpbWVab25l
ID0gdWVudW1fdW5leHQodGltZVpvbmVzLCAmaWFuYVRpbWVab25lTGVuZ3RoLCAmc3RhdHVzKTsK
ICAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKIApAQCAtMTYzLDE2ICsxNTEsMTAg
QEAgc3RhdGljIFN0cmluZyBjYW5vbmljYWxpemVUaW1lWm9uZU5hbWUoY29uc3QgU3RyaW5nJiB0
aW1lWm9uZU5hbWUpCiAgICAgICAgIC8vIDEuIExldCBpYW5hVGltZVpvbmUgYmUgdGhlIFpvbmUg
b3IgTGluayBuYW1lIG9mIHRoZSBJQU5BIFRpbWUgWm9uZSBEYXRhYmFzZSBzdWNoIHRoYXQgdGlt
ZVpvbmUsIGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEsIGlzIGVx
dWFsIHRvIGlhbmFUaW1lWm9uZSwgY29udmVydGVkIHRvIHVwcGVyIGNhc2UgYXMgZGVzY3JpYmVk
IGluIDYuMS4KICAgICAgICAgLy8gMi4gSWYgaWFuYVRpbWVab25lIGlzIGEgTGluayBuYW1lLCB0
aGVuIGxldCBpYW5hVGltZVpvbmUgYmUgdGhlIGNvcnJlc3BvbmRpbmcgWm9uZSBuYW1lIGFzIHNw
ZWNpZmllZCBpbiB0aGUg4oCcYmFja3dhcmTigJ0gZmlsZSBvZiB0aGUgSUFOQSBUaW1lIFpvbmUg
RGF0YWJhc2UuCiAKLSAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKGlhbmFUaW1lWm9u
ZUxlbmd0aCk7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYXV0byBj
YW5vbmljYWxMZW5ndGggPSB1Y2FsX2dldENhbm9uaWNhbFRpbWVab25lSUQoaWFuYVRpbWVab25l
LCBpYW5hVGltZVpvbmVMZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGlhbmFUaW1lWm9uZUxlbmd0aCwg
bnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZl
cihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBidWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOwot
ICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgdWNhbF9nZXRD
YW5vbmljYWxUaW1lWm9uZUlEKGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBidWZm
ZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgICAgICB9
Ci0gICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7Ci0gICAgICAgIGNhbm9uaWNhbCA9
IFN0cmluZyhidWZmZXIuZGF0YSgpLCBjYW5vbmljYWxMZW5ndGgpOworICAgICAgICBWZWN0b3I8
VUNoYXIsIDMyPiBidWZmZXI7CisgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1
Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRCwgaWFuYVRpbWVab25lLCBp
YW5hVGltZVpvbmVMZW5ndGgsIGJ1ZmZlciwgbnVsbHB0cik7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoc3RhdHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgIGNhbm9uaWNhbCA9IFN0cmlu
ZyhidWZmZXIpOwogICAgIH0gd2hpbGUgKGNhbm9uaWNhbC5pc051bGwoKSk7CiAgICAgdWVudW1f
Y2xvc2UodGltZVpvbmVzKTsKIApAQCAtNjM2LDE0ICs2MTgsOCBAQCB2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAKICAgICBTdHJpbmcgc2tlbGV0b24gPSBza2VsZXRvbkJ1aWxkZXIudG9TdHJpbmco
KTsKICAgICBTdHJpbmdWaWV3IHNrZWxldG9uVmlldyhza2VsZXRvbik7Ci0gICAgVmVjdG9yPFVD
aGFyLCAzMj4gcGF0dGVybkJ1ZmZlcigzMik7Ci0gICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwot
ICAgIGF1dG8gcGF0dGVybkxlbmd0aCA9IHVkYXRwZ19nZXRCZXN0UGF0dGVybldpdGhPcHRpb25z
KGdlbmVyYXRvciwgc2tlbGV0b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRv
blZpZXcubGVuZ3RoKCksIFVEQVRQR19NQVRDSF9IT1VSX0ZJRUxEX0xFTkdUSCwgcGF0dGVybkJ1
ZmZlci5kYXRhKCksIHBhdHRlcm5CdWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVl
ZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgICAgIHBhdHRlcm5CdWZmZXIuZ3JvdyhwYXR0ZXJuTGVuZ3RoKTsKLSAg
ICAgICAgdWRhdHBnX2dldEJlc3RQYXR0ZXJuKGdlbmVyYXRvciwgc2tlbGV0b25WaWV3LnVwY29u
dmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIHBhdHRlcm5CdWZmZXIu
ZGF0YSgpLCBwYXR0ZXJuTGVuZ3RoLCAmc3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9yPFVDaGFy
LCAzMj4gcGF0dGVybkJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVu
Y3Rpb24odWRhdHBnX2dldEJlc3RQYXR0ZXJuV2l0aE9wdGlvbnMsIGdlbmVyYXRvciwgc2tlbGV0
b25WaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVE
QVRQR19NQVRDSF9IT1VSX0ZJRUxEX0xFTkdUSCwgcGF0dGVybkJ1ZmZlcik7CiAgICAgdWRhdHBn
X2Nsb3NlKGdlbmVyYXRvcik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7CiAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBEYXRlVGltZUZvcm1hdCJfcyk7CkBAIC02NjIsMTIgKzYzOCwxMSBAQCB2b2lkIEludGxEYXRl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAKICAgICAgICAgYm9vbCBpc0VzY2FwZWQgPSBmYWxzZTsKICAgICAgICAgYm9v
bCBoYXNIb3VyID0gZmFsc2U7Ci0gICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IHBhdHRlcm5M
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgVUNoYXIgYyA9IHBhdHRlcm5CdWZmZXJbaV07Cisg
ICAgICAgIGZvciAoYXV0byYgYyA6IHBhdHRlcm5CdWZmZXIpIHsKICAgICAgICAgICAgIGlmIChj
ID09ICdcJycpCiAgICAgICAgICAgICAgICAgaXNFc2NhcGVkID0gIWlzRXNjYXBlZDsKICAgICAg
ICAgICAgIGVsc2UgaWYgKCFpc0VzY2FwZWQgJiYgKGMgPT0gJ2gnIHx8IGMgPT0gJ0gnIHx8IGMg
PT0gJ2snIHx8IGMgPT0gJ0snKSkgewotICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZmZXJbaV0g
PSBob3VyOworICAgICAgICAgICAgICAgIGMgPSBob3VyOwogICAgICAgICAgICAgICAgIGhhc0hv
dXIgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02NzUsNyArNjUwLDcgQEAg
dm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgbV9ob3VyQ3ljbGUgPSBTdHJpbmco
KTsKICAgICB9CiAKLSAgICBTdHJpbmdWaWV3IHBhdHRlcm4ocGF0dGVybkJ1ZmZlci5kYXRhKCks
IHBhdHRlcm5MZW5ndGgpOworICAgIFN0cmluZ1ZpZXcgcGF0dGVybihwYXR0ZXJuQnVmZmVyLmRh
dGEoKSwgcGF0dGVybkJ1ZmZlci5zaXplKCkpOwogICAgIHNldEZvcm1hdHNGcm9tUGF0dGVybihw
YXR0ZXJuKTsKIAogICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKQEAgLTg5NCwxOCArODY5LDEy
IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVl
KSkKICAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdCgpIl9zKTsK
IAotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IHJlc3VsdCgzMik7Ci0gICAgYXV0byByZXN1bHRMZW5ndGggPSB1ZGF0X2Zvcm1hdCht
X2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBu
dWxscHRyLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3Rh
dHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHJlc3VsdC5n
cm93KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIHVkYXRfZm9ybWF0KG1fZGF0ZUZvcm1hdC5nZXQo
KSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7
Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyAgICBhdXRvIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0X2Zvcm1hdCwgbV9kYXRlRm9ybWF0Lmdl
dCgpLCB2YWx1ZSwgcmVzdWx0LCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
CiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9zKTsKIAotICAgIHJldHVybiBqc1N0cmluZyh2bSwg
U3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCkpOworICAgIHJldHVybiBqc1N0cmlu
Zyh2bSwgU3RyaW5nKHJlc3VsdCkpOwogfQogCiBzdGF0aWMgQVNDSUlMaXRlcmFsIHBhcnRUeXBl
U3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpCkBAIC05ODYsMTQgKzk1NSw4IEBAIEpTVmFs
dWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGRvdWJsZSB2CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVu
IGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAgIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVu
Z3RoID0gdWRhdF9mb3JtYXRGb3JGaWVsZHMobV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVz
dWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgZmllbGRzLmdldCgpLCAmc3RhdHVzKTsKLSAgICBp
ZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0aCk7Ci0gICAg
ICAgIHVkYXRfZm9ybWF0Rm9yRmllbGRzKG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dC5kYXRhKCksIHJlc3VsdExlbmd0aCwgZmllbGRzLmdldCgpLCAmc3RhdHVzKTsKLSAgICB9Cisg
ICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OworICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1ZGF0X2Zvcm1hdEZvckZpZWxkcywgbV9kYXRlRm9ybWF0LmdldCgpLCB2
YWx1ZSwgcmVzdWx0LCBmaWVsZHMuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGRhdGUgdmFsdWUiX3MpOwogCkBAIC0xMDAxLDkgKzk2NCwxMCBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3VibGUgdgogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJv
d091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBhdXRvIHJlc3Vs
dFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpOworICAgIGF1dG8g
cmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CiAKKyAgICBpbnQzMl90IHJlc3Vs
dExlbmd0aCA9IHJlc3VsdC5zaXplKCk7CiAgICAgaW50MzJfdCBwcmV2aW91c0VuZEluZGV4ID0g
MDsKICAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwogICAgIGludDMyX3QgZW5kSW5kZXggPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCBj
MjY0OGJkZDFlZmI0YmJjMzUzYjM2Y2UxNzRkYWYyNDliZmE2MTA0Li45MTJmNGI1NjI2MDBiZmMw
OGU5MTQ1NjRhNzk4NGVmZGYyZGM2YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlLmNwcApAQCAtOTAsMTggKzkwLDEyIEBAIENTdHJpbmcgTG9jYWxlSURC
dWlsZGVyOjp0b0Nhbm9uaWNhbCgpCiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSk7CiAK
LSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8Y2hhciwg
MzI+IHJlc3VsdCgzMik7Ci0gICAgYXV0byByZXN1bHRMZW5ndGggPSB1bG9jX2Nhbm9uaWNhbGl6
ZShtX2J1ZmZlci5kYXRhKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMp
OwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAg
IHJlc3VsdC5ncm93KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJP
UjsKLSAgICAgICAgdWxvY19jYW5vbmljYWxpemUobV9idWZmZXIuZGF0YSgpLCByZXN1bHQuZGF0
YSgpLCByZXN1bHRMZW5ndGgsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8Y2hhciwgMzI+
IHJlc3VsdDsKKyAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
bG9jX2Nhbm9uaWNhbGl6ZSwgbV9idWZmZXIuZGF0YSgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKIAotICAgIHJldHVybiBD
U3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7CisgICAgcmV0dXJuIENTdHJpbmco
cmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiB9CiAKIC8vIEJlY2F1c2UgSUNVJ3MgQyBB
UEkgZG9lc24ndCBoYXZlIHNldFtMYW5ndWFnZXxTY3JpcHR8UmVnaW9uXSBmdW5jdGlvbnMuLi4K
QEAgLTM4NiwxNyArMzgwLDEwIEBAIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6YmFzZU5hbWUo
KQogY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpsYW5ndWFnZSgpCiB7CiAgICAgaWYgKG1fbGFu
Z3VhZ2UuaXNOdWxsKCkpIHsKLSAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgICAgIFZlY3RvcjxjaGFyLCA4PiBidWZmZXIoOCk7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyTGVuZ3RoID0gdWxvY19nZXRMYW5ndWFnZShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJM
ZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAg
dWxvY19nZXRMYW5ndWFnZShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
TGVuZ3RoLCAmc3RhdHVzKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0
YXR1cykpOwotCi0gICAgICAgIG1fbGFuZ3VhZ2UgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyTGVuZ3RoKTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDg+IGJ1ZmZlcjsKKyAgICAgICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19nZXRMYW5ndWFnZSwg
bV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlcik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVz
LCBVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAgIG1fbGFuZ3VhZ2UgPSBTdHJpbmcoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBtX2xhbmd1YWdlOwog
fQpAQCAtNDA1LDE3ICszOTIsMTAgQEAgY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpsYW5ndWFn
ZSgpCiBjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OnNjcmlwdCgpCiB7CiAgICAgaWYgKG1fc2Ny
aXB0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwotICAgICAgICBWZWN0b3I8Y2hhciwgND4gYnVmZmVyKDQpOwotICAgICAgICBhdXRvIGJ1ZmZl
ckxlbmd0aCA9IHVsb2NfZ2V0U2NyaXB0KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICAgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9k
dWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0
aCk7Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgICAgICB1bG9j
X2dldFNjcmlwdChtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3Ro
LCAmc3RhdHVzKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykp
OwotCi0gICAgICAgIG1fc2NyaXB0ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0
aCk7CisgICAgICAgIFZlY3RvcjxjaGFyLCA0PiBidWZmZXI7CisgICAgICAgIGF1dG8gc3RhdHVz
ID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVsb2NfZ2V0U2NyaXB0LCBtX2xvY2FsZUlE
LmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChzdGF0dXMsIFVfU1VDQ0VT
UyhzdGF0dXMpKTsKKyAgICAgICAgbV9zY3JpcHQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyLnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBtX3NjcmlwdDsKIH0KQEAgLTQyNCwxNyAr
NDA0LDEwIEBAIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6c2NyaXB0KCkKIGNvbnN0IFN0cmlu
ZyYgSW50bExvY2FsZTo6cmVnaW9uKCkKIHsKICAgICBpZiAobV9yZWdpb24uaXNOdWxsKCkpIHsK
LSAgICAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFZlY3Rv
cjxjaGFyLCAzPiBidWZmZXIoMyk7Ci0gICAgICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19n
ZXRDb3VudHJ5KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
LCAmc3RhdHVzKTsKLSAgICAgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1
cykpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0aCk7Ci0gICAgICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgICAgICB1bG9jX2dldENvdW50cnkobV9s
b2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgICAgICBt
X3JlZ2lvbiA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgICAgICBW
ZWN0b3I8Y2hhciwgMz4gYnVmZmVyOworICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bG9jX2dldENvdW50cnksIG1fbG9jYWxlSUQuZGF0YSgpLCBidWZm
ZXIpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykpOwor
ICAgICAgICBtX3JlZ2lvbiA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG1fcmVnaW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA1ZTc0NGQ1YTdjYTlmNDBl
NzVmZTRiMzQ1YmFmMGY4YmJiYzJlNTU0Li5lNmQ4NTgwM2EwMDEzNWRkMjZhZjhmYTMwZTBhMmYy
NjMyYzM5MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcApAQCAtMzQ3LDE4ICszNDcsMTIgQEAgSlNWYWx1ZSBJbnRsTnVtYmVy
Rm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVl
KSBjb24KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBhdXRvIGxl
bmd0aCA9IHVudW1fZm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgaWYgKG5l
ZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgYnVmZmVyLmdyb3co
bGVuZ3RoKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1bnVtX2Zv
cm1hdERvdWJsZShtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1
ZmZlcjsKKyAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVt
X2Zvcm1hdERvdWJsZSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCBidWZmZXIsIG51bGxw
dHIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5n
dGgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1mb3JtYXRudW1iZXIKQEAgLTM3NSwxOCArMzY5
LDEyIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQmlnSW50KiB2YWx1ZSkKICAgICBBU1NFUlQoc3RyaW5nLmlzOEJpdCgp
ICYmIHN0cmluZy5pc0FsbEFTQ0lJKCkpOwogICAgIGF1dG8qIHJhd1N0cmluZyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKTsKIAotICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cigzMik7Ci0gICAgYXV0byBsZW5ndGggPSB1bnVtX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIHJhd1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpLCBudWxscHRyLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1
Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICBidWZmZXIuZ3JvdyhsZW5ndGgpOwotICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVudW1fZm9ybWF0RGVjaW1hbChtX251
bWJlckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZlci5kYXRh
KCksIGxlbmd0aCwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwg
MzI+IGJ1ZmZlcjsKKyAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1bnVtX2Zvcm1hdERlY2ltYWwsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcsIHN0
cmluZy5sZW5ndGgoKSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOwogCi0gICAgcmV0dXJuIGpzU3RyaW5nKHZt
LCBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKHZt
LCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpz
dHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKQEAgLTUzOSwxNyArNTI3LDEyIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxk
IHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgz
Mik7Ci0gICAgYXV0byByZXN1bHRMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyht
X251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCks
IGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VC
dWZmZXIoc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IHJlc3VsdC5ncm93KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9y
RmllbGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoLCBmaWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hh
ciwgMzI+IHJlc3VsdDsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24o
dW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwg
cmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5n
KHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBT
dHJpbmcocmVzdWx0KTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggNTcxYTk5NzM3
MjdlY2E1NTllODM1OTc5YzQxZjU0MGU2ZGI3ZTk2ZS4uNjI5OTI1NDllZmJhNWVjYmM5ZDA4OWMw
MTQ0NTA3NDQ0ZTlkNGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKQEAgLTE3OCwyMyArMTc4LDE3IEBAIFZlY3RvcjxjaGFyLCAzMj4gbG9jYWxl
SURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCiAKIFN0cmluZyBsYW5n
dWFnZVRhZ0ZvckxvY2FsZUlEKGNvbnN0IGNoYXIqIGxvY2FsZUlELCBib29sIGlzSW1tb3J0YWwp
CiB7Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPGNo
YXIsIDMyPiBidWZmZXIoMzIpOwotICAgIGF1dG8gbGVuZ3RoID0gdWxvY190b0xhbmd1YWdlVGFn
KGxvY2FsZUlELCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBmYWxzZSwgJnN0YXR1cyk7
Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAg
YnVmZmVyLmdyb3cobGVuZ3RoKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICB1bG9jX3RvTGFuZ3VhZ2VUYWcobG9jYWxlSUQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwg
ZmFsc2UsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcjsKKyAg
ICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bG9jX3RvTGFuZ3Vh
Z2VUYWcsIGxvY2FsZUlELCBidWZmZXIsIGZhbHNlKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIC8vIFRoaXMgaXMgdXNlZCB0byBz
dG9yZSBpbnRvIHN0YXRpYyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgc2hhcmVkIGFjcm9zcyBKU0Mg
ZXhlY3V0aW9uIHRocmVhZHMuCiAgICAgLy8gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1ha2Ug
Y29uY3VycmVudCByZWYvZGVyZWYgc2FmZS4KICAgICBpZiAoaXNJbW1vcnRhbCkKLSAgICAgICAg
cmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ1ZmZlci5k
YXRhKCksIGxlbmd0aCkpOworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGlj
U3RyaW5nSW1wbChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIHJldHVybiBT
dHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOwogfQogCiBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxB
dmFpbGFibGVMb2NhbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKaW5kZXggNmEyMDkwZGM0YjJhZGE0ZmFh
NDhlYjJiM2JmY2ZhYzExN2UwMGZiMC4uODhhYWY3NmRiMzQ3YTA3MTdhNTljYTM1MjYzMzM5NmNl
YjhjZTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTI0NSwyMCArMjQ1LDE0IEBAIFN0cmluZyBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBkb3ViCiAKICAgICBhdXRvIGZvcm1hdFJlbGF0aXZlVGltZSA9IG1fbnVtZXJp
YyA/IHVyZWxkYXRlZm10X2Zvcm1hdE51bWVyaWMgOiB1cmVsZGF0ZWZtdF9mb3JtYXQ7CiAKLSAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMy
PiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gZm9ybWF0UmVsYXRpdmVUaW1l
KG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVl
KCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOwotICAgIGlmIChuZWVk
c1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICAgICAgcmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgZm9y
bWF0UmVsYXRpdmVUaW1lKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUs
IHVuaXRUeXBlLnZhbHVlKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgJnN0YXR1cyk7
Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKKyAgICBhdXRvIHN0YXR1cyA9
IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbihmb3JtYXRSZWxhdGl2ZVRpbWUsIG1fcmVsYXRp
dmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3Vs
dCk7CiAgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgewogICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2
ZSB0aW1lIl9zKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVy
biBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICByZXR1cm4gU3RyaW5n
KHJlc3VsdCk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtRm9ybWF0UmVs
YXRpdmVUaW1lCkBAIC0yODgsMTcgKzI4MiwxMiBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ygog
CiAgICAgZG91YmxlIGFic1ZhbHVlID0gc3RkOjphYnModmFsdWUpOwogCi0gICAgVmVjdG9yPFVD
aGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBhdXRvIG51bWJlckxlbmd0aCA9IHVudW1fZm9ybWF0
RG91YmxlRm9yRmllbGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwotICAgIGlmIChu
ZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKLSAgICAgICAgYnVmZmVyLmdyb3cobnVtYmVyTGVuZ3RoKTsKLSAgICAgICAg
dW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVl
LCBidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgsIGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsK
LSAgICB9CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworICAgIGF1dG8gbnVtYmVyTGVu
Z3RoID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmll
bGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlciwgaXRlcmF0b3IuZ2V0
KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRp
bWUiX3MpOwogCi0gICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEo
KSwgbnVtYmVyTGVuZ3RoKTsKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IFN0cmluZyhidWZm
ZXIpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMTNmY2ZkODNm
MDFmYzUzMzQwMWNmNGZkZTBkMWFmYmY1NTcxMGU5YS4uNGM4NjI4OWM0NzQyYjgwMGRlOTM3ZGZh
ZGI3YTU5MTMwYjE3Mjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNTU3LDEyICsxNTU3LDYgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBjb252ZXJ0Q2FzZSA9
IFsmXSAoYXV0byYmLi4uIGFyZ3MpIHsKLSAgICAgICAgaWYgKG1vZGUgPT0gQ2FzZUNvbnZlcnNp
b25Nb2RlOjpMb3dlcikKLSAgICAgICAgICAgIHJldHVybiB1X3N0clRvTG93ZXIoc3RkOjpmb3J3
YXJkPGRlY2x0eXBlKGFyZ3MpPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiB1X3N0clRvVXBw
ZXIoc3RkOjpmb3J3YXJkPGRlY2x0eXBlKGFyZ3MpPihhcmdzKS4uLik7Ci0gICAgfTsKLQogICAg
IC8vIDEuIExldCBPIGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1ZSkuCiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hl
Y2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKQEAgLTE2MDksMTAgKzE2MDMsNiBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbAogICAgIGlmIChsb2NhbGUuaXNOdWxsKCkpCiAgICAgICAgIGxv
Y2FsZSA9ICJ1bmQiX3M7CiAKLSAgICBDU3RyaW5nIHV0ZjhMb2NhbGVCdWZmZXIgPSBsb2NhbGUu
dXRmOCgpOwotICAgIGNvbnN0IFN0cmluZ1ZpZXcgdmlldyhzKTsKLSAgICBjb25zdCBpbnQzMl90
IHZpZXdMZW5ndGggPSB2aWV3Lmxlbmd0aCgpOwotCiAgICAgLy8gRGVsZWdhdGUgdGhlIGZvbGxv
d2luZyBzdGVwcyB0byBpY3UgdV9zdHJUb0xvd2VyIG9yIHVfc3RyVG9VcHBlci4KICAgICAvLyAx
My4gTGV0IGNwTGlzdCBiZSBhIExpc3QgY29udGFpbmluZyBpbiBvcmRlciB0aGUgY29kZSBwb2lu
dHMgb2YgUyBhcyBkZWZpbmVkIGluIEVTMjAxNSwgNi4xLjQsIHN0YXJ0aW5nIGF0IHRoZSBmaXJz
dCBlbGVtZW50IG9mIFMuCiAgICAgLy8gMTQuIEZvciBlYWNoIGNvZGUgcG9pbnQgYyBpbiBjcExp
c3QsIGlmIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBwcm92aWRlcyBhIGxvd2VyKC91
cHBlcikgY2FzZSBlcXVpdmFsZW50IG9mIGMgdGhhdCBpcyBlaXRoZXIgbGFuZ3VhZ2UgaW5zZW5z
aXRpdmUgb3IgZm9yIHRoZSBsYW5ndWFnZSBsb2NhbGUsIHRoZW4gcmVwbGFjZSBjIGluIGNwTGlz
dCB3aXRoIHRoYXQvdGhvc2UgZXF1aXZhbGVudCBjb2RlIHBvaW50KHMpLgpAQCAtMTYyMSwyNSAr
MTYxMSwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9Mb2NhbGVDYXNlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbAogICAgIC8vIDE3LiBMZXQgTCBiZSBh
IFN0cmluZyB3aG9zZSBlbGVtZW50cyBhcmUsIGluIG9yZGVyLCB0aGUgZWxlbWVudHMgb2YgY3VM
aXN0LgogCiAgICAgLy8gTW9zdCBzdHJpbmdzIGxvd2VyL3VwcGVyIGNhc2Ugd2lsbCBiZSB0aGUg
c2FtZSBzaXplIGFzIG9yaWdpbmFsLCBzbyB0cnkgdGhhdCBmaXJzdC4KLSAgICBVRXJyb3JDb2Rl
IGVycm9yID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHZpZXdMZW5n
dGgpOwotICAgIFN0cmluZyBsb3dlcjsKLSAgICBjb25zdCBpbnQzMl90IHJlc3VsdExlbmd0aCA9
IGNvbnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHZpZXdMZW5ndGgsIHZpZXcudXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIHZpZXdMZW5ndGgsIHV0ZjhMb2NhbGVCdWZmZXIuZGF0YSgpLCAmZXJyb3Ip
OwotICAgIGlmIChVX1NVQ0NFU1MoZXJyb3IpKQotICAgICAgICBsb3dlciA9IFN0cmluZyhidWZm
ZXIuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwotICAgIGVsc2UgaWYgKG5lZWRzVG9Hcm93VG9Qcm9k
dWNlQnVmZmVyKGVycm9yKSkgewotICAgICAgICAvLyBDb252ZXJ0ZWQgY2FzZSBuZWVkcyBtb3Jl
IHNwYWNlIHRoYW4gb3JpZ2luYWwuIFRyeSBhZ2Fpbi4KLSAgICAgICAgVUVycm9yQ29kZSBlcnJv
ciA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIocmVzdWx0TGVu
Z3RoKTsKLSAgICAgICAgY29udmVydENhc2UoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCB2
aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVy
LmRhdGEoKSwgJmVycm9yKTsKLSAgICAgICAgaWYgKFVfRkFJTFVSRShlcnJvcikpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB1X2Vycm9y
TmFtZShlcnJvcikpOwotICAgICAgICBsb3dlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCByZXN1
bHRMZW5ndGgpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCB1X2Vycm9yTmFtZShlcnJvcikpOworICAgIFZlY3RvcjxVQ2hh
cj4gYnVmZmVyOworICAgIGJ1ZmZlci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHMubGVuZ3RoKCkp
OworICAgIGF1dG8gY29udmVydENhc2UgPSBtb2RlID09IENhc2VDb252ZXJzaW9uTW9kZTo6TG93
ZXIgPyB1X3N0clRvTG93ZXIgOiB1X3N0clRvVXBwZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oY29udmVydENhc2UsIGJ1ZmZlciwgU3RyaW5nVmlldyB7
IHMgfS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSwgbG9jYWxlLnV0ZjgoKS5k
YXRhKCkpOworICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdV9lcnJvck5hbWUoc3RhdHVzKSk7CiAK
ICAgICAvLyAxOC4gUmV0dXJuIEwuCi0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvd2VyKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNUb0xvY2Fs
ZUxvd2VyQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMu
aCBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaAppbmRleCBiOTc5YWQ2
YTc1OGIzMzUxZDExZGI0NmZhMTRmNjhjZjg0NWZmOGZmLi5iNmU1Y2RmODUyZmJhZTkxNDI5NDI0
YTlkZmJmYWIyYTk1NjkyMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2lj
dS9JQ1VIZWxwZXJzLmgKKysrIGIvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVy
cy5oCkBAIC0yNSwyMSArMjUsODggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx0dXBs
ZT4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIG5hbWVzcGFjZSBXVEYgewogCi1pbmxpbmUgYm9vbCBuZWVkc1RvR3Jvd1RvUHJvZHVjZUNT
dHJpbmcoVUVycm9yQ29kZSBlcnJvckNvZGUpCitjb25zdGV4cHIgYm9vbCBuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUJ1ZmZlcihVRXJyb3JDb2RlKTsKK2NvbnN0ZXhwciBib29sIG5lZWRzVG9Hcm93VG9Q
cm9kdWNlQ1N0cmluZyhVRXJyb3JDb2RlKTsKKworLy8gVXNlIHRoaXMgdG8gY2FsbCBhIGZ1bmN0
aW9uIGZyb20gSUNVIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKy8vIC0gVGFr
ZXMgYSBidWZmZXIgcG9pbnRlciBhbmQgY2FwYWNpdHkuCisvLyAtIFJldHVybnMgdGhlIGxlbmd0
aCBvZiB0aGUgYnVmZmVyIG5lZWRlZC4KKy8vIC0gVGFrZXMgYSBVRXJyb3JDb2RlKiBhcyBpdHMg
bGFzdCBhcmd1bWVudCwgcmV0dXJuaW5nIHRoZSBzdGF0dXMsIGluY2x1ZGluZyBVX0JVRkZFUl9P
VkVSRkxPV19FUlJPUi4KKy8vIFBhc3MgdGhlIGFyZ3VtZW50cywgYnV0IHBhc3MgYSBWZWN0b3Ig
aW4gcGxhY2Ugb2YgdGhlIGJ1ZmZlciBwb2ludGVyIGFuZCBjYXBhY2l0eSwgYW5kIGRvbid0IHBh
c3MgYSBVRXJyb3JDb2RlKi4KKy8vIFRoaXMgd2lsbCBjYWxsIHRoZSBmdW5jdGlvbiwgb25jZSBv
ciB0d2ljZSBhcyBuZWVkZWQsIHJlc2l6aW5nIHRoZSBidWZmZXIgYXMgbmVlZGVkLgorLy8KKy8v
IEV4YW1wbGU6CisvLworLy8gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOworLy8gICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWNhbF9nZXREZWZhdWx0VGlt
ZVpvbmUsIGJ1ZmZlcik7CisvLwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBl
bmFtZSAuLi5Bcmd1bWVudFR5cGVzPiBVRXJyb3JDb2RlIGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbihjb25zdCBGdW5jdGlvblR5cGUmLCBBcmd1bWVudFR5cGVzJiYuLi4pOworCisvLyBJbXBs
ZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBkZWNsYXJlZCBhYm92ZS4KKworY29uc3RleHBy
IGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoVUVycm9yQ29kZSBlcnJvckNvZGUpCiB7
Ci0gICAgcmV0dXJuIGVycm9yQ29kZSA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUiB8fCBlcnJv
ckNvZGUgPT0gVV9TVFJJTkdfTk9UX1RFUk1JTkFURURfV0FSTklORzsKKyAgICByZXR1cm4gZXJy
b3JDb2RlID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOwogfQogCi1pbmxpbmUgYm9vbCBuZWVk
c1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihVRXJyb3JDb2RlIGVycm9yQ29kZSkKK2NvbnN0ZXhwciBi
b29sIG5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyhVRXJyb3JDb2RlIGVycm9yQ29kZSkKIHsK
LSAgICByZXR1cm4gZXJyb3JDb2RlID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SOworICAgIHJl
dHVybiBuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihlcnJvckNvZGUpIHx8IGVycm9yQ29kZSA9
PSBVX1NUUklOR19OT1RfVEVSTUlOQVRFRF9XQVJOSU5HOworfQorCituYW1lc3BhY2UgQ2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSAuLi5Bcmd1bWVudFR5cGVzPiBhdXRv
JiBmaW5kVmVjdG9yKFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eT4mIGJ1ZmZl
ciwgQXJndW1lbnRUeXBlcyYmLi4uKQoreworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEZpcnN0QXJndW1lbnRUeXBlLCB0eXBlbmFtZSAuLi5Bcmd1bWVudFR5cGVz
PiBhdXRvJiBmaW5kVmVjdG9yKEZpcnN0QXJndW1lbnRUeXBlJiYsIEFyZ3VtZW50VHlwZXMmJi4u
LiBhcmd1bWVudHMpCit7CisgICAgcmV0dXJuIGZpbmRWZWN0b3Ioc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOworfQorCitjb25zdGV4cHIgc3RkOjp0dXBsZTw+IGFy
Z3VtZW50VHVwbGUoKSB7IHJldHVybiB7IH07IH0KKwordGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RB
cmd1bWVudFR5cGUsIHR5cGVuYW1lIC4uLk90aGVyQXJndW1lbnRUeXBlcz4gYXV0byBhcmd1bWVu
dFR1cGxlKEZpcnN0QXJndW1lbnRUeXBlJiYsIE90aGVyQXJndW1lbnRUeXBlcyYmLi4uKTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSAuLi5PdGhlckFyZ3VtZW50VHlwZXM+IGF1dG8gYXJndW1lbnRUdXBsZShWZWN0b3I8
Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHk+JiBidWZmZXIsIE90aGVyQXJndW1lbnRUeXBl
cyYmLi4uIG90aGVyQXJndW1lbnRzKQoreworICAgIHJldHVybiB0dXBsZV9jYXQoc3RkOjptYWtl
X3R1cGxlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpLCBhcmd1bWVudFR1cGxlKHN0ZDo6
Zm9yd2FyZDxPdGhlckFyZ3VtZW50VHlwZXM+KG90aGVyQXJndW1lbnRzKS4uLikpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdEFyZ3VtZW50VHlwZSwgdHlwZW5hbWUgLi4uT3RoZXJBcmd1
bWVudFR5cGVzPiBhdXRvIGFyZ3VtZW50VHVwbGUoRmlyc3RBcmd1bWVudFR5cGUmJiBmaXJzdEFy
Z3VtZW50LCBPdGhlckFyZ3VtZW50VHlwZXMmJi4uLiBvdGhlckFyZ3VtZW50cykKK3sKKyAgICBy
ZXR1cm4gdHVwbGVfY2F0KHN0ZDo6bWFrZV90dXBsZShzdGQ6OmZvcndhcmQ8Rmlyc3RBcmd1bWVu
dFR5cGU+KGZpcnN0QXJndW1lbnQpKSwgYXJndW1lbnRUdXBsZShzdGQ6OmZvcndhcmQ8T3RoZXJB
cmd1bWVudFR5cGVzPihvdGhlckFyZ3VtZW50cykuLi4pKTsKK30KKworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5cGVuYW1lIC4uLkFyZ3VtZW50VHlwZXM+IFVFcnJvckNv
ZGUgY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKGNvbnN0IEZ1bmN0aW9uVHlwZSYgZnVuY3Rp
b24sIEFyZ3VtZW50VHlwZXMmJi4uLiBhcmd1bWVudHMpCit7CisgICAgYXV0byYgYnVmZmVyID0g
Q2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOjpmaW5kVmVjdG9yKHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudFR5cGVzPihhcmd1bWVudHMpLi4uKTsKKyAgICBidWZmZXIuZ3JvdyhidWZmZXIuY2FwYWNp
dHkoKSk7CisgICAgYXV0byBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byByZXN1bHRM
ZW5ndGggPSBhcHBseShmdW5jdGlvbiwgQ2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOjphcmd1
bWVudFR1cGxlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVudHMpLi4uLCAmc3Rh
dHVzKSk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICBidWZmZXIuc2hyaW5r
KHJlc3VsdExlbmd0aCk7CisgICAgZWxzZSBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIo
c3RhdHVzKSkgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGJ1ZmZl
ci5ncm93KHJlc3VsdExlbmd0aCk7CisgICAgICAgIGFwcGx5KGZ1bmN0aW9uLCBDYWxsQnVmZmVy
UHJvZHVjaW5nRnVuY3Rpb246OmFyZ3VtZW50VHVwbGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50VHlw
ZXM+KGFyZ3VtZW50cykuLi4sICZzdGF0dXMpKTsKKyAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhz
dGF0dXMpKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKIH0KIAogfQogCit1c2luZyBXVEY6
OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbjsKIHVzaW5nIFdURjo6bmVlZHNUb0dyb3dUb1By
b2R1Y2VDU3RyaW5nOwogdXNpbmcgV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBmOWVkNWJiYjNiN2I2OTJk
NTdjZGE5NDNmZjA2ZjMyYWJiNjM0NjZjLi41YmRjZTg5Y2E2NTgxMWFlMDUwOWY0YTBlYWNiZWIz
YzgzMDljM2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0x
ODMxLDIxICsxODMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb250YWluc0thbmFMZXR0ZXJz
KGNvbnN0IFN0cmluZyYgcGF0dGVybikKIHN0YXRpYyB2b2lkIG5vcm1hbGl6ZUNoYXJhY3RlcnMo
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVmVjdG9yPFVDaGFyPiYg
YnVmZmVyKQogewogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIGNv
bnN0IFVOb3JtYWxpemVyMiogbm9ybWFsaXplciA9IHVub3JtMl9nZXRORkNJbnN0YW5jZSgmc3Rh
dHVzKTsKKyAgICBhdXRvKiBub3JtYWxpemVyID0gdW5vcm0yX2dldE5GQ0luc3RhbmNlKCZzdGF0
dXMpOwogICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiAKLSAgICBidWZmZXIucmVzaXpl
KGxlbmd0aCk7CisgICAgYnVmZmVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCi0gICAgYXV0
byBub3JtYWxpemVkTGVuZ3RoID0gdW5vcm0yX25vcm1hbGl6ZShub3JtYWxpemVyLCBjaGFyYWN0
ZXJzLCBsZW5ndGgsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgQVNTRVJU
KFVfU1VDQ0VTUyhzdGF0dXMpIHx8IG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykp
OwotCi0gICAgYnVmZmVyLnJlc2l6ZShub3JtYWxpemVkTGVuZ3RoKTsKLQotICAgIGlmIChVX1NV
Q0NFU1Moc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgIHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgY2hhcmFjdGVycywgbGVuZ3Ro
LCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOworICAgIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1bm9ybTJfbm9ybWFsaXplLCBub3JtYWxpemVyLCBjaGFyYWN0
ZXJzLCBsZW5ndGgsIGJ1ZmZlcik7CiAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398655</attachid>
            <date>2020-05-06 14:06:17 -0700</date>
            <delta_ts>2020-05-06 14:31:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211499-20200506140617.patch</filename>
            <type>text/plain</type>
            <size>33273</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YzU0N2VlNTBhMTljYjQzNmQyZmNlNTJhZTFiNWQ1YmE5MjNiYjQwLi40ZDliY2E3YTMyYTM3YTM4
ZTRlYTdkZGE4ZDExZjlkMWVjYzNjNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0wNS0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBhIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0
aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRUaW1lWm9uZSk6IFVz
ZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24uCisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVRpbWVab25lTmFtZSk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdCBjb25zdCk6IERpdHRvLgorICAgICAgICAoSlNDOjpJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBydW50
aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRvQ2Fu
b25pY2FsKTogRGl0dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6Omxhbmd1YWdlKTogRGl0
dG8uCisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OnNjcmlwdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsTG9jYWxlOjpyZWdpb24pOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQg
Y29uc3QpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyBjb25zdCk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6Omxhbmd1YWdlVGFnRm9yTG9jYWxlSUQpOiBEaXR0by4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbCBjb25zdCk6IERpdHRvLgorICAgICAgICAo
SlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzIGNvbnN0KTogRGl0dG8u
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0
b0xvY2FsZUNhc2UpOiBEaXR0by4KKwogMjAyMC0wNS0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2lzT3duZWRCeU1h
aW5UaHJlYWQgPT0gaXNNYWluVGhyZWFkKCkpIHdoZW4gd2ViIGluc3BlY3RpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjQ2
N2ZmMjZkN2NlM2VkN2Y1NThhNTY4NmE1NzNhYzI1YmRkMTY5Mi4uZWM0YWIyNzNjMzM3MzUzYWZh
MmRjYmJhZGQzOTU1MjhhNjNkNzA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNS0wNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBhIGhlbHBlciBm
b3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxl
ZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBmaXJzdCBjdXQgdmVyc2lvbiBpcyByZWFkeSB0byBi
ZSB1c2VkIGluIG1vc3QsIGJ1dCBub3QgYWxsLCBvZiB0aGUgcGxhY2VzIHdlIHVzZSB0aGUKKyAg
ICAgICAgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIgZnVuY3Rpb24uIFRoZSBwbGFjZXMgaXQg
aXMgbm90IHJpZ2h0IGZvciB5ZXQgYXJlIG9uZXMgdGhhdCBoYXZlCisgICAgICAgIHNwZWNpYSBj
b25zaWRlcmF0aW9ucyBiZWNhdXNlIG9mIG51bGwgY2hhcmFjdGVyIHRlcm1pbmF0b3Jpb24sIG9y
IGRlc3RpbmF0aW9ucyB0aGF0IGFyZQorICAgICAgICBub3QgYSBWZWN0b3IuIExhdGVyIHdlIGNh
biByZWZpbmUgdGhhdCBmdXJ0aGVyLCBpZiB3ZSBsaWtlLCBhbmQgcG9zc2libHkgdXNlIHNvbWV0
aGluZworICAgICAgICBzaW1pbGFyIGluIGNhbGwgc2l0ZXMgdGhhdCB1c2UgbmVlZHNUb0dyb3dU
b1Byb2R1Y2VDU3RyaW5nIGFzIHdlbGwuCisKKyAgICAgICAgKiB3dGYvdW5pY29kZS9pY3UvSUNV
SGVscGVycy5oOgorICAgICAgICAoV1RGOjpuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcik6IENo
YW5nZWQgdG8gY29uc3RleHByLCBzaW5jZSB3ZSBjYW4uCisgICAgICAgIChXVEY6Om5lZWRzVG9H
cm93VG9Qcm9kdWNlQ1N0cmluZyk6IERpdHRvLgorICAgICAgICAoV1RGOjpDYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb246OmZpbmRWZWN0b3IpOiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZGV0YWls
CisgICAgICAgIG9mIGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbi4KKyAgICAgICAgKFdURjo6
Q2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uOjphcmd1bWVudFR1cGxlKTogRGl0dG8uCisgICAg
ICAgIChXVEY6OmNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbik6IEFkZGVkLgorCiAyMDIwLTA1
LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbm93
LXVubmVlZGVkIFVTRShHUkFNTUFSX0NIRUNLSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBkYzM4Y2MyMTRi
M2IyY2VkNmVlZDI1Zjc4NDI2YTIwNjkyM2UzY2YuLmYwMjkzZGVmYTQ0Y2I2NDllNTNlYWMzNjg3
MDZiMjkxZjU1YWZkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNS0wNiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBhIGhlbHBlciBm
b3IgdGhlIHBhdHRlcm4gb2YgSUNVIGZ1bmN0aW9ucyB0aGF0IG1heSBuZWVkIHRvIGJlIGNhbGxl
ZCB0d2ljZSB0byBwb3B1bGF0ZSBhIGJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpub3JtYWxpemVDaGFyYWN0ZXJzKTogVXNlIGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbi4KKwogMjAyMC0wNS0wNiAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFYOiBJbXBsZW1lbnQgYWNjZXNzaWJpbGl0eSBvZiBIVE1MIDUuMSBE
cmFnICYgRHJvcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5jcHAKaW5kZXggNzQ0OTUyZjIwOGUxMWRjNTI5NDg0ZDIxODI2YTQ0MjNi
NWM0MGVkYi4uNjg2YmU3Yjk5NDkyYTdhM2U0NDg0YmY4ODNmN2UxNzNiZDFmN2ViZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCkBAIC0xMDUsMjcgKzEwNSwxNSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzVVRD
RXF1aXZhbGVudChTdHJpbmdWaWV3IHRpbWVab25lKQogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1kZWZhdWx0dGltZXpvbmUKIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFRpbWVab25lKCkK
IHsKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBTdHJpbmcgY2Fu
b25pY2FsOwogCi0gICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMyKTsKLSAgICBhdXRvIGJ1
ZmZlckxlbmd0aCA9IHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCksICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihz
dGF0dXMpKSB7Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgYnVmZmVy
Lmdyb3coYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgdWNhbF9nZXREZWZhdWx0VGltZVpvbmUoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCAmc3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9yPFVD
aGFyLCAzMj4gYnVmZmVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lLCBidWZmZXIpOwogICAgIGlmIChVX1NVQ0NF
U1Moc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIFZl
Y3RvcjxVQ2hhciwgMzI+IGNhbm9uaWNhbEJ1ZmZlcigzMik7Ci0gICAgICAgIGF1dG8gY2Fub25p
Y2FsTGVuZ3RoID0gdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlckxlbmd0aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsQnVmZmVyLnNpemUo
KSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1
ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
ICAgICAgICBjYW5vbmljYWxCdWZmZXIuZ3JvdyhjYW5vbmljYWxMZW5ndGgpOwotICAgICAgICAg
ICAgdWNhbF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0
aCwgY2Fub25pY2FsQnVmZmVyLmRhdGEoKSwgY2Fub25pY2FsTGVuZ3RoLCBudWxscHRyLCAmc3Rh
dHVzKTsKLSAgICAgICAgfQorICAgICAgICBWZWN0b3I8VUNoYXIsIDMyPiBjYW5vbmljYWxCdWZm
ZXI7CisgICAgICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dl
dENhbm9uaWNhbFRpbWVab25lSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGNhbm9u
aWNhbEJ1ZmZlciwgbnVsbHB0cik7CiAgICAgICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSkKLSAg
ICAgICAgICAgIGNhbm9uaWNhbCA9IFN0cmluZyhjYW5vbmljYWxCdWZmZXIuZGF0YSgpLCBjYW5v
bmljYWxMZW5ndGgpOworICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNhbEJ1
ZmZlcik7CiAgICAgfQogCiAgICAgaWYgKGNhbm9uaWNhbC5pc051bGwoKSB8fCBpc1VUQ0VxdWl2
YWxlbnQoY2Fub25pY2FsKSkKQEAgLTE0Niw3ICsxMzQsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9u
aWNhbGl6ZVRpbWVab25lTmFtZShjb25zdCBTdHJpbmcmIHRpbWVab25lTmFtZSkKICAgICBkbyB7
CiAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICAgICAgaW50MzJfdCBpYW5hVGlt
ZVpvbmVMZW5ndGg7Ci0gICAgICAgIC8vIFRpbWUgem9uZSBuYW1lcyBhcmUgcmVzcHJlc2VudGVk
IGFzIFVDaGFyW10gaW4gYWxsIHJlbGF0ZWQgSUNVIGFwaXMuCisgICAgICAgIC8vIFRpbWUgem9u
ZSBuYW1lcyBhcmUgcmVwcmVzZW50ZWQgYXMgVUNoYXJbXSBpbiBhbGwgcmVsYXRlZCBJQ1UgQVBJ
cy4KICAgICAgICAgY29uc3QgVUNoYXIqIGlhbmFUaW1lWm9uZSA9IHVlbnVtX3VuZXh0KHRpbWVa
b25lcywgJmlhbmFUaW1lWm9uZUxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIEFTU0VSVChVX1NV
Q0NFU1Moc3RhdHVzKSk7CiAKQEAgLTE2MywxNiArMTUxLDEwIEBAIHN0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogICAgICAg
ICAvLyAxLiBMZXQgaWFuYVRpbWVab25lIGJlIHRoZSBab25lIG9yIExpbmsgbmFtZSBvZiB0aGUg
SUFOQSBUaW1lIFpvbmUgRGF0YWJhc2Ugc3VjaCB0aGF0IHRpbWVab25lLCBjb252ZXJ0ZWQgdG8g
dXBwZXIgY2FzZSBhcyBkZXNjcmliZWQgaW4gNi4xLCBpcyBlcXVhbCB0byBpYW5hVGltZVpvbmUs
IGNvbnZlcnRlZCB0byB1cHBlciBjYXNlIGFzIGRlc2NyaWJlZCBpbiA2LjEuCiAgICAgICAgIC8v
IDIuIElmIGlhbmFUaW1lWm9uZSBpcyBhIExpbmsgbmFtZSwgdGhlbiBsZXQgaWFuYVRpbWVab25l
IGJlIHRoZSBjb3JyZXNwb25kaW5nIFpvbmUgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIOKAnGJh
Y2t3YXJk4oCdIGZpbGUgb2YgdGhlIElBTkEgVGltZSBab25lIERhdGFiYXNlLgogCi0gICAgICAg
IFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcihpYW5hVGltZVpvbmVMZW5ndGgpOwotICAgICAgICBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIGF1dG8gY2Fub25pY2FsTGVuZ3RoID0gdWNh
bF9nZXRDYW5vbmljYWxUaW1lWm9uZUlEKGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3Ro
LCBidWZmZXIuZGF0YSgpLCBpYW5hVGltZVpvbmVMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwot
ICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAg
ICAgICAgYnVmZmVyLmdyb3coY2Fub25pY2FsTGVuZ3RoKTsKLSAgICAgICAgICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVjYWxfZ2V0Q2Fub25pY2FsVGltZVpvbmVJRChp
YW5hVGltZVpvbmUsIGlhbmFUaW1lWm9uZUxlbmd0aCwgYnVmZmVyLmRhdGEoKSwgY2Fub25pY2Fs
TGVuZ3RoLCBudWxscHRyLCAmc3RhdHVzKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQoVV9T
VUNDRVNTKHN0YXR1cykpOwotICAgICAgICBjYW5vbmljYWwgPSBTdHJpbmcoYnVmZmVyLmRhdGEo
KSwgY2Fub25pY2FsTGVuZ3RoKTsKKyAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwor
ICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1Y2FsX2dl
dENhbm9uaWNhbFRpbWVab25lSUQsIGlhbmFUaW1lWm9uZSwgaWFuYVRpbWVab25lTGVuZ3RoLCBi
dWZmZXIsIG51bGxwdHIpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNT
KHN0YXR1cykpOworICAgICAgICBjYW5vbmljYWwgPSBTdHJpbmcoYnVmZmVyKTsKICAgICB9IHdo
aWxlIChjYW5vbmljYWwuaXNOdWxsKCkpOwogICAgIHVlbnVtX2Nsb3NlKHRpbWVab25lcyk7CiAK
QEAgLTYzNiwxNCArNjE4LDggQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgU3RyaW5n
IHNrZWxldG9uID0gc2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgU3RyaW5nVmlldyBz
a2VsZXRvblZpZXcoc2tlbGV0b24pOwotICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5CdWZm
ZXIoMzIpOwotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBhdXRvIHBhdHRlcm5MZW5n
dGggPSB1ZGF0cGdfZ2V0QmVzdFBhdHRlcm5XaXRoT3B0aW9ucyhnZW5lcmF0b3IsIHNrZWxldG9u
Vmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFU
UEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJu
QnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVm
ZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBw
YXR0ZXJuQnVmZmVyLmdyb3cocGF0dGVybkxlbmd0aCk7Ci0gICAgICAgIHVkYXRwZ19nZXRCZXN0
UGF0dGVybihnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwg
c2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkxlbmd0
aCwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRlcm5CdWZmZXI7
CisgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRCZXN0
UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IsIHNrZWxldG9uVmlldy51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgc2tlbGV0b25WaWV3Lmxlbmd0aCgpLCBVREFUUEdfTUFUQ0hfSE9VUl9GSUVM
RF9MRU5HVEgsIHBhdHRlcm5CdWZmZXIpOwogICAgIHVkYXRwZ19jbG9zZShnZW5lcmF0b3IpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewogICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3Mp
OwpAQCAtNjYyLDEyICs2MzgsMTEgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAg
IGJvb2wgaXNFc2NhcGVkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaGFzSG91ciA9IGZhbHNlOwot
ICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBwYXR0ZXJuTGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIFVDaGFyIGMgPSBwYXR0ZXJuQnVmZmVyW2ldOworICAgICAgICBmb3IgKGF1dG8mIGMg
OiBwYXR0ZXJuQnVmZmVyKSB7CiAgICAgICAgICAgICBpZiAoYyA9PSAnXCcnKQogICAgICAgICAg
ICAgICAgIGlzRXNjYXBlZCA9ICFpc0VzY2FwZWQ7CiAgICAgICAgICAgICBlbHNlIGlmICghaXNF
c2NhcGVkICYmIChjID09ICdoJyB8fCBjID09ICdIJyB8fCBjID09ICdrJyB8fCBjID09ICdLJykp
IHsKLSAgICAgICAgICAgICAgICBwYXR0ZXJuQnVmZmVyW2ldID0gaG91cjsKKyAgICAgICAgICAg
ICAgICBjID0gaG91cjsKICAgICAgICAgICAgICAgICBoYXNIb3VyID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtNjc1LDcgKzY1MCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICAgICAgICAgIG1faG91ckN5Y2xlID0gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgU3Ry
aW5nVmlldyBwYXR0ZXJuKHBhdHRlcm5CdWZmZXIuZGF0YSgpLCBwYXR0ZXJuTGVuZ3RoKTsKKyAg
ICBTdHJpbmdWaWV3IHBhdHRlcm4ocGF0dGVybkJ1ZmZlci5kYXRhKCksIHBhdHRlcm5CdWZmZXIu
c2l6ZSgpKTsKICAgICBzZXRGb3JtYXRzRnJvbVBhdHRlcm4ocGF0dGVybik7CiAKICAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CkBAIC04OTQsMTggKzg2OSwxMiBAQCBKU1ZhbHVlIEludGxEYXRl
VGltZUZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWx1ZSkgYwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZp
bml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXQoKSJfcyk7CiAKLSAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwot
ICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdWRhdF9mb3JtYXQobV9kYXRlRm9ybWF0LmdldCgpLCB2
YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgbnVsbHB0ciwgJnN0YXR1cyk7Ci0g
ICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwot
ICAgICAgICB1ZGF0X2Zvcm1hdChtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0
YSgpLCByZXN1bHRMZW5ndGgsIG51bGxwdHIsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8
VUNoYXIsIDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwg
bnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2
YWx1ZSJfcyk7CiAKLSAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQuZGF0YSgp
LCByZXN1bHRMZW5ndGgpKTsKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKIH0KIAogc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZp
ZWxkIGZpZWxkKQpAQCAtOTg2LDE0ICs5NTUsOCBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVy
YXRvciJfcyk7CiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPFVDaGFy
LCAzMj4gcmVzdWx0KDMyKTsKLSAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVkYXRfZm9ybWF0Rm9y
RmllbGRzKG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5z
aXplKCksIGZpZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9k
dWNlQnVmZmVyKHN0YXR1cykpIHsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
ICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAgICB1ZGF0X2Zvcm1hdEZvckZp
ZWxkcyhtX2RhdGVGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5n
dGgsIGZpZWxkcy5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxVQ2hhciwgMzI+
IHJlc3VsdDsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdF9m
b3JtYXRGb3JGaWVsZHMsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRz
LmdldCgpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZh
bHVlIl9zKTsKIApAQCAtMTAwMSw5ICs5NjQsMTAgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYK
ICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVz
dWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmlu
ZyhyZXN1bHQpOwogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgImxpdGVyYWwiX3MpOwogCisgICAgaW50MzJfdCByZXN1bHRMZW5ndGggPSByZXN1bHQuc2l6
ZSgpOwogICAgIGludDMyX3QgcHJldmlvdXNFbmRJbmRleCA9IDA7CiAgICAgaW50MzJfdCBiZWdp
bkluZGV4ID0gMDsKICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKaW5kZXggYzI2NDhiZGQxZWZiNGJiYzM1M2Iz
NmNlMTc0ZGFmMjQ5YmZhNjEwNC4uOTEyZjRiNTYyNjAwYmZjMDhlOTE0NTY0YTc5ODRlZmRmMmRj
NmExZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAK
QEAgLTkwLDE4ICs5MCwxMiBAQCBDU3RyaW5nIExvY2FsZUlEQnVpbGRlcjo6dG9DYW5vbmljYWwo
KQogewogICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkpOwogCi0gICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAg
IGF1dG8gcmVzdWx0TGVuZ3RoID0gdWxvY19jYW5vbmljYWxpemUobV9idWZmZXIuZGF0YSgpLCBy
ZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dy
b3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRM
ZW5ndGgpOwotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVsb2NfY2Fu
b25pY2FsaXplKG1fYnVmZmVyLmRhdGEoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCAm
c3RhdHVzKTsKLSAgICB9CisgICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQ7CisgICAgYXV0byBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19jYW5vbmljYWxpemUsIG1f
YnVmZmVyLmRhdGEoKSwgcmVzdWx0KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAg
ICAgIHJldHVybiBDU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gQ1N0cmluZyhyZXN1bHQuZGF0YSgp
LCByZXN1bHRMZW5ndGgpOworICAgIHJldHVybiBDU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3Vs
dC5zaXplKCkpOwogfQogCiAvLyBCZWNhdXNlIElDVSdzIEMgQVBJIGRvZXNuJ3QgaGF2ZSBzZXRb
TGFuZ3VhZ2V8U2NyaXB0fFJlZ2lvbl0gZnVuY3Rpb25zLi4uCkBAIC0zODYsMTcgKzM4MCwxMCBA
QCBjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OmJhc2VOYW1lKCkKIGNvbnN0IFN0cmluZyYgSW50
bExvY2FsZTo6bGFuZ3VhZ2UoKQogewogICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBWZWN0b3I8
Y2hhciwgOD4gYnVmZmVyKDgpOwotICAgICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfZ2V0
TGFuZ3VhZ2UobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCks
ICZzdGF0dXMpOwotICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVz
KSkgewotICAgICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKLSAgICAgICAgICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgICAgIHVsb2NfZ2V0TGFuZ3VhZ2UobV9s
b2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgICAgICBt
X2xhbmd1YWdlID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgICAg
IFZlY3RvcjxjaGFyLCA4PiBidWZmZXI7CisgICAgICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVsb2NfZ2V0TGFuZ3VhZ2UsIG1fbG9jYWxlSUQuZGF0YSgpLCBi
dWZmZXIpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHN0YXR1cywgVV9TVUNDRVNTKHN0YXR1cykp
OworICAgICAgICBtX2xhbmd1YWdlID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9sYW5ndWFnZTsKIH0KQEAgLTQwNSwxNyArMzkyLDEw
IEBAIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6bGFuZ3VhZ2UoKQogY29uc3QgU3RyaW5nJiBJ
bnRsTG9jYWxlOjpzY3JpcHQoKQogewogICAgIGlmIChtX3NjcmlwdC5pc051bGwoKSkgewotICAg
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgVmVjdG9yPGNo
YXIsIDQ+IGJ1ZmZlcig0KTsKLSAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldFNj
cmlwdChtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0
YXR1cyk7Ci0gICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7
Ci0gICAgICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICAgICAgdWxvY19nZXRTY3JpcHQobV9sb2NhbGVJ
RC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgICAg
IH0KLSAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgICAgICBtX3Njcmlw
dCA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgICAgICBWZWN0b3I8
Y2hhciwgND4gYnVmZmVyOworICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbih1bG9jX2dldFNjcmlwdCwgbV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlcik7Cisg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVzLCBVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgICAg
IG1fc2NyaXB0ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogICAgIH0K
ICAgICByZXR1cm4gbV9zY3JpcHQ7CiB9CkBAIC00MjQsMTcgKzQwNCwxMCBAQCBjb25zdCBTdHJp
bmcmIEludGxMb2NhbGU6OnNjcmlwdCgpCiBjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OnJlZ2lv
bigpCiB7CiAgICAgaWYgKG1fcmVnaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICBWZWN0b3I8Y2hhciwgMz4gYnVmZmVyKDMp
OwotICAgICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfZ2V0Q291bnRyeShtX2xvY2FsZUlE
LmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7Ci0gICAgICAg
IGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgICAgICBi
dWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgICAgICAgICAgdWxvY19nZXRDb3VudHJ5KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwotICAgICAgICB9Ci0gICAgICAgIEFT
U0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7Ci0KLSAgICAgICAgbV9yZWdpb24gPSBTdHJpbmcoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDM+IGJ1ZmZl
cjsKKyAgICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxv
Y19nZXRDb3VudHJ5LCBtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyKTsKKyAgICAgICAgQVNTRVJU
X1VOVVNFRChzdGF0dXMsIFVfU1VDQ0VTUyhzdGF0dXMpKTsKKyAgICAgICAgbV9yZWdpb24gPSBT
dHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgfQogICAgIHJldHVybiBt
X3JlZ2lvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5jcHAKaW5kZXggNWU3NDRkNWE3Y2E5ZjQwZTc1ZmU0YjM0NWJhZjBmOGJiYmMy
ZTU1NC4uZTZkODU4MDNhMDAxMzVkZDI2YWY4ZmEzMGUwYTJmMjYzMmMzOTAyOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAg
LTM0NywxOCArMzQ3LDEyIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgY29uCiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3Rv
cjxVQ2hhciwgMzI+IGJ1ZmZlcigzMik7Ci0gICAgYXV0byBsZW5ndGggPSB1bnVtX2Zvcm1hdERv
dWJsZShtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCksIG51bGxwdHIsICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1
ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIGJ1ZmZlci5ncm93KGxlbmd0aCk7Ci0gICAgICAgIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdW51bV9mb3JtYXREb3VibGUobV9udW1iZXJG
b3JtYXQuZ2V0KCksIHZhbHVlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIsICZzdGF0
dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0
dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVt
YmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgYnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwogCi0gICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtZm9ybWF0bnVtYmVyCkBAIC0zNzUsMTggKzM2OSwxMiBAQCBKU1ZhbHVlIEludGxO
dW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0JpZ0lu
dCogdmFsdWUpCiAgICAgQVNTRVJUKHN0cmluZy5pczhCaXQoKSAmJiBzdHJpbmcuaXNBbGxBU0NJ
SSgpKTsKICAgICBhdXRvKiByYXdTdHJpbmcgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihzdHJpbmcuY2hhcmFjdGVyczgoKSk7CiAKLSAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwotICAgIGF1dG8gbGVu
Z3RoID0gdW51bV9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0LmdldCgpLCByYXdTdHJpbmcs
IHN0cmluZy5sZW5ndGgoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgbnVsbHB0ciwg
JnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsK
LSAgICAgICAgYnVmZmVyLmdyb3cobGVuZ3RoKTsKLSAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwotICAgICAgICB1bnVtX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXQuZ2V0KCksIHJh
d1N0cmluZywgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIG51bGxwdHIs
ICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFs
LCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmF3U3RyaW5nLCBzdHJpbmcubGVuZ3RoKCksIGJ1ZmZl
ciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBC
aWdJbnQuIl9zKTsKIAotICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlci5kYXRh
KCksIGxlbmd0aCkpOworICAgIHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpOwog
fQogCiBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCkBAIC01MzksMTcgKzUyNywxMiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJf
cyk7CiAKLSAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0
TGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCks
IHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBmaWVsZEl0ci5nZXQoKSwgJnN0
YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKLSAg
ICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRM
ZW5ndGgpOwotICAgICAgICB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1h
dC5nZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgZmllbGRJdHIuZ2V0
KCksICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CisgICAg
c3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9y
RmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3VsdCwgZmllbGRJdHIuZ2V0
KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CiAKLSAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1
bHRMZW5ndGgpOworICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdCk7CiAKICAg
ICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29u
dGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDU3MWE5OTczNzI3ZWNhNTU5ZTgzNTk3OWM0MWY1
NDBlNmRiN2U5NmUuLjYyOTkyNTQ5ZWZiYTVlY2JjOWQwODljMDE0NDUwNzQ0NGU5ZDRhY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xNzgs
MjMgKzE3OCwxNyBAQCBWZWN0b3I8Y2hhciwgMzI+IGxvY2FsZUlEQnVmZmVyRm9yTGFuZ3VhZ2VU
YWcoY29uc3QgQ1N0cmluZyYgdGFnKQogCiBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRChj
b25zdCBjaGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogewotICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVyKDMyKTsK
LSAgICBhdXRvIGxlbmd0aCA9IHVsb2NfdG9MYW5ndWFnZVRhZyhsb2NhbGVJRCwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSwgZmFsc2UsICZzdGF0dXMpOwotICAgIGlmIChuZWVkc1RvR3Jv
d1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7Ci0gICAgICAgIGJ1ZmZlci5ncm93KGxlbmd0aCk7
Ci0gICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWxvY190b0xhbmd1YWdl
VGFnKGxvY2FsZUlELCBidWZmZXIuZGF0YSgpLCBsZW5ndGgsIGZhbHNlLCAmc3RhdHVzKTsKLSAg
ICB9CisgICAgVmVjdG9yPGNoYXIsIDMyPiBidWZmZXI7CisgICAgYXV0byBzdGF0dXMgPSBjYWxs
QnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY190b0xhbmd1YWdlVGFnLCBsb2NhbGVJRCwgYnVm
ZmVyLCBmYWxzZSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFy
aWFibGVzIHRoYXQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLgog
ICAgIC8vIFRoaXMgbXVzdCBiZSBpbW1vcnRhbCB0byBtYWtlIGNvbmN1cnJlbnQgcmVmL2RlcmVm
IHNhZmUuCiAgICAgaWYgKGlzSW1tb3J0YWwpCi0gICAgICAgIHJldHVybiBTdHJpbmcoU3RyaW5n
SW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAogY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuY3BwCmluZGV4IDZhMjA5MGRjNGIyYWRhNGZhYTQ4ZWIyYjNiZmNmYWMxMTdlMDBm
YjAuLmE4ZGNjN2NmZTkzNDY1OTY1MGE4ODYzMzQ5NjI4YTZmOGJiMTVjNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuY3BwCkBAIC0yNDUsMjAgKzI0NSwxNCBAQCBTdHJpbmcgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogCiAg
ICAgYXV0byBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBtX251bWVyaWMgPyB1cmVsZGF0ZWZtdF9mb3Jt
YXROdW1lcmljIDogdXJlbGRhdGVmbXRfZm9ybWF0OwogCi0gICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMyKTsKLSAgICBh
dXRvIHJlc3VsdExlbmd0aCA9IGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVG
b3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCBy
ZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZm
ZXIoc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHJl
c3VsdC5ncm93KHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIGZvcm1hdFJlbGF0aXZlVGltZShtX3Jl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCBy
ZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsICZzdGF0dXMpOwotICAgIH0KKyAgICBWZWN0b3I8
VUNoYXIsIDMyPiByZXN1bHQ7CisgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24oZm9ybWF0UmVsYXRpdmVUaW1lLCBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIu
Z2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQpOwogICAgIGlmIChVTkxJS0VM
WShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRh
KCksIHJlc3VsdExlbmd0aCk7CisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQpOwogfQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGltZQpAQCAtMjg4LDE3
ICsyODIsMTIgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKIAogICAgIGRvdWJsZSBhYnNWYWx1
ZSA9IHN0ZDo6YWJzKHZhbHVlKTsKIAotICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcigzMik7
Ci0gICAgYXV0byBudW1iZXJMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251
bWJlckZvcm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCks
IGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VC
dWZmZXIoc3RhdHVzKSkgewotICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IGJ1ZmZlci5ncm93KG51bWJlckxlbmd0aCk7Ci0gICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9y
RmllbGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgbnVt
YmVyTGVuZ3RoLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7Ci0gICAgfQorICAgIFZlY3RvcjxV
Q2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNW
YWx1ZSwgYnVmZmVyLCBpdGVyYXRvci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CiAKLSAgICBhdXRvIGZvcm1hdHRlZE51
bWJlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgpOworICAgIGF1dG8gZm9y
bWF0dGVkTnVtYmVyID0gU3RyaW5nKGJ1ZmZlcik7CiAKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpT
QXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlm
ICghcGFydHMpCkBAIC0zMTEsNyArMzAwLDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKICAg
ICBzaXplX3QgbnVtYmVyRW5kID0gMDsKICAgICBzaXplX3QgbnVtYmVyU3RhcnQgPSBmb3JtYXR0
ZWRSZWxhdGl2ZVRpbWUuZmluZChmb3JtYXR0ZWROdW1iZXIpOwogICAgIGlmIChudW1iZXJTdGFy
dCAhPSBub3RGb3VuZCkgewotICAgICAgICBudW1iZXJFbmQgPSBudW1iZXJTdGFydCArIG51bWJl
ckxlbmd0aDsKKyAgICAgICAgbnVtYmVyRW5kID0gbnVtYmVyU3RhcnQgKyBidWZmZXIuc2l6ZSgp
OwogCiAgICAgICAgIC8vIEFkZCBpbml0aWFsIGxpdGVyYWwgaWYgdGhlcmUgaXMgb25lLgogICAg
ICAgICBpZiAobnVtYmVyU3RhcnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDEzZmNmZDgzZjAxZmM1MzM0MDFjZjRmZGUw
ZDFhZmJmNTU3MTBlOWEuLjRjODYyODljNDc0MmI4MDBkZTkzN2RmYWRiN2E1OTEzMGIxNzI3NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcApAQCAtMTU1NywxMiArMTU1Nyw2IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2Fs
ZUNhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gY29udmVydENhc2UgPSBbJl0gKGF1dG8mJi4uLiBh
cmdzKSB7Ci0gICAgICAgIGlmIChtb2RlID09IENhc2VDb252ZXJzaW9uTW9kZTo6TG93ZXIpCi0g
ICAgICAgICAgICByZXR1cm4gdV9zdHJUb0xvd2VyKHN0ZDo6Zm9yd2FyZDxkZWNsdHlwZShhcmdz
KT4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gdV9zdHJUb1VwcGVyKHN0ZDo6Zm9yd2FyZDxk
ZWNsdHlwZShhcmdzKT4oYXJncykuLi4pOwotICAgIH07Ci0KICAgICAvLyAxLiBMZXQgTyBiZSBS
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxl
KHRoaXNWYWx1ZSkpCkBAIC0xNjA5LDEwICsxNjAzLDYgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGwKICAgICBpZiAobG9jYWxlLmlzTnVsbCgpKQogICAgICAgICBsb2NhbGUgPSAidW5kIl9zOwog
Ci0gICAgQ1N0cmluZyB1dGY4TG9jYWxlQnVmZmVyID0gbG9jYWxlLnV0ZjgoKTsKLSAgICBjb25z
dCBTdHJpbmdWaWV3IHZpZXcocyk7Ci0gICAgY29uc3QgaW50MzJfdCB2aWV3TGVuZ3RoID0gdmll
dy5sZW5ndGgoKTsKLQogICAgIC8vIERlbGVnYXRlIHRoZSBmb2xsb3dpbmcgc3RlcHMgdG8gaWN1
IHVfc3RyVG9Mb3dlciBvciB1X3N0clRvVXBwZXIuCiAgICAgLy8gMTMuIExldCBjcExpc3QgYmUg
YSBMaXN0IGNvbnRhaW5pbmcgaW4gb3JkZXIgdGhlIGNvZGUgcG9pbnRzIG9mIFMgYXMgZGVmaW5l
ZCBpbiBFUzIwMTUsIDYuMS40LCBzdGFydGluZyBhdCB0aGUgZmlyc3QgZWxlbWVudCBvZiBTLgog
ICAgIC8vIDE0LiBGb3IgZWFjaCBjb2RlIHBvaW50IGMgaW4gY3BMaXN0LCBpZiB0aGUgVW5pY29k
ZSBDaGFyYWN0ZXIgRGF0YWJhc2UgcHJvdmlkZXMgYSBsb3dlcigvdXBwZXIpIGNhc2UgZXF1aXZh
bGVudCBvZiBjIHRoYXQgaXMgZWl0aGVyIGxhbmd1YWdlIGluc2Vuc2l0aXZlIG9yIGZvciB0aGUg
bGFuZ3VhZ2UgbG9jYWxlLCB0aGVuIHJlcGxhY2UgYyBpbiBjcExpc3Qgd2l0aCB0aGF0L3Rob3Nl
IGVxdWl2YWxlbnQgY29kZSBwb2ludChzKS4KQEAgLTE2MjEsMjUgKzE2MTEsMTUgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGwKICAgICAvLyAxNy4gTGV0IEwgYmUgYSBTdHJpbmcgd2hvc2UgZWxl
bWVudHMgYXJlLCBpbiBvcmRlciwgdGhlIGVsZW1lbnRzIG9mIGN1TGlzdC4KIAogICAgIC8vIE1v
c3Qgc3RyaW5ncyBsb3dlci91cHBlciBjYXNlIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSBhcyBvcmln
aW5hbCwgc28gdHJ5IHRoYXQgZmlyc3QuCi0gICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcih2aWV3TGVuZ3RoKTsKLSAgICBTdHJpbmcg
bG93ZXI7Ci0gICAgY29uc3QgaW50MzJfdCByZXN1bHRMZW5ndGggPSBjb252ZXJ0Q2FzZShidWZm
ZXIuZGF0YSgpLCB2aWV3TGVuZ3RoLCB2aWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB2aWV3
TGVuZ3RoLCB1dGY4TG9jYWxlQnVmZmVyLmRhdGEoKSwgJmVycm9yKTsKLSAgICBpZiAoVV9TVUND
RVNTKGVycm9yKSkKLSAgICAgICAgbG93ZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKTsKLSAgICBlbHNlIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihlcnJvcikp
IHsKLSAgICAgICAgLy8gQ29udmVydGVkIGNhc2UgbmVlZHMgbW9yZSBzcGFjZSB0aGFuIG9yaWdp
bmFsLiBUcnkgYWdhaW4uCi0gICAgICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7
Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHJlc3VsdExlbmd0aCk7Ci0gICAgICAgIGNv
bnZlcnRDYXNlKGJ1ZmZlci5kYXRhKCksIHJlc3VsdExlbmd0aCwgdmlldy51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKSwgdmlld0xlbmd0aCwgdXRmOExvY2FsZUJ1ZmZlci5kYXRhKCksICZlcnJvcik7
Ci0gICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKLSAg
ICAgICAgbG93ZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgdV9lcnJvck5hbWUoZXJyb3IpKTsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKKyAgICBi
dWZmZXIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzLmxlbmd0aCgpKTsKKyAgICBhdXRvIGNvbnZl
cnRDYXNlID0gbW9kZSA9PSBDYXNlQ29udmVyc2lvbk1vZGU6Okxvd2VyID8gdV9zdHJUb0xvd2Vy
IDogdV9zdHJUb1VwcGVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKGNvbnZlcnRDYXNlLCBidWZmZXIsIFN0cmluZ1ZpZXcgeyBzIH0udXBjb252ZXJ0ZWRD
aGFyYWN0ZXJzKCksIHMubGVuZ3RoKCksIGxvY2FsZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHVfZXJyb3JOYW1lKHN0YXR1cykpOwogCiAgICAgLy8gMTguIFJldHVy
biBMLgotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCBsb3dlcikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nKGJ1ZmZlcikpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmggYi9Tb3VyY2UvV1RGL3d0
Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmgKaW5kZXggYjk3OWFkNmE3NThiMzM1MWQxMWRiNDZm
YTE0ZjY4Y2Y4NDVmZjhmZi4uYjZlNWNkZjg1MmZiYWU5MTQyOTQyNGE5ZGZiZmFiMmE5NTY5MjJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvaWN1L0lDVUhlbHBlcnMuaApAQCAtMjUsMjEgKzI1
LDg4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8dHVwbGU+CiAjaW5jbHVkZSA8dW5p
Y29kZS91dHlwZXMuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKIAotaW5saW5lIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKFVFcnJvckNvZGUg
ZXJyb3JDb2RlKQorY29uc3RleHByIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoVUVy
cm9yQ29kZSk7Citjb25zdGV4cHIgYm9vbCBuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmcoVUVy
cm9yQ29kZSk7CisKKy8vIFVzZSB0aGlzIHRvIGNhbGwgYSBmdW5jdGlvbiBmcm9tIElDVSB0aGF0
IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisvLyAtIFRha2VzIGEgYnVmZmVyIHBvaW50
ZXIgYW5kIGNhcGFjaXR5LgorLy8gLSBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBu
ZWVkZWQuCisvLyAtIFRha2VzIGEgVUVycm9yQ29kZSogYXMgaXRzIGxhc3QgYXJndW1lbnQsIHJl
dHVybmluZyB0aGUgc3RhdHVzLCBpbmNsdWRpbmcgVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IuCisv
LyBQYXNzIHRoZSBhcmd1bWVudHMsIGJ1dCBwYXNzIGEgVmVjdG9yIGluIHBsYWNlIG9mIHRoZSBi
dWZmZXIgcG9pbnRlciBhbmQgY2FwYWNpdHksIGFuZCBkb24ndCBwYXNzIGEgVUVycm9yQ29kZSou
CisvLyBUaGlzIHdpbGwgY2FsbCB0aGUgZnVuY3Rpb24sIG9uY2Ugb3IgdHdpY2UgYXMgbmVlZGVk
LCByZXNpemluZyB0aGUgYnVmZmVyIGFzIG5lZWRlZC4KKy8vCisvLyBFeGFtcGxlOgorLy8KKy8v
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKKy8vICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1
ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVjYWxfZ2V0RGVmYXVsdFRpbWVab25lLCBidWZmZXIpOwor
Ly8KK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRU
eXBlcz4gVUVycm9yQ29kZSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oY29uc3QgRnVuY3Rp
b25UeXBlJiwgQXJndW1lbnRUeXBlcyYmLi4uKTsKKworLy8gSW1wbGVtZW50YXRpb25zIG9mIHRo
ZSBmdW5jdGlvbnMgZGVjbGFyZWQgYWJvdmUuCisKK2NvbnN0ZXhwciBib29sIG5lZWRzVG9Hcm93
VG9Qcm9kdWNlQnVmZmVyKFVFcnJvckNvZGUgZXJyb3JDb2RlKQogewotICAgIHJldHVybiBlcnJv
ckNvZGUgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IgfHwgZXJyb3JDb2RlID09IFVfU1RSSU5H
X05PVF9URVJNSU5BVEVEX1dBUk5JTkc7CisgICAgcmV0dXJuIGVycm9yQ29kZSA9PSBVX0JVRkZF
Ul9PVkVSRkxPV19FUlJPUjsKIH0KIAotaW5saW5lIGJvb2wgbmVlZHNUb0dyb3dUb1Byb2R1Y2VC
dWZmZXIoVUVycm9yQ29kZSBlcnJvckNvZGUpCitjb25zdGV4cHIgYm9vbCBuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUNTdHJpbmcoVUVycm9yQ29kZSBlcnJvckNvZGUpCiB7Ci0gICAgcmV0dXJuIGVycm9y
Q29kZSA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUjsKKyAgICByZXR1cm4gbmVlZHNUb0dyb3dU
b1Byb2R1Y2VCdWZmZXIoZXJyb3JDb2RlKSB8fCBlcnJvckNvZGUgPT0gVV9TVFJJTkdfTk9UX1RF
Uk1JTkFURURfV0FSTklORzsKK30KKworbmFtZXNwYWNlIENhbGxCdWZmZXJQcm9kdWNpbmdGdW5j
dGlvbiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gYXV0byYgZmluZFZlY3RvcihWZWN0
b3I8Q2hhcmFjdGVyVHlwZSwgaW5saW5lQ2FwYWNpdHk+JiBidWZmZXIsIEFyZ3VtZW50VHlwZXMm
Ji4uLikKK3sKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJz
dEFyZ3VtZW50VHlwZSwgdHlwZW5hbWUgLi4uQXJndW1lbnRUeXBlcz4gYXV0byYgZmluZFZlY3Rv
cihGaXJzdEFyZ3VtZW50VHlwZSYmLCBBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKQorewor
ICAgIHJldHVybiBmaW5kVmVjdG9yKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVu
dHMpLi4uKTsKK30KKworY29uc3RleHByIHN0ZDo6dHVwbGU8PiBhcmd1bWVudFR1cGxlKCkgeyBy
ZXR1cm4geyB9OyB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZpcnN0QXJndW1lbnRUeXBlLCB0eXBl
bmFtZSAuLi5PdGhlckFyZ3VtZW50VHlwZXM+IGF1dG8gYXJndW1lbnRUdXBsZShGaXJzdEFyZ3Vt
ZW50VHlwZSYmLCBPdGhlckFyZ3VtZW50VHlwZXMmJi4uLik7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgLi4uT3RoZXJB
cmd1bWVudFR5cGVzPiBhdXRvIGFyZ3VtZW50VHVwbGUoVmVjdG9yPENoYXJhY3RlclR5cGUsIGlu
bGluZUNhcGFjaXR5PiYgYnVmZmVyLCBPdGhlckFyZ3VtZW50VHlwZXMmJi4uLiBvdGhlckFyZ3Vt
ZW50cykKK3sKKyAgICByZXR1cm4gdHVwbGVfY2F0KHN0ZDo6bWFrZV90dXBsZShidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKSwgYXJndW1lbnRUdXBsZShzdGQ6OmZvcndhcmQ8T3RoZXJBcmd1
bWVudFR5cGVzPihvdGhlckFyZ3VtZW50cykuLi4pKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
Rmlyc3RBcmd1bWVudFR5cGUsIHR5cGVuYW1lIC4uLk90aGVyQXJndW1lbnRUeXBlcz4gYXV0byBh
cmd1bWVudFR1cGxlKEZpcnN0QXJndW1lbnRUeXBlJiYgZmlyc3RBcmd1bWVudCwgT3RoZXJBcmd1
bWVudFR5cGVzJiYuLi4gb3RoZXJBcmd1bWVudHMpCit7CisgICAgcmV0dXJuIHR1cGxlX2NhdChz
dGQ6Om1ha2VfdHVwbGUoc3RkOjpmb3J3YXJkPEZpcnN0QXJndW1lbnRUeXBlPihmaXJzdEFyZ3Vt
ZW50KSksIGFyZ3VtZW50VHVwbGUoc3RkOjpmb3J3YXJkPE90aGVyQXJndW1lbnRUeXBlcz4ob3Ro
ZXJBcmd1bWVudHMpLi4uKSk7Cit9CisKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlLCB0eXBlbmFtZSAuLi5Bcmd1bWVudFR5cGVzPiBVRXJyb3JDb2RlIGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbihjb25zdCBGdW5jdGlvblR5cGUmIGZ1bmN0aW9uLCBBcmd1bWVudFR5cGVz
JiYuLi4gYXJndW1lbnRzKQoreworICAgIGF1dG8mIGJ1ZmZlciA9IENhbGxCdWZmZXJQcm9kdWNp
bmdGdW5jdGlvbjo6ZmluZFZlY3RvcihzdGQ6OmZvcndhcmQ8QXJndW1lbnRUeXBlcz4oYXJndW1l
bnRzKS4uLik7CisgICAgYnVmZmVyLmdyb3coYnVmZmVyLmNhcGFjaXR5KCkpOworICAgIGF1dG8g
c3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gYXBwbHkoZnVu
Y3Rpb24sIENhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbjo6YXJndW1lbnRUdXBsZShzdGQ6OmZv
cndhcmQ8QXJndW1lbnRUeXBlcz4oYXJndW1lbnRzKS4uLiwgJnN0YXR1cykpOworICAgIGlmIChV
X1NVQ0NFU1Moc3RhdHVzKSkKKyAgICAgICAgYnVmZmVyLnNocmluayhyZXN1bHRMZW5ndGgpOwor
ICAgIGVsc2UgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKKyAgICAg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBidWZmZXIuZ3JvdyhyZXN1bHRMZW5n
dGgpOworICAgICAgICBhcHBseShmdW5jdGlvbiwgQ2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9u
Ojphcmd1bWVudFR1cGxlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVudHMpLi4u
LCAmc3RhdHVzKSk7CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgfQor
ICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIH0KIAordXNpbmcgV1RGOjpjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb247CiB1c2luZyBXVEY6Om5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZzsKIHVz
aW5nIFdURjo6bmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKaW5kZXggZjllZDViYmIzYjdiNjkyZDU3Y2RhOTQzZmYwNmYzMmFi
YjYzNDY2Yy4uNWJkY2U4OWNhNjU4MTFhZTA1MDlmNGEwZWFjYmViM2M4MzA5YzNhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTgzMSwyMSArMTgzMSwxMiBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgY29udGFpbnNLYW5hTGV0dGVycyhjb25zdCBTdHJpbmcmIHBh
dHRlcm4pCiBzdGF0aWMgdm9pZCBub3JtYWxpemVDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBjb25zdCBVTm9ybWFsaXplcjIq
IG5vcm1hbGl6ZXIgPSB1bm9ybTJfZ2V0TkZDSW5zdGFuY2UoJnN0YXR1cyk7CisgICAgYXV0byog
bm9ybWFsaXplciA9IHVub3JtMl9nZXRORkNJbnN0YW5jZSgmc3RhdHVzKTsKICAgICBBU1NFUlQo
VV9TVUNDRVNTKHN0YXR1cykpOwogCi0gICAgYnVmZmVyLnJlc2l6ZShsZW5ndGgpOworICAgIGJ1
ZmZlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoKTsKIAotICAgIGF1dG8gbm9ybWFsaXplZExlbmd0
aCA9IHVub3JtMl9ub3JtYWxpemUobm9ybWFsaXplciwgY2hhcmFjdGVycywgbGVuZ3RoLCBidWZm
ZXIuZGF0YSgpLCBsZW5ndGgsICZzdGF0dXMpOwotICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVz
KSB8fCBuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKTsKLQotICAgIGJ1ZmZlci5y
ZXNpemUobm9ybWFsaXplZExlbmd0aCk7Ci0KLSAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICB1bm9ybTJf
bm9ybWFsaXplKG5vcm1hbGl6ZXIsIGNoYXJhY3RlcnMsIGxlbmd0aCwgYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoLCAmc3RhdHVzKTsKKyAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rp
b24odW5vcm0yX25vcm1hbGl6ZSwgbm9ybWFsaXplciwgY2hhcmFjdGVycywgbGVuZ3RoLCBidWZm
ZXIpOwogICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CiB9CiAK
</data>
<flag name="review"
          id="414063"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>