<?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>95500</bug_id>
          
          <creation_ts>2012-08-30 14:41:28 -0700</creation_ts>
          <short_desc>[chromium] Make RenderPass ids hold both generating layer id and an index</short_desc>
          <delta_ts>2012-09-07 12:37:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96073</dependson>
          <blocked>94145</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>709040</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-30 14:41:28 -0700</bug_when>
    <thetext>[chromium] Make RenderPass ids hold both generating layer id and an index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709041</commentid>
    <comment_count>1</comment_count>
      <attachid>161561</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-30 14:45:10 -0700</bug_when>
    <thetext>Created attachment 161561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709044</commentid>
    <comment_count>2</comment_count>
      <attachid>161562</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-30 14:46:50 -0700</bug_when>
    <thetext>Created attachment 161562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709045</commentid>
    <comment_count>3</comment_count>
      <attachid>161563</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-30 14:50:02 -0700</bug_when>
    <thetext>Created attachment 161563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709127</commentid>
    <comment_count>4</comment_count>
      <attachid>161578</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-30 16:16:42 -0700</bug_when>
    <thetext>Created attachment 161578
Patch

fix debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712520</commentid>
    <comment_count>5</comment_count>
      <attachid>161578</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-05 14:04:31 -0700</bug_when>
    <thetext>Comment on attachment 161578
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:63
&gt; +    typedef std::pair&lt;int, int&gt; Id;

Bah, std::pair.  How about a struct with decent, upstanding names?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:119
&gt; +static const bool emptyValueIsZero = false;
&gt; +static const bool needsDestruction = false;
&gt; +static WebCore::CCRenderPass::Id emptyValue() { return std::make_pair(0, 0); }
&gt; +static void constructDeletedValue(WebCore::CCRenderPass::Id&amp; slot) { slot = std::make_pair(-1, -1); }
&gt; +static bool isDeletedValue(WebCore::CCRenderPass::Id value) { return value.first == -1 &amp;&amp; value.second == -1; }

Indent these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712671</commentid>
    <comment_count>6</comment_count>
      <attachid>161578</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-05 16:48:25 -0700</bug_when>
    <thetext>Comment on attachment 161578
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:63
&gt;&gt; +    typedef std::pair&lt;int, int&gt; Id;
&gt; 
&gt; Bah, std::pair.  How about a struct with decent, upstanding names?

Haha ok, I did that at first but then started implementing things like operator== and thought a pair would be so clever.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:119
&gt;&gt; +static bool isDeletedValue(WebCore::CCRenderPass::Id value) { return value.first == -1 &amp;&amp; value.second == -1; }
&gt; 
&gt; Indent these.

&quot;The contents of an outermost namespace block (and any nested namespaces with the same scope) should not be indented. The contents of other nested namespaces should be indented.&quot;

Just checking, but this is an outermost block, isn&apos;t it? Is this an exception?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712676</commentid>
    <comment_count>7</comment_count>
      <attachid>161578</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-05 16:51:09 -0700</bug_when>
    <thetext>Comment on attachment 161578
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:119
&gt;&gt;&gt; +static bool isDeletedValue(WebCore::CCRenderPass::Id value) { return value.first == -1 &amp;&amp; value.second == -1; }
&gt;&gt; 
&gt;&gt; Indent these.
&gt; 
&gt; &quot;The contents of an outermost namespace block (and any nested namespaces with the same scope) should not be indented. The contents of other nested namespaces should be indented.&quot;
&gt; 
&gt; Just checking, but this is an outermost block, isn&apos;t it? Is this an exception?

It&apos;s the contents of a struct, not the contents of a namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712680</commentid>
    <comment_count>8</comment_count>
      <attachid>161578</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-05 16:56:23 -0700</bug_when>
    <thetext>Comment on attachment 161578
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:119
&gt;&gt;&gt;&gt; +static bool isDeletedValue(WebCore::CCRenderPass::Id value) { return value.first == -1 &amp;&amp; value.second == -1; }
&gt;&gt;&gt; 
&gt;&gt;&gt; Indent these.
&gt;&gt; 
&gt;&gt; &quot;The contents of an outermost namespace block (and any nested namespaces with the same scope) should not be indented. The contents of other nested namespaces should be indented.&quot;
&gt;&gt; 
&gt;&gt; Just checking, but this is an outermost block, isn&apos;t it? Is this an exception?
&gt; 
&gt; It&apos;s the contents of a struct, not the contents of a namespace.

Oh... blush. Sorry, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712741</commentid>
    <comment_count>9</comment_count>
      <attachid>162388</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-05 18:29:36 -0700</bug_when>
    <thetext>Created attachment 162388
Patch

Not using std::pair anymore. Indented the struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712883</commentid>
    <comment_count>10</comment_count>
      <attachid>162388</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-05 22:26:23 -0700</bug_when>
    <thetext>Comment on attachment 162388
Patch

Attachment 162388 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13768249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713210</commentid>
    <comment_count>11</comment_count>
      <attachid>162388</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 06:03:59 -0700</bug_when>
    <thetext>Comment on attachment 162388
Patch

Attachment 162388 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13771330</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713321</commentid>
    <comment_count>12</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 08:36:20 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=162388&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:136
&gt; +template&lt;&gt; struct IntHash&lt;WebCore::CCRenderPass::Id&gt; {

Why does CCRenderPass::Id need better hashing than IntHash&lt;std::pair&lt;int, int&gt; &gt;?  You should just use the default and then make the default better in all cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713323</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-06 08:39:36 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162388&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:136
&gt; &gt; +template&lt;&gt; struct IntHash&lt;WebCore::CCRenderPass::Id&gt; {
&gt; 
&gt; Why does CCRenderPass::Id need better hashing than IntHash&lt;std::pair&lt;int, int&gt; &gt;?  You should just use the default and then make the default better in all cases.

Ya, cuz everything needs better than that. I am planning to upload a patch to fix std::pair as well, but felt wrong to use the bad function in new code. I guess I can though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713347</commentid>
    <comment_count>14</comment_count>
      <attachid>162520</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-06 09:08:40 -0700</bug_when>
    <thetext>Created attachment 162520
Patch

rebased and using PairHash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713351</commentid>
    <comment_count>15</comment_count>
      <attachid>162520</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 09:13:19 -0700</bug_when>
    <thetext>Comment on attachment 162520
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713614</commentid>
    <comment_count>16</comment_count>
      <attachid>162564</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-06 13:14:35 -0700</bug_when>
    <thetext>Created attachment 162564
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713973</commentid>
    <comment_count>17</comment_count>
      <attachid>162564</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 18:33:33 -0700</bug_when>
    <thetext>Comment on attachment 162564
Patch for landing

Rejecting attachment 162564 from commit-queue.

New failing tests:
http/tests/cache/subresource-expiration-1.html
http/tests/cache/stopped-revalidation.html
Full output: http://queues.webkit.org/results/13786213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714083</commentid>
    <comment_count>18</comment_count>
      <attachid>162564</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 21:48:58 -0700</bug_when>
    <thetext>Comment on attachment 162564
Patch for landing

Clearing flags on attachment: 162564

Committed r127822: &lt;http://trac.webkit.org/changeset/127822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714084</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 21:49:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714156</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 23:10:10 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714771</commentid>
    <comment_count>21</comment_count>
      <attachid>162827</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 11:14:55 -0700</bug_when>
    <thetext>Created attachment 162827
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714859</commentid>
    <comment_count>22</comment_count>
      <attachid>162827</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 12:37:07 -0700</bug_when>
    <thetext>Comment on attachment 162827
Patch for landing

Clearing flags on attachment: 162827

Committed r127907: &lt;http://trac.webkit.org/changeset/127907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714860</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 12:37:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161561</attachid>
            <date>2012-08-30 14:45:10 -0700</date>
            <delta_ts>2012-08-30 14:46:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120830174458.patch</filename>
            <type>text/plain</type>
            <size>39812</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ4OTBjNTY5MWRkYmVl
Y2U4NTJlMDdiMmViMjA4YWI1MjFiM2U4My4uOGZlZGM1YmM2MzJjMWM3MzExZThmNTIzZDk2NjBl
NDAzYzFkYmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA4LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Omlk
KToKKyAgICAgICAgKENDUmVuZGVyUGFzc0lkS2V5VHJhaXRzKToKKyAgICAgICAgKFdURjo6Q0NS
ZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpDQ1JlbmRl
clBhc3NJZEtleVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6
Q0NSZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZCk6CisKIDIwMTItMDgtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBTdHlsZXNTb3VyY2VN
YXBwaW5nIGZyb20gU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDRmZWVhYzkzNjMxMDBlMmNiMWRmMzMxMzBmNTViZDkyZjc1MDA3OTAuLjcw
MDk0NTI1ODJhOWE2ZWFlMTdjZWI0N2ZkZDk4MDkzNTUwODAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMzAgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIFJlbmRlclBhc3Mg
aWRzIGhvbGQgYm90aCBnZW5lcmF0aW5nIGxheWVyIGlkIGFuZCBhbiBpbmRleAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50
OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisKIDIwMTItMDgtMjkgIFBldGVyIEJldmVybG9vICA8
cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKaW5kZXggNDY4OGJlZDE5YmZjNGU4MzVi
YWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEy
MjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKQEAgLTExMiwxMiAr
MTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJlcjo6bW92ZVNjaXNzb3JUb1dpbmRvd1Nw
YWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZsCiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJl
cjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
TGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0
IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJhbWU7CisgICAgSGFzaE1hcDxDQ1JlbmRl
clBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09y
ZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKLSAgICBWZWN0b3I8
aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1
cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQ
YXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAg
IGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0
ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewog
ICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcmVuZGVyUGFz
c2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVy
UGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIENDRGlyZWN0UmVuZGVyZXI6
OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHJl
bmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJvb2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2
ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0Citib29sIENDRGly
ZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQ
YXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5k
ZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5p
ZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIu
aAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRm
YmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
aW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291
cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nl
c0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBj
b25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSk7CiAgICAgc3RhdGljIEludFJlY3Qg
bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBz
Y2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXMoaW50IHJlbmRlclBh
c3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKENDUmVuZGVyUGFzczo6
SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShjb25z
dCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0MzRGVudW0gcmVuZGVyUGFzc1RleHR1cmVG
b3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBtX3JlbmRlclBh
c3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDYWNoZWRU
ZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBiN2IwMWU2OTU5NmQ5NDM5YWRiOGE2NWZmOTBkNjVkOWNmNThkZDU5Li5k
NWZhZDA5YzI0YTZlZGJkZTBlNTRkMTA4NDkyNzhlZjI1ODgzOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAK
ICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZChm
cmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGludCB0YXJnZXRSZW5kZXJQYXNz
SWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgQ0NSZW5kZXJQ
YXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0
UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQp
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGlu
Z1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgaW50IGNvbnRyaWJ1dGluZ1JlbmRlclBh
c3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAg
ICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJl
bmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCk7CiAgICAgICAgICAg
ICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQs
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZp
c2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpAQCAtNDA4LDE0ICs0MDgsMTQgQEAgSW50
U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJvdW5kcygpOwog
fQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKGludCBy
ZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSYgZnJhbWUp
CitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKENDUmVuZGVy
UGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lkSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQocmVuZGVyUGFzc0lkKTsKICAgICBBU1NF
UlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2
ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEm
IGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVy
UGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyogcmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRS
ZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQsIGZyYW1lKTsKICAgICBzaXplX3QgcmVt
b3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmluZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAg
LTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUo
aW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SQogICAgICAgICBpZiAoY3Vy
cmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJ
ZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5leHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFz
c0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVu
ZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5k
ZXggYzhjMzMzZTM2OTQ3MjRhYjhmODY5MjVkZWFiMjEzYmRiMjc1MjhiYy4uM2Y5ZGMxNzhhYzUy
YWE3MjY0ZTZkNjMwYTZiZDcxZDdkYTkyNDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3Bw
CkBAIC0zOCwxMiArMzgsMTIgQEAgdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NS
ZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBv
dXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3Mo
aWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkpOwogfQogCi1DQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5k
ZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQogICAg
IDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0KHRyYW5zZm9ybVRvUm9v
dFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRwdXRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAppbmRleCA5ZWJlZDFiZDVkZThmMGFkY2VlNWIyOWQ3NjA3MmU3NTY4MzFhZWIwLi43ZDRi
YzczZjUwNTU4YWYxOWI4ZjE2NWU1ZDA2MWJlNjdlMTcyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaApAQCAtNjAsNyArNjAsOSBAQCB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+ID4gQ0NTaGFyZWRRdWFkU3RhdGVMaXN0OwogY2xhc3MgQ0NSZW5kZXJQYXNzIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3MpOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRS
ZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jv
b3RUYXJnZXQpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBJZDsKKworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKElkLCBJbnRSZWN0IG91dHB1dFJl
Y3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9v
dFRhcmdldCk7CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lkIGFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwg
Q0NBcHBlbmRRdWFkc0RhdGEmKTsKQEAgLTY4LDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAK
LSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgSWQgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAKICAgICAvLyBGSVhNRTogTW9kaWZ5IHRoaXMgdHJhbnNmb3JtIHdo
ZW4gbWVyZ2luZyB0aGUgUmVuZGVyUGFzcyBpbnRvIGEgcGFyZW50IGNvbXBvc2l0b3IuCiAgICAg
Ly8gVHJhbnNmb3JtcyBmcm9tIHF1YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIHRoZSBy
b290IHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCkBAIC05Miw5ICs5NCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAgICAgdm9pZCBz
ZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNPY2NsdXNpb25G
cm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIHByb3Rl
Y3RlZDoKLSAgICBDQ1JlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7
CisgICAgQ0NSZW5kZXJQYXNzKElkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7CiAKLSAgICBp
bnQgbV9pZDsKKyAgICBJZCBtX2lkOwogICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdDsKICAgICBD
Q1NoYXJlZFF1YWRTdGF0ZUxpc3QgbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQ7CkBAIC0xMDYs
OSArMTA4LDIxIEBAIHByb3RlY3RlZDoKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPENDUmVuZGVyUGFzcyo+
IENDUmVuZGVyUGFzc0xpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NSZW5kZXJQ
YXNzPiA+IENDUmVuZGVyUGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
bmFtZXNwYWNlIFdURiB7CitzdHJ1Y3QgQ0NSZW5kZXJQYXNzSWRLZXlUcmFpdHMgOiBIYXNoVHJh
aXRzPFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKK3N0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSBmYWxzZTsKK3N0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKK3N0YXRpYyBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBzdGQ6Om1ha2VfcGFpcigwLCAwKTsgfQorc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQmIHNsb3QpIHsgc2xvdCA9IHN0ZDo6
bWFrZV9wYWlyKC0xLCAtMSk7IH0KK3N0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFdlYkNvcmU6
OkNDUmVuZGVyUGFzczo6SWQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmZpcnN0ID09IC0xICYmIHZh
bHVlLnNlY29uZCA9PSAtMTsgfQorfTsKK30gLy8gbmFtZXNwYWNlIFdURgogCi19CituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NM
aXN0OwordHlwZWRlZiBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDQ1JlbmRlclBh
c3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCBjNTNi
N2ZlNDVjMWQ0Yjg3NjU5YWEyNGE5NTYxZjAzYmM1Njc0OWQ5Li44MDMwZTI1MWU1MGMyZmQxMTcx
OTJhYzFkNzVjZDJjOGYyNGJjYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFk
PiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6Oklk
IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tS
ZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbWFza1RleENvb3JkU2Nh
bGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29y
ZE9mZnNldFkpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9h
dCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFkpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9m
ZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3Jl
bmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCAwZDJjYWY5YjU5MWVkN2Uy
NGI3ZmE3NjMwM2Y0Mjg4YzcwZGYxMmYwLi4yNjk1YTRiYzRjNWU4ZGM3YjljNjQ0NzdmOWVjNmY0
NzM4ZjkyYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI3
LDIwICsyNywxOSBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKICNpbmNsdWRl
ICJDQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NS
ZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNz
OwotCiBjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29s
IGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlk
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFz
a1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQsIGJvb2wg
aXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNr
VGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENv
b3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CiAKLSAgICBpbnQgcmVuZGVy
UGFzc0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KKyAgICBDQ1JlbmRlclBh
c3M6OklkIHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAg
ICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VM
YXN0RnJhbWU7IH0KQEAgLTUyLDkgKzUxLDkgQEAgcHVibGljOgogICAgIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFkoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXhDb29yZE9mZnNldFk7IH0KIAog
cHJpdmF0ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVu
ZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVks
IGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwog
Ci0gICAgaW50IG1fcmVuZGVyUGFzc0lkOworICAgIENDUmVuZGVyUGFzczo6SWQgbV9yZW5kZXJQ
YXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MGE2
MzQ5ZDVlMWZkNWJhZjUxNGFiNzEwNTE4MTllMzA4OTExODFhLi4xNjM5M2I5MzBkOTE0YTVkZWM5
N2UzMmFiODI5ZGI0OTNmZjE3ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
QEAgLTE4MSwxNiArMTgxLDI0IEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBl
ZFJlY3RJblRhcmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJu
IGNsaXBwZWRSZWN0SW5UYXJnZXQ7CiB9CiAKK0NDUmVuZGVyUGFzczo6SWQgQ0NSZW5kZXJTdXJm
YWNlOjpyZW5kZXJQYXNzSWQoKQoreworICAgIGludCBsYXllcklkID0gbV9vd25pbmdMYXllci0+
aWQoKTsKKyAgICBpbnQgc3ViSWQgPSAwOworICAgIEFTU0VSVChsYXllcklkID4gMCk7CisgICAg
cmV0dXJuIENDUmVuZGVyUGFzczo6SWQobGF5ZXJJZCwgc3ViSWQpOworfQorCiB2b2lkIENDUmVu
ZGVyU3VyZmFjZTo6YXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmIHBhc3NTaW5r
KQogewotICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShtX293bmluZ0xheWVyLT5pZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNm
b3JtKTsKKyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUocmVuZGVyUGFzc0lkKCksIG1fY29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0p
OwogICAgIHBhc3MtPnNldERhbWFnZVJlY3QobV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdl
UmVjdCgpKTsKICAgICBwYXNzLT5zZXRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7
CiAgICAgcGFzcy0+c2V0QmFja2dyb3VuZEZpbHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3Vu
ZEZpbHRlcnMoKSk7CiAgICAgcGFzc1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRh
LCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKQogewogICAg
IEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDA5YTI4NDY3NmYyMjgyMjk0MjUyNWIxMjVm
M2E2M2YzY2M4N2JjYjMuLjJkN2FhYTkzZWZkNWZlZTNjNzU1MGY2YWEwMzgzYTZmM2Y2NjEzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3MuaCIK
ICNpbmNsdWRlICJDQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFzcyBDQ1F1YWRTaW5rOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5kZXJQYXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgVGV4dFN0cmVhbTsKQEAgLTEwNiw4ICsxMDYsMTAgQEAgcHVibGljOgogCiAgICAgQ0NE
YW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFj
a2VyLmdldCgpOyB9CiAKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgpOworCiAg
ICAgdm9pZCBhcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwotICAgIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5kUXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCBy
ZW5kZXJQYXNzSWQpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xheWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IDk0NmFlYzYzMzM2MjllYWNjYmE4ODY4M2NhMWQ5Nzg0
ZGE0NTk0MzYuLjA0N2JkODBmMzE1N2FiYWU5M2NlMzFiNGZkYjlkN2VhNjM2ZTE0YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB2aWV3cG9ydENoYW5nZWQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgeyB9Ci0gICAg
dmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBj
b25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
MmM4NzRlOGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVjNDk2Y2UzODE5Zi4uZjFiMWY3ODkxOGZhNGI5
ZjZlZjRlOTUzZjU4ODJjOTkwZmExMmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM0MDcsMTMg
KzM0MDcsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGlu
Z1dpdGhTY2lzc29yKQogICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAog
ICAgIENDVGlsZWRMYXllckltcGwqIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7CisgICAgQ0NSZW5k
ZXJQYXNzOjpJZCBjaGlsZFBhc3NJZChjaGlsZFB0ci0+aWQoKSwgMCk7CiAKICAgICBjaGlsZC0+
YWRkQ2hpbGQoZ3JhbmRDaGlsZC5yZWxlYXNlKCkpOwogICAgIHJvb3QtPmFkZENoaWxkKGNoaWxk
LnJlbGVhc2UoKSk7CiAgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgp
KTsKICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUocm9vdFJlY3Quc2l6ZSgpLCByb290
UmVjdC5zaXplKCkpOwogCi0gICAgRVhQRUNUX0ZBTFNFKG15SG9zdEltcGwtPnJlbmRlcmVyKCkt
PmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNl
c0ZvclJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogCiAgICAgewogICAgICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CkBAIC0zNDIzLDcgKzM0MjQsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAg
ICAgfQogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgY2FjaGVkIHRleHR1cmVzIGZvciBzdXJmYWNl
IDIuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJl
c291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQoKSkpOworICAgIEVYUEVDVF9UUlVF
KG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNz
SWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOwpAQCAtMzQzMyw3ICszNDM0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8v
IFdlIHNob3VsZCBzdGlsbCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyIGFmdGVy
IGRyYXdpbmcgd2l0aCBubyBkYW1hZ2UuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVu
ZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQo
KSkpOworICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIC8vIERhbWFnZSBh
IHNpbmdsZSB0aWxlIG9mIHN1cmZhY2UgMi4KICAgICBjaGlsZFB0ci0+c2V0VXBkYXRlUmVjdChJ
bnRSZWN0KDEwLCAxMCwgMTAsIDEwKSk7CkBAIC0zNDQ2LDcgKzM0NDcsNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAgICAgfQog
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSBjYWNoZWQgdGV4dHVyZSBmb3Igc3VyZmFjZSAyIGFn
YWluIGV2ZW4gdGhvdWdoIGl0IHdhcyBkYW1hZ2VkLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdElt
cGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQ
dHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZl
Q2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiB9CiAKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVDYWNoaW5nKQpAQCAtMzgw
OCwxOCArMzgwOSwxOCBAQCBzdHJ1Y3QgUmVuZGVyUGFzc0NhY2hlRW50cnkgewogfTsKIAogc3Ry
dWN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1w
bDo6RnJhbWVEYXRhIHsKLSAgICBzdGQ6Om1hcDxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4g
cmVuZGVyUGFzc0NhY2hlOworICAgIHN0ZDo6bWFwPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBh
c3NDYWNoZUVudHJ5PiByZW5kZXJQYXNzQ2FjaGU7CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGU7CiB9OwogCiBjbGFzcyBDQ1Rlc3RSZW5kZXJQYXNzOiBwdWJs
aWMgQ0NSZW5kZXJQYXNzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRl
clBhc3M+IGNyZWF0ZShpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1Rl
c3RSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclBhc3M6OklkIGlkLCBJ
bnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByb290VHJh
bnNmb3JtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwgb3V0cHV0
UmVjdCwgcm9vdFRyYW5zZm9ybSkpOyB9CiAKICAgICB2b2lkIGFwcGVuZFF1YWQoUGFzc093blB0
cjxDQ0RyYXdRdWFkPiBxdWFkKSB7IG1fcXVhZExpc3QuYXBwZW5kKHF1YWQpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBDQ1Rlc3RSZW5kZXJQYXNzKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBh
c3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zvcm0pIHsgfQorICAgIENDVGVzdFJlbmRlclBh
c3MoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBhc3MoaWQsIG91dHB1
dFJlY3QsIHJvb3RUcmFuc2Zvcm0pIHsgfQogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyZXIgOiBw
dWJsaWMgQ0NSZW5kZXJlckdMLCBwdWJsaWMgQ0NSZW5kZXJlckNsaWVudCB7CkBAIC0zODM0LDkg
KzM4MzUsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBjbGVhckNhY2hlZFRleHR1cmVz
KCkgeyBtX3RleHR1cmVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIHNldEhhdmVDYWNoZWRSZXNvdXJj
ZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSB7IG1fdGV4dHVyZXMuYWRkKGlkKTsgfQorICAgIHZv
aWQgc2V0SGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6Oklk
IGlkKSB7IG1fdGV4dHVyZXMuYWRkKGlkKTsgfQogCi0gICAgdmlydHVhbCBib29sIGhhdmVDYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3RleHR1cmVzLmNvbnRhaW5zKGlkKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVk
UmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQgaWQpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fdGV4dHVyZXMuY29udGFpbnMoaWQpOyB9CiAKICAgICAvLyBDQ1JlbmRl
cmVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7
IH0KQEAgLTM4NTMsNyArMzg1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ0NMYXll
clRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7Ci0g
ICAgSGFzaFNldDxpbnQ+IG1fdGV4dHVyZXM7CisgICAgSGFzaFNldDxDQ1JlbmRlclBhc3M6Oklk
PiBtX3RleHR1cmVzOwogfTsKIAogc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3RE
YXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRl
c3REYXRhLCBDQ1Rlc3RSZW5kZXJlciogcmVuZGVyZXIpCkBAIC0zODY2LDEyICszODY3LDE3IEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgY29uc3QgY2hhciogY3VycmVudENoYXIgPSB0
ZXN0U2NyaXB0OwogCiAgICAgLy8gUHJlLWNyZWF0ZSByb290IHBhc3MKLSAgICBjaGFyIHJvb3RS
ZW5kZXJQYXNzSWQgPSB0ZXN0U2NyaXB0WzBdOworICAgIENDUmVuZGVyUGFzczo6SWQgcm9vdFJl
bmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQodGVzdFNjcmlwdFswXSwgdGVzdFNjcmlwdFsx
XSk7CiAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1Rlc3RSZW5k
ZXJQYXNzOjpjcmVhdGUocm9vdFJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKTsKLSAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6
cGFpcjxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4ocm9vdFJlbmRlclBhc3NJZCwgUmVuZGVy
UGFzc0NhY2hlRW50cnkocm9vdFJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgIHRlc3REYXRh
LnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPENDUmVuZGVyUGFzczo6SWQsIFJlbmRl
clBhc3NDYWNoZUVudHJ5Pihyb290UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShy
b290UmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7CiAgICAgd2hpbGUgKCpjdXJyZW50Q2hhcikgewot
ICAgICAgICBjaGFyIHJlbmRlclBhc3NJZCA9IGN1cnJlbnRDaGFyWzBdOworICAgICAgICBpbnQg
Zmlyc3QgPSAqY3VycmVudENoYXI7CiAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgIEFT
U0VSVF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAgICAgICAgaW50IHNlY29uZCA9ICpjdXJyZW50Q2hh
cjsKKyAgICAgICAgY3VycmVudENoYXIrKzsKKworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQoZmlyc3QsIHNlY29uZCk7CiAKICAgICAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzczsKIApAQCAtMzg5MSw5ICszODk3LDEzIEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCpjdXJyZW50Q2hhciA+PSAnQScpICYmICgqY3VycmVu
dENoYXIgPD0gJ1onKSkgewogICAgICAgICAgICAgICAgIC8vIFJlbmRlclBhc3MgZHJhdyBxdWFk
Ci0gICAgICAgICAgICAgICAgY2hhciBuZXdSZW5kZXJQYXNzSWQgPSAqY3VycmVudENoYXI7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJ
ZCk7CisgICAgICAgICAgICAgICAgaW50IGZpcnN0ID0gKmN1cnJlbnRDaGFyOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUX1RSVUUoY3VycmVu
dENoYXIpOworICAgICAgICAgICAgICAgIGludCBzZWNvbmQgPSAqY3VycmVudENoYXI7CiAgICAg
ICAgICAgICAgICAgY3VycmVudENoYXIrKzsKKyAgICAgICAgICAgICAgICBDQ1JlbmRlclBhc3M6
OklkIG5ld1JlbmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQoZmlyc3QsIHNlY29uZCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJ
ZCk7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNUZXh0dXJlID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYm9vbCBjb250ZW50c0NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIApAQCAt
MzkxOSw3ICszOTI5LDcgQEAgc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRh
KGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmEKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lk
KG5ld1JlbmRlclBhc3NJZCk7CiAKICAgICAgICAgICAgICAgICAgICAgT3duUHRyPENDUmVuZGVy
UGFzcz4gcmVuZGVyUGFzcyA9IENDVGVzdFJlbmRlclBhc3M6OmNyZWF0ZShuZXdSZW5kZXJQYXNz
SWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPGNoYXIsIFJl
bmRlclBhc3NDYWNoZUVudHJ5PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5
KHJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0YS5y
ZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQ
YXNzQ2FjaGVFbnRyeT4obmV3UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyZW5k
ZXJQYXNzLnJlbGVhc2UoKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBJbnRSZWN0IHF1YWRSZWN0ID0gSW50UmVjdCgwLCAwLCAxLCAxKTsKQEAgLTM5NDAsNyArMzk1
MCw5IEBAIHZvaWQgZHVtcFJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBSZW5kZXJQYXNzUmVtb3Zh
bFRlc3REYXRhJiB0ZXN0RGF0YSwgY2hhciogYnVmCiAgICAgY2hhciogcG9zID0gYnVmZmVyOwog
ICAgIGZvciAoQ0NSZW5kZXJQYXNzTGlzdDo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IHRl
c3REYXRhLnJlbmRlclBhc3Nlcy5yYmVnaW4oKTsgaXQgIT0gdGVzdERhdGEucmVuZGVyUGFzc2Vz
LnJlbmQoKTsgKytpdCkgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRQYXNz
ID0gKml0OwotICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlkKCk7CisgICAgICAgICpwb3Mg
PSBjdXJyZW50UGFzcy0+aWQoKS5maXJzdDsKKyAgICAgICAgcG9zKys7CisgICAgICAgICpwb3Mg
PSBjdXJyZW50UGFzcy0+aWQoKS5zZWNvbmQ7CiAgICAgICAgIHBvcysrOwogCiAgICAgICAgIEND
UXVhZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIHF1YWRMaXN0SXRlcmF0b3IgPSBjdXJyZW50UGFzcy0+
cXVhZExpc3QoKS5iZWdpbigpOwpAQCAtMzk1Miw3ICszOTY0LDkgQEAgdm9pZCBkdW1wUmVuZGVy
UGFzc1Rlc3REYXRhKGNvbnN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhLCBj
aGFyKiBidWYKICAgICAgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKLSAgICAgICAgICAgICAg
ICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCkt
PnJlbmRlclBhc3NJZCgpOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkuZmlyc3Q7Cisg
ICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgKnBvcyA9IENDUmVuZGVyUGFz
c0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKS5zZWNv
bmQ7CiAgICAgICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgpAQCAtMzk5NiwxMTUgKzQwMTAsMTE1IEBAIFRlc3RDYXNlIHJlbW92
ZVJlbmRlclBhc3Nlc0Nhc2VzW10gPQogICAgIHsKICAgICAgICAgewogICAgICAgICAgICAgIlNp
bmdsZSByb290IHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzXG4iLAotICAgICAgICAgICAgIlJz
c3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc1xuIgog
ICAgICAgICB9LCB7CiAgICAgICAgICAgICAiU2luZ2xlIHBhc3MgLSBubyBxdWFkcyIsCi0gICAg
ICAgICAgICAiUlxuIiwKLSAgICAgICAgICAgICJSXG4iCisgICAgICAgICAgICAiUjBcbiIsCisg
ICAgICAgICAgICAiUjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlR3byBwYXNzZXMs
IG5vIHJlbW92YWwiLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4i
CisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisg
ICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAg
ICAgfSwgewogICAgICAgICAgICAgIlR3byBwYXNzZXMsIHJlbW92ZSBsYXN0IiwKLSAgICAgICAg
ICAgICJSc3Nzc0FbY3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAg
ICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY3Rdc3NzXG4iCisgICAgICAg
ICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0s
IHsKICAgICAgICAgICAgICJIYXZlIHRleHR1cmUgYnV0IGNvbnRlbnRzIGNoYW5nZWQgLSBsZWF2
ZSBwYXNzIiwKLSAgICAgICAgICAgICJSc3Nzc0FbdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nz
c1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgor
ICAgICAgICAgICAgIlIwc3Nzc0EwW3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAor
ICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAg
ICAgIH0sIHsKICAgICAgICAgICAgICJDb250ZW50cyBkaWRuJ3QgY2hhbmdlIGJ1dCBubyB0ZXh0
dXJlIC0gbGVhdmUgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAg
ICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAi
QXNzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEw
c3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nz
c1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVy
ZW5jZSB0aGUgc2FtZSBwYXNzOyByZW1vdmUiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1BW2N0
XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQUFzc3Nc
biIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1BMFtjdF1zc3NcbiIKKyAgICAgICAgICAgICJB
MHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBBMHNzc1xuIgogICAgICAgICB9LCB7CiAg
ICAgICAgICAgICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVyZW5jZSB0aGUgc2FtZSBwYXNzOyBs
ZWF2ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2NdQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQUFzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xu
IiwKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXUEwW2Ndc3NzXG4iCisgICAgICAgICAgICAiQTBz
c3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNz
c3NcbiIsCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJNYW55IHBhc3NlcywgcmVtb3ZlIGFs
bCIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCW2N0
XUNbY3Rdc1xuIgotICAgICAgICAgICAgIkJzc3NEW2N0XXNzRVtjdF1GW2N0XVxuIgotICAgICAg
ICAgICAgIkVzc3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1tjdF1cbiIKLSAgICAgICAgICAgICJE
c3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xu
IiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0
XXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBbY3RdQzBbY3Rdc1xuIgorICAgICAgICAgICAg
IkIwc3NzRDBbY3Rdc3NFMFtjdF1GMFtjdF1cbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgor
ICAgICAgICAgICAgIkMwRzBbY3RdXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAg
ICAgICAgICAiRjBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAg
ICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiRGVlcCByZWN1
cnNpb24sIHJlbW92ZSBhbGwiLAogCi0gICAgICAgICAgICAiUnNzc3NzQVtjdF1zc3NzXG4iCi0g
ICAgICAgICAgICAiQXNzc3NCc3NzXG4iCi0gICAgICAgICAgICAiQkNcbiIKLSAgICAgICAgICAg
ICJDRFxuIgotICAgICAgICAgICAgIkRFXG4iCi0gICAgICAgICAgICAiRUZcbiIKLSAgICAgICAg
ICAgICJGR1xuIgotICAgICAgICAgICAgIkdIXG4iCi0gICAgICAgICAgICAiSHNzc0lzc3NcbiIK
LSAgICAgICAgICAgICJJSlxuIgotICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAg
IlIwc3Nzc3NBMFtjdF1zc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzQjBzc3NcbiIKKyAgICAg
ICAgICAgICJCMEMwXG4iCisgICAgICAgICAgICAiQzBEMFxuIgorICAgICAgICAgICAgIkQwRTBc
biIKKyAgICAgICAgICAgICJFMEYwXG4iCisgICAgICAgICAgICAiRjBHMFxuIgorICAgICAgICAg
ICAgIkcwSDBcbiIKKyAgICAgICAgICAgICJIMHNzc0kwc3NzXG4iCisgICAgICAgICAgICAiSTBK
MFxuIgorICAgICAgICAgICAgIkowc3Nzc1xuIiwKICAgICAgICAgICAgIAotICAgICAgICAgICAg
IlJzc3Nzc0Fzc3NzXG4iCisgICAgICAgICAgICAiUjBzc3Nzc0Ewc3Nzc1xuIgogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAiV2lkZSByZWN1cnNpb24sIHJlbW92ZSBhbGwiLAotICAgICAgICAg
ICAgIlJBW2N0XUJbY3RdQ1tjdF1EW2N0XUVbY3RdRltjdF1HW2N0XUhbY3RdSVtjdF1KW2N0XVxu
IgotICAgICAgICAgICAgIkFzXG4iCi0gICAgICAgICAgICAiQnNcbiIKLSAgICAgICAgICAgICJD
c3Nzc1xuIgotICAgICAgICAgICAgIkRzc3NzXG4iCi0gICAgICAgICAgICAiRXNcbiIKLSAgICAg
ICAgICAgICJGXG4iCi0gICAgICAgICAgICAiR3NcbiIKLSAgICAgICAgICAgICJIc1xuIgotICAg
ICAgICAgICAgIklzXG4iCi0gICAgICAgICAgICAiSnNzc3NcbiIsCisgICAgICAgICAgICAiUjBB
MFtjdF1CMFtjdF1DMFtjdF1EMFtjdF1FMFtjdF1GMFtjdF1HMFtjdF1IMFtjdF1JMFtjdF1KMFtj
dF1cbiIKKyAgICAgICAgICAgICJBMHNcbiIKKyAgICAgICAgICAgICJCMHNcbiIKKyAgICAgICAg
ICAgICJDMHNzc3NcbiIKKyAgICAgICAgICAgICJEMHNzc3NcbiIKKyAgICAgICAgICAgICJFMHNc
biIKKyAgICAgICAgICAgICJGMFxuIgorICAgICAgICAgICAgIkcwc1xuIgorICAgICAgICAgICAg
Ikgwc1xuIgorICAgICAgICAgICAgIkkwc1xuIgorICAgICAgICAgICAgIkowc3Nzc1xuIiwKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgIlJBQkNERUZHSElKXG4iCisgICAgICAgICAgICAiUjBB
MEIwQzBEMEUwRjBHMEgwSTBKMFxuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiUmVtb3Zl
IHBhc3NlcyByZWdhcmRsZXNzIG9mIGNhY2hlIHN0YXRlIiwKLSAgICAgICAgICAgICJSc3Nzc0Fb
Y3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc0JDc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Nd
c3NFW3RdRlxuIgotICAgICAgICAgICAgIkVzc3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1xuIgot
ICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiRnNzc3Nzc3NcbiIKLSAgICAg
ICAgICAgICJHc3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAg
ICAiUjBzc3NzQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAg
ICAgICAgIkIwc3NzRDBbY11zc0UwW3RdRjBcbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgor
ICAgICAgICAgICAgIkMwRzBcbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAg
ICAgICJGMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAgICAgICAg
IlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJMZWF2ZSBzb21lIHBh
c3NlcywgcmVtb3ZlIG90aGVycyIsCiAKLSAgICAgICAgICAgICJSc3Nzc0FbY11zc3NcbiIKLSAg
ICAgICAgICAgICJBc3NzQlt0XUNbY3Rdc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Ndc3NcbiIK
LSAgICAgICAgICAgICJDR1xuIgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAg
ICAiR3Nzc1xuIiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NCQ3NcbiIKLSAgICAgICAgICAgICJCc3NzRHNzXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3Nc
biIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBb
dF1DMFtjdF1zXG4iCisgICAgICAgICAgICAiQjBzc3NEMFtjXXNzXG4iCisgICAgICAgICAgICAi
QzBHMFxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4i
LAorCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwQzBz
XG4iCisgICAgICAgICAgICAiQjBzc3NEMHNzXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4i
CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgIDAsIDAsIDAKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggMmYwYmUwM2I5OTgwNGEzYTg0ZThjZTY0ZWE0ZDdkM2YzOWIwNjEzYi4uNGU5MTI0MmVmMjJh
NzVmZmYyMTY3MTFkNTI2NjMwZTZjMWQ5ZTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yMzAyLDggKzIzMDIs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ0NSZW5k
ZXJlciogcmVuZGVyZXIgPSBob3N0SW1wbC0+cmVuZGVyZXIoKTsKLSAgICAgICAgdW5zaWduZWQg
c3VyZmFjZTFSZW5kZXJQYXNzSWQgPSBob3N0SW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClb
MF0tPmlkKCk7Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdElt
cGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5pZCgpOworICAg
ICAgICBDQ1JlbmRlclBhc3M6OklkIHN1cmZhY2UxUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJv
b3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgp
OworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdElt
cGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJm
YWNlKCktPnJlbmRlclBhc3NJZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaG9zdEltcGwtPnNvdXJj
ZUZyYW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKaW5kZXggMDY2OTNmMzM3
NGYwOWUwNTgzMjdjNjk1NTFjMjBmZjI5N2QwMTc2ZC4uZDY2YjhjOTUxNmEzZTg4Mjg2ZTM2Yjgx
NTdhNDA2MWIwNmNhYTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChDQ1Jl
bmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNoYXJlZFF1
YWRTdGF0ZSkKICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFkc0RhdGE7CiAKICAgICBi
b29sIGZvclJlcGxpY2EgPSBmYWxzZTsKLSAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyht
b2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBmb3JSZXBsaWNhLCAyKTsKKyAgICByZW5k
ZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBm
b3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkKDIsIDApKTsKIAogICAgIEFTU0VSVF9FUSgxdSwg
c2hhcmVkU3RhdGVMaXN0LnNpemUoKSk7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSA9IHNoYXJlZFN0YXRlTGlzdFswXS5nZXQoKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBU
RVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3JyZWN0
UmVuZGVyUGFzcykKICAgICBBU1NFUlRfRVEoMXUsIHBhc3NTaW5rLnJlbmRlclBhc3NlcygpLnNp
emUoKSk7CiAgICAgQ0NSZW5kZXJQYXNzKiBwYXNzID0gcGFzc1NpbmsucmVuZGVyUGFzc2VzKClb
MF0uZ2V0KCk7CiAKLSAgICBFWFBFQ1RfRVEoMiwgcGFzcy0+aWQoKSk7CisgICAgRVhQRUNUX0VR
KENDUmVuZGVyUGFzczo6SWQoMiwgMCksIHBhc3MtPmlkKCkpOwogICAgIEVYUEVDVF9FUShjb250
ZW50UmVjdCwgcGFzcy0+b3V0cHV0UmVjdCgpKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luLCBwYXNz
LT50cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcAppbmRleCAyZjNmZDZhMDgxMzU4NzA5MWEy
ZmM0YjA5ZTQ5MGJkNzEwZjZlOTUzLi4wYzc4YzVlZTlhZWM4YmFmY2NlMmNkMTQ3ZGM1Zjc0MmQ0
Y2U5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVy
ZXJHTFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJl
ckdMVGVzdC5jcHAKQEAgLTgwLDkgKzgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jvb3RM
YXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgICAgICAsIG1fbWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxs
b2NhdGlvbkxpbWl0KCkpCiAgICAgewotICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290
UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5pZCgpLCBJbnRS
ZWN0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBtX3Jvb3RMYXllci0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBh
c3NJZCA9IG1fcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgpOworICAg
ICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6
Y3JlYXRlKHJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKICAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5hcHBlbmQocm9vdFJlbmRlclBh
c3MuZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQobV9yb290TGF5ZXItPmlkKCks
IHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc2VzLnNldChy
ZW5kZXJQYXNzSWQsIHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161562</attachid>
            <date>2012-08-30 14:46:50 -0700</date>
            <delta_ts>2012-08-30 14:49:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120830174639.patch</filename>
            <type>text/plain</type>
            <size>39837</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ4OTBjNTY5MWRkYmVl
Y2U4NTJlMDdiMmViMjA4YWI1MjFiM2U4My4uOGZlZGM1YmM2MzJjMWM3MzExZThmNTIzZDk2NjBl
NDAzYzFkYmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA4LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Omlk
KToKKyAgICAgICAgKENDUmVuZGVyUGFzc0lkS2V5VHJhaXRzKToKKyAgICAgICAgKFdURjo6Q0NS
ZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpDQ1JlbmRl
clBhc3NJZEtleVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6
Q0NSZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZCk6CisKIDIwMTItMDgtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBTdHlsZXNTb3VyY2VN
YXBwaW5nIGZyb20gU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDRmZWVhYzkzNjMxMDBlMmNiMWRmMzMxMzBmNTViZDkyZjc1MDA3OTAuLjcw
MDk0NTI1ODJhOWE2ZWFlMTdjZWI0N2ZkZDk4MDkzNTUwODAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMzAgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIFJlbmRlclBhc3Mg
aWRzIGhvbGQgYm90aCBnZW5lcmF0aW5nIGxheWVyIGlkIGFuZCBhbiBpbmRleAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50
OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisKIDIwMTItMDgtMjkgIFBldGVyIEJldmVybG9vICA8
cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKaW5kZXggNDY4OGJlZDE5YmZjNGU4MzVi
YWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEy
MjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKQEAgLTExMiwxMiAr
MTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJlcjo6bW92ZVNjaXNzb3JUb1dpbmRvd1Nw
YWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZsCiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJl
cjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
TGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0
IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJhbWU7CisgICAgSGFzaE1hcDxDQ1JlbmRl
clBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09y
ZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKLSAgICBWZWN0b3I8
aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1
cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQ
YXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAg
IGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0
ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewog
ICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcmVuZGVyUGFz
c2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVy
UGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIENDRGlyZWN0UmVuZGVyZXI6
OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHJl
bmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJvb2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2
ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0Citib29sIENDRGly
ZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQ
YXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5k
ZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5p
ZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIu
aAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRm
YmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
aW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291
cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nl
c0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBj
b25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSk7CiAgICAgc3RhdGljIEludFJlY3Qg
bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBz
Y2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXMoaW50IHJlbmRlclBh
c3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKENDUmVuZGVyUGFzczo6
SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShjb25z
dCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0MzRGVudW0gcmVuZGVyUGFzc1RleHR1cmVG
b3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBtX3JlbmRlclBh
c3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDYWNoZWRU
ZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBiN2IwMWU2OTU5NmQ5NDM5YWRiOGE2NWZmOTBkNjVkOWNmNThkZDU5Li5k
NWZhZDA5YzI0YTZlZGJkZTBlNTRkMTA4NDkyNzhlZjI1ODgzOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAK
ICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZChm
cmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGludCB0YXJnZXRSZW5kZXJQYXNz
SWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgQ0NSZW5kZXJQ
YXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0
UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQp
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGlu
Z1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgaW50IGNvbnRyaWJ1dGluZ1JlbmRlclBh
c3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAg
ICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJl
bmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCk7CiAgICAgICAgICAg
ICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQs
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZp
c2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpAQCAtNDA4LDE0ICs0MDgsMTQgQEAgSW50
U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJvdW5kcygpOwog
fQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKGludCBy
ZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSYgZnJhbWUp
CitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKENDUmVuZGVy
UGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lkSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQocmVuZGVyUGFzc0lkKTsKICAgICBBU1NF
UlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2
ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEm
IGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVy
UGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyogcmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRS
ZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQsIGZyYW1lKTsKICAgICBzaXplX3QgcmVt
b3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmluZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAg
LTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUo
aW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SQogICAgICAgICBpZiAoY3Vy
cmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJ
ZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5leHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFz
c0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVu
ZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5k
ZXggYzhjMzMzZTM2OTQ3MjRhYjhmODY5MjVkZWFiMjEzYmRiMjc1MjhiYy4uM2Y5ZGMxNzhhYzUy
YWE3MjY0ZTZkNjMwYTZiZDcxZDdkYTkyNDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3Bw
CkBAIC0zOCwxMiArMzgsMTIgQEAgdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NS
ZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBv
dXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3Mo
aWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkpOwogfQogCi1DQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5k
ZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQogICAg
IDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0KHRyYW5zZm9ybVRvUm9v
dFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRwdXRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAppbmRleCA5ZWJlZDFiZDVkZThmMGFkY2VlNWIyOWQ3NjA3MmU3NTY4MzFhZWIwLi43ZDRi
YzczZjUwNTU4YWYxOWI4ZjE2NWU1ZDA2MWJlNjdlMTcyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaApAQCAtNjAsNyArNjAsOSBAQCB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+ID4gQ0NTaGFyZWRRdWFkU3RhdGVMaXN0OwogY2xhc3MgQ0NSZW5kZXJQYXNzIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3MpOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRS
ZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jv
b3RUYXJnZXQpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBJZDsKKworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKElkLCBJbnRSZWN0IG91dHB1dFJl
Y3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9v
dFRhcmdldCk7CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lkIGFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwg
Q0NBcHBlbmRRdWFkc0RhdGEmKTsKQEAgLTY4LDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAK
LSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgSWQgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAKICAgICAvLyBGSVhNRTogTW9kaWZ5IHRoaXMgdHJhbnNmb3JtIHdo
ZW4gbWVyZ2luZyB0aGUgUmVuZGVyUGFzcyBpbnRvIGEgcGFyZW50IGNvbXBvc2l0b3IuCiAgICAg
Ly8gVHJhbnNmb3JtcyBmcm9tIHF1YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIHRoZSBy
b290IHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCkBAIC05Miw5ICs5NCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAgICAgdm9pZCBz
ZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNPY2NsdXNpb25G
cm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIHByb3Rl
Y3RlZDoKLSAgICBDQ1JlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7
CisgICAgQ0NSZW5kZXJQYXNzKElkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7CiAKLSAgICBp
bnQgbV9pZDsKKyAgICBJZCBtX2lkOwogICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdDsKICAgICBD
Q1NoYXJlZFF1YWRTdGF0ZUxpc3QgbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQ7CkBAIC0xMDYs
OSArMTA4LDIxIEBAIHByb3RlY3RlZDoKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPENDUmVuZGVyUGFzcyo+
IENDUmVuZGVyUGFzc0xpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NSZW5kZXJQ
YXNzPiA+IENDUmVuZGVyUGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
bmFtZXNwYWNlIFdURiB7CitzdHJ1Y3QgQ0NSZW5kZXJQYXNzSWRLZXlUcmFpdHMgOiBIYXNoVHJh
aXRzPFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKK3N0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSBmYWxzZTsKK3N0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKK3N0YXRpYyBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBzdGQ6Om1ha2VfcGFpcigwLCAwKTsgfQorc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQmIHNsb3QpIHsgc2xvdCA9IHN0ZDo6
bWFrZV9wYWlyKC0xLCAtMSk7IH0KK3N0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFdlYkNvcmU6
OkNDUmVuZGVyUGFzczo6SWQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmZpcnN0ID09IC0xICYmIHZh
bHVlLnNlY29uZCA9PSAtMTsgfQorfTsKK30gLy8gbmFtZXNwYWNlIFdURgogCi19CituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NM
aXN0OwordHlwZWRlZiBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDQ1JlbmRlclBh
c3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCBjNTNi
N2ZlNDVjMWQ0Yjg3NjU5YWEyNGE5NTYxZjAzYmM1Njc0OWQ5Li44MDMwZTI1MWU1MGMyZmQxMTcx
OTJhYzFkNzVjZDJjOGYyNGJjYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFk
PiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6Oklk
IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tS
ZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbWFza1RleENvb3JkU2Nh
bGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29y
ZE9mZnNldFkpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9h
dCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFkpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9m
ZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3Jl
bmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCAwZDJjYWY5YjU5MWVkN2Uy
NGI3ZmE3NjMwM2Y0Mjg4YzcwZGYxMmYwLi4yNjk1YTRiYzRjNWU4ZGM3YjljNjQ0NzdmOWVjNmY0
NzM4ZjkyYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI3
LDIwICsyNywxOSBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKICNpbmNsdWRl
ICJDQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NS
ZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNz
OwotCiBjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29s
IGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlk
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFz
a1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQsIGJvb2wg
aXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNr
VGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENv
b3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CiAKLSAgICBpbnQgcmVuZGVy
UGFzc0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KKyAgICBDQ1JlbmRlclBh
c3M6OklkIHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAg
ICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VM
YXN0RnJhbWU7IH0KQEAgLTUyLDkgKzUxLDkgQEAgcHVibGljOgogICAgIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFkoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXhDb29yZE9mZnNldFk7IH0KIAog
cHJpdmF0ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVu
ZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVks
IGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwog
Ci0gICAgaW50IG1fcmVuZGVyUGFzc0lkOworICAgIENDUmVuZGVyUGFzczo6SWQgbV9yZW5kZXJQ
YXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MGE2
MzQ5ZDVlMWZkNWJhZjUxNGFiNzEwNTE4MTllMzA4OTExODFhLi4xNjM5M2I5MzBkOTE0YTVkZWM5
N2UzMmFiODI5ZGI0OTNmZjE3ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
QEAgLTE4MSwxNiArMTgxLDI0IEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBl
ZFJlY3RJblRhcmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJu
IGNsaXBwZWRSZWN0SW5UYXJnZXQ7CiB9CiAKK0NDUmVuZGVyUGFzczo6SWQgQ0NSZW5kZXJTdXJm
YWNlOjpyZW5kZXJQYXNzSWQoKQoreworICAgIGludCBsYXllcklkID0gbV9vd25pbmdMYXllci0+
aWQoKTsKKyAgICBpbnQgc3ViSWQgPSAwOworICAgIEFTU0VSVChsYXllcklkID4gMCk7CisgICAg
cmV0dXJuIENDUmVuZGVyUGFzczo6SWQobGF5ZXJJZCwgc3ViSWQpOworfQorCiB2b2lkIENDUmVu
ZGVyU3VyZmFjZTo6YXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmIHBhc3NTaW5r
KQogewotICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShtX293bmluZ0xheWVyLT5pZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNm
b3JtKTsKKyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUocmVuZGVyUGFzc0lkKCksIG1fY29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0p
OwogICAgIHBhc3MtPnNldERhbWFnZVJlY3QobV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdl
UmVjdCgpKTsKICAgICBwYXNzLT5zZXRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7
CiAgICAgcGFzcy0+c2V0QmFja2dyb3VuZEZpbHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3Vu
ZEZpbHRlcnMoKSk7CiAgICAgcGFzc1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRh
LCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKQogewogICAg
IEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDA5YTI4NDY3NmYyMjgyMjk0MjUyNWIxMjVm
M2E2M2YzY2M4N2JjYjMuLjJkN2FhYTkzZWZkNWZlZTNjNzU1MGY2YWEwMzgzYTZmM2Y2NjEzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3MuaCIK
ICNpbmNsdWRlICJDQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFzcyBDQ1F1YWRTaW5rOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5kZXJQYXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgVGV4dFN0cmVhbTsKQEAgLTEwNiw4ICsxMDYsMTAgQEAgcHVibGljOgogCiAgICAgQ0NE
YW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFj
a2VyLmdldCgpOyB9CiAKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgpOworCiAg
ICAgdm9pZCBhcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwotICAgIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5kUXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCBy
ZW5kZXJQYXNzSWQpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xheWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IDk0NmFlYzYzMzM2MjllYWNjYmE4ODY4M2NhMWQ5Nzg0
ZGE0NTk0MzYuLjA0N2JkODBmMzE1N2FiYWU5M2NlMzFiNGZkYjlkN2VhNjM2ZTE0YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB2aWV3cG9ydENoYW5nZWQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgeyB9Ci0gICAg
dmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBj
b25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
MmM4NzRlOGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVjNDk2Y2UzODE5Zi4uZTkzZmU3OTllMzNhMTc5
NmUwMzU2ZDRjOTc2MGZlOTU1NTg1OTQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM0MDcsMTMg
KzM0MDcsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGlu
Z1dpdGhTY2lzc29yKQogICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAog
ICAgIENDVGlsZWRMYXllckltcGwqIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7CisgICAgQ0NSZW5k
ZXJQYXNzOjpJZCBjaGlsZFBhc3NJZCA9IGNoaWxkUHRyLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRl
clBhc3NJZCgpOwogCiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQucmVsZWFzZSgpKTsK
ICAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwogICAgIG15SG9zdEltcGwtPnNl
dFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAgICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRT
aXplKHJvb3RSZWN0LnNpemUoKSwgcm9vdFJlY3Quc2l6ZSgpKTsKIAotICAgIEVYUEVDVF9GQUxT
RShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFz
c0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKG15SG9zdEltcGwtPnJlbmRl
cmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsK
IAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwpA
QCAtMzQyMyw3ICszNDI0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0
dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGNh
Y2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwt
PnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHIt
PmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2Fj
aGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiAKICAgICB7CiAgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKQEAgLTM0MzMsNyArMzQz
NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRo
U2Npc3NvcikKICAgICB9CiAKICAgICAvLyBXZSBzaG91bGQgc3RpbGwgaGF2ZSBjYWNoZWQgdGV4
dHVyZXMgZm9yIHN1cmZhY2UgMiBhZnRlciBkcmF3aW5nIHdpdGggbm8gZGFtYWdlLgotICAgIEVY
UEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JS
ZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBs
LT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFz
c0lkKSk7CiAKICAgICAvLyBEYW1hZ2UgYSBzaW5nbGUgdGlsZSBvZiBzdXJmYWNlIDIuCiAgICAg
Y2hpbGRQdHItPnNldFVwZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAsIDEwLCAxMCkpOwpAQCAtMzQ0
Niw3ICszNDQ3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2Fj
aGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGEgY2FjaGVk
IHRleHR1cmUgZm9yIHN1cmZhY2UgMiBhZ2FpbiBldmVuIHRob3VnaCBpdCB3YXMgZGFtYWdlZC4K
LSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQRUNUX1RSVUUobXlI
b3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChj
aGlsZFBhc3NJZCkpOwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZh
Y2VUZXh0dXJlQ2FjaGluZykKQEAgLTM4MDgsMTggKzM4MDksMTggQEAgc3RydWN0IFJlbmRlclBh
c3NDYWNoZUVudHJ5IHsKIH07CiAKIHN0cnVjdCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSB7Ci0gICAgc3RkOjptYXA8Y2hh
ciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+IHJlbmRlclBhc3NDYWNoZTsKKyAgICBzdGQ6Om1hcDxD
Q1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4gcmVuZGVyUGFzc0NhY2hlOwog
ICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlOwogfTsKIAogY2xh
c3MgQ0NUZXN0UmVuZGVyUGFzczogcHVibGljIENDUmVuZGVyUGFzcyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91
dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByb290VHJhbnNmb3JtKSB7
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwgb3V0cHV0UmVjdCwgcm9v
dFRyYW5zZm9ybSkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVh
dGUoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IEND
VGVzdFJlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zvcm0pKTsgfQogCiAgICAg
dm9pZCBhcHBlbmRRdWFkKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcXVhZCkgeyBtX3F1YWRMaXN0
LmFwcGVuZChxdWFkKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0UmVuZGVyUGFzcyhpbnQg
aWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJv
b3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3Jt
KSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJQYXNzKENDUmVuZGVyUGFzczo6SWQgaWQsIEludFJlY3Qg
b3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0p
IDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSB7IH0KIH07CiAK
IGNsYXNzIENDVGVzdFJlbmRlcmVyIDogcHVibGljIENDUmVuZGVyZXJHTCwgcHVibGljIENDUmVu
ZGVyZXJDbGllbnQgewpAQCAtMzgzNCw5ICszODM1LDkgQEAgcHVibGljOgogICAgIH0KIAogICAg
IHZvaWQgY2xlYXJDYWNoZWRUZXh0dXJlcygpIHsgbV90ZXh0dXJlcy5jbGVhcigpOyB9Ci0gICAg
dm9pZCBzZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgeyBtX3Rl
eHR1cmVzLmFkZChpZCk7IH0KKyAgICB2b2lkIHNldEhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5k
ZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgeyBtX3RleHR1cmVzLmFkZChpZCk7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBp
ZCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlcy5jb250YWlucyhpZCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRl
clBhc3M6OklkIGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVzLmNvbnRhaW5z
KGlkKTsgfQogCiAgICAgLy8gQ0NSZW5kZXJlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2
aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC0zODUzLDcgKzM4NTQsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJ
bnRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEhhc2hTZXQ8aW50PiBtX3RleHR1cmVzOworICAg
IEhhc2hTZXQ8Q0NSZW5kZXJQYXNzOjpJZD4gbV90ZXh0dXJlczsKIH07CiAKIHN0YXRpYyB2b2lk
IGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5k
ZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgQ0NUZXN0UmVuZGVyZXIqIHJlbmRlcmVy
KQpAQCAtMzg2NiwxMiArMzg2NywxNyBAQCBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNz
VGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YQogICAgIGNv
bnN0IGNoYXIqIGN1cnJlbnRDaGFyID0gdGVzdFNjcmlwdDsKIAogICAgIC8vIFByZS1jcmVhdGUg
cm9vdCBwYXNzCi0gICAgY2hhciByb290UmVuZGVyUGFzc0lkID0gdGVzdFNjcmlwdFswXTsKKyAg
ICBDQ1JlbmRlclBhc3M6OklkIHJvb3RSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3M6OklkKHRl
c3RTY3JpcHRbMF0sIHRlc3RTY3JpcHRbMV0pOwogICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJv
b3RSZW5kZXJQYXNzID0gQ0NUZXN0UmVuZGVyUGFzczo6Y3JlYXRlKHJvb3RSZW5kZXJQYXNzSWQs
IEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgdGVzdERhdGEucmVu
ZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Y2hhciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+
KHJvb3RSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJvb3RSZW5kZXJQYXNzLnJl
bGVhc2UoKSkpKTsKKyAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFp
cjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4ocm9vdFJlbmRlclBhc3NJ
ZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocm9vdFJlbmRlclBhc3MucmVsZWFzZSgpKSkpOwogICAg
IHdoaWxlICgqY3VycmVudENoYXIpIHsKLSAgICAgICAgY2hhciByZW5kZXJQYXNzSWQgPSBjdXJy
ZW50Q2hhclswXTsKKyAgICAgICAgaW50IGZpcnN0ID0gKmN1cnJlbnRDaGFyOwogICAgICAgICBj
dXJyZW50Q2hhcisrOworICAgICAgICBBU1NFUlRfVFJVRShjdXJyZW50Q2hhcik7CisgICAgICAg
IGludCBzZWNvbmQgPSAqY3VycmVudENoYXI7CisgICAgICAgIGN1cnJlbnRDaGFyKys7CisKKyAg
ICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3M6OklkKGZp
cnN0LCBzZWNvbmQpOwogCiAgICAgICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRlclBhc3M7
CiAKQEAgLTM4OTEsOSArMzg5NywxMyBAQCBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNz
VGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YQogICAgICAg
ICAgICAgICAgIGN1cnJlbnRDaGFyKys7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCgqY3VycmVu
dENoYXIgPj0gJ0EnKSAmJiAoKmN1cnJlbnRDaGFyIDw9ICdaJykpIHsKICAgICAgICAgICAgICAg
ICAvLyBSZW5kZXJQYXNzIGRyYXcgcXVhZAotICAgICAgICAgICAgICAgIGNoYXIgbmV3UmVuZGVy
UGFzc0lkID0gKmN1cnJlbnRDaGFyOwotICAgICAgICAgICAgICAgIEFTU0VSVF9ORShyb290UmVu
ZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAgICAgIGludCBmaXJzdCA9
ICpjdXJyZW50Q2hhcjsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcisrOworICAgICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAgICAgICAgICAgICAgICBpbnQgc2Vj
b25kID0gKmN1cnJlbnRDaGFyOwogICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAg
ICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBuZXdSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBh
c3M6OklkKGZpcnN0LCBzZWNvbmQpOworICAgICAgICAgICAgICAgIEFTU0VSVF9ORShyb290UmVu
ZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNzSWQpOwogICAgICAgICAgICAgICAgIGJvb2wgaGFzVGV4
dHVyZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJvb2wgY29udGVudHNDaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAKQEAgLTM5MTksNyArMzkyOSw3IEBAIHN0YXRpYyB2b2lkIGNv
bmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQ
YXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+c2V0SGF2ZUNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChuZXdSZW5kZXJQYXNzSWQpOwogCiAgICAgICAgICAg
ICAgICAgICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRlclBhc3MgPSBDQ1Rlc3RSZW5kZXJQ
YXNzOjpjcmVhdGUobmV3UmVuZGVyUGFzc0lkLCBJbnRSZWN0KCksIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUu
aW5zZXJ0KHN0ZDo6cGFpcjxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4obmV3UmVuZGVyUGFz
c0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8
Q0NSZW5kZXJQYXNzOjpJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnk+KG5ld1JlbmRlclBhc3NJZCwg
UmVuZGVyUGFzc0NhY2hlRW50cnkocmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7CiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgSW50UmVjdCBxdWFkUmVjdCA9IEludFJlY3QoMCwg
MCwgMSwgMSk7CkBAIC0zOTQwLDcgKzM5NTAsOSBAQCB2b2lkIGR1bXBSZW5kZXJQYXNzVGVzdERh
dGEoY29uc3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSYgdGVzdERhdGEsIGNoYXIqIGJ1Zgog
ICAgIGNoYXIqIHBvcyA9IGJ1ZmZlcjsKICAgICBmb3IgKENDUmVuZGVyUGFzc0xpc3Q6OmNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgaXQgPSB0ZXN0RGF0YS5yZW5kZXJQYXNzZXMucmJlZ2luKCk7IGl0
ICE9IHRlc3REYXRhLnJlbmRlclBhc3Nlcy5yZW5kKCk7ICsraXQpIHsKICAgICAgICAgY29uc3Qg
Q0NSZW5kZXJQYXNzKiBjdXJyZW50UGFzcyA9ICppdDsKLSAgICAgICAgKnBvcyA9IGN1cnJlbnRQ
YXNzLT5pZCgpOworICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlkKCkuZmlyc3Q7CisgICAg
ICAgIHBvcysrOworICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlkKCkuc2Vjb25kOwogICAg
ICAgICBwb3MrKzsKIAogICAgICAgICBDQ1F1YWRMaXN0Ojpjb25zdF9pdGVyYXRvciBxdWFkTGlz
dEl0ZXJhdG9yID0gY3VycmVudFBhc3MtPnF1YWRMaXN0KCkuYmVnaW4oKTsKQEAgLTM5NTIsNyAr
Mzk2NCw5IEBAIHZvaWQgZHVtcFJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBSZW5kZXJQYXNzUmVt
b3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgY2hhciogYnVmCiAgICAgICAgICAgICAgICAgcG9zKys7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENDRHJhd1F1YWQ6OlJl
bmRlclBhc3M6Ci0gICAgICAgICAgICAgICAgKnBvcyA9IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpt
YXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgICAgICAg
ICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCkt
PnJlbmRlclBhc3NJZCgpLmZpcnN0OworICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAg
ICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRR
dWFkKS0+cmVuZGVyUGFzc0lkKCkuc2Vjb25kOwogICAgICAgICAgICAgICAgIHBvcysrOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTM5OTYsMTE1ICs0
MDEwLDExNSBAQCBUZXN0Q2FzZSByZW1vdmVSZW5kZXJQYXNzZXNDYXNlc1tdID0KICAgICB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgICJTaW5nbGUgcm9vdCBwYXNzIiwKLSAgICAgICAgICAgICJS
c3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc1xuIiwK
KyAgICAgICAgICAgICJSMHNzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlNpbmds
ZSBwYXNzIC0gbm8gcXVhZHMiLAotICAgICAgICAgICAgIlJcbiIsCi0gICAgICAgICAgICAiUlxu
IgorICAgICAgICAgICAgIlIwXG4iLAorICAgICAgICAgICAgIlIwXG4iCiAgICAgICAgIH0sIHsK
ICAgICAgICAgICAgICJUd28gcGFzc2VzLCBubyByZW1vdmFsIiwKLSAgICAgICAgICAgICJSc3Nz
c0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3Nc
biIKLSAgICAgICAgICAgICJBc3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisg
ICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAg
ICAgICAgICAiQTBzc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJUd28gcGFzc2Vz
LCByZW1vdmUgbGFzdCIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAg
ICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIw
c3Nzc0EwW2N0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJS
MHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiSGF2ZSB0ZXh0dXJlIGJ1
dCBjb250ZW50cyBjaGFuZ2VkIC0gbGVhdmUgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NBW3Rd
c3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4i
Ci0gICAgICAgICAgICAiQXNzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFt0XXNzc1xuIgor
ICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAg
ICAgICAgICAgIkEwc3Nzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiQ29udGVudHMg
ZGlkbid0IGNoYW5nZSBidXQgbm8gdGV4dHVyZSAtIGxlYXZlIHBhc3MiLAotICAgICAgICAgICAg
IlJzc3NzQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJz
c3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBb
Y11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBz
c3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAg
IlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsgcmVtb3ZlIiwKLSAg
ICAgICAgICAgICJSc3Nzc0FbY3RdQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwK
LSAgICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY3RdQTBb
Y3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ew
QTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyBy
ZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsgbGVhdmUiLAotICAgICAgICAgICAgIlJzc3NzQVtjXUFb
Y11zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3Nz
XG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBbY11BMFtj
XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMEEw
c3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAogICAgICAgICB9LCB7CiAgICAgICAgICAg
ICAiTWFueSBwYXNzZXMsIHJlbW92ZSBhbGwiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1zc3Nc
biIKLSAgICAgICAgICAgICJBc3NzQltjdF1DW2N0XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtj
dF1zc0VbY3RdRltjdF1cbiIKLSAgICAgICAgICAgICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAi
Q0dbY3RdXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJGc3Nzc3Nz
c1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIK
KyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwW2N0
XUMwW2N0XXNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2N0XXNzRTBbY3RdRjBbY3RdXG4iCisg
ICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAgICJDMEcwW2N0XVxuIgorICAgICAg
ICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkYwc3Nzc3Nzc1xuIgorICAgICAgICAg
ICAgIkcwc3NzXG4iLAorCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKICAgICAgICAgfSwg
ewogICAgICAgICAgICAgIkRlZXAgcmVjdXJzaW9uLCByZW1vdmUgYWxsIiwKIAotICAgICAgICAg
ICAgIlJzc3Nzc0FbY3Rdc3Nzc1xuIgotICAgICAgICAgICAgIkFzc3NzQnNzc1xuIgotICAgICAg
ICAgICAgIkJDXG4iCi0gICAgICAgICAgICAiQ0RcbiIKLSAgICAgICAgICAgICJERVxuIgotICAg
ICAgICAgICAgIkVGXG4iCi0gICAgICAgICAgICAiRkdcbiIKLSAgICAgICAgICAgICJHSFxuIgot
ICAgICAgICAgICAgIkhzc3NJc3NzXG4iCi0gICAgICAgICAgICAiSUpcbiIKLSAgICAgICAgICAg
ICJKc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NzQTBbY3Rdc3Nzc1xuIgorICAgICAgICAg
ICAgIkEwc3Nzc0Iwc3NzXG4iCisgICAgICAgICAgICAiQjBDMFxuIgorICAgICAgICAgICAgIkMw
RDBcbiIKKyAgICAgICAgICAgICJEMEUwXG4iCisgICAgICAgICAgICAiRTBGMFxuIgorICAgICAg
ICAgICAgIkYwRzBcbiIKKyAgICAgICAgICAgICJHMEgwXG4iCisgICAgICAgICAgICAiSDBzc3NJ
MHNzc1xuIgorICAgICAgICAgICAgIkkwSjBcbiIKKyAgICAgICAgICAgICJKMHNzc3NcbiIsCiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICJSc3Nzc3NBc3Nzc1xuIgorICAgICAgICAgICAgIlIw
c3Nzc3NBMHNzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIldpZGUgcmVjdXJzaW9u
LCByZW1vdmUgYWxsIiwKLSAgICAgICAgICAgICJSQVtjdF1CW2N0XUNbY3RdRFtjdF1FW2N0XUZb
Y3RdR1tjdF1IW2N0XUlbY3RdSltjdF1cbiIKLSAgICAgICAgICAgICJBc1xuIgotICAgICAgICAg
ICAgIkJzXG4iCi0gICAgICAgICAgICAiQ3Nzc3NcbiIKLSAgICAgICAgICAgICJEc3Nzc1xuIgot
ICAgICAgICAgICAgIkVzXG4iCi0gICAgICAgICAgICAiRlxuIgotICAgICAgICAgICAgIkdzXG4i
Ci0gICAgICAgICAgICAiSHNcbiIKLSAgICAgICAgICAgICJJc1xuIgotICAgICAgICAgICAgIkpz
c3NzXG4iLAorICAgICAgICAgICAgIlIwQTBbY3RdQjBbY3RdQzBbY3RdRDBbY3RdRTBbY3RdRjBb
Y3RdRzBbY3RdSDBbY3RdSTBbY3RdSjBbY3RdXG4iCisgICAgICAgICAgICAiQTBzXG4iCisgICAg
ICAgICAgICAiQjBzXG4iCisgICAgICAgICAgICAiQzBzc3NzXG4iCisgICAgICAgICAgICAiRDBz
c3NzXG4iCisgICAgICAgICAgICAiRTBzXG4iCisgICAgICAgICAgICAiRjBcbiIKKyAgICAgICAg
ICAgICJHMHNcbiIKKyAgICAgICAgICAgICJIMHNcbiIKKyAgICAgICAgICAgICJJMHNcbiIKKyAg
ICAgICAgICAgICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAKLSAgICAgICAgICAgICJSQUJDREVG
R0hJSlxuIgorICAgICAgICAgICAgIlIwQTBCMEMwRDBFMEYwRzBIMEkwSjBcbiIKICAgICAgICAg
fSwgewogICAgICAgICAgICAgIlJlbW92ZSBwYXNzZXMgcmVnYXJkbGVzcyBvZiBjYWNoZSBzdGF0
ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCQ3Nc
biIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzRVt0XUZcbiIKLSAgICAgICAgICAgICJFc3Nzc3Nz
XG4iCi0gICAgICAgICAgICAiQ0dcbiIKLSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAg
ICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xuIiwKLQotICAgICAgICAgICAg
IlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgorICAgICAgICAg
ICAgIkEwc3NzQjBDMHNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2Ndc3NFMFt0XUYwXG4iCisg
ICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAgICJDMEcwXG4iCisgICAgICAgICAg
ICAiRDBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRjBzc3Nzc3NzXG4iCisgICAgICAgICAgICAi
RzBzc3NcbiIsCisKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAg
ICAgICAgICAgICAiTGVhdmUgc29tZSBwYXNzZXMsIHJlbW92ZSBvdGhlcnMiLAogCi0gICAgICAg
ICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAgICAgICAiQXNzc0JbdF1DW2N0XXNcbiIKLSAg
ICAgICAgICAgICJCc3NzRFtjXXNzXG4iCi0gICAgICAgICAgICAiQ0dcbiIKLSAgICAgICAgICAg
ICJEc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAgICAgICAgICAgICJSc3Nz
c0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3NzQkNzXG4iCi0gICAgICAgICAgICAiQnNzc0Rzc1xu
IgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY11zc3Nc
biIKKyAgICAgICAgICAgICJBMHNzc0IwW3RdQzBbY3Rdc1xuIgorICAgICAgICAgICAgIkIwc3Nz
RDBbY11zc1xuIgorICAgICAgICAgICAgIkMwRzBcbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3Nc
biIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4i
CisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAgICAgICAgIkIwc3NzRDBzc1xuIgor
ICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAwLCAw
LCAwCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDJmMGJlMDNiOTk4MDRhM2E4NGU4Y2U2NGVhNGQ3
ZDNmMzliMDYxM2IuLjRlOTEyNDJlZjIyYTc1ZmZmMjE2NzExZDUyNjYzMGU2YzFkOWUyYjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcApAQCAtMjMwMiw4ICsyMzAyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
cmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkgT1ZFUlJJ
REUKICAgICB7CiAgICAgICAgIENDUmVuZGVyZXIqIHJlbmRlcmVyID0gaG9zdEltcGwtPnJlbmRl
cmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UxUmVuZGVyUGFzc0lkID0gaG9zdEltcGwt
PnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5pZCgpOwotICAgICAgICB1bnNpZ25lZCBzdXJm
YWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+
Y2hpbGRyZW4oKVswXS0+aWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBzdXJmYWNlMVJl
bmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+cmVuZGVy
U3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBzdXJm
YWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+
Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKIAogICAgICAg
ICBzd2l0Y2ggKGhvc3RJbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKSB7CiAgICAgICAgIGNhc2Ug
MDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJm
YWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFj
ZVRlc3QuY3BwCmluZGV4IDA2NjkzZjMzNzRmMDllMDU4MzI3YzY5NTUxYzIwZmYyOTdkMDE3NmQu
LmQ2NmI4Yzk1MTZhM2U4ODI4NmUzNmI4MTU3YTQwNjFiMDZjYWE0Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAt
MTI0LDcgKzEyNCw3IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJm
YWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAgICAgQ0NBcHBlbmRRdWFkc0RhdGEg
YXBwZW5kUXVhZHNEYXRhOwogCiAgICAgYm9vbCBmb3JSZXBsaWNhID0gZmFsc2U7Ci0gICAgcmVu
ZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwg
Zm9yUmVwbGljYSwgMik7CisgICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRD
dWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCgyLCAw
KSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIHNoYXJlZFN0YXRlTGlzdC5zaXplKCkpOwogICAgIEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBzaGFyZWRTdGF0ZUxpc3RbMF0uZ2V0
KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlD
aGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFJlbmRlclBhc3MpCiAgICAgQVNTRVJUX0VRKDF1LCBw
YXNzU2luay5yZW5kZXJQYXNzZXMoKS5zaXplKCkpOwogICAgIENDUmVuZGVyUGFzcyogcGFzcyA9
IHBhc3NTaW5rLnJlbmRlclBhc3NlcygpWzBdLmdldCgpOwogCi0gICAgRVhQRUNUX0VRKDIsIHBh
c3MtPmlkKCkpOworICAgIEVYUEVDVF9FUShDQ1JlbmRlclBhc3M6OklkKDIsIDApLCBwYXNzLT5p
ZCgpKTsKICAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHBhc3MtPm91dHB1dFJlY3QoKSk7CiAg
ICAgRVhQRUNUX0VRKG9yaWdpbiwgcGFzcy0+dHJhbnNmb3JtVG9Sb290VGFyZ2V0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJlckdMVGVzdC5jcHAK
aW5kZXggMmYzZmQ2YTA4MTM1ODcwOTFhMmZjNGIwOWU0OTBiZDcxMGY2ZTk1My4uMGM3OGM1ZWU5
YWVjOGJhZmNjZTJjZDE0N2RjNWY3NDJkNGNlOTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3BwCkBAIC04MCw5ICs4MCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSkKICAg
ICAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpKQogICAgIHsKLSAgICAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShtX3Jvb3RMYXllci0+aWQoKSwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKKyAgICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAg
Q0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBtX3Jvb3RMYXllci0+cmVuZGVyU3VyZmFj
ZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJl
bmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShyZW5kZXJQYXNzSWQsIEludFJlY3QoKSwg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIG1fcmVuZGVyUGFzc2VzSW5EcmF3
T3JkZXIuYXBwZW5kKHJvb3RSZW5kZXJQYXNzLmdldCgpKTsKLSAgICAgICAgbV9yZW5kZXJQYXNz
ZXMuc2V0KG1fcm9vdExheWVyLT5pZCgpLCByb290UmVuZGVyUGFzcy5yZWxlYXNlKCkpOworICAg
ICAgICBtX3JlbmRlclBhc3Nlcy5zZXQocmVuZGVyUGFzc0lkLCByb290UmVuZGVyUGFzcy5yZWxl
YXNlKCkpOwogICAgIH0KIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161563</attachid>
            <date>2012-08-30 14:50:02 -0700</date>
            <delta_ts>2012-08-30 16:16:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120830174950.patch</filename>
            <type>text/plain</type>
            <size>39812</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ4OTBjNTY5MWRkYmVl
Y2U4NTJlMDdiMmViMjA4YWI1MjFiM2U4My4uOGZlZGM1YmM2MzJjMWM3MzExZThmNTIzZDk2NjBl
NDAzYzFkYmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA4LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Omlk
KToKKyAgICAgICAgKENDUmVuZGVyUGFzc0lkS2V5VHJhaXRzKToKKyAgICAgICAgKFdURjo6Q0NS
ZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpDQ1JlbmRl
clBhc3NJZEtleVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6
Q0NSZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZCk6CisKIDIwMTItMDgtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBTdHlsZXNTb3VyY2VN
YXBwaW5nIGZyb20gU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDRmZWVhYzkzNjMxMDBlMmNiMWRmMzMxMzBmNTViZDkyZjc1MDA3OTAuLjcw
MDk0NTI1ODJhOWE2ZWFlMTdjZWI0N2ZkZDk4MDkzNTUwODAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMzAgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIFJlbmRlclBhc3Mg
aWRzIGhvbGQgYm90aCBnZW5lcmF0aW5nIGxheWVyIGlkIGFuZCBhbiBpbmRleAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50
OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisKIDIwMTItMDgtMjkgIFBldGVyIEJldmVybG9vICA8
cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKaW5kZXggNDY4OGJlZDE5YmZjNGU4MzVi
YWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEy
MjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKQEAgLTExMiwxMiAr
MTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJlcjo6bW92ZVNjaXNzb3JUb1dpbmRvd1Nw
YWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZsCiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJl
cjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
TGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0
IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJhbWU7CisgICAgSGFzaE1hcDxDQ1JlbmRl
clBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09y
ZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKLSAgICBWZWN0b3I8
aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1
cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQ
YXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAg
IGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0
ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewog
ICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcmVuZGVyUGFz
c2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVy
UGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIENDRGlyZWN0UmVuZGVyZXI6
OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHJl
bmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJvb2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2
ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0Citib29sIENDRGly
ZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQ
YXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5k
ZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5p
ZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIu
aAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRm
YmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
aW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291
cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nl
c0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBj
b25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSk7CiAgICAgc3RhdGljIEludFJlY3Qg
bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBz
Y2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXMoaW50IHJlbmRlclBh
c3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKENDUmVuZGVyUGFzczo6
SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShjb25z
dCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0MzRGVudW0gcmVuZGVyUGFzc1RleHR1cmVG
b3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBtX3JlbmRlclBh
c3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDYWNoZWRU
ZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBiN2IwMWU2OTU5NmQ5NDM5YWRiOGE2NWZmOTBkNjVkOWNmNThkZDU5Li5k
NWZhZDA5YzI0YTZlZGJkZTBlNTRkMTA4NDkyNzhlZjI1ODgzOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAK
ICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZChm
cmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGludCB0YXJnZXRSZW5kZXJQYXNz
SWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgQ0NSZW5kZXJQ
YXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0
UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQp
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGlu
Z1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgaW50IGNvbnRyaWJ1dGluZ1JlbmRlclBh
c3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAg
ICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJl
bmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCk7CiAgICAgICAgICAg
ICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQs
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZp
c2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpAQCAtNDA4LDE0ICs0MDgsMTQgQEAgSW50
U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJvdW5kcygpOwog
fQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKGludCBy
ZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSYgZnJhbWUp
CitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKENDUmVuZGVy
UGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lkSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQocmVuZGVyUGFzc0lkKTsKICAgICBBU1NF
UlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2
ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEm
IGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVy
UGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyogcmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRS
ZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQsIGZyYW1lKTsKICAgICBzaXplX3QgcmVt
b3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmluZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAg
LTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUo
aW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SQogICAgICAgICBpZiAoY3Vy
cmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJ
ZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5leHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFz
c0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVu
ZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5k
ZXggYzhjMzMzZTM2OTQ3MjRhYjhmODY5MjVkZWFiMjEzYmRiMjc1MjhiYy4uM2Y5ZGMxNzhhYzUy
YWE3MjY0ZTZkNjMwYTZiZDcxZDdkYTkyNDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3Bw
CkBAIC0zOCwxMiArMzgsMTIgQEAgdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NS
ZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBv
dXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3Mo
aWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkpOwogfQogCi1DQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5k
ZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQogICAg
IDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0KHRyYW5zZm9ybVRvUm9v
dFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRwdXRSZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaAppbmRleCA5ZWJlZDFiZDVkZThmMGFkY2VlNWIyOWQ3NjA3MmU3NTY4MzFhZWIwLi43ZDRi
YzczZjUwNTU4YWYxOWI4ZjE2NWU1ZDA2MWJlNjdlMTcyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaApAQCAtNjAsNyArNjAsOSBAQCB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+ID4gQ0NTaGFyZWRRdWFkU3RhdGVMaXN0OwogY2xhc3MgQ0NSZW5kZXJQYXNzIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3MpOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRS
ZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jv
b3RUYXJnZXQpOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBJZDsKKworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKElkLCBJbnRSZWN0IG91dHB1dFJl
Y3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9v
dFRhcmdldCk7CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBD
Q09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lkIGFw
cGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NSZW5k
ZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwg
Q0NBcHBlbmRRdWFkc0RhdGEmKTsKQEAgLTY4LDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgY29u
c3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAK
LSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgSWQgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAKICAgICAvLyBGSVhNRTogTW9kaWZ5IHRoaXMgdHJhbnNmb3JtIHdo
ZW4gbWVyZ2luZyB0aGUgUmVuZGVyUGFzcyBpbnRvIGEgcGFyZW50IGNvbXBvc2l0b3IuCiAgICAg
Ly8gVHJhbnNmb3JtcyBmcm9tIHF1YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIHRoZSBy
b290IHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCkBAIC05Miw5ICs5NCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAgICAgdm9pZCBz
ZXRIYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNPY2NsdXNpb25G
cm9tT3V0c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIHByb3Rl
Y3RlZDoKLSAgICBDQ1JlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7
CisgICAgQ0NSZW5kZXJQYXNzKElkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7CiAKLSAgICBp
bnQgbV9pZDsKKyAgICBJZCBtX2lkOwogICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdDsKICAgICBD
Q1NoYXJlZFF1YWRTdGF0ZUxpc3QgbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQ7CkBAIC0xMDYs
OSArMTA4LDIxIEBAIHByb3RlY3RlZDoKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPENDUmVuZGVyUGFzcyo+
IENDUmVuZGVyUGFzc0xpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NSZW5kZXJQ
YXNzPiA+IENDUmVuZGVyUGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
bmFtZXNwYWNlIFdURiB7CitzdHJ1Y3QgQ0NSZW5kZXJQYXNzSWRLZXlUcmFpdHMgOiBIYXNoVHJh
aXRzPFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKK3N0YXRpYyBjb25zdCBib29sIGVtcHR5
VmFsdWVJc1plcm8gPSBmYWxzZTsKK3N0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24g
PSBmYWxzZTsKK3N0YXRpYyBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIGVtcHR5VmFsdWUoKSB7
IHJldHVybiBzdGQ6Om1ha2VfcGFpcigwLCAwKTsgfQorc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQmIHNsb3QpIHsgc2xvdCA9IHN0ZDo6
bWFrZV9wYWlyKC0xLCAtMSk7IH0KK3N0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFdlYkNvcmU6
OkNDUmVuZGVyUGFzczo6SWQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmZpcnN0ID09IC0xICYmIHZh
bHVlLnNlY29uZCA9PSAtMTsgfQorfTsKK30gLy8gbmFtZXNwYWNlIFdURgogCi19CituYW1lc3Bh
Y2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NM
aXN0OwordHlwZWRlZiBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDQ1JlbmRlclBh
c3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCBjNTNi
N2ZlNDVjMWQ0Yjg3NjU5YWEyNGE5NTYxZjAzYmM1Njc0OWQ5Li44MDMwZTI1MWU1MGMyZmQxMTcx
OTJhYzFkNzVjZDJjOGYyNGJjYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3QgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFk
PiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6Oklk
IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQo
c2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tS
ZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbWFza1RleENvb3JkU2Nh
bGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29y
ZE9mZnNldFkpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdR
dWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9h
dCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFkpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50
UmVjdCYgcXVhZFJlY3QsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9m
ZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJl
ZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3Jl
bmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCAwZDJjYWY5YjU5MWVkN2Uy
NGI3ZmE3NjMwM2Y0Mjg4YzcwZGYxMmYwLi4yNjk1YTRiYzRjNWU4ZGM3YjljNjQ0NzdmOWVjNmY0
NzM4ZjkyYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI3
LDIwICsyNywxOSBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKICNpbmNsdWRl
ICJDQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NS
ZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNz
OwotCiBjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29s
IGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlk
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFz
a1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQsIGJvb2wg
aXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNr
VGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENv
b3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CiAKLSAgICBpbnQgcmVuZGVy
UGFzc0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KKyAgICBDQ1JlbmRlclBh
c3M6OklkIHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAg
ICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5n
ZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VM
YXN0RnJhbWU7IH0KQEAgLTUyLDkgKzUxLDkgQEAgcHVibGljOgogICAgIGZsb2F0IG1hc2tUZXhD
b29yZE9mZnNldFkoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXhDb29yZE9mZnNldFk7IH0KIAog
cHJpdmF0ZToKLSAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NS
ZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0
JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVY
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVu
ZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlk
IG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RG
cmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVks
IGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwog
Ci0gICAgaW50IG1fcmVuZGVyUGFzc0lkOworICAgIENDUmVuZGVyUGFzczo6SWQgbV9yZW5kZXJQ
YXNzSWQ7CiAgICAgYm9vbCBtX2lzUmVwbGljYTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJl
c291cmNlSWQgbV9tYXNrUmVzb3VyY2VJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MGE2
MzQ5ZDVlMWZkNWJhZjUxNGFiNzEwNTE4MTllMzA4OTExODFhLi4xNjM5M2I5MzBkOTE0YTVkZWM5
N2UzMmFiODI5ZGI0OTNmZjE3ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAK
QEAgLTE4MSwxNiArMTgxLDI0IEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBl
ZFJlY3RJblRhcmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJu
IGNsaXBwZWRSZWN0SW5UYXJnZXQ7CiB9CiAKK0NDUmVuZGVyUGFzczo6SWQgQ0NSZW5kZXJTdXJm
YWNlOjpyZW5kZXJQYXNzSWQoKQoreworICAgIGludCBsYXllcklkID0gbV9vd25pbmdMYXllci0+
aWQoKTsKKyAgICBpbnQgc3ViSWQgPSAwOworICAgIEFTU0VSVChsYXllcklkID4gMCk7CisgICAg
cmV0dXJuIENDUmVuZGVyUGFzczo6SWQobGF5ZXJJZCwgc3ViSWQpOworfQorCiB2b2lkIENDUmVu
ZGVyU3VyZmFjZTo6YXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmIHBhc3NTaW5r
KQogewotICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShtX293bmluZ0xheWVyLT5pZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNm
b3JtKTsKKyAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUocmVuZGVyUGFzc0lkKCksIG1fY29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0p
OwogICAgIHBhc3MtPnNldERhbWFnZVJlY3QobV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdl
UmVjdCgpKTsKICAgICBwYXNzLT5zZXRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7
CiAgICAgcGFzcy0+c2V0QmFja2dyb3VuZEZpbHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3Vu
ZEZpbHRlcnMoKSk7CiAgICAgcGFzc1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2Uo
KSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRh
LCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKQogewogICAg
IEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDA5YTI4NDY3NmYyMjgyMjk0MjUyNWIxMjVm
M2E2M2YzY2M4N2JjYjMuLjJkN2FhYTkzZWZkNWZlZTNjNzU1MGY2YWEwMzgzYTZmM2Y2NjEzZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3MuaCIK
ICNpbmNsdWRlICJDQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ0RhbWFnZVRyYWNrZXI7CiBjbGFzcyBDQ1F1YWRTaW5rOwotY2xhc3MgQ0NS
ZW5kZXJQYXNzOwogY2xhc3MgQ0NSZW5kZXJQYXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgVGV4dFN0cmVhbTsKQEAgLTEwNiw4ICsxMDYsMTAgQEAgcHVibGljOgogCiAgICAgQ0NE
YW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFj
a2VyLmdldCgpOyB9CiAKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgpOworCiAg
ICAgdm9pZCBhcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwotICAgIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIENDQXBwZW5kUXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCBy
ZW5kZXJQYXNzSWQpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xheWVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJlci5oCmluZGV4IDk0NmFlYzYzMzM2MjllYWNjYmE4ODY4M2NhMWQ5Nzg0
ZGE0NTk0MzYuLjA0N2JkODBmMzE1N2FiYWU5M2NlMzFiNGZkYjlkN2VhNjM2ZTE0YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB2aWV3cG9ydENoYW5nZWQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQ
YXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgeyB9Ci0gICAg
dmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBj
b25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
MmM4NzRlOGNjMGM5MzhhNDk4ODI4ZDY5ZDA3MDVjNDk2Y2UzODE5Zi4uZjFiMWY3ODkxOGZhNGI5
ZjZlZjRlOTUzZjU4ODJjOTkwZmExMmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM0MDcsMTMg
KzM0MDcsMTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGlu
Z1dpdGhTY2lzc29yKQogICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAog
ICAgIENDVGlsZWRMYXllckltcGwqIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7CisgICAgQ0NSZW5k
ZXJQYXNzOjpJZCBjaGlsZFBhc3NJZChjaGlsZFB0ci0+aWQoKSwgMCk7CiAKICAgICBjaGlsZC0+
YWRkQ2hpbGQoZ3JhbmRDaGlsZC5yZWxlYXNlKCkpOwogICAgIHJvb3QtPmFkZENoaWxkKGNoaWxk
LnJlbGVhc2UoKSk7CiAgICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgp
KTsKICAgICBteUhvc3RJbXBsLT5zZXRWaWV3cG9ydFNpemUocm9vdFJlY3Quc2l6ZSgpLCByb290
UmVjdC5zaXplKCkpOwogCi0gICAgRVhQRUNUX0ZBTFNFKG15SG9zdEltcGwtPnJlbmRlcmVyKCkt
PmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNl
c0ZvclJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogCiAgICAgewogICAgICAgICBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7CkBAIC0zNDIzLDcgKzM0MjQsNyBAQCBURVNU
X0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAg
ICAgfQogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgY2FjaGVkIHRleHR1cmVzIGZvciBzdXJmYWNl
IDIuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJl
c291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQoKSkpOworICAgIEVYUEVDVF9UUlVF
KG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNz
SWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6
RnJhbWVEYXRhIGZyYW1lOwpAQCAtMzQzMyw3ICszNDM0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8v
IFdlIHNob3VsZCBzdGlsbCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyIGFmdGVy
IGRyYXdpbmcgd2l0aCBubyBkYW1hZ2UuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVu
ZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQo
KSkpOworICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIC8vIERhbWFnZSBh
IHNpbmdsZSB0aWxlIG9mIHN1cmZhY2UgMi4KICAgICBjaGlsZFB0ci0+c2V0VXBkYXRlUmVjdChJ
bnRSZWN0KDEwLCAxMCwgMTAsIDEwKSk7CkBAIC0zNDQ2LDcgKzM0NDcsNyBAQCBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAgICAgfQog
CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgYSBjYWNoZWQgdGV4dHVyZSBmb3Igc3VyZmFjZSAyIGFn
YWluIGV2ZW4gdGhvdWdoIGl0IHdhcyBkYW1hZ2VkLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdElt
cGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQ
dHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZl
Q2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiB9CiAKIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVDYWNoaW5nKQpAQCAtMzgw
OCwxOCArMzgwOSwxOCBAQCBzdHJ1Y3QgUmVuZGVyUGFzc0NhY2hlRW50cnkgewogfTsKIAogc3Ry
dWN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1w
bDo6RnJhbWVEYXRhIHsKLSAgICBzdGQ6Om1hcDxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4g
cmVuZGVyUGFzc0NhY2hlOworICAgIHN0ZDo6bWFwPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBh
c3NDYWNoZUVudHJ5PiByZW5kZXJQYXNzQ2FjaGU7CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGU7CiB9OwogCiBjbGFzcyBDQ1Rlc3RSZW5kZXJQYXNzOiBwdWJs
aWMgQ0NSZW5kZXJQYXNzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRl
clBhc3M+IGNyZWF0ZShpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1Rl
c3RSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclBhc3M6OklkIGlkLCBJ
bnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByb290VHJh
bnNmb3JtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwgb3V0cHV0
UmVjdCwgcm9vdFRyYW5zZm9ybSkpOyB9CiAKICAgICB2b2lkIGFwcGVuZFF1YWQoUGFzc093blB0
cjxDQ0RyYXdRdWFkPiBxdWFkKSB7IG1fcXVhZExpc3QuYXBwZW5kKHF1YWQpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBDQ1Rlc3RSZW5kZXJQYXNzKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBh
c3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zvcm0pIHsgfQorICAgIENDVGVzdFJlbmRlclBh
c3MoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBhc3MoaWQsIG91dHB1
dFJlY3QsIHJvb3RUcmFuc2Zvcm0pIHsgfQogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyZXIgOiBw
dWJsaWMgQ0NSZW5kZXJlckdMLCBwdWJsaWMgQ0NSZW5kZXJlckNsaWVudCB7CkBAIC0zODM0LDkg
KzM4MzUsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBjbGVhckNhY2hlZFRleHR1cmVz
KCkgeyBtX3RleHR1cmVzLmNsZWFyKCk7IH0KLSAgICB2b2lkIHNldEhhdmVDYWNoZWRSZXNvdXJj
ZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSB7IG1fdGV4dHVyZXMuYWRkKGlkKTsgfQorICAgIHZv
aWQgc2V0SGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6Oklk
IGlkKSB7IG1fdGV4dHVyZXMuYWRkKGlkKTsgfQogCi0gICAgdmlydHVhbCBib29sIGhhdmVDYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3RleHR1cmVzLmNvbnRhaW5zKGlkKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVk
UmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQgaWQpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fdGV4dHVyZXMuY29udGFpbnMoaWQpOyB9CiAKICAgICAvLyBDQ1JlbmRl
cmVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2
aWNlVmlld3BvcnRTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7
IH0KQEAgLTM4NTMsNyArMzg1NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ0NMYXll
clRyZWVTZXR0aW5ncyBtX3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7Ci0g
ICAgSGFzaFNldDxpbnQ+IG1fdGV4dHVyZXM7CisgICAgSGFzaFNldDxDQ1JlbmRlclBhc3M6Oklk
PiBtX3RleHR1cmVzOwogfTsKIAogc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3RE
YXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRl
c3REYXRhLCBDQ1Rlc3RSZW5kZXJlciogcmVuZGVyZXIpCkBAIC0zODY2LDEyICszODY3LDE3IEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgY29uc3QgY2hhciogY3VycmVudENoYXIgPSB0
ZXN0U2NyaXB0OwogCiAgICAgLy8gUHJlLWNyZWF0ZSByb290IHBhc3MKLSAgICBjaGFyIHJvb3RS
ZW5kZXJQYXNzSWQgPSB0ZXN0U2NyaXB0WzBdOworICAgIENDUmVuZGVyUGFzczo6SWQgcm9vdFJl
bmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQodGVzdFNjcmlwdFswXSwgdGVzdFNjcmlwdFsx
XSk7CiAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1Rlc3RSZW5k
ZXJQYXNzOjpjcmVhdGUocm9vdFJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpKTsKLSAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6
cGFpcjxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4ocm9vdFJlbmRlclBhc3NJZCwgUmVuZGVy
UGFzc0NhY2hlRW50cnkocm9vdFJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgIHRlc3REYXRh
LnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPENDUmVuZGVyUGFzczo6SWQsIFJlbmRl
clBhc3NDYWNoZUVudHJ5Pihyb290UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShy
b290UmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7CiAgICAgd2hpbGUgKCpjdXJyZW50Q2hhcikgewot
ICAgICAgICBjaGFyIHJlbmRlclBhc3NJZCA9IGN1cnJlbnRDaGFyWzBdOworICAgICAgICBpbnQg
Zmlyc3QgPSAqY3VycmVudENoYXI7CiAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgIEFT
U0VSVF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAgICAgICAgaW50IHNlY29uZCA9ICpjdXJyZW50Q2hh
cjsKKyAgICAgICAgY3VycmVudENoYXIrKzsKKworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQoZmlyc3QsIHNlY29uZCk7CiAKICAgICAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzczsKIApAQCAtMzg5MSw5ICszODk3LDEzIEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoKCpjdXJyZW50Q2hhciA+PSAnQScpICYmICgqY3VycmVu
dENoYXIgPD0gJ1onKSkgewogICAgICAgICAgICAgICAgIC8vIFJlbmRlclBhc3MgZHJhdyBxdWFk
Ci0gICAgICAgICAgICAgICAgY2hhciBuZXdSZW5kZXJQYXNzSWQgPSAqY3VycmVudENoYXI7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJ
ZCk7CisgICAgICAgICAgICAgICAgaW50IGZpcnN0ID0gKmN1cnJlbnRDaGFyOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUX1RSVUUoY3VycmVu
dENoYXIpOworICAgICAgICAgICAgICAgIGludCBzZWNvbmQgPSAqY3VycmVudENoYXI7CiAgICAg
ICAgICAgICAgICAgY3VycmVudENoYXIrKzsKKyAgICAgICAgICAgICAgICBDQ1JlbmRlclBhc3M6
OklkIG5ld1JlbmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQoZmlyc3QsIHNlY29uZCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJ
ZCk7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNUZXh0dXJlID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgYm9vbCBjb250ZW50c0NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIApAQCAt
MzkxOSw3ICszOTI5LDcgQEAgc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRh
KGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmEKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lk
KG5ld1JlbmRlclBhc3NJZCk7CiAKICAgICAgICAgICAgICAgICAgICAgT3duUHRyPENDUmVuZGVy
UGFzcz4gcmVuZGVyUGFzcyA9IENDVGVzdFJlbmRlclBhc3M6OmNyZWF0ZShuZXdSZW5kZXJQYXNz
SWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPGNoYXIsIFJl
bmRlclBhc3NDYWNoZUVudHJ5PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5
KHJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0YS5y
ZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQ
YXNzQ2FjaGVFbnRyeT4obmV3UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyZW5k
ZXJQYXNzLnJlbGVhc2UoKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICBJbnRSZWN0IHF1YWRSZWN0ID0gSW50UmVjdCgwLCAwLCAxLCAxKTsKQEAgLTM5NDAsNyArMzk1
MCw5IEBAIHZvaWQgZHVtcFJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBSZW5kZXJQYXNzUmVtb3Zh
bFRlc3REYXRhJiB0ZXN0RGF0YSwgY2hhciogYnVmCiAgICAgY2hhciogcG9zID0gYnVmZmVyOwog
ICAgIGZvciAoQ0NSZW5kZXJQYXNzTGlzdDo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IHRl
c3REYXRhLnJlbmRlclBhc3Nlcy5yYmVnaW4oKTsgaXQgIT0gdGVzdERhdGEucmVuZGVyUGFzc2Vz
LnJlbmQoKTsgKytpdCkgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRQYXNz
ID0gKml0OwotICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlkKCk7CisgICAgICAgICpwb3Mg
PSBjdXJyZW50UGFzcy0+aWQoKS5maXJzdDsKKyAgICAgICAgcG9zKys7CisgICAgICAgICpwb3Mg
PSBjdXJyZW50UGFzcy0+aWQoKS5zZWNvbmQ7CiAgICAgICAgIHBvcysrOwogCiAgICAgICAgIEND
UXVhZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIHF1YWRMaXN0SXRlcmF0b3IgPSBjdXJyZW50UGFzcy0+
cXVhZExpc3QoKS5iZWdpbigpOwpAQCAtMzk1Miw3ICszOTY0LDkgQEAgdm9pZCBkdW1wUmVuZGVy
UGFzc1Rlc3REYXRhKGNvbnN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhLCBj
aGFyKiBidWYKICAgICAgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKLSAgICAgICAgICAgICAg
ICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCkt
PnJlbmRlclBhc3NJZCgpOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkuZmlyc3Q7Cisg
ICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgKnBvcyA9IENDUmVuZGVyUGFz
c0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKS5zZWNv
bmQ7CiAgICAgICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgpAQCAtMzk5NiwxMTUgKzQwMTAsMTE1IEBAIFRlc3RDYXNlIHJlbW92
ZVJlbmRlclBhc3Nlc0Nhc2VzW10gPQogICAgIHsKICAgICAgICAgewogICAgICAgICAgICAgIlNp
bmdsZSByb290IHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzXG4iLAotICAgICAgICAgICAgIlJz
c3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc1xuIgog
ICAgICAgICB9LCB7CiAgICAgICAgICAgICAiU2luZ2xlIHBhc3MgLSBubyBxdWFkcyIsCi0gICAg
ICAgICAgICAiUlxuIiwKLSAgICAgICAgICAgICJSXG4iCisgICAgICAgICAgICAiUjBcbiIsCisg
ICAgICAgICAgICAiUjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlR3byBwYXNzZXMs
IG5vIHJlbW92YWwiLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4i
CisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisg
ICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAg
ICAgfSwgewogICAgICAgICAgICAgIlR3byBwYXNzZXMsIHJlbW92ZSBsYXN0IiwKLSAgICAgICAg
ICAgICJSc3Nzc0FbY3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAg
ICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY3Rdc3NzXG4iCisgICAgICAg
ICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0s
IHsKICAgICAgICAgICAgICJIYXZlIHRleHR1cmUgYnV0IGNvbnRlbnRzIGNoYW5nZWQgLSBsZWF2
ZSBwYXNzIiwKLSAgICAgICAgICAgICJSc3Nzc0FbdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nz
c1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgor
ICAgICAgICAgICAgIlIwc3Nzc0EwW3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAor
ICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAg
ICAgIH0sIHsKICAgICAgICAgICAgICJDb250ZW50cyBkaWRuJ3QgY2hhbmdlIGJ1dCBubyB0ZXh0
dXJlIC0gbGVhdmUgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAg
ICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAi
QXNzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEw
c3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nz
c1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVy
ZW5jZSB0aGUgc2FtZSBwYXNzOyByZW1vdmUiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1BW2N0
XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQUFzc3Nc
biIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1BMFtjdF1zc3NcbiIKKyAgICAgICAgICAgICJB
MHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBBMHNzc1xuIgogICAgICAgICB9LCB7CiAg
ICAgICAgICAgICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVyZW5jZSB0aGUgc2FtZSBwYXNzOyBs
ZWF2ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2NdQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQUFzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xu
IiwKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXUEwW2Ndc3NzXG4iCisgICAgICAgICAgICAiQTBz
c3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNz
c3NcbiIsCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJNYW55IHBhc3NlcywgcmVtb3ZlIGFs
bCIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCW2N0
XUNbY3Rdc1xuIgotICAgICAgICAgICAgIkJzc3NEW2N0XXNzRVtjdF1GW2N0XVxuIgotICAgICAg
ICAgICAgIkVzc3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1tjdF1cbiIKLSAgICAgICAgICAgICJE
c3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xu
IiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0
XXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBbY3RdQzBbY3Rdc1xuIgorICAgICAgICAgICAg
IkIwc3NzRDBbY3Rdc3NFMFtjdF1GMFtjdF1cbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgor
ICAgICAgICAgICAgIkMwRzBbY3RdXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAg
ICAgICAgICAiRjBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAg
ICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiRGVlcCByZWN1
cnNpb24sIHJlbW92ZSBhbGwiLAogCi0gICAgICAgICAgICAiUnNzc3NzQVtjdF1zc3NzXG4iCi0g
ICAgICAgICAgICAiQXNzc3NCc3NzXG4iCi0gICAgICAgICAgICAiQkNcbiIKLSAgICAgICAgICAg
ICJDRFxuIgotICAgICAgICAgICAgIkRFXG4iCi0gICAgICAgICAgICAiRUZcbiIKLSAgICAgICAg
ICAgICJGR1xuIgotICAgICAgICAgICAgIkdIXG4iCi0gICAgICAgICAgICAiSHNzc0lzc3NcbiIK
LSAgICAgICAgICAgICJJSlxuIgotICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAg
IlIwc3Nzc3NBMFtjdF1zc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzQjBzc3NcbiIKKyAgICAg
ICAgICAgICJCMEMwXG4iCisgICAgICAgICAgICAiQzBEMFxuIgorICAgICAgICAgICAgIkQwRTBc
biIKKyAgICAgICAgICAgICJFMEYwXG4iCisgICAgICAgICAgICAiRjBHMFxuIgorICAgICAgICAg
ICAgIkcwSDBcbiIKKyAgICAgICAgICAgICJIMHNzc0kwc3NzXG4iCisgICAgICAgICAgICAiSTBK
MFxuIgorICAgICAgICAgICAgIkowc3Nzc1xuIiwKICAgICAgICAgICAgIAotICAgICAgICAgICAg
IlJzc3Nzc0Fzc3NzXG4iCisgICAgICAgICAgICAiUjBzc3Nzc0Ewc3Nzc1xuIgogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAiV2lkZSByZWN1cnNpb24sIHJlbW92ZSBhbGwiLAotICAgICAgICAg
ICAgIlJBW2N0XUJbY3RdQ1tjdF1EW2N0XUVbY3RdRltjdF1HW2N0XUhbY3RdSVtjdF1KW2N0XVxu
IgotICAgICAgICAgICAgIkFzXG4iCi0gICAgICAgICAgICAiQnNcbiIKLSAgICAgICAgICAgICJD
c3Nzc1xuIgotICAgICAgICAgICAgIkRzc3NzXG4iCi0gICAgICAgICAgICAiRXNcbiIKLSAgICAg
ICAgICAgICJGXG4iCi0gICAgICAgICAgICAiR3NcbiIKLSAgICAgICAgICAgICJIc1xuIgotICAg
ICAgICAgICAgIklzXG4iCi0gICAgICAgICAgICAiSnNzc3NcbiIsCisgICAgICAgICAgICAiUjBB
MFtjdF1CMFtjdF1DMFtjdF1EMFtjdF1FMFtjdF1GMFtjdF1HMFtjdF1IMFtjdF1JMFtjdF1KMFtj
dF1cbiIKKyAgICAgICAgICAgICJBMHNcbiIKKyAgICAgICAgICAgICJCMHNcbiIKKyAgICAgICAg
ICAgICJDMHNzc3NcbiIKKyAgICAgICAgICAgICJEMHNzc3NcbiIKKyAgICAgICAgICAgICJFMHNc
biIKKyAgICAgICAgICAgICJGMFxuIgorICAgICAgICAgICAgIkcwc1xuIgorICAgICAgICAgICAg
Ikgwc1xuIgorICAgICAgICAgICAgIkkwc1xuIgorICAgICAgICAgICAgIkowc3Nzc1xuIiwKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgIlJBQkNERUZHSElKXG4iCisgICAgICAgICAgICAiUjBB
MEIwQzBEMEUwRjBHMEgwSTBKMFxuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiUmVtb3Zl
IHBhc3NlcyByZWdhcmRsZXNzIG9mIGNhY2hlIHN0YXRlIiwKLSAgICAgICAgICAgICJSc3Nzc0Fb
Y3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc0JDc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Nd
c3NFW3RdRlxuIgotICAgICAgICAgICAgIkVzc3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1xuIgot
ICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiRnNzc3Nzc3NcbiIKLSAgICAg
ICAgICAgICJHc3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAg
ICAiUjBzc3NzQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAg
ICAgICAgIkIwc3NzRDBbY11zc0UwW3RdRjBcbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgor
ICAgICAgICAgICAgIkMwRzBcbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAg
ICAgICJGMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAgICAgICAg
IlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJMZWF2ZSBzb21lIHBh
c3NlcywgcmVtb3ZlIG90aGVycyIsCiAKLSAgICAgICAgICAgICJSc3Nzc0FbY11zc3NcbiIKLSAg
ICAgICAgICAgICJBc3NzQlt0XUNbY3Rdc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Ndc3NcbiIK
LSAgICAgICAgICAgICJDR1xuIgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAg
ICAiR3Nzc1xuIiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NCQ3NcbiIKLSAgICAgICAgICAgICJCc3NzRHNzXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3Nc
biIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBb
dF1DMFtjdF1zXG4iCisgICAgICAgICAgICAiQjBzc3NEMFtjXXNzXG4iCisgICAgICAgICAgICAi
QzBHMFxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4i
LAorCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwQzBz
XG4iCisgICAgICAgICAgICAiQjBzc3NEMHNzXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4i
CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgIDAsIDAsIDAKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggMmYwYmUwM2I5OTgwNGEzYTg0ZThjZTY0ZWE0ZDdkM2YzOWIwNjEzYi4uNGU5MTI0MmVmMjJh
NzVmZmYyMTY3MTFkNTI2NjMwZTZjMWQ5ZTJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yMzAyLDggKzIzMDIs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ0NSZW5k
ZXJlciogcmVuZGVyZXIgPSBob3N0SW1wbC0+cmVuZGVyZXIoKTsKLSAgICAgICAgdW5zaWduZWQg
c3VyZmFjZTFSZW5kZXJQYXNzSWQgPSBob3N0SW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClb
MF0tPmlkKCk7Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdElt
cGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5pZCgpOworICAg
ICAgICBDQ1JlbmRlclBhc3M6OklkIHN1cmZhY2UxUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJv
b3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgp
OworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdElt
cGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJm
YWNlKCktPnJlbmRlclBhc3NJZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaG9zdEltcGwtPnNvdXJj
ZUZyYW1lTnVtYmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKaW5kZXggMDY2OTNmMzM3
NGYwOWUwNTgzMjdjNjk1NTFjMjBmZjI5N2QwMTc2ZC4uZDY2YjhjOTUxNmEzZTg4Mjg2ZTM2Yjgx
NTdhNDA2MWIwNmNhYTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChDQ1Jl
bmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNoYXJlZFF1
YWRTdGF0ZSkKICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFkc0RhdGE7CiAKICAgICBi
b29sIGZvclJlcGxpY2EgPSBmYWxzZTsKLSAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyht
b2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBmb3JSZXBsaWNhLCAyKTsKKyAgICByZW5k
ZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBm
b3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkKDIsIDApKTsKIAogICAgIEFTU0VSVF9FUSgxdSwg
c2hhcmVkU3RhdGVMaXN0LnNpemUoKSk7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1
YWRTdGF0ZSA9IHNoYXJlZFN0YXRlTGlzdFswXS5nZXQoKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBU
RVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3JyZWN0
UmVuZGVyUGFzcykKICAgICBBU1NFUlRfRVEoMXUsIHBhc3NTaW5rLnJlbmRlclBhc3NlcygpLnNp
emUoKSk7CiAgICAgQ0NSZW5kZXJQYXNzKiBwYXNzID0gcGFzc1NpbmsucmVuZGVyUGFzc2VzKClb
MF0uZ2V0KCk7CiAKLSAgICBFWFBFQ1RfRVEoMiwgcGFzcy0+aWQoKSk7CisgICAgRVhQRUNUX0VR
KENDUmVuZGVyUGFzczo6SWQoMiwgMCksIHBhc3MtPmlkKCkpOwogICAgIEVYUEVDVF9FUShjb250
ZW50UmVjdCwgcGFzcy0+b3V0cHV0UmVjdCgpKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luLCBwYXNz
LT50cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcAppbmRleCAyZjNmZDZhMDgxMzU4NzA5MWEy
ZmM0YjA5ZTQ5MGJkNzEwZjZlOTUzLi4wYzc4YzVlZTlhZWM4YmFmY2NlMmNkMTQ3ZGM1Zjc0MmQ0
Y2U5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVy
ZXJHTFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJl
ckdMVGVzdC5jcHAKQEAgLTgwLDkgKzgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jvb3RM
YXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgICAgICAsIG1fbWVtb3J5QWxsb2NhdGlv
bkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5QWxs
b2NhdGlvbkxpbWl0KCkpCiAgICAgewotICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290
UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5pZCgpLCBJbnRS
ZWN0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBtX3Jvb3RMYXllci0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBh
c3NJZCA9IG1fcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgpOworICAg
ICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6
Y3JlYXRlKHJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKICAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5hcHBlbmQocm9vdFJlbmRlclBh
c3MuZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQobV9yb290TGF5ZXItPmlkKCks
IHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc2VzLnNldChy
ZW5kZXJQYXNzSWQsIHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAgLy8g
Q0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161578</attachid>
            <date>2012-08-30 16:16:42 -0700</date>
            <delta_ts>2012-09-05 18:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120830191631.patch</filename>
            <type>text/plain</type>
            <size>40536</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ4OTBjNTY5MWRkYmVl
Y2U4NTJlMDdiMmViMjA4YWI1MjFiM2U4My4uOGZlZGM1YmM2MzJjMWM3MzExZThmNTIzZDk2NjBl
NDAzYzFkYmU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTA4LTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Omlk
KToKKyAgICAgICAgKENDUmVuZGVyUGFzc0lkS2V5VHJhaXRzKToKKyAgICAgICAgKFdURjo6Q0NS
ZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmVtcHR5VmFsdWUpOgorICAgICAgICAoV1RGOjpDQ1JlbmRl
clBhc3NJZEtleVRyYWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdURjo6
Q0NSZW5kZXJQYXNzSWRLZXlUcmFpdHM6OmlzRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVy
UGFzc0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5o
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZCk6CisKIDIwMTItMDgtMjkgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXh0cmFjdCBTdHlsZXNTb3VyY2VN
YXBwaW5nIGZyb20gU3R5bGVzVUlTb3VyY2VDb2RlUHJvdmlkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDRmZWVhYzkzNjMxMDBlMmNiMWRmMzMxMzBmNTViZDkyZjc1MDA3OTAuLjcw
MDk0NTI1ODJhOWE2ZWFlMTdjZWI0N2ZkZDk4MDkzNTUwODAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMzAgIERhbmEgSmFuc2VucyAgPGRh
bmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIFJlbmRlclBhc3Mg
aWRzIGhvbGQgYm90aCBnZW5lcmF0aW5nIGxheWVyIGlkIGFuZCBhbiBpbmRleAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50
OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisKIDIwMTItMDgtMjkgIFBldGVyIEJldmVybG9vICA8
cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKaW5kZXggNDY4OGJlZDE5YmZjNGU4MzVi
YWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEy
MjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKQEAgLTExMiwxMiAr
MTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJlcjo6bW92ZVNjaXNzb3JUb1dpbmRvd1Nw
YWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZsCiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJl
cjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNz
TGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0
IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJhbWU7CisgICAgSGFzaE1hcDxDQ1JlbmRl
clBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09y
ZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKLSAgICBWZWN0b3I8
aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1
cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQ
YXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBP
d25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAg
IGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0
ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewog
ICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcmVuZGVyUGFz
c2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVy
UGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIENDRGlyZWN0UmVuZGVyZXI6
OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiBy
ZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHJl
bmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJvb2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2
ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0Citib29sIENDRGly
ZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQ
YXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5k
ZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5p
ZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIu
aAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRm
YmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJvdmlk
ZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
aW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291
cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBh
c3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nl
c0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBj
b25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSk7CiAgICAgc3RhdGljIEludFJlY3Qg
bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBz
Y2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXMoaW50IHJlbmRlclBh
c3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKENDUmVuZGVyUGFzczo6
SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShjb25z
dCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0MzRGVudW0gcmVuZGVyUGFzc1RleHR1cmVG
b3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0g
MDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBtX3JlbmRlclBh
c3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDYWNoZWRU
ZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogICAgIENDUmVzb3VyY2VQcm92aWRlciog
bV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAppbmRleCBiN2IwMWU2OTU5NmQ5NDM5YWRiOGE2NWZmOTBkNjVkOWNmNThkZDU5Li5k
NWZhZDA5YzI0YTZlZGJkZTBlNTRkMTA4NDkyNzhlZjI1ODgzOThjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA1LDcgKzMwNSw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAK
ICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZChm
cmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGludCB0YXJnZXRSZW5kZXJQYXNz
SWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5
ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgQ0NSZW5kZXJQ
YXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0
UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQp
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRh
IGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGlu
Z1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAgaW50IGNvbnRyaWJ1dGluZ1JlbmRlclBh
c3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRp
bmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAg
ICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJl
bmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCk7CiAgICAgICAgICAg
ICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQs
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0Rh
dGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZp
c2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpAQCAtNDA4LDE0ICs0MDgsMTQgQEAgSW50
U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJvdW5kcygpOwog
fQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKGludCBy
ZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSYgZnJhbWUp
CitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKENDUmVuZGVy
UGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lkSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQocmVuZGVyUGFzc0lkKTsKICAgICBBU1NF
UlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT5z
ZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2
ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEm
IGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVy
UGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURh
dGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyogcmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRS
ZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQsIGZyYW1lKTsKICAgICBzaXplX3QgcmVt
b3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmluZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAg
LTQzNSw3ICs0MzUsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUo
aW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SQogICAgICAgICBpZiAoY3Vy
cmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJ
ZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5leHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFz
c0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVu
ZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5k
ZXggYzhjMzMzZTM2OTQ3MjRhYjhmODY5MjVkZWFiMjEzYmRiMjc1MjhiYy4uMjUzMThlNTQzYzA1
ZGFiNGVjOGMyNDdkZWI4OTkyOGI2MDY1NzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3Bw
CkBAIC0zOCwxOSArMzgsMjAgQEAgdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NS
ZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBv
dXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3Mo
aWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkpOwogfQogCi1DQ1JlbmRlclBh
c3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5k
ZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQogICAg
IDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0KHRyYW5zZm9ybVRvUm9v
dFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRwdXRSZWN0KQogICAgICwgbV9oYXNUcmFu
c3BhcmVudEJhY2tncm91bmQodHJ1ZSkKICAgICAsIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVU
YXJnZXRTdXJmYWNlKGZhbHNlKQogewotICAgIEFTU0VSVChpZCA+IDApOworICAgIEFTU0VSVChp
ZC5maXJzdCA+IDApOworICAgIEFTU0VSVChpZC5zZWNvbmQgPj0gMCk7CiB9CiAKIHZvaWQgQ0NS
ZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgQ0NPY2Ns
dXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgQ0NBcHBlbmRRdWFkc0RhdGEmIGFw
cGVuZFF1YWRzRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggOWViZWQxYmQ1ZGU4ZjBh
ZGNlZTViMjlkNzYwNzJlNzU2ODMxYWViMC4uN2Q0YmM3M2Y1MDU1OGFmMTliOGYxNjVlNWQwNjFi
ZTY3ZTE3MjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTYwLDcgKzYwLDkgQEAgdHlw
ZWRlZiBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IENDU2hhcmVkUXVhZFN0YXRl
TGlzdDsKIGNsYXNzIENDUmVuZGVyUGFzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NS
ZW5kZXJQYXNzKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+
IGNyZWF0ZShpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKKyAgICB0eXBlZGVmIHN0
ZDo6cGFpcjxpbnQsIGludD4gSWQ7CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBh
c3M+IGNyZWF0ZShJZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwogCiAgICAgdm9pZCBhcHBl
bmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBsKiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIEND
QXBwZW5kUXVhZHNEYXRhJik7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VM
YXllcihDQ0xheWVySW1wbCosIGNvbnN0IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVy
UGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIENDQXBwZW5kUXVhZHNEYXRhJik7CkBAIC02
OCw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsgfQogCi0gICAgaW50IGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorICAgIElkIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCiAgICAgLy8g
RklYTUU6IE1vZGlmeSB0aGlzIHRyYW5zZm9ybSB3aGVuIG1lcmdpbmcgdGhlIFJlbmRlclBhc3Mg
aW50byBhIHBhcmVudCBjb21wb3NpdG9yLgogICAgIC8vIFRyYW5zZm9ybXMgZnJvbSBxdWFkJ3Mg
b3JpZ2luYWwgY29udGVudCBzcGFjZSB0byB0aGUgcm9vdCB0YXJnZXQncyBjb250ZW50IHNwYWNl
LgpAQCAtOTIsOSArOTQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZTsgfQogICAgIHZvaWQgc2V0SGFzT2NjbHVzaW9uRnJvbU91dHNpZGVU
YXJnZXRTdXJmYWNlKGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSB7
IG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gaGFzT2NjbHVzaW9uRnJv
bU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiBwcm90ZWN0ZWQ6Ci0gICAgQ0NSZW5kZXJQYXNzKGlu
dCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOworICAgIENDUmVuZGVyUGFzcyhJZCwgSW50
UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwogCi0gICAgaW50IG1faWQ7CisgICAgSWQgbV9pZDsKICAg
ICBDQ1F1YWRMaXN0IG1fcXVhZExpc3Q7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IG1fc2hh
cmVkUXVhZFN0YXRlTGlzdDsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
dHJhbnNmb3JtVG9Sb290VGFyZ2V0OwpAQCAtMTA2LDkgKzEwOCwyMSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiB9Owog
Ci10eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NMaXN0OwotdHlwZWRl
ZiBIYXNoTWFwPGludCwgT3duUHRyPENDUmVuZGVyUGFzcz4gPiBDQ1JlbmRlclBhc3NJZEhhc2hN
YXA7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworc3RydWN0IEND
UmVuZGVyUGFzc0lkS2V5VHJhaXRzIDogSGFzaFRyYWl0czxXZWJDb3JlOjpDQ1JlbmRlclBhc3M6
OklkPiB7CitzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CitzdGF0
aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CitzdGF0aWMgV2ViQ29yZTo6
Q0NSZW5kZXJQYXNzOjpJZCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gc3RkOjptYWtlX3BhaXIoMCwg
MCk7IH0KK3N0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDQ1JlbmRl
clBhc3M6OklkJiBzbG90KSB7IHNsb3QgPSBzdGQ6Om1ha2VfcGFpcigtMSwgLTEpOyB9CitzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIHZhbHVlKSB7
IHJldHVybiB2YWx1ZS5maXJzdCA9PSAtMSAmJiB2YWx1ZS5zZWNvbmQgPT0gLTE7IH0KK307Cit9
IC8vIG5hbWVzcGFjZSBXVEYKIAotfQorbmFtZXNwYWNlIFdlYkNvcmUgewordHlwZWRlZiBWZWN0
b3I8Q0NSZW5kZXJQYXNzKj4gQ0NSZW5kZXJQYXNzTGlzdDsKK3R5cGVkZWYgSGFzaE1hcDxDQ1Jl
bmRlclBhc3M6OklkLCBPd25QdHI8Q0NSZW5kZXJQYXNzPiA+IENDUmVuZGVyUGFzc0lkSGFzaE1h
cDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXggYzUzYjdmZTQ1YzFkNGI4NzY1OWFhMjRhOTU2MWYw
M2JjNTY3NDlkOS4uZDI0MDUyNWVmMjVjMzBkZWFhMWE0YjdjZGM3MzZhM2M0MjlmNTk1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3
UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBh
c3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZ
LCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKQor
UGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNy
ZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRS
ZWN0JiBxdWFkUmVjdCwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBs
aWNhLCBjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNr
VGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENv
b3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSkKIHsKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBtYXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1RleENvb3JkU2NhbGVZLCBt
YXNrVGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSk7CiB9CiAKLUNDUmVuZGVy
UGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBh
c3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUs
IGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9h
dCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKQorQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBh
c3M6OklkIHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJl
bmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwgbV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQog
ICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQpAQCAtNDUsNyArNDUsOCBAQCBDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdAogICAgICwgbV9tYXNrVGV4Q29vcmRPZmZzZXRYKG1hc2tUZXhDb29yZE9m
ZnNldFgpCiAgICAgLCBtX21hc2tUZXhDb29yZE9mZnNldFkobWFza1RleENvb3JkT2Zmc2V0WSkK
IHsKLSAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQgPiAwKTsKKyAgICBBU1NFUlQobV9yZW5kZXJQ
YXNzSWQuZmlyc3QgPiAwKTsKKyAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQuc2Vjb25kID49IDAp
OwogfQogCiBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmgKaW5kZXggMGQyY2FmOWI1OTFlZDdlMjRiN2ZhNzYzMDNmNDI4OGM3
MGRmMTJmMC4uMjY5NWE0YmM0YzVlOGRjN2I5YzY0NDc3ZjllYzZmNDczOGY5MmI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0yNywyMCArMjcsMTkgQEAKICNk
ZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCiAjaW5jbHVkZSAiQ0NEcmF3UXVhZC5oIgor
I2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgIkNDUmVzb3VyY2VQcm92aWRlci5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDUmVuZGVyUGFzczsKLQogY2xhc3MgQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
LCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYg
Y29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwg
ZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9h
dCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBh
c3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVj
dCYsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBm
bG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0
IG1hc2tUZXhDb29yZE9mZnNldFkpOwogCi0gICAgaW50IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CisgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNz
SWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJZDsgfQogICAgIGJvb2wgaXNSZXBsaWNh
KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6
OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX21hc2tSZXNvdXJj
ZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lOyB9CkBAIC01
Miw5ICs1MSw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKCkgY29u
c3QgeyByZXR1cm4gbV9tYXNrVGV4Q29vcmRPZmZzZXRZOyB9CiAKIHByaXZhdGU6Ci0gICAgQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0
JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2Vk
U2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKTsKKyAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSosIGNvbnN0IEludFJlY3QmLCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCwgYm9vbCBp
c1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tU
ZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29v
cmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKIAotICAgIGludCBtX3JlbmRl
clBhc3NJZDsKKyAgICBDQ1JlbmRlclBhc3M6OklkIG1fcmVuZGVyUGFzc0lkOwogICAgIGJvb2wg
bV9pc1JlcGxpY2E7CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fbWFza1Jl
c291cmNlSWQ7CiAgICAgSW50UmVjdCBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggNTBhNjM0OWQ1ZTFmZDViYWY1MTRh
YjcxMDUxODE5ZTMwODkxMTgxYS4uMTYzOTNiOTMwZDkxNGE1ZGVjOTdlMzJhYjgyOWRiNDkzZmYx
N2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0xODEsMTYgKzE4MSwy
NCBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZUNsaXBwZWRSZWN0SW5UYXJnZXQoY29u
c3QgQ0NMYXllckltcGwqIG93bmluZ0xheWVyKQogICAgIHJldHVybiBjbGlwcGVkUmVjdEluVGFy
Z2V0OwogfQogCitDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lk
KCkKK3sKKyAgICBpbnQgbGF5ZXJJZCA9IG1fb3duaW5nTGF5ZXItPmlkKCk7CisgICAgaW50IHN1
YklkID0gMDsKKyAgICBBU1NFUlQobGF5ZXJJZCA+IDApOworICAgIHJldHVybiBDQ1JlbmRlclBh
c3M6OklkKGxheWVySWQsIHN1YklkKTsKK30KKwogdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVu
ZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJiBwYXNzU2luaykKIHsKLSAgICBPd25QdHI8
Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUobV9vd25pbmdMYXllci0+
aWQoKSwgbV9jb250ZW50UmVjdCwgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSk7CisgICAgT3duUHRy
PENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclBhc3NJZCgp
LCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAgICBwYXNzLT5zZXRE
YW1hZ2VSZWN0KG1fZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFnZVJlY3QoKSk7CiAgICAgcGFz
cy0+c2V0RmlsdGVycyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkpOwogICAgIHBhc3MtPnNldEJh
Y2tncm91bmRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRGaWx0ZXJzKCkpOwogICAg
IHBhc3NTaW5rLmFwcGVuZFJlbmRlclBhc3MocGFzcy5yZWxlYXNlKCkpOwogfQogCi12b2lkIEND
UmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5k
UXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBh
c3NJZCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
U2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBsaWNh
LCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCkKIHsKICAgICBBU1NFUlQoIWZvclJlcGxp
Y2EgfHwgbV9vd25pbmdMYXllci0+aGFzUmVwbGljYSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaAppbmRleCAwOWEyODQ2NzZmMjI4MjI5NDI1MjViMTI1ZjNhNjNmM2NjODdiY2IzLi4y
ZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNmNjYxM2ZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NTaGFy
ZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0
LmgiCkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NEYW1h
Z2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkU2luazsKLWNsYXNzIENDUmVuZGVyUGFzczsKIGNsYXNz
IENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIFRleHRTdHJlYW07
CkBAIC0xMDYsOCArMTA2LDEwIEBAIHB1YmxpYzoKIAogICAgIENDRGFtYWdlVHJhY2tlciogZGFt
YWdlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlVHJhY2tlci5nZXQoKTsgfQogCisg
ICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQoKTsKKwogICAgIHZvaWQgYXBwZW5kUmVu
ZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmKTsKLSAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBh
c3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0Rh
dGEmLCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKTsKIAog
cHJpdmF0ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIu
aAppbmRleCA5NDZhZWM2MzMzNjI5ZWFjY2JhODg2ODNjYTFkOTc4NGRhNDU5NDM2Li4wNDdiZDgw
ZjMxNTdhYmFlOTNjZTMxYjRmZGI5ZDdlYTYzNmUxNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCkBA
IC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRDaGFuZ2Vk
KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXZl
Q2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChD
Q1JlbmRlclBhc3M6OklkKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiwgY29uc3QgQ0NSZW5kZXJQYXNz
SWRIYXNoTWFwJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDJjODc0ZThjYzBjOTM4YTQ5
ODgyOGQ2OWQwNzA1YzQ5NmNlMzgxOWYuLmYxYjFmNzg5MThmYTRiOWY2ZWY0ZTk1M2Y1ODgyYzk5
MGZhMTJlNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNDA3LDEzICszNDA3LDE0IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAg
ICBncmFuZENoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKICAgICBDQ1RpbGVkTGF5ZXJJ
bXBsKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOworICAgIENDUmVuZGVyUGFzczo6SWQgY2hpbGRQ
YXNzSWQoY2hpbGRQdHItPmlkKCksIDApOwogCiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hp
bGQucmVsZWFzZSgpKTsKICAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwogICAg
IG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAgICAgbXlIb3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKHJvb3RSZWN0LnNpemUoKSwgcm9vdFJlY3Quc2l6ZSgpKTsKIAot
ICAgIEVYUEVDVF9GQUxTRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKG15
SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
Y2hpbGRQYXNzSWQpKTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOwpAQCAtMzQyMyw3ICszNDI0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdl
IHNob3VsZCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyLgotICAgIEVYUEVDVF9U
UlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQ
YXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5k
ZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7
CiAKICAgICB7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsK
QEAgLTM0MzMsNyArMzQzNCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4
dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAgICB9CiAKICAgICAvLyBXZSBzaG91bGQgc3RpbGwg
aGF2ZSBjYWNoZWQgdGV4dHVyZXMgZm9yIHN1cmZhY2UgMiBhZnRlciBkcmF3aW5nIHdpdGggbm8g
ZGFtYWdlLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
UGFzc0lkKGNoaWxkUGFzc0lkKSk7CiAKICAgICAvLyBEYW1hZ2UgYSBzaW5nbGUgdGlsZSBvZiBz
dXJmYWNlIDIuCiAgICAgY2hpbGRQdHItPnNldFVwZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAsIDEw
LCAxMCkpOwpAQCAtMzQ0Niw3ICszNDQ3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdlIHNob3Vs
ZCBoYXZlIGEgY2FjaGVkIHRleHR1cmUgZm9yIHN1cmZhY2UgMiBhZ2FpbiBldmVuIHRob3VnaCBp
dCB3YXMgZGFtYWdlZC4KLSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5o
YXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0Zv
clJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJlQ2FjaGluZykKQEAgLTM4MDgsMTggKzM4MDksMTggQEAg
c3RydWN0IFJlbmRlclBhc3NDYWNoZUVudHJ5IHsKIH07CiAKIHN0cnVjdCBSZW5kZXJQYXNzUmVt
b3ZhbFRlc3REYXRhIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSB7Ci0g
ICAgc3RkOjptYXA8Y2hhciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+IHJlbmRlclBhc3NDYWNoZTsK
KyAgICBzdGQ6Om1hcDxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4gcmVu
ZGVyUGFzc0NhY2hlOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlOwogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyUGFzczogcHVibGljIENDUmVuZGVyUGFzcyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoaW50
IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBy
b290VHJhbnNmb3JtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwg
b3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NS
ZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0
LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IENDVGVzdFJlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zv
cm0pKTsgfQogCiAgICAgdm9pZCBhcHBlbmRRdWFkKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcXVh
ZCkgeyBtX3F1YWRMaXN0LmFwcGVuZChxdWFkKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0
UmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0
LCByb290VHJhbnNmb3JtKSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJQYXNzKENDUmVuZGVyUGFzczo6
SWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNm
b3JtKSB7IH0KIH07CiAKIGNsYXNzIENDVGVzdFJlbmRlcmVyIDogcHVibGljIENDUmVuZGVyZXJH
TCwgcHVibGljIENDUmVuZGVyZXJDbGllbnQgewpAQCAtMzgzNCw5ICszODM1LDkgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZvaWQgY2xlYXJDYWNoZWRUZXh0dXJlcygpIHsgbV90ZXh0dXJlcy5j
bGVhcigpOyB9Ci0gICAgdm9pZCBzZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lk
KGludCBpZCkgeyBtX3RleHR1cmVzLmFkZChpZCk7IH0KKyAgICB2b2lkIHNldEhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgeyBtX3RleHR1cmVz
LmFkZChpZCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVu
ZGVyUGFzc0lkKGludCBpZCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlcy5jb250
YWlucyhpZCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZChDQ1JlbmRlclBhc3M6OklkIGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rl
eHR1cmVzLmNvbnRhaW5zKGlkKTsgfQogCiAgICAgLy8gQ0NSZW5kZXJlckNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC0zODUzLDcgKzM4
NTQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9z
ZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEhhc2hTZXQ8aW50PiBt
X3RleHR1cmVzOworICAgIEhhc2hTZXQ8Q0NSZW5kZXJQYXNzOjpJZD4gbV90ZXh0dXJlczsKIH07
CiAKIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0
ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgQ0NUZXN0UmVu
ZGVyZXIqIHJlbmRlcmVyKQpAQCAtMzg2NiwxMiArMzg2NywxNyBAQCBzdGF0aWMgdm9pZCBjb25m
aWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFz
c1JlbW92YQogICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRDaGFyID0gdGVzdFNjcmlwdDsKIAogICAg
IC8vIFByZS1jcmVhdGUgcm9vdCBwYXNzCi0gICAgY2hhciByb290UmVuZGVyUGFzc0lkID0gdGVz
dFNjcmlwdFswXTsKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJvb3RSZW5kZXJQYXNzSWQgPSBDQ1Jl
bmRlclBhc3M6OklkKHRlc3RTY3JpcHRbMF0sIHRlc3RTY3JpcHRbMV0pOwogICAgIE93blB0cjxD
Q1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0gQ0NUZXN0UmVuZGVyUGFzczo6Y3JlYXRlKHJv
b3RSZW5kZXJQYXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0g
ICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Y2hhciwgUmVuZGVy
UGFzc0NhY2hlRW50cnk+KHJvb3RSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJv
b3RSZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKKyAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUu
aW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4o
cm9vdFJlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocm9vdFJlbmRlclBhc3MucmVs
ZWFzZSgpKSkpOwogICAgIHdoaWxlICgqY3VycmVudENoYXIpIHsKLSAgICAgICAgY2hhciByZW5k
ZXJQYXNzSWQgPSBjdXJyZW50Q2hhclswXTsKKyAgICAgICAgaW50IGZpcnN0ID0gKmN1cnJlbnRD
aGFyOwogICAgICAgICBjdXJyZW50Q2hhcisrOworICAgICAgICBBU1NFUlRfVFJVRShjdXJyZW50
Q2hhcik7CisgICAgICAgIGludCBzZWNvbmQgPSAqY3VycmVudENoYXI7CisgICAgICAgIGN1cnJl
bnRDaGFyKys7CisKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBDQ1Jl
bmRlclBhc3M6OklkKGZpcnN0LCBzZWNvbmQpOwogCiAgICAgICAgIE93blB0cjxDQ1JlbmRlclBh
c3M+IHJlbmRlclBhc3M7CiAKQEAgLTM4OTEsOSArMzg5NywxMyBAQCBzdGF0aWMgdm9pZCBjb25m
aWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFz
c1JlbW92YQogICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyKys7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKCgqY3VycmVudENoYXIgPj0gJ0EnKSAmJiAoKmN1cnJlbnRDaGFyIDw9ICdaJykpIHsK
ICAgICAgICAgICAgICAgICAvLyBSZW5kZXJQYXNzIGRyYXcgcXVhZAotICAgICAgICAgICAgICAg
IGNoYXIgbmV3UmVuZGVyUGFzc0lkID0gKmN1cnJlbnRDaGFyOwotICAgICAgICAgICAgICAgIEFT
U0VSVF9ORShyb290UmVuZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNzSWQpOworICAgICAgICAgICAg
ICAgIGludCBmaXJzdCA9ICpjdXJyZW50Q2hhcjsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hh
cisrOworICAgICAgICAgICAgICAgIEFTU0VSVF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAgICAgICAg
ICAgICAgICBpbnQgc2Vjb25kID0gKmN1cnJlbnRDaGFyOwogICAgICAgICAgICAgICAgIGN1cnJl
bnRDaGFyKys7CisgICAgICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBuZXdSZW5kZXJQYXNz
SWQgPSBDQ1JlbmRlclBhc3M6OklkKGZpcnN0LCBzZWNvbmQpOworICAgICAgICAgICAgICAgIEFT
U0VSVF9ORShyb290UmVuZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNzSWQpOwogICAgICAgICAgICAg
ICAgIGJvb2wgaGFzVGV4dHVyZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJvb2wgY29udGVu
dHNDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKQEAgLTM5MTksNyArMzkyOSw3IEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJl
ci0+c2V0SGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChuZXdSZW5kZXJQYXNzSWQp
OwogCiAgICAgICAgICAgICAgICAgICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRlclBhc3Mg
PSBDQ1Rlc3RSZW5kZXJQYXNzOjpjcmVhdGUobmV3UmVuZGVyUGFzc0lkLCBJbnRSZWN0KCksIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0YS5y
ZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRy
eT4obmV3UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyZW5kZXJQYXNzLnJlbGVh
c2UoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmlu
c2VydChzdGQ6OnBhaXI8Q0NSZW5kZXJQYXNzOjpJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnk+KG5l
d1JlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocmVuZGVyUGFzcy5yZWxlYXNlKCkp
KSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgSW50UmVjdCBxdWFkUmVj
dCA9IEludFJlY3QoMCwgMCwgMSwgMSk7CkBAIC0zOTQwLDcgKzM5NTAsOSBAQCB2b2lkIGR1bXBS
ZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSYgdGVzdERh
dGEsIGNoYXIqIGJ1ZgogICAgIGNoYXIqIHBvcyA9IGJ1ZmZlcjsKICAgICBmb3IgKENDUmVuZGVy
UGFzc0xpc3Q6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgaXQgPSB0ZXN0RGF0YS5yZW5kZXJQYXNz
ZXMucmJlZ2luKCk7IGl0ICE9IHRlc3REYXRhLnJlbmRlclBhc3Nlcy5yZW5kKCk7ICsraXQpIHsK
ICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBjdXJyZW50UGFzcyA9ICppdDsKLSAgICAgICAg
KnBvcyA9IGN1cnJlbnRQYXNzLT5pZCgpOworICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlk
KCkuZmlyc3Q7CisgICAgICAgIHBvcysrOworICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlk
KCkuc2Vjb25kOwogICAgICAgICBwb3MrKzsKIAogICAgICAgICBDQ1F1YWRMaXN0Ojpjb25zdF9p
dGVyYXRvciBxdWFkTGlzdEl0ZXJhdG9yID0gY3VycmVudFBhc3MtPnF1YWRMaXN0KCkuYmVnaW4o
KTsKQEAgLTM5NTIsNyArMzk2NCw5IEBAIHZvaWQgZHVtcFJlbmRlclBhc3NUZXN0RGF0YShjb25z
dCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgY2hhciogYnVmCiAgICAgICAg
ICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IENDRHJhd1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgICAgICAgICAgKnBvcyA9IENDUmVuZGVy
UGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKTsK
KyAgICAgICAgICAgICAgICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2Fz
dChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpLmZpcnN0OworICAgICAgICAgICAgICAgIHBv
cysrOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJp
YWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkuc2Vjb25kOwogICAgICAgICAgICAg
ICAgIHBvcysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
QEAgLTM5OTYsMTE1ICs0MDEwLDExNSBAQCBUZXN0Q2FzZSByZW1vdmVSZW5kZXJQYXNzZXNDYXNl
c1tdID0KICAgICB7CiAgICAgICAgIHsKICAgICAgICAgICAgICJTaW5nbGUgcm9vdCBwYXNzIiwK
LSAgICAgICAgICAgICJSc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIgorICAgICAgICAg
ICAgIlIwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NcbiIKICAgICAgICAgfSwgewogICAg
ICAgICAgICAgIlNpbmdsZSBwYXNzIC0gbm8gcXVhZHMiLAotICAgICAgICAgICAgIlJcbiIsCi0g
ICAgICAgICAgICAiUlxuIgorICAgICAgICAgICAgIlIwXG4iLAorICAgICAgICAgICAgIlIwXG4i
CiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJUd28gcGFzc2VzLCBubyByZW1vdmFsIiwKLSAg
ICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAg
ICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgorICAgICAgICAgICAgIlIw
c3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nz
c0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAg
ICAgICJUd28gcGFzc2VzLCByZW1vdmUgbGFzdCIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNz
c1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgor
ICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwK
KyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAi
SGF2ZSB0ZXh0dXJlIGJ1dCBjb250ZW50cyBjaGFuZ2VkIC0gbGVhdmUgcGFzcyIsCi0gICAgICAg
ICAgICAiUnNzc3NBW3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAg
ICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIKKyAgICAgICAgICAgICJSMHNz
c3NBMFt0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNz
c3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAg
ICAgICAiQ29udGVudHMgZGlkbid0IGNoYW5nZSBidXQgbm8gdGV4dHVyZSAtIGxlYXZlIHBhc3Mi
LAotICAgICAgICAgICAgIlJzc3NzQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAot
ICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iCisgICAgICAg
ICAgICAiUjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisgICAgICAg
ICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAgICAgfSwg
ewogICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFz
czsgcmVtb3ZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3RdQVtjdF1zc3NcbiIKLSAgICAgICAg
ICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCisgICAgICAgICAgICAi
UjBzc3NzQTBbY3RdQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAg
ICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlcGxp
Y2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsgbGVhdmUiLAotICAgICAgICAg
ICAgIlJzc3NzQVtjXUFbY11zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAg
ICAgICJSc3Nzc0FBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCisgICAgICAgICAgICAi
UjBzc3NzQTBbY11BMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAg
ICAgICJSMHNzc3NBMEEwc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAiTWFueSBwYXNzZXMsIHJlbW92ZSBhbGwiLAotICAgICAgICAgICAg
IlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3NzQltjdF1DW2N0XXNcbiIKLSAgICAg
ICAgICAgICJCc3NzRFtjdF1zc0VbY3RdRltjdF1cbiIKLSAgICAgICAgICAgICJFc3Nzc3NzXG4i
Ci0gICAgICAgICAgICAiQ0dbY3RdXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIKLSAgICAg
ICAgICAgICJGc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAgICAgICAgICAg
ICJSc3Nzc0Fzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1zc3NcbiIKKyAgICAgICAg
ICAgICJBMHNzc0IwW2N0XUMwW2N0XXNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2N0XXNzRTBb
Y3RdRjBbY3RdXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAgICJDMEcw
W2N0XVxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkYwc3Nzc3Nz
c1xuIgorICAgICAgICAgICAgIkcwc3NzXG4iLAorCisgICAgICAgICAgICAiUjBzc3NzQTBzc3Nc
biIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIkRlZXAgcmVjdXJzaW9uLCByZW1vdmUgYWxs
IiwKIAotICAgICAgICAgICAgIlJzc3Nzc0FbY3Rdc3Nzc1xuIgotICAgICAgICAgICAgIkFzc3Nz
QnNzc1xuIgotICAgICAgICAgICAgIkJDXG4iCi0gICAgICAgICAgICAiQ0RcbiIKLSAgICAgICAg
ICAgICJERVxuIgotICAgICAgICAgICAgIkVGXG4iCi0gICAgICAgICAgICAiRkdcbiIKLSAgICAg
ICAgICAgICJHSFxuIgotICAgICAgICAgICAgIkhzc3NJc3NzXG4iCi0gICAgICAgICAgICAiSUpc
biIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NzQTBbY3Rdc3Nz
c1xuIgorICAgICAgICAgICAgIkEwc3Nzc0Iwc3NzXG4iCisgICAgICAgICAgICAiQjBDMFxuIgor
ICAgICAgICAgICAgIkMwRDBcbiIKKyAgICAgICAgICAgICJEMEUwXG4iCisgICAgICAgICAgICAi
RTBGMFxuIgorICAgICAgICAgICAgIkYwRzBcbiIKKyAgICAgICAgICAgICJHMEgwXG4iCisgICAg
ICAgICAgICAiSDBzc3NJMHNzc1xuIgorICAgICAgICAgICAgIkkwSjBcbiIKKyAgICAgICAgICAg
ICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAKLSAgICAgICAgICAgICJSc3Nzc3NBc3Nzc1xuIgor
ICAgICAgICAgICAgIlIwc3Nzc3NBMHNzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAg
IldpZGUgcmVjdXJzaW9uLCByZW1vdmUgYWxsIiwKLSAgICAgICAgICAgICJSQVtjdF1CW2N0XUNb
Y3RdRFtjdF1FW2N0XUZbY3RdR1tjdF1IW2N0XUlbY3RdSltjdF1cbiIKLSAgICAgICAgICAgICJB
c1xuIgotICAgICAgICAgICAgIkJzXG4iCi0gICAgICAgICAgICAiQ3Nzc3NcbiIKLSAgICAgICAg
ICAgICJEc3Nzc1xuIgotICAgICAgICAgICAgIkVzXG4iCi0gICAgICAgICAgICAiRlxuIgotICAg
ICAgICAgICAgIkdzXG4iCi0gICAgICAgICAgICAiSHNcbiIKLSAgICAgICAgICAgICJJc1xuIgot
ICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAgIlIwQTBbY3RdQjBbY3RdQzBbY3Rd
RDBbY3RdRTBbY3RdRjBbY3RdRzBbY3RdSDBbY3RdSTBbY3RdSjBbY3RdXG4iCisgICAgICAgICAg
ICAiQTBzXG4iCisgICAgICAgICAgICAiQjBzXG4iCisgICAgICAgICAgICAiQzBzc3NzXG4iCisg
ICAgICAgICAgICAiRDBzc3NzXG4iCisgICAgICAgICAgICAiRTBzXG4iCisgICAgICAgICAgICAi
RjBcbiIKKyAgICAgICAgICAgICJHMHNcbiIKKyAgICAgICAgICAgICJIMHNcbiIKKyAgICAgICAg
ICAgICJJMHNcbiIKKyAgICAgICAgICAgICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICJSQUJDREVGR0hJSlxuIgorICAgICAgICAgICAgIlIwQTBCMEMwRDBFMEYwRzBIMEkw
SjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlbW92ZSBwYXNzZXMgcmVnYXJkbGVz
cyBvZiBjYWNoZSBzdGF0ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAg
ICAgICAgIkFzc3NCQ3NcbiIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzRVt0XUZcbiIKLSAgICAg
ICAgICAgICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAiQ0dcbiIKLSAgICAgICAgICAgICJEc3Nz
c3Nzc1xuIgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xuIiwK
LQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNz
c1xuIgorICAgICAgICAgICAgIkEwc3NzQjBDMHNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2Nd
c3NFMFt0XUYwXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAgICJDMEcw
XG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRjBzc3Nzc3NzXG4i
CisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgog
ICAgICAgICB9LCB7CiAgICAgICAgICAgICAiTGVhdmUgc29tZSBwYXNzZXMsIHJlbW92ZSBvdGhl
cnMiLAogCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAgICAgICAiQXNzc0Jb
dF1DW2N0XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzXG4iCi0gICAgICAgICAgICAiQ0dc
biIKLSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAg
ICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3NzQkNzXG4iCi0gICAgICAg
ICAgICAiQnNzc0Rzc1xuIgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCisgICAgICAgICAgICAi
UjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwW3RdQzBbY3Rdc1xuIgorICAg
ICAgICAgICAgIkIwc3NzRDBbY11zc1xuIgorICAgICAgICAgICAgIkMwRzBcbiIKKyAgICAgICAg
ICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAgICAgICAg
IlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAgICAgICAg
IkIwc3NzRDBzc1xuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgogICAgICAgICB9LCB7CiAg
ICAgICAgICAgICAwLCAwLCAwCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDJmMGJlMDNiOTk4MDRh
M2E4NGU4Y2U2NGVhNGQ3ZDNmMzliMDYxM2IuLjRlOTEyNDJlZjIyYTc1ZmZmMjE2NzExZDUyNjYz
MGU2YzFkOWUyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjMwMiw4ICsyMzAyLDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBo
b3N0SW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDUmVuZGVyZXIqIHJlbmRlcmVyID0g
aG9zdEltcGwtPnJlbmRlcmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UxUmVuZGVyUGFz
c0lkID0gaG9zdEltcGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5pZCgpOwotICAgICAg
ICB1bnNpZ25lZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+
Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNz
OjpJZCBzdXJmYWNlMVJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRy
ZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+
Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNz
SWQoKTsKIAogICAgICAgICBzd2l0Y2ggKGhvc3RJbXBsLT5zb3VyY2VGcmFtZU51bWJlcigpKSB7
CiAgICAgICAgIGNhc2UgMDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IDA2NjkzZjMzNzRmMDllMDU4MzI3YzY5NTUx
YzIwZmYyOTdkMDE3NmQuLmQ2NmI4Yzk1MTZhM2U4ODI4NmUzNmI4MTU3YTQwNjFiMDZjYWE0Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNl
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZh
Y2VUZXN0LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwg
c2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAgICAgQ0NB
cHBlbmRRdWFkc0RhdGEgYXBwZW5kUXVhZHNEYXRhOwogCiAgICAgYm9vbCBmb3JSZXBsaWNhID0g
ZmFsc2U7Ci0gICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxsZXIsIGFw
cGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgMik7CisgICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5k
UXVhZHMobW9ja1F1YWRDdWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgQ0NSZW5k
ZXJQYXNzOjpJZCgyLCAwKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIHNoYXJlZFN0YXRlTGlzdC5z
aXplKCkpOwogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBzaGFyZWRT
dGF0ZUxpc3RbMF0uZ2V0KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVChDQ1JlbmRlclN1cmZh
Y2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFJlbmRlclBhc3MpCiAgICAg
QVNTRVJUX0VRKDF1LCBwYXNzU2luay5yZW5kZXJQYXNzZXMoKS5zaXplKCkpOwogICAgIENDUmVu
ZGVyUGFzcyogcGFzcyA9IHBhc3NTaW5rLnJlbmRlclBhc3NlcygpWzBdLmdldCgpOwogCi0gICAg
RVhQRUNUX0VRKDIsIHBhc3MtPmlkKCkpOworICAgIEVYUEVDVF9FUShDQ1JlbmRlclBhc3M6Oklk
KDIsIDApLCBwYXNzLT5pZCgpKTsKICAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHBhc3MtPm91
dHB1dFJlY3QoKSk7CiAgICAgRVhQRUNUX0VRKG9yaWdpbiwgcGFzcy0+dHJhbnNmb3JtVG9Sb290
VGFyZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1JlbmRlcmVyR0xUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5k
ZXJlckdMVGVzdC5jcHAKaW5kZXggMmYzZmQ2YTA4MTM1ODcwOTFhMmZjNGIwOWU0OTBiZDcxMGY2
ZTk1My4uMGM3OGM1ZWU5YWVjOGJhZmNjZTJjZDE0N2RjNWY3NDJkNGNlOTVlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3BwCkBAIC04
MCw5ICs4MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXllckltcGw6
OmNyZWF0ZSgxKSkKICAgICAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1pdCgpKQog
ICAgIHsKLSAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1Jl
bmRlclBhc3M6OmNyZWF0ZShtX3Jvb3RMYXllci0+aWQoKSwgSW50UmVjdCgpLCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBtX3Jvb3RMYXll
ci0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgT3duUHRyPENDUmVu
ZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShyZW5kZXJQYXNz
SWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIG1fcmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXIuYXBwZW5kKHJvb3RSZW5kZXJQYXNzLmdldCgpKTsKLSAgICAg
ICAgbV9yZW5kZXJQYXNzZXMuc2V0KG1fcm9vdExheWVyLT5pZCgpLCByb290UmVuZGVyUGFzcy5y
ZWxlYXNlKCkpOworICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQocmVuZGVyUGFzc0lkLCByb290
UmVuZGVyUGFzcy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIC8vIENDUmVuZGVyZXJDbGllbnQg
bWV0aG9kcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162388</attachid>
            <date>2012-09-05 18:29:36 -0700</date>
            <delta_ts>2012-09-06 09:08:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120905212917.patch</filename>
            <type>text/plain</type>
            <size>42150</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyNTg2YzdkYzIxMGRm
MDczMTJjNmZhMjZiZGJjMjAxN2IzYTJkNC4uNjZlMzI4NTNkMTcwNjRjOTViNjQ2YTJlMzVhZjRk
ZWVhYWM1OTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKElkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6OklkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclBhc3M6OklkOjpvcGVyYXRvcjwpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6aWQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6cmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZW5kZXJQYXNzSWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJl
bmRlclBhc3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
UGFzc0lkKToKKwogMjAxMi0wOS0wNSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjc2MjkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDAzNjcyYTFmNzAwN2ZlYWNkNDY0ZjU0N2JiOTU4YzQ5YzE1
MmZiOTcuLjcxYmMyMDc5OGZhNTIwMjVhNWRmZTE2YWM4ODMxM2U2YWMwZTBiYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDUgIERhbmEgSmFu
c2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIFJl
bmRlclBhc3MgaWRzIGhvbGQgYm90aCBnZW5lcmF0aW5nIGxheWVyIGlkIGFuZCBhbiBpbmRleAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAg
ICAgICAgKiB0ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRl
cmVyQ2xpZW50OjpGYWtlQ0NSZW5kZXJlckNsaWVudCk6CisKIDIwMTItMDktMDUgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3Zl
IGdldFJlbmRlclN0eWxlRm9yU3RyaWtlIGZyb20gUGxhdGZvcm1TdXBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJl
bmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGlyZWN0UmVuZGVyZXIuY3BwCmluZGV4IDQ2ODhiZWQxOWJmYzRlODM1YmFkZjM3OTI2ZDkw
M2QyNmEwZWQzNGYuLjZiNTM3ODlmNTUzZWI1ZDUwNzM2ZDI3ZTdkODhjZTUxMjI1N2NhNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGlyZWN0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBJ
bnRSZWN0IENDRGlyZWN0UmVuZGVyZXI6Om1vdmVTY2lzc29yVG9XaW5kb3dTcGFjZShjb25zdCBE
cmF3aW5nRnJhbWUmIGZyYW1lLCBGbAogCiB2b2lkIENDRGlyZWN0UmVuZGVyZXI6OmRlY2lkZVJl
bmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRl
clBhc3Nlc0luRHJhd09yZGVyKQogewotICAgIEhhc2hNYXA8aW50LCBjb25zdCBDQ1JlbmRlclBh
c3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOworICAgIEhhc2hNYXA8Q0NSZW5kZXJQYXNzOjpJZCwg
Y29uc3QgQ0NSZW5kZXJQYXNzKj4gcmVuZGVyUGFzc2VzSW5GcmFtZTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLnNpemUoKTsgKytpKQogICAgICAg
ICByZW5kZXJQYXNzZXNJbkZyYW1lLnNldChyZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXS0+aWQo
KSwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXJbaV0pOwogCi0gICAgVmVjdG9yPGludD4gcGFzc2Vz
VG9EZWxldGU7Ci0gICAgSGFzaE1hcDxpbnQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+Ojpjb25z
dF9pdGVyYXRvciBwYXNzSXRlcmF0b3I7CisgICAgVmVjdG9yPENDUmVuZGVyUGFzczo6SWQ+IHBh
c3Nlc1RvRGVsZXRlOworICAgIEhhc2hNYXA8Q0NSZW5kZXJQYXNzOjpJZCwgT3duUHRyPENhY2hl
ZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKICAgICBmb3IgKHBhc3NJ
dGVyYXRvciA9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmJlZ2luKCk7IHBhc3NJdGVyYXRvciAhPSBt
X3JlbmRlclBhc3NUZXh0dXJlcy5lbmQoKTsgKytwYXNzSXRlcmF0b3IpIHsKICAgICAgICAgY29u
c3QgQ0NSZW5kZXJQYXNzKiByZW5kZXJQYXNzSW5GcmFtZSA9IHJlbmRlclBhc3Nlc0luRnJhbWUu
Z2V0KHBhc3NJdGVyYXRvci0+Zmlyc3QpOwogICAgICAgICBpZiAoIXJlbmRlclBhc3NJbkZyYW1l
KSB7CkBAIC0yMTIsNyArMjEyLDcgQEAgYm9vbCBDQ0RpcmVjdFJlbmRlcmVyOjp1c2VSZW5kZXJQ
YXNzKERyYXdpbmdGcmFtZSYgZnJhbWUsIGNvbnN0IENDUmVuZGVyUGFzcyogcmUKICAgICByZXR1
cm4gYmluZEZyYW1lYnVmZmVyVG9UZXh0dXJlKGZyYW1lLCB0ZXh0dXJlLCByZW5kZXJQYXNzLT5v
dXRwdXRSZWN0KCkpOwogfQogCi1ib29sIENDRGlyZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdAorYm9vbCBDQ0RpcmVjdFJlbmRlcmVy
OjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQgaWQp
IGNvbnN0CiB7CiAgICAgQ2FjaGVkVGV4dHVyZSogdGV4dHVyZSA9IG1fcmVuZGVyUGFzc1RleHR1
cmVzLmdldChpZCk7CiAgICAgcmV0dXJuIHRleHR1cmUgJiYgdGV4dHVyZS0+aWQoKSAmJiB0ZXh0
dXJlLT5pc0NvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKaW5kZXggMjk0
MTUyY2RkZjNhNTVlYWVlOGNhYzIzNWIzMWEyYjllMDIzNzMwMC4uNzNkNjI0ZmJhMjM2ZGI2OWE2
OGJkOWVmZTJlNWQ5YWY2MzkyOTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVByb3ZpZGVyOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NS
ZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5k
ZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdP
cmRlciwgY29uc3QgQ0NSZW5kZXJQYXNzSWRIYXNoTWFwJiByZW5kZXJQYXNzZXNCeUlkKSBPVkVS
UklERTsKIAogcHJvdGVjdGVkOgpAQCAtMTAxLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplTWF0cmljZXMoRHJhd2luZ0ZyYW1lJiwgY29uc3QgSW50UmVj
dCYgZHJhd1JlY3QsIGJvb2wgZmxpcFkpOwogICAgIHN0YXRpYyBJbnRSZWN0IG1vdmVTY2lzc29y
VG9XaW5kb3dTcGFjZShjb25zdCBEcmF3aW5nRnJhbWUmLCBGbG9hdFJlY3Qgc2Npc3NvclJlY3Qp
OwogCi0gICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKGludCByZW5kZXJQYXNzSWQpIGNvbnN0
OworICAgIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlcyhDQ1JlbmRlclBhc3M6OklkKSBjb25zdDsK
ICAgICBzdGF0aWMgSW50U2l6ZSByZW5kZXJQYXNzVGV4dHVyZVNpemUoY29uc3QgQ0NSZW5kZXJQ
YXNzKik7CiAgICAgc3RhdGljIEdDM0RlbnVtIHJlbmRlclBhc3NUZXh0dXJlRm9ybWF0KGNvbnN0
IENDUmVuZGVyUGFzcyopOwogCkBAIC0xMTgsNyArMTE4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBiZWdpbkRyYXdpbmdGcmFtZShEcmF3aW5nRnJhbWUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaERyYXdpbmdGcmFtZShEcmF3aW5nRnJhbWUmKSA9IDA7CiAKLSAgICBI
YXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID4gbV9yZW5kZXJQYXNzVGV4dHVyZXM7
CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBt
X3JlbmRlclBhc3NUZXh0dXJlczsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIG1fcmVzb3VyY2VQ
cm92aWRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5k
ZXggZDQ1NjdjYmU0MjI5NDhjOWM1MDIwMzIwOGJhZGM2NTVlZjRjM2M3MS4uNDQ3YzMyZjJiY2Q0
Nzc3Yjc5OGZjZGFjMDVhMWVlOTUyYzM4YWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogCiAgICAgQ0NMYXll
ckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoZnJhbWUucmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAgICAgZm9yIChDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpbnQgdGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQudGFy
Z2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPmlkKCk7CisgICAgICAgIENDUmVuZGVyUGFzczo6SWQg
dGFyZ2V0UmVuZGVyUGFzc0lkID0gaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRl
clN1cmZhY2UoKS0+cmVuZGVyUGFzc0lkKCk7CiAgICAgICAgIENDUmVuZGVyUGFzcyogdGFyZ2V0
UmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZ2V0KHRhcmdldFJlbmRlclBhc3NJ
ZCk7CiAKICAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5lbnRlckxheWVyKGl0KTsKQEAgLTMxNyw3
ICszMTcsNyBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3Nl
cyhGcmFtZURhdGEmIGZyYW1lKQogICAgICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFk
c0RhdGE7CiAKICAgICAgICAgaWYgKGl0LnJlcHJlc2VudHNDb250cmlidXRpbmdSZW5kZXJTdXJm
YWNlKCkpIHsKLSAgICAgICAgICAgIGludCBjb250cmlidXRpbmdSZW5kZXJQYXNzSWQgPSBpdC0+
aWQoKTsKKyAgICAgICAgICAgIENDUmVuZGVyUGFzczo6SWQgY29udHJpYnV0aW5nUmVuZGVyUGFz
c0lkID0gaXQtPnJlbmRlclN1cmZhY2UoKS0+cmVuZGVyUGFzc0lkKCk7CiAgICAgICAgICAgICBD
Q1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MgPSBmcmFtZS5yZW5kZXJQYXNzZXNC
eUlkLmdldChjb250cmlidXRpbmdSZW5kZXJQYXNzSWQpOwogICAgICAgICAgICAgdGFyZ2V0UmVu
ZGVyUGFzcy0+YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoKml0LCBjb250cmlidXRp
bmdSZW5kZXJQYXNzLCAmb2NjbHVzaW9uVHJhY2tlciwgYXBwZW5kUXVhZHNEYXRhKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpdC5yZXByZXNlbnRzSXRzZWxmKCkgJiYgIWl0LT52aXNpYmxlQ29udGVu
dFJlY3QoKS5pc0VtcHR5KCkpIHsKQEAgLTQxMiwxNCArNDEyLDE0IEBAIEludFNpemUgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y29udGVudFNpemUoKSBjb25zdAogICAgIHJldHVybiBtX3Jvb3RTY3Jv
bGxMYXllckltcGwtPmNoaWxkcmVuKClbMF0tPmNvbnRlbnRCb3VuZHMoKTsKIH0KIAotc3RhdGlj
IGlubGluZSBDQ1JlbmRlclBhc3MqIGZpbmRSZW5kZXJQYXNzQnlJZChpbnQgcmVuZGVyUGFzc0lk
LCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQorc3RhdGljIGlu
bGluZSBDQ1JlbmRlclBhc3MqIGZpbmRSZW5kZXJQYXNzQnlJZChDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCwgY29uc3QgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhJiBmcmFtZSkK
IHsKICAgICBDQ1JlbmRlclBhc3NJZEhhc2hNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZnJhbWUu
cmVuZGVyUGFzc2VzQnlJZC5maW5kKHJlbmRlclBhc3NJZCk7CiAgICAgQVNTRVJUKGl0ICE9IGZy
YW1lLnJlbmRlclBhc3Nlc0J5SWQuZW5kKCkpOwogICAgIHJldHVybiBpdC0+c2Vjb25kLmdldCgp
OwogfQogCi1zdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUoaW50IHJlbW92
ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhJiBmcmFtZSkKK3N0
YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShDQ1JlbmRlclBhc3M6OklkIHJl
bW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhJiBmcmFtZSkK
IHsKICAgICBDQ1JlbmRlclBhc3MqIHJlbW92ZVJlbmRlclBhc3MgPSBmaW5kUmVuZGVyUGFzc0J5
SWQocmVtb3ZlUmVuZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgc2l6ZV90IHJlbW92ZUluZGV4ID0g
ZnJhbWUucmVuZGVyUGFzc2VzLmZpbmQocmVtb3ZlUmVuZGVyUGFzcyk7CkBAIC00MzksNyArNDM5
LDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKGludCByZW1vdmVS
ZW5kZXJQYXNzSWQsIENDTGF5ZXJUcmVlSG9zdEkKICAgICAgICAgaWYgKGN1cnJlbnRRdWFkLT5t
YXRlcmlhbCgpICE9IENDRHJhd1F1YWQ6OlJlbmRlclBhc3MpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBpbnQgbmV4dFJlbW92ZVJlbmRlclBhc3NJZCA9IENDUmVuZGVyUGFzc0Ry
YXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAg
ICAgQ0NSZW5kZXJQYXNzOjpJZCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpOwogICAg
ICAgICByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUobmV4dFJlbW92ZVJlbmRlclBhc3NJZCwg
ZnJhbWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGM4YzMzM2Uz
Njk0NzI0YWI4Zjg2OTI1ZGVhYjIxM2JkYjI3NTI4YmMuLjI1MzE4ZTU0M2MwNWRhYjRlYzhjMjQ3
ZGViODk5MjhiNjA2NTcwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtMzgsMTkg
KzM4LDIwIEBAIHVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IENDUmVuZGVyUGFzczo6
Y3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpCitQYXNzT3duUHRyPENDUmVu
ZGVyUGFzcz4gQ0NSZW5kZXJQYXNzOjpjcmVhdGUoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFy
Z2V0KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRS
ZWN0LCB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpKTsKIH0KIAotQ0NSZW5kZXJQYXNzOjpDQ1JlbmRl
clBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK0NDUmVuZGVyUGFzczo6Q0NS
ZW5kZXJQYXNzKElkIGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKICAgICA6IG1faWQoaWQp
CiAgICAgLCBtX3RyYW5zZm9ybVRvUm9vdFRhcmdldCh0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpCiAg
ICAgLCBtX291dHB1dFJlY3Qob3V0cHV0UmVjdCkKICAgICAsIG1faGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKHRydWUpCiAgICAgLCBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFj
ZShmYWxzZSkKIHsKLSAgICBBU1NFUlQoaWQgPiAwKTsKKyAgICBBU1NFUlQoaWQuZmlyc3QgPiAw
KTsKKyAgICBBU1NFUlQoaWQuc2Vjb25kID49IDApOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6
YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0Rh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDllYmVkMWJkNWRlOGYwYWRjZWU1YjI5ZDc2
MDcyZTc1NjgzMWFlYjAuLmM0ZjVkODQ2YTVhNWExMGYxMmY4YzFkYTg3OGVkMTcyOWY4ODg3ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC02MCw3ICs2MCwyNCBAQCB0eXBlZGVmIFZlY3Rv
cjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gQ0NTaGFyZWRRdWFkU3RhdGVMaXN0OwogY2xh
c3MgQ0NSZW5kZXJQYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3Mp
OwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKGlu
dCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOworICAgIHN0cnVjdCBJZCB7CisgICAgICAg
IGludCBsYXllcklkOworICAgICAgICBpbnQgaW5kZXg7CisKKyAgICAgICAgSWQoaW50IGxheWVy
SWQsIGludCBpbmRleCkKKyAgICAgICAgICAgIDogbGF5ZXJJZChsYXllcklkKQorICAgICAgICAg
ICAgLCBpbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGxheWVySWQg
PiAwKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA+PSAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGxheWVy
SWQgPT0gb3RoZXIubGF5ZXJJZCAmJiBpbmRleCA9PSBvdGhlci5pbmRleDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSWQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJZCYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIGxheWVySWQgPCBvdGhlci5sYXllcklkIHx8IChsYXllcklkID09IG90aGVyLmxh
eWVySWQgJiYgaW5kZXggPCBvdGhlci5pbmRleCk7IH0KKyAgICB9OworCisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoSWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0
KTsKIAogICAgIHZvaWQgYXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCosIENDT2NjbHVz
aW9uVHJhY2tlckltcGwqLCBDQ0FwcGVuZFF1YWRzRGF0YSYpOwogICAgIHZvaWQgYXBwZW5kUXVh
ZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqLCBjb25zdCBDQ1JlbmRlclBhc3Mq
IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqLCBDQ0FwcGVu
ZFF1YWRzRGF0YSYpOwpAQCAtNjgsNyArODUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBDQ1F1
YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KIAotICAgIGlu
dCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBJZCBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KIAogICAgIC8vIEZJWE1FOiBNb2RpZnkgdGhpcyB0cmFuc2Zvcm0gd2hlbiBtZXJn
aW5nIHRoZSBSZW5kZXJQYXNzIGludG8gYSBwYXJlbnQgY29tcG9zaXRvci4KICAgICAvLyBUcmFu
c2Zvcm1zIGZyb20gcXVhZCdzIG9yaWdpbmFsIGNvbnRlbnQgc3BhY2UgdG8gdGhlIHJvb3QgdGFy
Z2V0J3MgY29udGVudCBzcGFjZS4KQEAgLTkyLDkgKzEwOSw5IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAgICAgdm9pZCBzZXRIYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0
c2lkZVRhcmdldFN1cmZhY2UpIHsgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZh
Y2UgPSBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIHByb3RlY3RlZDoK
LSAgICBDQ1JlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7CisgICAg
Q0NSZW5kZXJQYXNzKElkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7CiAKLSAgICBpbnQgbV9p
ZDsKKyAgICBJZCBtX2lkOwogICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdDsKICAgICBDQ1NoYXJl
ZFF1YWRTdGF0ZUxpc3QgbV9zaGFyZWRRdWFkU3RhdGVMaXN0OwogICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQ7CkBAIC0xMDYsOSArMTIz
LDQyIEBAIHByb3RlY3RlZDoKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNr
Z3JvdW5kRmlsdGVyczsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPENDUmVuZGVyUGFzcyo+IENDUmVu
ZGVyUGFzc0xpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8aW50LCBPd25QdHI8Q0NSZW5kZXJQYXNzPiA+
IENDUmVuZGVyUGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNw
YWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6SWQ+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZD4g
eworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKKyAgICBz
dGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gZmFsc2U7CisgICAgc3RhdGljIFdl
YkNvcmU6OkNDUmVuZGVyUGFzczo6SWQgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkND
UmVuZGVyUGFzczo6SWQoMCwgMCk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVk
VmFsdWUoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCYgc2xvdCkgeyBzbG90ID0gV2ViQ29yZTo6
Q0NSZW5kZXJQYXNzOjpJZCgtMSwgLTEpOyB9CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFs
dWUoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUubGF5ZXJJ
ZCA9PSAtMSAmJiB2YWx1ZS5pbmRleCA9PSAtMTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IElu
dEhhc2g8V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZD4geworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQmIGtleSkKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIHNob3J0UmFuZG9tMSA9IDI3Nzk1MTIyNTsgLy8gQSByYW5kb20gMzItYml0IHZh
bHVlLgorICAgICAgICB1bnNpZ25lZCBzaG9ydFJhbmRvbTIgPSA5NTE4Nzk2NjsgLy8gQSByYW5k
b20gMzItYml0IHZhbHVlLgorICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmdSYW5kb20gPSAxOTI0
ODY1ODE2NTk1MjYyMjsgLy8gQSByYW5kb20gNjQtYml0IHZhbHVlLgorCisgICAgICAgIEFTU0VS
VChrZXkubGF5ZXJJZCA+IDAgJiYga2V5LmluZGV4ID49IDApOworICAgICAgICB1bnNpZ25lZCB2
YWx1ZTEgPSBrZXkubGF5ZXJJZDsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUyID0ga2V5LmluZGV4
ICsgMTsKKworICAgICAgICB1bnNpZ25lZCBsb25nIHByb2R1Y3QgPSAoc2hvcnRSYW5kb20xICog
dmFsdWUxICsgc2hvcnRSYW5kb20yICogdmFsdWUyKSAqIGxvbmdSYW5kb207CisgICAgICAgIHVu
c2lnbmVkIGhpZ2hJbnRCaXRzID0gcHJvZHVjdCA+PiAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0g
c2l6ZW9mKHVuc2lnbmVkKSk7CisgICAgICAgIHJldHVybiBoaWdoSW50Qml0czsKKyAgICB9Cisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCYgYSwg
Y29uc3QgV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCYgYikgeyByZXR1cm4gYSA9PSBiOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OworfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkNDUmVuZGVyUGFz
czo6SWQ+IHsKKyAgICB0eXBlZGVmIEludEhhc2g8V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZD4g
SGFzaDsKK307Cit9IC8vIG5hbWVzcGFjZSBXVEYKIAotfQorbmFtZXNwYWNlIFdlYkNvcmUgewor
dHlwZWRlZiBWZWN0b3I8Q0NSZW5kZXJQYXNzKj4gQ0NSZW5kZXJQYXNzTGlzdDsKK3R5cGVkZWYg
SGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q0NSZW5kZXJQYXNzPiA+IENDUmVuZGVy
UGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXggYzUzYjdmZTQ1YzFkNGI4NzY1
OWFhMjRhOTU2MWYwM2JjNTY3NDlkOS4uZDI0MDUyNWVmMjVjMzBkZWFhMWE0YjdjZGM3MzZhM2M0
MjlmNTk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcApAQCAt
MjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1Jl
bmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
aW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1Rl
eENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29v
cmRPZmZzZXRZKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
LCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQs
IGJvb2wgaXNSZXBsaWNhLCBjb25zdCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFz
a1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
LCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxv
YXQgbWFza1RleENvb3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSkKIHsKICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0
ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBtYXNrUmVzb3VyY2VJZCwgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1RleENv
b3JkU2NhbGVZLCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSk7CiB9
CiAKLUNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwg
aW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3Jk
U2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZz
ZXRZKQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0
LCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxv
YXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBt
YXNrVGV4Q29vcmRPZmZzZXRZKQogICAgIDogQ0NEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIEND
RHJhd1F1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwgbV9yZW5kZXJQYXNzSWQocmVu
ZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQpAQCAtNDUsNyArNDUsOCBA
QCBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgICwgbV9tYXNrVGV4Q29vcmRPZmZzZXRYKG1h
c2tUZXhDb29yZE9mZnNldFgpCiAgICAgLCBtX21hc2tUZXhDb29yZE9mZnNldFkobWFza1RleENv
b3JkT2Zmc2V0WSkKIHsKLSAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQgPiAwKTsKKyAgICBBU1NF
UlQobV9yZW5kZXJQYXNzSWQuZmlyc3QgPiAwKTsKKyAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQu
c2Vjb25kID49IDApOwogfQogCiBjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjb25zdCBDQ0RyYXdRdWFkKiBxdWFkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKaW5kZXggMGQyY2FmOWI1OTFlZDdlMjRiN2Zh
NzYzMDNmNDI4OGM3MGRmMTJmMC4uMjY5NWE0YmM0YzVlOGRjN2I5YzY0NDc3ZjllYzZmNDczOGY5
MmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCkBAIC0yNywyMCAr
MjcsMTkgQEAKICNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCiAjaW5jbHVkZSAiQ0NE
cmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgogI2luY2x1ZGUgIkNDUmVzb3Vy
Y2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDUmVuZGVyUGFzczsKLQog
Y2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1Jl
cGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29u
c3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhD
b29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKKyAgICBzdGF0aWMgUGFzc093blB0
cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9m
ZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwogCi0gICAgaW50IHJlbmRlclBhc3NJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CisgICAgQ0NSZW5kZXJQYXNzOjpJ
ZCByZW5kZXJQYXNzSWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJZDsgfQogICAgIGJv
b2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KICAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBt
X21hc2tSZXNvdXJjZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2lu
Y2VMYXN0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZy
YW1lOyB9CkBAIC01Miw5ICs1MSw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRZKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrVGV4Q29vcmRPZmZzZXRZOyB9CiAKIHByaXZh
dGU6Ci0gICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBj
b25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3Vy
Y2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29u
dGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxv
YXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBt
YXNrVGV4Q29vcmRPZmZzZXRZKTsKKyAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBh
c3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNr
UmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUs
IGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9h
dCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKIAotICAg
IGludCBtX3JlbmRlclBhc3NJZDsKKyAgICBDQ1JlbmRlclBhc3M6OklkIG1fcmVuZGVyUGFzc0lk
OwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIG1fbWFza1Jlc291cmNlSWQ7CiAgICAgSW50UmVjdCBtX2NvbnRlbnRzQ2hhbmdlZFNpbmNl
TGFzdEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggNTBhNjM0OWQ1
ZTFmZDViYWY1MTRhYjcxMDUxODE5ZTMwODkxMTgxYS4uMTYzOTNiOTMwZDkxNGE1ZGVjOTdlMzJh
YjgyOWRiNDkzZmYxN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCkBAIC0x
ODEsMTYgKzE4MSwyNCBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZUNsaXBwZWRSZWN0
SW5UYXJnZXQoY29uc3QgQ0NMYXllckltcGwqIG93bmluZ0xheWVyKQogICAgIHJldHVybiBjbGlw
cGVkUmVjdEluVGFyZ2V0OwogfQogCitDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3VyZmFjZTo6
cmVuZGVyUGFzc0lkKCkKK3sKKyAgICBpbnQgbGF5ZXJJZCA9IG1fb3duaW5nTGF5ZXItPmlkKCk7
CisgICAgaW50IHN1YklkID0gMDsKKyAgICBBU1NFUlQobGF5ZXJJZCA+IDApOworICAgIHJldHVy
biBDQ1JlbmRlclBhc3M6OklkKGxheWVySWQsIHN1YklkKTsKK30KKwogdm9pZCBDQ1JlbmRlclN1
cmZhY2U6OmFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJiBwYXNzU2luaykKIHsK
LSAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUobV9v
d25pbmdMYXllci0+aWQoKSwgbV9jb250ZW50UmVjdCwgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSk7
CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJl
bmRlclBhc3NJZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKICAg
ICBwYXNzLT5zZXREYW1hZ2VSZWN0KG1fZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFnZVJlY3Qo
KSk7CiAgICAgcGFzcy0+c2V0RmlsdGVycyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkpOwogICAg
IHBhc3MtPnNldEJhY2tncm91bmRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmJhY2tncm91bmRGaWx0
ZXJzKCkpOwogICAgIHBhc3NTaW5rLmFwcGVuZFJlbmRlclBhc3MocGFzcy5yZWxlYXNlKCkpOwog
fQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNp
bmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEsIGJvb2wgZm9yUmVwbGljYSwg
aW50IHJlbmRlclBhc3NJZCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9v
bCBmb3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCkKIHsKICAgICBBU1NF
UlQoIWZvclJlcGxpY2EgfHwgbV9vd25pbmdMYXllci0+aGFzUmVwbGljYSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAwOWEyODQ2NzZmMjI4MjI5NDI1MjViMTI1ZjNhNjNm
M2NjODdiY2IzLi4yZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNmNjYxM2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5j
bHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkU2luazsKLWNsYXNzIENDUmVuZGVy
UGFzczsKIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNz
IFRleHRTdHJlYW07CkBAIC0xMDYsOCArMTA2LDEwIEBAIHB1YmxpYzoKIAogICAgIENDRGFtYWdl
VHJhY2tlciogZGFtYWdlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlVHJhY2tlci5n
ZXQoKTsgfQogCisgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQoKTsKKwogICAgIHZv
aWQgYXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmKTsKLSAgICB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVwbGljYSwg
aW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NB
cHBlbmRRdWFkc0RhdGEmLCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVy
UGFzc0lkKTsKIAogcHJpdmF0ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyZXIuaAppbmRleCA5NDZhZWM2MzMzNjI5ZWFjY2JhODg2ODNjYTFkOTc4NGRhNDU5
NDM2Li4wNDdiZDgwZjMxNTdhYmFlOTNjZTMxYjRmZGI5ZDdlYTYzNmUxNGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmll
d3BvcnRDaGFuZ2VkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVyUGFzc0Fs
bG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpIHsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiwgY29uc3Qg
Q0NSZW5kZXJQYXNzSWRIYXNoTWFwJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDc5NmEz
MTk4ZTY2NWNhMTQzMGI3ZDgwNDc0MTM3NWQ1ZmY0Y2ZhNzQuLmQ3ZTk1NTc4MzM0YzhjZTBjMWU0
ZDI0ZGVlYTJlZTNlN2JhMjgxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNDc1LDEzICszNDc1
LDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRo
U2Npc3NvcikKICAgICBncmFuZENoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKICAgICBD
Q1RpbGVkTGF5ZXJJbXBsKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOworICAgIENDUmVuZGVyUGFz
czo6SWQgY2hpbGRQYXNzSWQoY2hpbGRQdHItPmlkKCksIDApOwogCiAgICAgY2hpbGQtPmFkZENo
aWxkKGdyYW5kQ2hpbGQucmVsZWFzZSgpKTsKICAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxl
YXNlKCkpOwogICAgIG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAg
ICAgbXlIb3N0SW1wbC0+c2V0Vmlld3BvcnRTaXplKHJvb3RSZWN0LnNpemUoKSwgcm9vdFJlY3Qu
c2l6ZSgpKTsKIAotICAgIEVYUEVDVF9GQUxTRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZl
Q2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JS
ZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVI
b3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1lOwpAQCAtMzQ5MSw3ICszNDkyLDcgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0K
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyLgot
ICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJj
ZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhv
c3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNo
aWxkUGFzc0lkKSk7CiAKICAgICB7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1l
RGF0YSBmcmFtZTsKQEAgLTM1MDEsNyArMzUwMiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAgICB9CiAKICAgICAvLyBXZSBz
aG91bGQgc3RpbGwgaGF2ZSBjYWNoZWQgdGV4dHVyZXMgZm9yIHN1cmZhY2UgMiBhZnRlciBkcmF3
aW5nIHdpdGggbm8gZGFtYWdlLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVy
KCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiAKICAgICAvLyBEYW1hZ2UgYSBzaW5n
bGUgdGlsZSBvZiBzdXJmYWNlIDIuCiAgICAgY2hpbGRQdHItPnNldFVwZGF0ZVJlY3QoSW50UmVj
dCgxMCwgMTAsIDEwLCAxMCkpOwpAQCAtMzUxNCw3ICszNTE1LDcgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAg
IC8vIFdlIHNob3VsZCBoYXZlIGEgY2FjaGVkIHRleHR1cmUgZm9yIHN1cmZhY2UgMiBhZ2FpbiBl
dmVuIHRob3VnaCBpdCB3YXMgZGFtYWdlZC4KLSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5y
ZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5p
ZCgpKSk7CisgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogfQogCiBURVNUX0YoQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJlQ2FjaGluZykKQEAgLTM4NzYsMTgg
KzM4NzcsMTggQEAgc3RydWN0IFJlbmRlclBhc3NDYWNoZUVudHJ5IHsKIH07CiAKIHN0cnVjdCBS
ZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZy
YW1lRGF0YSB7Ci0gICAgc3RkOjptYXA8Y2hhciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+IHJlbmRl
clBhc3NDYWNoZTsKKyAgICBzdGQ6Om1hcDxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2Fj
aGVFbnRyeT4gcmVuZGVyUGFzc0NhY2hlOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
c2hhcmVkUXVhZFN0YXRlOwogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyUGFzczogcHVibGljIEND
UmVuZGVyUGFzcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNz
PiBjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiByb290VHJhbnNmb3JtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVu
ZGVyUGFzcyhpZCwgb3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkpOyB9CisgICAgc3RhdGljIFBh
c3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVj
dCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9y
bSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDVGVzdFJlbmRlclBhc3MoaWQsIG91dHB1dFJlY3Qs
IHJvb3RUcmFuc2Zvcm0pKTsgfQogCiAgICAgdm9pZCBhcHBlbmRRdWFkKFBhc3NPd25QdHI8Q0NE
cmF3UXVhZD4gcXVhZCkgeyBtX3F1YWRMaXN0LmFwcGVuZChxdWFkKTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgQ0NUZXN0UmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlk
LCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJQYXNzKEND
UmVuZGVyUGFzczo6SWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0
LCByb290VHJhbnNmb3JtKSB7IH0KIH07CiAKIGNsYXNzIENDVGVzdFJlbmRlcmVyIDogcHVibGlj
IENDUmVuZGVyZXJHTCwgcHVibGljIENDUmVuZGVyZXJDbGllbnQgewpAQCAtMzkwMiw5ICszOTAz
LDkgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgY2xlYXJDYWNoZWRUZXh0dXJlcygpIHsg
bV90ZXh0dXJlcy5jbGVhcigpOyB9Ci0gICAgdm9pZCBzZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9y
UmVuZGVyUGFzc0lkKGludCBpZCkgeyBtX3RleHR1cmVzLmFkZChpZCk7IH0KKyAgICB2b2lkIHNl
dEhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkg
eyBtX3RleHR1cmVzLmFkZChpZCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVz
b3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCBpZCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90
ZXh0dXJlcy5jb250YWlucyhpZCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291
cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkIGlkKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3RleHR1cmVzLmNvbnRhaW5zKGlkKTsgfQogCiAgICAgLy8gQ0NSZW5kZXJlckNs
aWVudCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZp
ZXdwb3J0U2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBA
IC0zOTIxLDcgKzM5MjIsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIENDTGF5ZXJUcmVl
U2V0dGluZ3MgbV9zZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEhh
c2hTZXQ8aW50PiBtX3RleHR1cmVzOworICAgIEhhc2hTZXQ8Q0NSZW5kZXJQYXNzOjpJZD4gbV90
ZXh0dXJlczsKIH07CiAKIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShj
b25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0
YSwgQ0NUZXN0UmVuZGVyZXIqIHJlbmRlcmVyKQpAQCAtMzkzNCwxMiArMzkzNSwxNyBAQCBzdGF0
aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlw
dCwgUmVuZGVyUGFzc1JlbW92YQogICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRDaGFyID0gdGVzdFNj
cmlwdDsKIAogICAgIC8vIFByZS1jcmVhdGUgcm9vdCBwYXNzCi0gICAgY2hhciByb290UmVuZGVy
UGFzc0lkID0gdGVzdFNjcmlwdFswXTsKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJvb3RSZW5kZXJQ
YXNzSWQgPSBDQ1JlbmRlclBhc3M6OklkKHRlc3RTY3JpcHRbMF0sIHRlc3RTY3JpcHRbMV0pOwog
ICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0gQ0NUZXN0UmVuZGVyUGFz
czo6Y3JlYXRlKHJvb3RSZW5kZXJQYXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7Ci0gICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8
Y2hhciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+KHJvb3RSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3ND
YWNoZUVudHJ5KHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKKyAgICB0ZXN0RGF0YS5yZW5k
ZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNz
Q2FjaGVFbnRyeT4ocm9vdFJlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocm9vdFJl
bmRlclBhc3MucmVsZWFzZSgpKSkpOwogICAgIHdoaWxlICgqY3VycmVudENoYXIpIHsKLSAgICAg
ICAgY2hhciByZW5kZXJQYXNzSWQgPSBjdXJyZW50Q2hhclswXTsKKyAgICAgICAgaW50IGxheWVy
SWQgPSAqY3VycmVudENoYXI7CiAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgIEFTU0VS
VF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAgICAgICAgaW50IGluZGV4ID0gKmN1cnJlbnRDaGFyOwor
ICAgICAgICBjdXJyZW50Q2hhcisrOworCisgICAgICAgIENDUmVuZGVyUGFzczo6SWQgcmVuZGVy
UGFzc0lkID0gQ0NSZW5kZXJQYXNzOjpJZChsYXllcklkLCBpbmRleCk7CiAKICAgICAgICAgT3du
UHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFzczsKIApAQCAtMzk1OSw5ICszOTY1LDEzIEBAIHN0
YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2Ny
aXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKCpjdXJyZW50Q2hhciA+PSAnQScpICYmICgqY3VycmVudENo
YXIgPD0gJ1onKSkgewogICAgICAgICAgICAgICAgIC8vIFJlbmRlclBhc3MgZHJhdyBxdWFkCi0g
ICAgICAgICAgICAgICAgY2hhciBuZXdSZW5kZXJQYXNzSWQgPSAqY3VycmVudENoYXI7Ci0gICAg
ICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJZCk7
CisgICAgICAgICAgICAgICAgaW50IGxheWVySWQgPSAqY3VycmVudENoYXI7CisgICAgICAgICAg
ICAgICAgY3VycmVudENoYXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVFJVRShjdXJyZW50
Q2hhcik7CisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gKmN1cnJlbnRDaGFyOwogICAgICAg
ICAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJ
ZCBuZXdSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3M6OklkKGxheWVySWQsIGluZGV4KTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlRfTkUocm9vdFJlbmRlclBhc3NJZCwgbmV3UmVuZGVyUGFzc0lk
KTsKICAgICAgICAgICAgICAgICBib29sIGhhc1RleHR1cmUgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICBib29sIGNvbnRlbnRzQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgCkBAIC0z
OTg3LDcgKzM5OTcsNyBAQCBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERhdGEo
Y29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YQogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXItPnNldEhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
bmV3UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICAgICAgICAgICAgICBPd25QdHI8Q0NSZW5kZXJQ
YXNzPiByZW5kZXJQYXNzID0gQ0NUZXN0UmVuZGVyUGFzczo6Y3JlYXRlKG5ld1JlbmRlclBhc3NJ
ZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Y2hhciwgUmVu
ZGVyUGFzc0NhY2hlRW50cnk+KG5ld1JlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnko
cmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3REYXRhLnJl
bmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBh
c3NDYWNoZUVudHJ5PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJlbmRl
clBhc3MucmVsZWFzZSgpKSkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IEludFJlY3QgcXVhZFJlY3QgPSBJbnRSZWN0KDAsIDAsIDEsIDEpOwpAQCAtNDAwOCw3ICs0MDE4
LDkgQEAgdm9pZCBkdW1wUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IFJlbmRlclBhc3NSZW1vdmFs
VGVzdERhdGEmIHRlc3REYXRhLCBjaGFyKiBidWYKICAgICBjaGFyKiBwb3MgPSBidWZmZXI7CiAg
ICAgZm9yIChDQ1JlbmRlclBhc3NMaXN0Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0gdGVz
dERhdGEucmVuZGVyUGFzc2VzLnJiZWdpbigpOyBpdCAhPSB0ZXN0RGF0YS5yZW5kZXJQYXNzZXMu
cmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogY3VycmVudFBhc3Mg
PSAqaXQ7Ci0gICAgICAgICpwb3MgPSBjdXJyZW50UGFzcy0+aWQoKTsKKyAgICAgICAgKnBvcyA9
IGN1cnJlbnRQYXNzLT5pZCgpLmxheWVySWQ7CisgICAgICAgIHBvcysrOworICAgICAgICAqcG9z
ID0gY3VycmVudFBhc3MtPmlkKCkuaW5kZXg7CiAgICAgICAgIHBvcysrOwogCiAgICAgICAgIEND
UXVhZExpc3Q6OmNvbnN0X2l0ZXJhdG9yIHF1YWRMaXN0SXRlcmF0b3IgPSBjdXJyZW50UGFzcy0+
cXVhZExpc3QoKS5iZWdpbigpOwpAQCAtNDAyMCw3ICs0MDMyLDkgQEAgdm9pZCBkdW1wUmVuZGVy
UGFzc1Rlc3REYXRhKGNvbnN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhLCBj
aGFyKiBidWYKICAgICAgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKLSAgICAgICAgICAgICAg
ICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCkt
PnJlbmRlclBhc3NJZCgpOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3
UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkubGF5ZXJJZDsK
KyAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAqcG9zID0gQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpLmlu
ZGV4OwogICAgICAgICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgZGVmYXVsdDoKQEAgLTQwNjQsMTE1ICs0MDc4LDExNSBAQCBUZXN0Q2FzZSByZW1v
dmVSZW5kZXJQYXNzZXNDYXNlc1tdID0KICAgICB7CiAgICAgICAgIHsKICAgICAgICAgICAgICJT
aW5nbGUgcm9vdCBwYXNzIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIiwKLSAgICAgICAgICAgICJS
c3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NcbiIK
ICAgICAgICAgfSwgewogICAgICAgICAgICAgIlNpbmdsZSBwYXNzIC0gbm8gcXVhZHMiLAotICAg
ICAgICAgICAgIlJcbiIsCi0gICAgICAgICAgICAiUlxuIgorICAgICAgICAgICAgIlIwXG4iLAor
ICAgICAgICAgICAgIlIwXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJUd28gcGFzc2Vz
LCBubyByZW1vdmFsIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJB
c3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xu
IgorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAor
ICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAg
ICAgIH0sIHsKICAgICAgICAgICAgICJUd28gcGFzc2VzLCByZW1vdmUgbGFzdCIsCi0gICAgICAg
ICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAg
ICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgorICAgICAg
ICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAiSGF2ZSB0ZXh0dXJlIGJ1dCBjb250ZW50cyBjaGFuZ2VkIC0gbGVh
dmUgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NBW3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNz
c3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIK
KyAgICAgICAgICAgICJSMHNzc3NBMFt0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwK
KyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIgogICAg
ICAgICB9LCB7CiAgICAgICAgICAgICAiQ29udGVudHMgZGlkbid0IGNoYW5nZSBidXQgbm8gdGV4
dHVyZSAtIGxlYXZlIHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzQVtjXXNzc1xuIgotICAgICAg
ICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAg
IkFzc3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJB
MHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNz
c3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyByZWZl
cmVuY2UgdGhlIHNhbWUgcGFzczsgcmVtb3ZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3RdQVtj
dF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3Nz
XG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY3RdQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAi
QTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKICAgICAgICAgfSwgewog
ICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsg
bGVhdmUiLAotICAgICAgICAgICAgIlJzc3NzQVtjXUFbY11zc3NcbiIKLSAgICAgICAgICAgICJB
c3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3Nc
biIsCisgICAgICAgICAgICAiUjBzc3NzQTBbY11BMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEw
c3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMEEwc3NzXG4iCisgICAgICAgICAgICAiQTBz
c3NzXG4iLAogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiTWFueSBwYXNzZXMsIHJlbW92ZSBh
bGwiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3NzQltj
dF1DW2N0XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtjdF1zc0VbY3RdRltjdF1cbiIKLSAgICAg
ICAgICAgICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAiQ0dbY3RdXG4iCi0gICAgICAgICAgICAi
RHNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJGc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3Nc
biIsCi0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtj
dF1zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwW2N0XUMwW2N0XXNcbiIKKyAgICAgICAgICAg
ICJCMHNzc0QwW2N0XXNzRTBbY3RdRjBbY3RdXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIK
KyAgICAgICAgICAgICJDMEcwW2N0XVxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAg
ICAgICAgICAgIkYwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4iLAorCisgICAgICAg
ICAgICAiUjBzc3NzQTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIkRlZXAgcmVj
dXJzaW9uLCByZW1vdmUgYWxsIiwKIAotICAgICAgICAgICAgIlJzc3Nzc0FbY3Rdc3Nzc1xuIgot
ICAgICAgICAgICAgIkFzc3NzQnNzc1xuIgotICAgICAgICAgICAgIkJDXG4iCi0gICAgICAgICAg
ICAiQ0RcbiIKLSAgICAgICAgICAgICJERVxuIgotICAgICAgICAgICAgIkVGXG4iCi0gICAgICAg
ICAgICAiRkdcbiIKLSAgICAgICAgICAgICJHSFxuIgotICAgICAgICAgICAgIkhzc3NJc3NzXG4i
Ci0gICAgICAgICAgICAiSUpcbiIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKKyAgICAgICAgICAg
ICJSMHNzc3NzQTBbY3Rdc3Nzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc0Iwc3NzXG4iCisgICAg
ICAgICAgICAiQjBDMFxuIgorICAgICAgICAgICAgIkMwRDBcbiIKKyAgICAgICAgICAgICJEMEUw
XG4iCisgICAgICAgICAgICAiRTBGMFxuIgorICAgICAgICAgICAgIkYwRzBcbiIKKyAgICAgICAg
ICAgICJHMEgwXG4iCisgICAgICAgICAgICAiSDBzc3NJMHNzc1xuIgorICAgICAgICAgICAgIkkw
SjBcbiIKKyAgICAgICAgICAgICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICJSc3Nzc3NBc3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc3NBMHNzc3NcbiIKICAgICAgICAg
fSwgewogICAgICAgICAgICAgIldpZGUgcmVjdXJzaW9uLCByZW1vdmUgYWxsIiwKLSAgICAgICAg
ICAgICJSQVtjdF1CW2N0XUNbY3RdRFtjdF1FW2N0XUZbY3RdR1tjdF1IW2N0XUlbY3RdSltjdF1c
biIKLSAgICAgICAgICAgICJBc1xuIgotICAgICAgICAgICAgIkJzXG4iCi0gICAgICAgICAgICAi
Q3Nzc3NcbiIKLSAgICAgICAgICAgICJEc3Nzc1xuIgotICAgICAgICAgICAgIkVzXG4iCi0gICAg
ICAgICAgICAiRlxuIgotICAgICAgICAgICAgIkdzXG4iCi0gICAgICAgICAgICAiSHNcbiIKLSAg
ICAgICAgICAgICJJc1xuIgotICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAgIlIw
QTBbY3RdQjBbY3RdQzBbY3RdRDBbY3RdRTBbY3RdRjBbY3RdRzBbY3RdSDBbY3RdSTBbY3RdSjBb
Y3RdXG4iCisgICAgICAgICAgICAiQTBzXG4iCisgICAgICAgICAgICAiQjBzXG4iCisgICAgICAg
ICAgICAiQzBzc3NzXG4iCisgICAgICAgICAgICAiRDBzc3NzXG4iCisgICAgICAgICAgICAiRTBz
XG4iCisgICAgICAgICAgICAiRjBcbiIKKyAgICAgICAgICAgICJHMHNcbiIKKyAgICAgICAgICAg
ICJIMHNcbiIKKyAgICAgICAgICAgICJJMHNcbiIKKyAgICAgICAgICAgICJKMHNzc3NcbiIsCiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICJSQUJDREVGR0hJSlxuIgorICAgICAgICAgICAgIlIw
QTBCMEMwRDBFMEYwRzBIMEkwSjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlbW92
ZSBwYXNzZXMgcmVnYXJkbGVzcyBvZiBjYWNoZSBzdGF0ZSIsCi0gICAgICAgICAgICAiUnNzc3NB
W2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCQ3NcbiIKLSAgICAgICAgICAgICJCc3NzRFtj
XXNzRVt0XUZcbiIKLSAgICAgICAgICAgICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAiQ0dcbiIK
LSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAg
ICAgICAgICAiR3Nzc1xuIiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAg
ICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBDMHNcbiIKKyAgICAg
ICAgICAgICJCMHNzc0QwW2Ndc3NFMFt0XUYwXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIK
KyAgICAgICAgICAgICJDMEcwXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAgICAg
ICAgICAiRjBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAgICAg
ICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiTGVhdmUgc29tZSBw
YXNzZXMsIHJlbW92ZSBvdGhlcnMiLAogCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0g
ICAgICAgICAgICAiQXNzc0JbdF1DW2N0XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzXG4i
Ci0gICAgICAgICAgICAiQ0dcbiIKLSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAgICAg
ICAgIkdzc3NcbiIsCi0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJB
c3NzQkNzXG4iCi0gICAgICAgICAgICAiQnNzc0Rzc1xuIgotICAgICAgICAgICAgIkRzc3Nzc3Nz
XG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0Iw
W3RdQzBbY3Rdc1xuIgorICAgICAgICAgICAgIkIwc3NzRDBbY11zc1xuIgorICAgICAgICAgICAg
IkMwRzBcbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xu
IiwKKworICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMw
c1xuIgorICAgICAgICAgICAgIkIwc3NzRDBzc1xuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xu
IgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAwLCAwLCAwCiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmlu
ZGV4IDUyMTkzMDI3Y2M0NjUxODgxMmIwYWM1MDhhMjIwMGYwNzI1OGMzZmIuLjk4ZjEzZmYzYWM3
OWY5MWQ2NGM2NDE2ZGU0YzJiZWZhMzNiMTc3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjM1NCw4ICsyMzU0
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDUmVu
ZGVyZXIqIHJlbmRlcmVyID0gaG9zdEltcGwtPnJlbmRlcmVyKCk7Ci0gICAgICAgIHVuc2lnbmVk
IHN1cmZhY2UxUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigp
WzBdLT5pZCgpOwotICAgICAgICB1bnNpZ25lZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJ
bXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKKyAg
ICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBzdXJmYWNlMVJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5y
b290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQo
KTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJ
bXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3Vy
ZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKIAogICAgICAgICBzd2l0Y2ggKGhvc3RJbXBsLT5zb3Vy
Y2VGcmFtZU51bWJlcigpKSB7CiAgICAgICAgIGNhc2UgMDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IDA2NjkzZjMz
NzRmMDllMDU4MzI3YzY5NTUxYzIwZmYyOTdkMDE3NmQuLmQ2NmI4Yzk1MTZhM2U4ODI4NmUzNmI4
MTU3YTQwNjFiMDZjYWE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFRFU1QoQ0NS
ZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRR
dWFkU3RhdGUpCiAgICAgQ0NBcHBlbmRRdWFkc0RhdGEgYXBwZW5kUXVhZHNEYXRhOwogCiAgICAg
Ym9vbCBmb3JSZXBsaWNhID0gZmFsc2U7Ci0gICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMo
bW9ja1F1YWRDdWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgMik7CisgICAgcmVu
ZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwg
Zm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCgyLCAwKSk7CiAKICAgICBBU1NFUlRfRVEoMXUs
IHNoYXJlZFN0YXRlTGlzdC5zaXplKCkpOwogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRR
dWFkU3RhdGUgPSBzaGFyZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAg
VEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVj
dFJlbmRlclBhc3MpCiAgICAgQVNTRVJUX0VRKDF1LCBwYXNzU2luay5yZW5kZXJQYXNzZXMoKS5z
aXplKCkpOwogICAgIENDUmVuZGVyUGFzcyogcGFzcyA9IHBhc3NTaW5rLnJlbmRlclBhc3Nlcygp
WzBdLmdldCgpOwogCi0gICAgRVhQRUNUX0VRKDIsIHBhc3MtPmlkKCkpOworICAgIEVYUEVDVF9F
UShDQ1JlbmRlclBhc3M6OklkKDIsIDApLCBwYXNzLT5pZCgpKTsKICAgICBFWFBFQ1RfRVEoY29u
dGVudFJlY3QsIHBhc3MtPm91dHB1dFJlY3QoKSk7CiAgICAgRVhQRUNUX0VRKG9yaWdpbiwgcGFz
cy0+dHJhbnNmb3JtVG9Sb290VGFyZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NSZW5kZXJlckdMVGVzdC5jcHAKaW5kZXggMmYzZmQ2YTA4MTM1ODcwOTFh
MmZjNGIwOWU0OTBiZDcxMGY2ZTk1My4uMGM3OGM1ZWU5YWVjOGJhZmNjZTJjZDE0N2RjNWY3NDJk
NGNlOTVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRl
cmVyR0xUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVy
ZXJHTFRlc3QuY3BwCkBAIC04MCw5ICs4MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yb290
TGF5ZXIoQ0NMYXllckltcGw6OmNyZWF0ZSgxKSkKICAgICAgICAgLCBtX21lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFs
bG9jYXRpb25MaW1pdCgpKQogICAgIHsKLSAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9v
dFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShtX3Jvb3RMYXllci0+aWQoKSwgSW50
UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgbV9yb290TGF5ZXIt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQ
YXNzSWQgPSBtX3Jvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAg
ICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6
OmNyZWF0ZShyZW5kZXJQYXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSk7CiAgICAgICAgIG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuYXBwZW5kKHJvb3RSZW5kZXJQ
YXNzLmdldCgpKTsKLSAgICAgICAgbV9yZW5kZXJQYXNzZXMuc2V0KG1fcm9vdExheWVyLT5pZCgp
LCByb290UmVuZGVyUGFzcy5yZWxlYXNlKCkpOworICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQo
cmVuZGVyUGFzc0lkLCByb290UmVuZGVyUGFzcy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIC8v
IENDUmVuZGVyZXJDbGllbnQgbWV0aG9kcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162520</attachid>
            <date>2012-09-06 09:08:40 -0700</date>
            <delta_ts>2012-09-06 13:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95500-20120906120821.patch</filename>
            <type>text/plain</type>
            <size>43634</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI1NWRmZjE5ZTJlMjUz
NGE2ZDIwNTQxZTkzNjE3M2M4ODY4ZTY2OC4uMjhiZWZkYjM1MDJjMmM4OTY2NWE4ODg5NzMzYmE3
MGMwNDZhODllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWxsb3dzIHVzIHRvIGF2b2lkIGNvbXBsZXggcmVuZGVyUGFzc0lkIG1hcHBpbmdzIGJl
dHdlZW4KKyAgICAgICAgY29tcG9zaXRvcnMgZm9yIHViZXJjb21wLiBUaGUgdWJlcmNvbXAgbGF5
ZXIgbmVlZHMgdG8gYWRkIGEgbnVtYmVyCisgICAgICAgIG9mIFJlbmRlclBhc3NlcyB0byB0aGUg
ZnJhbWUsIGFuZCB0aGVzZSBtdXN0IG5vdCBjb25mbGljdCB3aXRoIG90aGVyCisgICAgICAgIFJl
bmRlclBhc3NlcyBpbiB0aGUgZnJhbWUuIEJ5IHVzaW5nIGl0cyBsYXllciBpZCBhbG9uZyB3aXRo
IGFuIGV4dHJhCisgICAgICAgIHZhbHVlIGl0IGRldGVybWluZXMsIHRoZSBsYXllciBjYW4gY3Jl
YXRlIGEgdW5pcXVlIGlkIHdpdGhvdXQgbmVlZGluZworICAgICAgICBhY2Nlc3MgdG8gYW55IGds
b2JhbCBzdGF0ZSBvciBpZCBnZW5lcmF0b3IuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGly
ZWN0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEaXJlY3RSZW5kZXJlcjo6ZGVj
aWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NE
aXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oOgor
ICAgICAgICAoQ0NEaXJlY3RSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZFJlbmRlclBhc3NCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVJlbmRl
clBhc3Nlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6Q0NSZW5kZXJQYXNzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaDoKKyAg
ICAgICAgKElkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6OklkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZDo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1JlbmRlclBhc3M6OklkOjpvcGVyYXRvcjwpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6aWQpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJh
d1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzc0RyYXdRdWFkLmg6CisgICAgICAgIChDQ1JlbmRlclBhc3NEcmF3UXVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3NEcmF3UXVhZDo6cmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZW5kZXJQYXNzSWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFJl
bmRlclBhc3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlcmVyOjpoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
UGFzc0lkKToKKwogMjAxMi0wOS0wNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTk1JOiBzd2l0Y2ggdG8gaGllcmFyY2hp
Y2FsIGlkZW50aWZpZXJzIG9mIE1lbW9yeUJsb2NrVHlwZXMgYW5kIHVzZSB0aGVzZSBpZGVudGlm
aWVycyBpbiBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjRjNjhkZGE0
OWIyOGQyYzM3ZDhhMDJhYmUxOGRhM2E3YmRmNDA1MS4uZWFlNWM5NTM4M2M5YmMwYTg1YjZmNDlk
MzM0MmVjMjM0M2QwMTc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wOS0wNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIE1ha2UgUmVuZGVyUGFzcyBpZHMgaG9sZCBib3RoIGdlbmVyYXRp
bmcgbGF5ZXIgaWQgYW5kIGFuIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0ND
UmVuZGVyU3VyZmFjZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyZXJHTFRlc3Qu
Y3BwOgorICAgICAgICAoRmFrZUNDUmVuZGVyZXJDbGllbnQ6OkZha2VDQ1JlbmRlcmVyQ2xpZW50
KToKKwogMjAxMi0wOS0wNiAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBXZWIgSW5zcGVjdG9yOiB0ZXN0IGZpeC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKaW5kZXggNDY4OGJlZDE5YmZjNGU4MzViYWRmMzc5MjZk
OTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEyMjU3Y2E1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEaXJlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKQEAgLTExMiwxMiArMTEyLDEyIEBA
IEludFJlY3QgQ0NEaXJlY3RSZW5kZXJlcjo6bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0
IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZsCiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJlcjo6ZGVjaWRl
UmVuZGVyUGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVu
ZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0IENDUmVuZGVy
UGFzcyo+IHJlbmRlclBhc3Nlc0luRnJhbWU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6Oklk
LCBjb25zdCBDQ1JlbmRlclBhc3MqPiByZW5kZXJQYXNzZXNJbkZyYW1lOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIHJlbmRlclBhc3Nlc0luRnJhbWUuc2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5p
ZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcltpXSk7CiAKLSAgICBWZWN0b3I8aW50PiBwYXNz
ZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFwPGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46OmNv
bnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRvcjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQYXNzOjpJZD4g
cGFzc2VzVG9EZWxldGU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q2Fj
aGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRlcmF0b3IgcGFzc0l0ZXJhdG9yOwogICAgIGZvciAocGFz
c0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9
IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVuZCgpOyArK3Bhc3NJdGVyYXRvcikgewogICAgICAgICBj
b25zdCBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3NJbkZyYW1lID0gcmVuZGVyUGFzc2VzSW5GcmFt
ZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJzdCk7CiAgICAgICAgIGlmICghcmVuZGVyUGFzc0luRnJh
bWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCBib29sIENDRGlyZWN0UmVuZGVyZXI6OnVzZVJlbmRl
clBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFtZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZQogICAgIHJl
dHVybiBiaW5kRnJhbWVidWZmZXJUb1RleHR1cmUoZnJhbWUsIHRleHR1cmUsIHJlbmRlclBhc3Mt
Pm91dHB1dFJlY3QoKSk7CiB9CiAKLWJvb2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJl
c291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0Citib29sIENDRGlyZWN0UmVuZGVy
ZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBp
ZCkgY29uc3QKIHsKICAgICBDYWNoZWRUZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4
dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5pZCgpICYmIHRl
eHR1cmUtPmlzQ29tcGxldGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaAppbmRleCAy
OTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRmYmEyMzZkYjY5
YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5o
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlUHJvdmlkZXI7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBD
Q1JlbmRlclBhc3NMaXN0JiByZW5kZXJQYXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJl
bmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJh
d09yZGVyLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nlc0J5SWQpIE9W
RVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRS
ZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlwWSk7CiAgICAgc3RhdGljIEludFJlY3QgbW92ZVNjaXNz
b3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBzY2lzc29yUmVj
dCk7CiAKLSAgICBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXMoaW50IHJlbmRlclBhc3NJZCkgY29u
c3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0
OwogICAgIHN0YXRpYyBJbnRTaXplIHJlbmRlclBhc3NUZXh0dXJlU2l6ZShjb25zdCBDQ1JlbmRl
clBhc3MqKTsKICAgICBzdGF0aWMgR0MzRGVudW0gcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQoY29u
c3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGJlZ2luRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2luZ0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKIAotICAg
IEhhc2hNYXA8aW50LCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJl
czsKKyAgICBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+
IG1fcmVuZGVyUGFzc1RleHR1cmVzOwogICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJj
ZVByb3ZpZGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCBkNDU2N2NiZTQyMjk0OGM5YzUwMjAzMjA4YmFkYzY1NWVmNGMzYzcxLi40NDdjMzJmMmJj
ZDQ3NzdiNzk4ZmNkYWMwNWExZWU5NTJjMzhhYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBDQ0xh
eWVySXRlcmF0b3JUeXBlIGVuZCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmVuZChmcmFtZS5yZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGludCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50
YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+aWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJ
ZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVu
ZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgQ0NSZW5kZXJQYXNzKiB0YXJn
ZXRSZW5kZXJQYXNzID0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0UmVuZGVyUGFz
c0lkKTsKIAogICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtMzE3
LDcgKzMxNyw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1
YWRzRGF0YTsKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1
cmZhY2UoKSkgewotICAgICAgICAgICAgaW50IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCA9IGl0
LT5pZCgpOworICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb250cmlidXRpbmdSZW5kZXJQ
YXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgICAg
IENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nl
c0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCk7CiAgICAgICAgICAgICB0YXJnZXRS
ZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1
dGluZ1JlbmRlclBhc3MsICZvY2NsdXNpb25UcmFja2VyLCBhcHBlbmRRdWFkc0RhdGEpOwogICAg
ICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVDb250
ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpAQCAtNDEyLDE0ICs0MTIsMTQgQEAgSW50U2l6ZSBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcm9vdFNj
cm9sbExheWVySW1wbC0+Y2hpbGRyZW4oKVswXS0+Y29udGVudEJvdW5kcygpOwogfQogCi1zdGF0
aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKGludCByZW5kZXJQYXNz
SWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSYgZnJhbWUpCitzdGF0aWMg
aW5saW5lIENDUmVuZGVyUGFzcyogZmluZFJlbmRlclBhc3NCeUlkKENDUmVuZGVyUGFzczo6SWQg
cmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1l
KQogewogICAgIENDUmVuZGVyUGFzc0lkSGFzaE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmcmFt
ZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQocmVuZGVyUGFzc0lkKTsKICAgICBBU1NFUlQoaXQgIT0g
ZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5lbmQoKSk7CiAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShpbnQgcmVt
b3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQor
c3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVyUGFzczo6SWQg
cmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1l
KQogewogICAgIENDUmVuZGVyUGFzcyogcmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRSZW5kZXJQYXNz
QnlJZChyZW1vdmVSZW5kZXJQYXNzSWQsIGZyYW1lKTsKICAgICBzaXplX3QgcmVtb3ZlSW5kZXgg
PSBmcmFtZS5yZW5kZXJQYXNzZXMuZmluZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAgLTQzOSw3ICs0
MzksNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUoaW50IHJlbW92
ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRyZWVIb3N0SQogICAgICAgICBpZiAoY3VycmVudFF1YWQt
Pm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcykKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGludCBuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpOworICAg
ICAgICBDQ1JlbmRlclBhc3M6OklkIG5leHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCk7CiAg
ICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVuZGVyUGFzc0lk
LCBmcmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggYjFlMzE2
MjNjMjgyYjUwZjg5MzM4YzQ3Y2ZkNDA2ZWU3MjIwY2M1Mi4uNGU1OTNjZjY3OGE1OGZiNmNiMTcx
OTE5ODJiOTVmYjk2NmM5MWU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0zOCwy
MiArMzgsMjMgQEAgdXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NSZW5kZXJQYXNz
OjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NPd25QdHI8Q0NS
ZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0
LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RU
YXJnZXQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclBhc3MoaWQsIG91dHB1
dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRhcmdldCkpOwogfQogCi1DQ1JlbmRlclBhc3M6OkNDUmVu
ZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5kZXJQYXNzOjpD
Q1JlbmRlclBhc3MoSWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KQogICAgIDogbV9pZChp
ZCkKICAgICAsIG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0KHRyYW5zZm9ybVRvUm9vdFRhcmdldCkK
ICAgICAsIG1fb3V0cHV0UmVjdChvdXRwdXRSZWN0KQogICAgICwgbV9oYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQodHJ1ZSkKICAgICAsIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJm
YWNlKGZhbHNlKQogewotICAgIEFTU0VSVChpZCA+IDApOworICAgIEFTU0VSVChpZC5maXJzdCA+
IDApOworICAgIEFTU0VSVChpZC5zZWNvbmQgPj0gMCk7CiB9CiAKLVBhc3NPd25QdHI8Q0NSZW5k
ZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNvcHkoaW50IG5ld0lkKSBjb25zdAorUGFzc093blB0cjxD
Q1JlbmRlclBhc3M+IENDUmVuZGVyUGFzczo6Y29weShJZCBuZXdJZCkgY29uc3QKIHsKICAgICBB
U1NFUlQobmV3SWQgIT0gbV9pZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNDBlZjIx
MjgyNDdkMjZlNmI5OWZjZTRhZGUzZmM4MDQ0OTA4NmJkNS4uY2U3MTRhYTQ3NGIyOWY0YjZmMmYw
ZDRjYmZkM2MxMTk5MTI2YTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTYwLDEwICs2
MCwyNyBAQCB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gQ0NTaGFy
ZWRRdWFkU3RhdGVMaXN0OwogY2xhc3MgQ0NSZW5kZXJQYXNzIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDQ1JlbmRlclBhc3MpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
UmVuZGVyUGFzcz4gY3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOworICAg
IHN0cnVjdCBJZCB7CisgICAgICAgIGludCBsYXllcklkOworICAgICAgICBpbnQgaW5kZXg7CisK
KyAgICAgICAgSWQoaW50IGxheWVySWQsIGludCBpbmRleCkKKyAgICAgICAgICAgIDogbGF5ZXJJ
ZChsYXllcklkKQorICAgICAgICAgICAgLCBpbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGxheWVySWQgPiAwKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA+PSAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIGxheWVySWQgPT0gb3RoZXIubGF5ZXJJZCAmJiBpbmRleCA9PSBvdGhl
ci5pbmRleDsgfQorICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSWQmIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPChj
b25zdCBJZCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGxheWVySWQgPCBvdGhlci5sYXllcklkIHx8
IChsYXllcklkID09IG90aGVyLmxheWVySWQgJiYgaW5kZXggPCBvdGhlci5pbmRleCk7IH0KKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoSWQsIElu
dFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKIAogICAgIC8vIEEgc2hhbGxvdyBjb3B5IG9mIHRoZSBy
ZW5kZXIgcGFzcywgd2hpY2ggZG9lcyBub3QgaW5jbHVkZSBpdHMgcXVhZHMuCi0gICAgUGFzc093
blB0cjxDQ1JlbmRlclBhc3M+IGNvcHkoaW50IG5ld0lkKSBjb25zdDsKKyAgICBQYXNzT3duUHRy
PENDUmVuZGVyUGFzcz4gY29weShJZCBuZXdJZCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1
YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBl
bmRRdWFkc0RhdGEmKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVy
KENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NSZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNz
LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKQEAgLTcxLDcg
Kzg4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25z
dCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAKLSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CisgICAgSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKICAgICAvLyBGSVhN
RTogTW9kaWZ5IHRoaXMgdHJhbnNmb3JtIHdoZW4gbWVyZ2luZyB0aGUgUmVuZGVyUGFzcyBpbnRv
IGEgcGFyZW50IGNvbXBvc2l0b3IuCiAgICAgLy8gVHJhbnNmb3JtcyBmcm9tIHF1YWQncyBvcmln
aW5hbCBjb250ZW50IHNwYWNlIHRvIHRoZSByb290IHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCkBA
IC05NSw5ICsxMTIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZTsgfQogICAgIHZvaWQgc2V0SGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJn
ZXRTdXJmYWNlKGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSB7IG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlID0gaGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiBwcm90ZWN0ZWQ6Ci0gICAgQ0NSZW5kZXJQYXNzKGludCBp
ZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOworICAgIENDUmVuZGVyUGFzcyhJZCwgSW50UmVj
dCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1Jvb3RUYXJnZXQpOwogCi0gICAgaW50IG1faWQ7CisgICAgSWQgbV9pZDsKICAgICBD
Q1F1YWRMaXN0IG1fcXVhZExpc3Q7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IG1fc2hhcmVk
UXVhZFN0YXRlTGlzdDsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJh
bnNmb3JtVG9Sb290VGFyZ2V0OwpAQCAtMTA5LDkgKzEyNiwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAg
V2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiB9OwogCi10
eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NMaXN0OwotdHlwZWRlZiBI
YXNoTWFwPGludCwgT3duUHRyPENDUmVuZGVyUGFzcz4gPiBDQ1JlbmRlclBhc3NJZEhhc2hNYXA7
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBz
dHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkPiA6IEdlbmVyaWNIYXNo
VHJhaXRzPFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNE
ZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRpYyBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Oklk
IGVtcHR5VmFsdWUoKSB7IHJldHVybiBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkKDAsIDApOyB9
CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6SWQmIHNsb3QpIHsgc2xvdCA9IFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQoLTEsIC0x
KTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFz
czo6SWQgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmxheWVySWQgPT0gLTEgJiYgdmFsdWUuaW5kZXgg
PT0gLTE7IH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBJbnRIYXNoPFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6SWQ+IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpDQ1Jl
bmRlclBhc3M6OklkJiBrZXkpIHsgcmV0dXJuIFBhaXJIYXNoPGludCwgaW50Pjo6aGFzaChzdGQ6
Om1ha2VfcGFpcihrZXkubGF5ZXJJZCwga2V5LmluZGV4KSk7IH0KKyAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkJiBhLCBjb25zdCBXZWJDb3JlOjpD
Q1JlbmRlclBhc3M6OklkJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZD4geworICAgIHR5
cGVkZWYgSW50SGFzaDxXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkPiBIYXNoOworfTsKK30gLy8g
bmFtZXNwYWNlIFdURgogCi19CituYW1lc3BhY2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxD
Q1JlbmRlclBhc3MqPiBDQ1JlbmRlclBhc3NMaXN0OwordHlwZWRlZiBIYXNoTWFwPENDUmVuZGVy
UGFzczo6SWQsIE93blB0cjxDQ1JlbmRlclBhc3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzc0RyYXdRdWFkLmNwcAppbmRleCBjNTNiN2ZlNDVjMWQ0Yjg3NjU5YWEyNGE5NTYxZjAzYmM1
Njc0OWQ5Li5kMjQwNTI1ZWYyNWMzMGRlYWExYTRiN2NkYzczNmEzYzQyOWY1OTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3NEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFk
PiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lk
LCBib29sIGlzUmVwbGljYSwgY29uc3QgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1h
c2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFt
ZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZs
b2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitQYXNz
T3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRl
KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3Qm
IHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2Es
IGNvbnN0IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29u
c3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhD
b29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRP
ZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKQogewogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVu
ZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSwgbWFza1RleENvb3JkU2NhbGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1hc2tU
ZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29yZE9mZnNldFkpKTsKIH0KIAotQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lk
LCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNv
dXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxv
YXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitDQ1JlbmRlclBh
c3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDUmVuZGVyUGFzczo6
SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRT
Y2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNl
dFkpCiAgICAgOiBDQ0RyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVy
UGFzcywgcXVhZFJlY3QpCiAgICAgLCBtX3JlbmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAgICAg
LCBtX2lzUmVwbGljYShpc1JlcGxpY2EpCkBAIC00NSw3ICs0NSw4IEBAIENDUmVuZGVyUGFzc0Ry
YXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0CiAgICAgLCBtX21hc2tUZXhDb29yZE9mZnNldFgobWFza1RleENvb3JkT2Zmc2V0
WCkKICAgICAsIG1fbWFza1RleENvb3JkT2Zmc2V0WShtYXNrVGV4Q29vcmRPZmZzZXRZKQogewot
ICAgIEFTU0VSVChtX3JlbmRlclBhc3NJZCA+IDApOworICAgIEFTU0VSVChtX3JlbmRlclBhc3NJ
ZC5maXJzdCA+IDApOworICAgIEFTU0VSVChtX3JlbmRlclBhc3NJZC5zZWNvbmQgPj0gMCk7CiB9
CiAKIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0
ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqIHF1YWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzRHJhd1F1YWQuaAppbmRleCAwZDJjYWY5YjU5MWVkN2UyNGI3ZmE3NjMwM2Y0Mjg4YzcwZGYx
MmYwLi4yNjk1YTRiYzRjNWU4ZGM3YjljNjQ0NzdmOWVjNmY0NzM4ZjkyYjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKQEAgLTI3LDIwICsyNywxOSBAQAogI2RlZmlu
ZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAKICNpbmNsdWRlICJDQ0RyYXdRdWFkLmgiCisjaW5j
bHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NSZW5kZXJQYXNzOwotCiBjbGFzcyBDQ1JlbmRlclBh
c3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9h
dCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0Ry
YXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0Jiwg
Q0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNl
UHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRl
bnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgsIGZsb2F0
IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WCwgZmxvYXQgbWFz
a1RleENvb3JkT2Zmc2V0WSk7CiAKLSAgICBpbnQgcmVuZGVyUGFzc0lkKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJQYXNzSWQ7IH0KKyAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CiAgICAgYm9vbCBpc1JlcGxpY2EoKSBj
b25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsgfQogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1Jlc291cmNlSWQ7
IH0KICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7IH0KQEAgLTUyLDkg
KzUxLDkgQEAgcHVibGljOgogICAgIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkoKSBjb25zdCB7
IHJldHVybiBtX21hc2tUZXhDb29yZE9mZnNldFk7IH0KIAogcHJpdmF0ZToKLSAgICBDQ1JlbmRl
clBhc3NEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBp
bnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNv
dXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRT
Y2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNl
dFkpOworICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Y29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVw
bGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENv
b3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9m
ZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwogCi0gICAgaW50IG1fcmVuZGVyUGFz
c0lkOworICAgIENDUmVuZGVyUGFzczo6SWQgbV9yZW5kZXJQYXNzSWQ7CiAgICAgYm9vbCBtX2lz
UmVwbGljYTsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV9tYXNrUmVzb3Vy
Y2VJZDsKICAgICBJbnRSZWN0IG1fY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA1MGE2MzQ5ZDVlMWZkNWJhZjUxNGFiNzEw
NTE4MTllMzA4OTExODFhLi4xNjM5M2I5MzBkOTE0YTVkZWM5N2UzMmFiODI5ZGI0OTNmZjE3ZmJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTE4MSwxNiArMTgxLDI0IEBA
IHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBlZFJlY3RJblRhcmdldChjb25zdCBD
Q0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJuIGNsaXBwZWRSZWN0SW5UYXJnZXQ7
CiB9CiAKK0NDUmVuZGVyUGFzczo6SWQgQ0NSZW5kZXJTdXJmYWNlOjpyZW5kZXJQYXNzSWQoKQor
eworICAgIGludCBsYXllcklkID0gbV9vd25pbmdMYXllci0+aWQoKTsKKyAgICBpbnQgc3ViSWQg
PSAwOworICAgIEFTU0VSVChsYXllcklkID4gMCk7CisgICAgcmV0dXJuIENDUmVuZGVyUGFzczo6
SWQobGF5ZXJJZCwgc3ViSWQpOworfQorCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUmVu
ZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmIHBhc3NTaW5rKQogewotICAgIE93blB0cjxDQ1Jl
bmRlclBhc3M+IHBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShtX293bmluZ0xheWVyLT5pZCgp
LCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtKTsKKyAgICBPd25QdHI8Q0NS
ZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUocmVuZGVyUGFzc0lkKCksIG1f
Y29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgIHBhc3MtPnNldERhbWFn
ZVJlY3QobV9kYW1hZ2VUcmFja2VyLT5jdXJyZW50RGFtYWdlUmVjdCgpKTsKICAgICBwYXNzLT5z
ZXRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmZpbHRlcnMoKSk7CiAgICAgcGFzcy0+c2V0QmFja2dy
b3VuZEZpbHRlcnMobV9vd25pbmdMYXllci0+YmFja2dyb3VuZEZpbHRlcnMoKSk7CiAgICAgcGFz
c1NpbmsuYXBwZW5kUmVuZGVyUGFzcyhwYXNzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFk
c0RhdGEmIGFwcGVuZFF1YWRzRGF0YSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lk
KQordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5r
LCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhLCBib29sIGZvclJlcGxpY2EsIEND
UmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKQogewogICAgIEFTU0VSVCghZm9yUmVwbGljYSB8
fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oCmluZGV4IDA5YTI4NDY3NmYyMjgyMjk0MjUyNWIxMjVmM2E2M2YzY2M4N2JjYjMuLjJkN2Fh
YTkzZWZkNWZlZTNjNzU1MGY2YWEwMzgzYTZmM2Y2NjEzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
U3VyZmFjZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAKKyNpbmNsdWRlICJDQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJDQ1NoYXJlZFF1
YWRTdGF0ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
QEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0RhbWFnZVRy
YWNrZXI7CiBjbGFzcyBDQ1F1YWRTaW5rOwotY2xhc3MgQ0NSZW5kZXJQYXNzOwogY2xhc3MgQ0NS
ZW5kZXJQYXNzU2luazsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgVGV4dFN0cmVhbTsKQEAg
LTEwNiw4ICsxMDYsMTAgQEAgcHVibGljOgogCiAgICAgQ0NEYW1hZ2VUcmFja2VyKiBkYW1hZ2VU
cmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VUcmFja2VyLmdldCgpOyB9CiAKKyAgICBD
Q1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgpOworCiAgICAgdm9pZCBhcHBlbmRSZW5kZXJQ
YXNzZXMoQ0NSZW5kZXJQYXNzU2luayYpOwotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYsIENDQXBwZW5kUXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lk
KTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYs
IGJvb2wgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQpOwogCiBwcml2
YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oCmlu
ZGV4IDk0NmFlYzYzMzM2MjllYWNjYmE4ODY4M2NhMWQ5Nzg0ZGE0NTk0MzYuLjA0N2JkODBmMzE1
N2FiYWU5M2NlMzFiNGZkYjlkN2VhNjM2ZTE0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlcmVyLmgKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB2aWV3cG9ydENoYW5nZWQoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFt
ZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JikgeyB9Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKENDUmVu
ZGVyUGFzczo6SWQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0ZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmLCBjb25zdCBDQ1JlbmRlclBhc3NJZEhh
c2hNYXAmKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEcmF3UXVhZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RyYXdR
dWFkVGVzdC5jcHAKaW5kZXggOTEwMTJiNzQ5ZWIwMzYxOGI4YjE0YzdkZmEzNWY0NDI5YzRlOWRm
Yi4uNTJkMDk4ZDkzYTU2NDI2NTBkOWVmMTkwNjhkYTQ1ZThiZjAzMDdhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RyYXdRdWFkVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RyYXdRdWFkVGVzdC5jcHAKQEAgLTE5OSw3ICsx
OTksNyBAQCBURVNUKENDRHJhd1F1YWRUZXN0LCBjb3B5SU9TdXJmYWNlRHJhd1F1YWQpCiAKIFRF
U1QoQ0NEcmF3UXVhZFRlc3QsIGNvcHlSZW5kZXJQYXNzRHJhd1F1YWQpCiB7Ci0gICAgaW50IHJl
bmRlclBhc3NJZCA9IDIyOworICAgIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKDIyLCA2
NCk7CiAgICAgYm9vbCBpc1JlcGxpY2EgPSB0cnVlOwogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6
UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCA9IDc4OwogICAgIEludFJlY3QgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUoNDIsIDExLCA3NCwgMjQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCA3
OTZhMzE5OGU2NjVjYTE0MzBiN2Q4MDQ3NDEzNzVkNWZmNGNmYTc0Li5kN2U5NTU3ODMzNGM4Y2Uw
YzFlNGQyNGRlZWEyZWUzZTdiYTI4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMzQ3NSwxMyAr
MzQ3NSwxNCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5n
V2l0aFNjaXNzb3IpCiAgICAgZ3JhbmRDaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogCiAg
ICAgQ0NUaWxlZExheWVySW1wbCogY2hpbGRQdHIgPSBjaGlsZC5nZXQoKTsKKyAgICBDQ1JlbmRl
clBhc3M6OklkIGNoaWxkUGFzc0lkKGNoaWxkUHRyLT5pZCgpLCAwKTsKIAogICAgIGNoaWxkLT5h
ZGRDaGlsZChncmFuZENoaWxkLnJlbGVhc2UoKSk7CiAgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQu
cmVsZWFzZSgpKTsKICAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkp
OwogICAgIG15SG9zdEltcGwtPnNldFZpZXdwb3J0U2l6ZShyb290UmVjdC5zaXplKCksIHJvb3RS
ZWN0LnNpemUoKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+
aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQoKSkpOworICAg
IEVYUEVDVF9GQUxTRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiAKICAgICB7CiAgICAgICAgIENDTGF5ZXJU
cmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsKQEAgLTM0OTEsNyArMzQ5Miw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAg
ICB9CiAKICAgICAvLyBXZSBzaG91bGQgaGF2ZSBjYWNoZWQgdGV4dHVyZXMgZm9yIHN1cmZhY2Ug
Mi4KLSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVz
b3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQRUNUX1RSVUUo
bXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJ
ZChjaGlsZFBhc3NJZCkpOwogCiAgICAgewogICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpG
cmFtZURhdGEgZnJhbWU7CkBAIC0zNTAxLDcgKzM1MDIsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAgICAgfQogCiAgICAgLy8g
V2Ugc2hvdWxkIHN0aWxsIGhhdmUgY2FjaGVkIHRleHR1cmVzIGZvciBzdXJmYWNlIDIgYWZ0ZXIg
ZHJhd2luZyB3aXRoIG5vIGRhbWFnZS4KLSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5k
ZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgp
KSk7CisgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJl
c291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogCiAgICAgLy8gRGFtYWdlIGEg
c2luZ2xlIHRpbGUgb2Ygc3VyZmFjZSAyLgogICAgIGNoaWxkUHRyLT5zZXRVcGRhdGVSZWN0KElu
dFJlY3QoMTAsIDEwLCAxMCwgMTApKTsKQEAgLTM1MTQsNyArMzUxNSw3IEBAIFRFU1RfRihDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAgICB9CiAK
ICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhIGNhY2hlZCB0ZXh0dXJlIGZvciBzdXJmYWNlIDIgYWdh
aW4gZXZlbiB0aG91Z2ggaXQgd2FzIGRhbWFnZWQuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1w
bC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0
ci0+aWQoKSkpOworICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVD
YWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsKIH0KIAogVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzdXJmYWNlVGV4dHVyZUNhY2hpbmcpCkBAIC0zODc2
LDE4ICszODc3LDE4IEBAIHN0cnVjdCBSZW5kZXJQYXNzQ2FjaGVFbnRyeSB7CiB9OwogCiBzdHJ1
Y3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpGcmFtZURhdGEgewotICAgIHN0ZDo6bWFwPGNoYXIsIFJlbmRlclBhc3NDYWNoZUVudHJ5PiBy
ZW5kZXJQYXNzQ2FjaGU7CisgICAgc3RkOjptYXA8Q0NSZW5kZXJQYXNzOjpJZCwgUmVuZGVyUGFz
c0NhY2hlRW50cnk+IHJlbmRlclBhc3NDYWNoZTsKICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZTsKIH07CiAKIGNsYXNzIENDVGVzdFJlbmRlclBhc3M6IHB1Ymxp
YyBDQ1JlbmRlclBhc3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVy
UGFzcz4gY3JlYXRlKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgeyByZXR1cm4gYWRvcHRQdHIobmV3IENDVGVz
dFJlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zvcm0pKTsgfQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVyUGFzczo6SWQgaWQsIElu
dFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJvb3RUcmFu
c2Zvcm0pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5kZXJQYXNzKGlkLCBvdXRwdXRS
ZWN0LCByb290VHJhbnNmb3JtKSk7IH0KIAogICAgIHZvaWQgYXBwZW5kUXVhZChQYXNzT3duUHRy
PENDRHJhd1F1YWQ+IHF1YWQpIHsgbV9xdWFkTGlzdC5hcHBlbmQocXVhZCk7IH0KIAogcHJvdGVj
dGVkOgotICAgIENDVGVzdFJlbmRlclBhc3MoaW50IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByb290VHJhbnNmb3JtKSA6IENDUmVuZGVyUGFz
cyhpZCwgb3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkgeyB9CisgICAgQ0NUZXN0UmVuZGVyUGFz
cyhDQ1JlbmRlclBhc3M6OklkIGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiByb290VHJhbnNmb3JtKSA6IENDUmVuZGVyUGFzcyhpZCwgb3V0cHV0
UmVjdCwgcm9vdFRyYW5zZm9ybSkgeyB9CiB9OwogCiBjbGFzcyBDQ1Rlc3RSZW5kZXJlciA6IHB1
YmxpYyBDQ1JlbmRlcmVyR0wsIHB1YmxpYyBDQ1JlbmRlcmVyQ2xpZW50IHsKQEAgLTM5MDIsOSAr
MzkwMyw5IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lkIGNsZWFyQ2FjaGVkVGV4dHVyZXMo
KSB7IG1fdGV4dHVyZXMuY2xlYXIoKTsgfQotICAgIHZvaWQgc2V0SGF2ZUNhY2hlZFJlc291cmNl
c0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIHsgbV90ZXh0dXJlcy5hZGQoaWQpOyB9CisgICAgdm9p
ZCBzZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQg
aWQpIHsgbV90ZXh0dXJlcy5hZGQoaWQpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQgaWQpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fdGV4dHVyZXMuY29udGFpbnMoaWQpOyB9CisgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV90ZXh0dXJlcy5jb250YWlucyhpZCk7IH0KIAogICAgIC8vIENDUmVuZGVy
ZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBkZXZp
Y2VWaWV3cG9ydFNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsg
fQpAQCAtMzkyMSw3ICszOTIyLDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBDQ0xheWVy
VHJlZVNldHRpbmdzIG1fc2V0dGluZ3M7CiAgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAg
ICBIYXNoU2V0PGludD4gbV90ZXh0dXJlczsKKyAgICBIYXNoU2V0PENDUmVuZGVyUGFzczo6SWQ+
IG1fdGV4dHVyZXM7CiB9OwogCiBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERh
dGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSYgdGVz
dERhdGEsIENDVGVzdFJlbmRlcmVyKiByZW5kZXJlcikKQEAgLTM5MzQsMTIgKzM5MzUsMTcgQEAg
c3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIqIHRlc3RT
Y3JpcHQsIFJlbmRlclBhc3NSZW1vdmEKICAgICBjb25zdCBjaGFyKiBjdXJyZW50Q2hhciA9IHRl
c3RTY3JpcHQ7CiAKICAgICAvLyBQcmUtY3JlYXRlIHJvb3QgcGFzcwotICAgIGNoYXIgcm9vdFJl
bmRlclBhc3NJZCA9IHRlc3RTY3JpcHRbMF07CisgICAgQ0NSZW5kZXJQYXNzOjpJZCByb290UmVu
ZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNzOjpJZCh0ZXN0U2NyaXB0WzBdLCB0ZXN0U2NyaXB0WzFd
KTsKICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290UmVuZGVyUGFzcyA9IENDVGVzdFJlbmRl
clBhc3M6OmNyZWF0ZShyb290UmVuZGVyUGFzc0lkLCBJbnRSZWN0KCksIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KCkpOwotICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpw
YWlyPGNoYXIsIFJlbmRlclBhc3NDYWNoZUVudHJ5Pihyb290UmVuZGVyUGFzc0lkLCBSZW5kZXJQ
YXNzQ2FjaGVFbnRyeShyb290UmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7CisgICAgdGVzdERhdGEu
cmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Q0NSZW5kZXJQYXNzOjpJZCwgUmVuZGVy
UGFzc0NhY2hlRW50cnk+KHJvb3RSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJv
b3RSZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKICAgICB3aGlsZSAoKmN1cnJlbnRDaGFyKSB7Ci0g
ICAgICAgIGNoYXIgcmVuZGVyUGFzc0lkID0gY3VycmVudENoYXJbMF07CisgICAgICAgIGludCBs
YXllcklkID0gKmN1cnJlbnRDaGFyOwogICAgICAgICBjdXJyZW50Q2hhcisrOworICAgICAgICBB
U1NFUlRfVFJVRShjdXJyZW50Q2hhcik7CisgICAgICAgIGludCBpbmRleCA9ICpjdXJyZW50Q2hh
cjsKKyAgICAgICAgY3VycmVudENoYXIrKzsKKworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQobGF5ZXJJZCwgaW5kZXgpOwogCiAgICAgICAg
IE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRlclBhc3M7CiAKQEAgLTM5NTksOSArMzk2NSwxMyBA
QCBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciogdGVz
dFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YQogICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyKys7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCgqY3VycmVudENoYXIgPj0gJ0EnKSAmJiAoKmN1cnJl
bnRDaGFyIDw9ICdaJykpIHsKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJQYXNzIGRyYXcgcXVh
ZAotICAgICAgICAgICAgICAgIGNoYXIgbmV3UmVuZGVyUGFzc0lkID0gKmN1cnJlbnRDaGFyOwot
ICAgICAgICAgICAgICAgIEFTU0VSVF9ORShyb290UmVuZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNz
SWQpOworICAgICAgICAgICAgICAgIGludCBsYXllcklkID0gKmN1cnJlbnRDaGFyOworICAgICAg
ICAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgICAgICAgICAgQVNTRVJUX1RSVUUoY3Vy
cmVudENoYXIpOworICAgICAgICAgICAgICAgIGludCBpbmRleCA9ICpjdXJyZW50Q2hhcjsKICAg
ICAgICAgICAgICAgICBjdXJyZW50Q2hhcisrOworICAgICAgICAgICAgICAgIENDUmVuZGVyUGFz
czo6SWQgbmV3UmVuZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNzOjpJZChsYXllcklkLCBpbmRleCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBh
c3NJZCk7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNUZXh0dXJlID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgYm9vbCBjb250ZW50c0NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIApA
QCAtMzk4Nyw3ICszOTk3LDcgQEAgc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3RE
YXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmEKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFz
c0lkKG5ld1JlbmRlclBhc3NJZCk7CiAKICAgICAgICAgICAgICAgICAgICAgT3duUHRyPENDUmVu
ZGVyUGFzcz4gcmVuZGVyUGFzcyA9IENDVGVzdFJlbmRlclBhc3M6OmNyZWF0ZShuZXdSZW5kZXJQ
YXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPGNoYXIs
IFJlbmRlclBhc3NDYWNoZUVudHJ5PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVu
dHJ5KHJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RGF0
YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5k
ZXJQYXNzQ2FjaGVFbnRyeT4obmV3UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShy
ZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICAgICBJbnRSZWN0IHF1YWRSZWN0ID0gSW50UmVjdCgwLCAwLCAxLCAxKTsKQEAgLTQwMDgsNyAr
NDAxOCw5IEBAIHZvaWQgZHVtcFJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBSZW5kZXJQYXNzUmVt
b3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgY2hhciogYnVmCiAgICAgY2hhciogcG9zID0gYnVmZmVy
OwogICAgIGZvciAoQ0NSZW5kZXJQYXNzTGlzdDo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9
IHRlc3REYXRhLnJlbmRlclBhc3Nlcy5yYmVnaW4oKTsgaXQgIT0gdGVzdERhdGEucmVuZGVyUGFz
c2VzLnJlbmQoKTsgKytpdCkgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIGN1cnJlbnRQ
YXNzID0gKml0OwotICAgICAgICAqcG9zID0gY3VycmVudFBhc3MtPmlkKCk7CisgICAgICAgICpw
b3MgPSBjdXJyZW50UGFzcy0+aWQoKS5sYXllcklkOworICAgICAgICBwb3MrKzsKKyAgICAgICAg
KnBvcyA9IGN1cnJlbnRQYXNzLT5pZCgpLmluZGV4OwogICAgICAgICBwb3MrKzsKIAogICAgICAg
ICBDQ1F1YWRMaXN0Ojpjb25zdF9pdGVyYXRvciBxdWFkTGlzdEl0ZXJhdG9yID0gY3VycmVudFBh
c3MtPnF1YWRMaXN0KCkuYmVnaW4oKTsKQEAgLTQwMjAsNyArNDAzMiw5IEBAIHZvaWQgZHVtcFJl
bmRlclBhc3NUZXN0RGF0YShjb25zdCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0
YSwgY2hhciogYnVmCiAgICAgICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIENDRHJhd1F1YWQ6OlJlbmRlclBhc3M6Ci0gICAgICAgICAg
ICAgICAgKnBvcyA9IENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1
YWQpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgICAgICAgICAqcG9zID0gQ0NSZW5kZXJQYXNz
RHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpLmxheWVy
SWQ7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgKnBvcyA9IENDUmVu
ZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQo
KS5pbmRleDsKICAgICAgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC00MDY0LDExNSArNDA3OCwxMTUgQEAgVGVzdENhc2Ug
cmVtb3ZlUmVuZGVyUGFzc2VzQ2FzZXNbXSA9CiAgICAgewogICAgICAgICB7CiAgICAgICAgICAg
ICAiU2luZ2xlIHJvb3QgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NcbiIsCi0gICAgICAgICAg
ICAiUnNzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3Nz
XG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJTaW5nbGUgcGFzcyAtIG5vIHF1YWRzIiwK
LSAgICAgICAgICAgICJSXG4iLAotICAgICAgICAgICAgIlJcbiIKKyAgICAgICAgICAgICJSMFxu
IiwKKyAgICAgICAgICAgICJSMFxuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiVHdvIHBh
c3Nlcywgbm8gcmVtb3ZhbCIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAg
ICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNz
c3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xu
IiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIgog
ICAgICAgICB9LCB7CiAgICAgICAgICAgICAiVHdvIHBhc3NlcywgcmVtb3ZlIGxhc3QiLAotICAg
ICAgICAgICAgIlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAg
ICAgICAgICJSc3Nzc0Fzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1zc3NcbiIKKyAg
ICAgICAgICAgICJBMHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKICAgICAg
ICAgfSwgewogICAgICAgICAgICAgIkhhdmUgdGV4dHVyZSBidXQgY29udGVudHMgY2hhbmdlZCAt
IGxlYXZlIHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzQVt0XXNzc1xuIgotICAgICAgICAgICAg
IkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3Nz
XG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbdF1zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3Nc
biIsCisgICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIK
ICAgICAgICAgfSwgewogICAgICAgICAgICAgIkNvbnRlbnRzIGRpZG4ndCBjaGFuZ2UgYnV0IG5v
IHRleHR1cmUgLSBsZWF2ZSBwYXNzIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY11zc3NcbiIKLSAg
ICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAg
ICAgICJBc3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2Ndc3NzXG4iCisgICAgICAgICAg
ICAiQTBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAi
QTBzc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJSZXBsaWNhOiB0d28gcXVhZHMg
cmVmZXJlbmNlIHRoZSBzYW1lIHBhc3M7IHJlbW92ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0
XUFbY3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NB
QXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XUEwW2N0XXNzc1xuIgorICAgICAgICAg
ICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMEEwc3NzXG4iCiAgICAgICAgIH0s
IHsKICAgICAgICAgICAgICJSZXBsaWNhOiB0d28gcXVhZHMgcmVmZXJlbmNlIHRoZSBzYW1lIHBh
c3M7IGxlYXZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY11BW2Ndc3NzXG4iCi0gICAgICAgICAg
ICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBQXNzc1xuIgotICAgICAgICAgICAgIkFz
c3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0EwW2NdQTBbY11zc3NcbiIKKyAgICAgICAgICAg
ICJBMHNzc3NcbiIsCisgICAgICAgICAgICAiUjBzc3NzQTBBMHNzc1xuIgorICAgICAgICAgICAg
IkEwc3Nzc1xuIiwKICAgICAgICAgfSwgewogICAgICAgICAgICAgIk1hbnkgcGFzc2VzLCByZW1v
dmUgYWxsIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNz
c0JbY3RdQ1tjdF1zXG4iCi0gICAgICAgICAgICAiQnNzc0RbY3Rdc3NFW2N0XUZbY3RdXG4iCi0g
ICAgICAgICAgICAiRXNzc3Nzc1xuIgotICAgICAgICAgICAgIkNHW2N0XVxuIgotICAgICAgICAg
ICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiRnNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJH
c3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAgICAiUjBzc3Nz
QTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMFtjdF1DMFtjdF1zXG4iCisgICAgICAg
ICAgICAiQjBzc3NEMFtjdF1zc0UwW2N0XUYwW2N0XVxuIgorICAgICAgICAgICAgIkUwc3Nzc3Nz
XG4iCisgICAgICAgICAgICAiQzBHMFtjdF1cbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3NcbiIK
KyAgICAgICAgICAgICJGMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAg
ICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJEZWVw
IHJlY3Vyc2lvbiwgcmVtb3ZlIGFsbCIsCiAKLSAgICAgICAgICAgICJSc3Nzc3NBW2N0XXNzc3Nc
biIKLSAgICAgICAgICAgICJBc3Nzc0Jzc3NcbiIKLSAgICAgICAgICAgICJCQ1xuIgotICAgICAg
ICAgICAgIkNEXG4iCi0gICAgICAgICAgICAiREVcbiIKLSAgICAgICAgICAgICJFRlxuIgotICAg
ICAgICAgICAgIkZHXG4iCi0gICAgICAgICAgICAiR0hcbiIKLSAgICAgICAgICAgICJIc3NzSXNz
c1xuIgotICAgICAgICAgICAgIklKXG4iCi0gICAgICAgICAgICAiSnNzc3NcbiIsCisgICAgICAg
ICAgICAiUjBzc3Nzc0EwW2N0XXNzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NCMHNzc1xuIgor
ICAgICAgICAgICAgIkIwQzBcbiIKKyAgICAgICAgICAgICJDMEQwXG4iCisgICAgICAgICAgICAi
RDBFMFxuIgorICAgICAgICAgICAgIkUwRjBcbiIKKyAgICAgICAgICAgICJGMEcwXG4iCisgICAg
ICAgICAgICAiRzBIMFxuIgorICAgICAgICAgICAgIkgwc3NzSTBzc3NcbiIKKyAgICAgICAgICAg
ICJJMEowXG4iCisgICAgICAgICAgICAiSjBzc3NzXG4iLAogICAgICAgICAgICAgCi0gICAgICAg
ICAgICAiUnNzc3NzQXNzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NzQTBzc3NzXG4iCiAgICAg
ICAgIH0sIHsKICAgICAgICAgICAgICJXaWRlIHJlY3Vyc2lvbiwgcmVtb3ZlIGFsbCIsCi0gICAg
ICAgICAgICAiUkFbY3RdQltjdF1DW2N0XURbY3RdRVtjdF1GW2N0XUdbY3RdSFtjdF1JW2N0XUpb
Y3RdXG4iCi0gICAgICAgICAgICAiQXNcbiIKLSAgICAgICAgICAgICJCc1xuIgotICAgICAgICAg
ICAgIkNzc3NzXG4iCi0gICAgICAgICAgICAiRHNzc3NcbiIKLSAgICAgICAgICAgICJFc1xuIgot
ICAgICAgICAgICAgIkZcbiIKLSAgICAgICAgICAgICJHc1xuIgotICAgICAgICAgICAgIkhzXG4i
Ci0gICAgICAgICAgICAiSXNcbiIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKKyAgICAgICAgICAg
ICJSMEEwW2N0XUIwW2N0XUMwW2N0XUQwW2N0XUUwW2N0XUYwW2N0XUcwW2N0XUgwW2N0XUkwW2N0
XUowW2N0XVxuIgorICAgICAgICAgICAgIkEwc1xuIgorICAgICAgICAgICAgIkIwc1xuIgorICAg
ICAgICAgICAgIkMwc3Nzc1xuIgorICAgICAgICAgICAgIkQwc3Nzc1xuIgorICAgICAgICAgICAg
IkUwc1xuIgorICAgICAgICAgICAgIkYwXG4iCisgICAgICAgICAgICAiRzBzXG4iCisgICAgICAg
ICAgICAiSDBzXG4iCisgICAgICAgICAgICAiSTBzXG4iCisgICAgICAgICAgICAiSjBzc3NzXG4i
LAogICAgICAgICAgICAgCi0gICAgICAgICAgICAiUkFCQ0RFRkdISUpcbiIKKyAgICAgICAgICAg
ICJSMEEwQjBDMEQwRTBGMEcwSDBJMEowXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJS
ZW1vdmUgcGFzc2VzIHJlZ2FyZGxlc3Mgb2YgY2FjaGUgc3RhdGUiLAotICAgICAgICAgICAgIlJz
c3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3NzQkNzXG4iCi0gICAgICAgICAgICAiQnNz
c0RbY11zc0VbdF1GXG4iCi0gICAgICAgICAgICAiRXNzc3Nzc1xuIgotICAgICAgICAgICAgIkNH
XG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJGc3Nzc3Nzc1xuIgot
ICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKKyAgICAg
ICAgICAgICJSMHNzc3NBMFtjdF1zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwQzBzXG4iCisg
ICAgICAgICAgICAiQjBzc3NEMFtjXXNzRTBbdF1GMFxuIgorICAgICAgICAgICAgIkUwc3Nzc3Nz
XG4iCisgICAgICAgICAgICAiQzBHMFxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAg
ICAgICAgICAgIkYwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4iLAorCisgICAgICAg
ICAgICAiUjBzc3NzQTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIkxlYXZlIHNv
bWUgcGFzc2VzLCByZW1vdmUgb3RoZXJzIiwKIAotICAgICAgICAgICAgIlJzc3NzQVtjXXNzc1xu
IgotICAgICAgICAgICAgIkFzc3NCW3RdQ1tjdF1zXG4iCi0gICAgICAgICAgICAiQnNzc0RbY11z
c1xuIgotICAgICAgICAgICAgIkNHXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIKLSAgICAg
ICAgICAgICJHc3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAg
ICAiQXNzc0JDc1xuIgotICAgICAgICAgICAgIkJzc3NEc3NcbiIKLSAgICAgICAgICAgICJEc3Nz
c3Nzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2Ndc3NzXG4iCisgICAgICAgICAgICAiQTBz
c3NCMFt0XUMwW2N0XXNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2Ndc3NcbiIKKyAgICAgICAg
ICAgICJDMEcwXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRzBz
c3NcbiIsCisKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nz
QjBDMHNcbiIKKyAgICAgICAgICAgICJCMHNzc0Qwc3NcbiIKKyAgICAgICAgICAgICJEMHNzc3Nz
c3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgMCwgMCwgMAogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA1MjE5MzAyN2NjNDY1MTg4MTJiMGFjNTA4YTIyMDBmMDcyNThjM2ZiLi45OGYxM2Zm
M2FjNzlmOTFkNjRjNjQxNmRlNGMyYmVmYTMzYjE3NzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTIzNTQsOCAr
MjM1NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCogaG9zdEltcGwpIE9WRVJSSURFCiAgICAgewogICAgICAgICBD
Q1JlbmRlcmVyKiByZW5kZXJlciA9IGhvc3RJbXBsLT5yZW5kZXJlcigpOwotICAgICAgICB1bnNp
Z25lZCBzdXJmYWNlMVJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+Y2hpbGRy
ZW4oKVswXS0+aWQoKTsKLSAgICAgICAgdW5zaWduZWQgc3VyZmFjZTJSZW5kZXJQYXNzSWQgPSBo
b3N0SW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0tPmlkKCk7
CisgICAgICAgIENDUmVuZGVyUGFzczo6SWQgc3VyZmFjZTFSZW5kZXJQYXNzSWQgPSBob3N0SW1w
bC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClbMF0tPnJlbmRlclN1cmZhY2UoKS0+cmVuZGVyUGFz
c0lkKCk7CisgICAgICAgIENDUmVuZGVyUGFzczo6SWQgc3VyZmFjZTJSZW5kZXJQYXNzSWQgPSBo
b3N0SW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClbMF0tPmNoaWxkcmVuKClbMF0tPnJlbmRl
clN1cmZhY2UoKS0+cmVuZGVyUGFzc0lkKCk7CiAKICAgICAgICAgc3dpdGNoIChob3N0SW1wbC0+
c291cmNlRnJhbWVOdW1iZXIoKSkgewogICAgICAgICBjYXNlIDA6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyUGFzc1Rlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclBhc3NUZXN0LmNwcAppbmRleCA2YWU0MTM0NWYw
N2YyMTU5YjI2NzI1ZDZmOGZmOGIzZTk5NzA0ODZhLi4wZjc2ZTJlYzAxOWRiMDA0NDEwMjg2MDlj
Y2RkMzgzZjk1ZDZkOWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUmVuZGVyUGFzc1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZW5kZXJQYXNzVGVzdC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RydWN0IENDUmVuZGVyUGFz
c1NpemUgewogCiBURVNUKENDUmVuZGVyUGFzc1Rlc3QsIGNvcHlTaG91bGRCZUlkZW50aWNhbEV4
Y2VwdElkQW5kUXVhZHMpCiB7Ci0gICAgaW50IGlkID0gMzsKKyAgICBDQ1JlbmRlclBhc3M6Oklk
IGlkKDMsIDIpOwogICAgIEludFJlY3Qgb3V0cHV0UmVjdCg0NSwgMjIsIDEyMCwgMTMpOwogICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybVRvUm9vdCgxLCAwLjUsIDAuNSwgLTAu
NSwgLTEsIDApOwogCkBAIC04OCw3ICs4OCw3IEBAIFRFU1QoQ0NSZW5kZXJQYXNzVGVzdCwgY29w
eVNob3VsZEJlSWRlbnRpY2FsRXhjZXB0SWRBbmRRdWFkcykKICAgICB0ZXN0UGFzcy0+c2hhcmVk
UXVhZFN0YXRlTGlzdCgpLmFwcGVuZChDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIEludFJlY3QoKSwgSW50UmVjdCgpLCAxLCBmYWxzZSkpOwogICAg
IHRlc3RQYXNzLT5xdWFkTGlzdCgpLmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVh
dGUodGVzdFBhc3MtPnNoYXJlZFF1YWRTdGF0ZUxpc3QoKS5sYXN0KCkuZ2V0KCksIEludFJlY3Qo
KSkpOwogCi0gICAgaW50IG5ld0lkID0gNjM7CisgICAgQ0NSZW5kZXJQYXNzOjpJZCBuZXdJZCg2
MywgNCk7CiAKICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBjb3B5KHBhc3MtPmNvcHkobmV3SWQp
KTsKICAgICBFWFBFQ1RfRVEobmV3SWQsIGNvcHktPmlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKaW5kZXggMDY2OTNm
MzM3NGYwOWUwNTgzMjdjNjk1NTFjMjBmZjI5N2QwMTc2ZC4uZDY2YjhjOTUxNmEzZTg4Mjg2ZTM2
YjgxNTdhNDA2MWIwNmNhYTRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgVEVTVChD
Q1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNoYXJl
ZFF1YWRTdGF0ZSkKICAgICBDQ0FwcGVuZFF1YWRzRGF0YSBhcHBlbmRRdWFkc0RhdGE7CiAKICAg
ICBib29sIGZvclJlcGxpY2EgPSBmYWxzZTsKLSAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFk
cyhtb2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRhLCBmb3JSZXBsaWNhLCAyKTsKKyAgICBy
ZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgYXBwZW5kUXVhZHNEYXRh
LCBmb3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkKDIsIDApKTsKIAogICAgIEFTU0VSVF9FUSgx
dSwgc2hhcmVkU3RhdGVMaXN0LnNpemUoKSk7CiAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSA9IHNoYXJlZFN0YXRlTGlzdFswXS5nZXQoKTsKQEAgLTE3Niw3ICsxNzYsNyBA
QCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3Jy
ZWN0UmVuZGVyUGFzcykKICAgICBBU1NFUlRfRVEoMXUsIHBhc3NTaW5rLnJlbmRlclBhc3Nlcygp
LnNpemUoKSk7CiAgICAgQ0NSZW5kZXJQYXNzKiBwYXNzID0gcGFzc1NpbmsucmVuZGVyUGFzc2Vz
KClbMF0uZ2V0KCk7CiAKLSAgICBFWFBFQ1RfRVEoMiwgcGFzcy0+aWQoKSk7CisgICAgRVhQRUNU
X0VRKENDUmVuZGVyUGFzczo6SWQoMiwgMCksIHBhc3MtPmlkKCkpOwogICAgIEVYUEVDVF9FUShj
b250ZW50UmVjdCwgcGFzcy0+b3V0cHV0UmVjdCgpKTsKICAgICBFWFBFQ1RfRVEob3JpZ2luLCBw
YXNzLT50cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcAppbmRleCAyZjNmZDZhMDgxMzU4NzA5
MWEyZmM0YjA5ZTQ5MGJkNzEwZjZlOTUzLi4wYzc4YzVlZTlhZWM4YmFmY2NlMmNkMTQ3ZGM1Zjc0
MmQ0Y2U5NWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVu
ZGVyZXJHTFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5k
ZXJlckdMVGVzdC5jcHAKQEAgLTgwLDkgKzgwLDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jv
b3RMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDEpKQogICAgICAgICAsIG1fbWVtb3J5QWxsb2Nh
dGlvbkxpbWl0Qnl0ZXMoQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWZhdWx0TWVtb3J5
QWxsb2NhdGlvbkxpbWl0KCkpCiAgICAgewotICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBy
b290UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKG1fcm9vdExheWVyLT5pZCgpLCBJ
bnRSZWN0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBtX3Jvb3RMYXll
ci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIHJlbmRl
clBhc3NJZCA9IG1fcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgpOwor
ICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByb290UmVuZGVyUGFzcyA9IENDUmVuZGVyUGFz
czo6Y3JlYXRlKHJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKTsKICAgICAgICAgbV9yZW5kZXJQYXNzZXNJbkRyYXdPcmRlci5hcHBlbmQocm9vdFJlbmRl
clBhc3MuZ2V0KCkpOwotICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQobV9yb290TGF5ZXItPmlk
KCksIHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fcmVuZGVyUGFzc2VzLnNl
dChyZW5kZXJQYXNzSWQsIHJvb3RSZW5kZXJQYXNzLnJlbGVhc2UoKSk7CiAgICAgfQogCiAgICAg
Ly8gQ0NSZW5kZXJlckNsaWVudCBtZXRob2RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162564</attachid>
            <date>2012-09-06 13:14:35 -0700</date>
            <delta_ts>2012-09-07 11:14:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95500-20120906161415.patch</filename>
            <type>text/plain</type>
            <size>44929</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1OTA5MGUyYWViNThj
OWE2Mjc1OThmNjc2OWQzYmYyNWU4ZmNmYy4uNmVjOGVlMjM4ZDBjOTgzMzE3YTZmMDEyNjA5OTRk
YWNhMzAyNzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyB1cyB0byBhdm9pZCBjb21wbGV4IHJlbmRlclBhc3NJZCBtYXBwaW5ncyBi
ZXR3ZWVuCisgICAgICAgIGNvbXBvc2l0b3JzIGZvciB1YmVyY29tcC4gVGhlIHViZXJjb21wIGxh
eWVyIG5lZWRzIHRvIGFkZCBhIG51bWJlcgorICAgICAgICBvZiBSZW5kZXJQYXNzZXMgdG8gdGhl
IGZyYW1lLCBhbmQgdGhlc2UgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCBvdGhlcgorICAgICAgICBS
ZW5kZXJQYXNzZXMgaW4gdGhlIGZyYW1lLiBCeSB1c2luZyBpdHMgbGF5ZXIgaWQgYWxvbmcgd2l0
aCBhbiBleHRyYQorICAgICAgICB2YWx1ZSBpdCBkZXRlcm1pbmVzLCB0aGUgbGF5ZXIgY2FuIGNy
ZWF0ZSBhIHVuaXF1ZSBpZCB3aXRob3V0IG5lZWRpbmcKKyAgICAgICAgYWNjZXNzIHRvIGFueSBn
bG9iYWwgc3RhdGUgb3IgaWQgZ2VuZXJhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rp
cmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGlyZWN0UmVuZGVyZXI6OmRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkND
RGlyZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaDoK
KyAgICAgICAgKENDRGlyZWN0UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRSZW5kZXJQYXNzQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVSZW5k
ZXJQYXNzZXNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6Cisg
ICAgICAgIChJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkOjpJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzOjpJZDo6b3BlcmF0b3I8KToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmlkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRS
ZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZCk6CisKIDIwMTItMDktMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYSBjdXN0b21pemVkIGNvcHkoKSBtZXRob2Qg
dG8gQ0NSZW5kZXJQYXNzRHJhd1F1YWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmE4
NTlkOTc0MTVhOGQ1ZTAxNmY5NzE3Y2E4MjNjODlkOTJjYjE4OC4uYzYwOTY3MjRhOWQ0NTc5M2E0
YzA1NzA0M2ExMTdjNDlmZmZmOGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wOS0wNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2UgUmVuZGVyUGFzcyBpZHMgaG9sZCBib3RoIGdl
bmVyYXRpbmcgbGF5ZXIgaWQgYW5kIGFuIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmll
bm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlcmVy
R0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50OjpGYWtlQ0NSZW5kZXJl
ckNsaWVudCk6CisKIDIwMTItMDktMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYSBjdXN0b21pemVkIGNvcHkoKSBtZXRob2Qg
dG8gQ0NSZW5kZXJQYXNzRHJhd1F1YWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAK
aW5kZXggNDY4OGJlZDE5YmZjNGU4MzViYWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1
NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEyMjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5jcHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJl
cjo6bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZs
CiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJlcjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7
Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJh
bWU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiBy
ZW5kZXJQYXNzZXNJbkZyYW1lOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFz
c2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUu
c2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdP
cmRlcltpXSk7CiAKLSAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFw
PGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRv
cjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQYXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFz
aE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRl
cmF0b3IgcGFzc0l0ZXJhdG9yOwogICAgIGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNz
VGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVu
ZCgpOyArK3Bhc3NJdGVyYXRvcikgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRl
clBhc3NJbkZyYW1lID0gcmVuZGVyUGFzc2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJz
dCk7CiAgICAgICAgIGlmICghcmVuZGVyUGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBA
QCBib29sIENDRGlyZWN0UmVuZGVyZXI6OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFt
ZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUoZnJhbWUsIHRleHR1cmUsIHJlbmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJv
b2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChp
bnQgaWQpIGNvbnN0Citib29sIENDRGlyZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNG
b3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRU
ZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1
cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5pZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1
YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRmYmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlUHJvdmlkZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5k
ZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6
OklkKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IEND
UmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBh
c3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nlc0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBA
IC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVN
YXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlw
WSk7CiAgICAgc3RhdGljIEludFJlY3QgbW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERy
YXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBzY2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNo
ZWRSZXNvdXJjZXMoaW50IHJlbmRlclBhc3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVk
UmVzb3VyY2VzKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJl
bmRlclBhc3NUZXh0dXJlU2l6ZShjb25zdCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0Mz
RGVudW0gcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAg
LTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2lu
Z0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2lu
Z0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2Fj
aGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVy
UGFzczo6SWQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwog
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkNDU2N2NiZTQyMjk0OGM5YzUw
MjAzMjA4YmFkYzY1NWVmNGMzYzcxLi40NDdjMzJmMmJjZDQ3NzdiNzk4ZmNkYWMwNWExZWU5NTJj
MzhhYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA5
LDcgKzMwOSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZChmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGludCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIo
KS0+aWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBp
dC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNz
SWQoKTsKICAgICAgICAgQ0NSZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVu
ZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNp
b25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAg
ICAgICAgIENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAo
aXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAg
aW50IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NS
ZW5kZXJQYXNzOjpJZCBjb250cmlidXRpbmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFj
ZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0
aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1Jl
bmRlclBhc3NJZCk7CiAgICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNp
b25UcmFja2VyLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJl
c2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpA
QCAtNDEyLDE0ICs0MTIsMTQgQEAgSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4o
KVswXS0+Y29udGVudEJvdW5kcygpOwogfQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyog
ZmluZFJlbmRlclBhc3NCeUlkKGludCByZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSYgZnJhbWUpCitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmlu
ZFJlbmRlclBhc3NCeUlkKENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lk
SGFzaE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQo
cmVuZGVyUGFzc0lkKTsKICAgICBBU1NFUlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5l
bmQoKSk7CiAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
bW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVy
UGFzc2VzUmVjdXJzaXZlKENDUmVuZGVyUGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyog
cmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRSZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQs
IGZyYW1lKTsKICAgICBzaXplX3QgcmVtb3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmlu
ZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCByZW1v
dmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUoaW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRy
ZWVIb3N0SQogICAgICAgICBpZiAoY3VycmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVh
ZDo6UmVuZGVyUGFzcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0
UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChj
dXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5l
eHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nl
c1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggYjFlMzE2MjNjMjgyYjUwZjg5MzM4YzQ3Y2ZkNDA2
ZWU3MjIwY2M1Mi4uNGU1OTNjZjY3OGE1OGZiNmNiMTcxOTE5ODJiOTVmYjk2NmM5MWU3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0zOCwyMiArMzgsMjMgQEAgdXNpbmcgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
T3duUHRyPENDUmVuZGVyUGFzcz4gQ0NSZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0
IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6
OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ1JlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRh
cmdldCkpOwogfQogCi1DQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qg
b3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJl
Y3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9Sb290VGFyZ2V0KQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9S
b290VGFyZ2V0KHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRw
dXRSZWN0KQogICAgICwgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSkKICAgICAsIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewotICAgIEFTU0VS
VChpZCA+IDApOworICAgIEFTU0VSVChpZC5maXJzdCA+IDApOworICAgIEFTU0VSVChpZC5zZWNv
bmQgPj0gMCk7CiB9CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNv
cHkoaW50IG5ld0lkKSBjb25zdAorUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IENDUmVuZGVyUGFz
czo6Y29weShJZCBuZXdJZCkgY29uc3QKIHsKICAgICBBU1NFUlQobmV3SWQgIT0gbV9pZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNDBlZjIxMjgyNDdkMjZlNmI5OWZjZTRhZGUzZmM4
MDQ0OTA4NmJkNS4uY2U3MTRhYTQ3NGIyOWY0YjZmMmYwZDRjYmZkM2MxMTk5MTI2YTlkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTYwLDEwICs2MCwyNyBAQCB0eXBlZGVmIFZlY3RvcjxP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4gQ0NTaGFyZWRRdWFkU3RhdGVMaXN0OwogY2xhc3Mg
Q0NSZW5kZXJQYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3MpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKGludCBp
ZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOworICAgIHN0cnVjdCBJZCB7CisgICAgICAgIGlu
dCBsYXllcklkOworICAgICAgICBpbnQgaW5kZXg7CisKKyAgICAgICAgSWQoaW50IGxheWVySWQs
IGludCBpbmRleCkKKyAgICAgICAgICAgIDogbGF5ZXJJZChsYXllcklkKQorICAgICAgICAgICAg
LCBpbmRleChpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGxheWVySWQgPiAw
KTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA+PSAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGxheWVySWQg
PT0gb3RoZXIubGF5ZXJJZCAmJiBpbmRleCA9PSBvdGhlci5pbmRleDsgfQorICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSWQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJZCYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIGxheWVySWQgPCBvdGhlci5sYXllcklkIHx8IChsYXllcklkID09IG90aGVyLmxheWVy
SWQgJiYgaW5kZXggPCBvdGhlci5pbmRleCk7IH0KKyAgICB9OworCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoSWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsK
IAogICAgIC8vIEEgc2hhbGxvdyBjb3B5IG9mIHRoZSByZW5kZXIgcGFzcywgd2hpY2ggZG9lcyBu
b3QgaW5jbHVkZSBpdHMgcXVhZHMuCi0gICAgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNvcHko
aW50IG5ld0lkKSBjb25zdDsKKyAgICBQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gY29weShJZCBu
ZXdJZCkgY29uc3Q7CiAKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwq
LCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKICAgICB2b2lk
IGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NS
ZW5kZXJQYXNzKiBjb250cmlidXRpbmdSZW5kZXJQYXNzLCBDQ09jY2x1c2lvblRyYWNrZXJJbXBs
KiwgQ0NBcHBlbmRRdWFkc0RhdGEmKTsKQEAgLTcxLDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAg
Y29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9
CiAKLSAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgSWQgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAKICAgICAvLyBGSVhNRTogTW9kaWZ5IHRoaXMgdHJhbnNmb3Jt
IHdoZW4gbWVyZ2luZyB0aGUgUmVuZGVyUGFzcyBpbnRvIGEgcGFyZW50IGNvbXBvc2l0b3IuCiAg
ICAgLy8gVHJhbnNmb3JtcyBmcm9tIHF1YWQncyBvcmlnaW5hbCBjb250ZW50IHNwYWNlIHRvIHRo
ZSByb290IHRhcmdldCdzIGNvbnRlbnQgc3BhY2UuCkBAIC05NSw5ICsxMTIsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKSBjb25zdCB7
IHJldHVybiBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsgfQogICAgIHZv
aWQgc2V0SGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGJvb2wgaGFzT2NjbHVz
aW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKSB7IG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVU
YXJnZXRTdXJmYWNlID0gaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiBw
cm90ZWN0ZWQ6Ci0gICAgQ0NSZW5kZXJQYXNzKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJn
ZXQpOworICAgIENDUmVuZGVyUGFzcyhJZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpOwogCi0g
ICAgaW50IG1faWQ7CisgICAgSWQgbV9pZDsKICAgICBDQ1F1YWRMaXN0IG1fcXVhZExpc3Q7CiAg
ICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKICAgICBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0OwpAQCAt
MTA5LDkgKzEyNiwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRp
b25zIG1fYmFja2dyb3VuZEZpbHRlcnM7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBh
c3MqPiBDQ1JlbmRlclBhc3NMaXN0OwotdHlwZWRlZiBIYXNoTWFwPGludCwgT3duUHRyPENDUmVu
ZGVyUGFzcz4gPiBDQ1JlbmRlclBhc3NJZEhhc2hNYXA7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpDQ1JlbmRlclBhc3M6OklkPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OkNDUmVuZGVy
UGFzczo6SWQ+IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFs
c2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAg
IHN0YXRpYyBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIGVtcHR5VmFsdWUoKSB7IHJldHVybiBX
ZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkKDAsIDApOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3Ry
dWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQmIHNsb3QpIHsgc2xvdCA9
IFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQoLTEsIC0xKTsgfQorICAgIHN0YXRpYyBib29sIGlz
RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmxheWVySWQgPT0gLTEgJiYgdmFsdWUuaW5kZXggPT0gLTE7IH0KK307Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBJbnRIYXNoPFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKKyAgICBzdGF0aWMg
dW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkJiBrZXkpIHsgcmV0
dXJuIFBhaXJIYXNoPGludCwgaW50Pjo6aGFzaChzdGQ6Om1ha2VfcGFpcihrZXkubGF5ZXJJZCwg
a2V5LmluZGV4KSk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpDQ1Jl
bmRlclBhc3M6OklkJiBhLCBjb25zdCBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkJiBiKSB7IHJl
dHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0
eU9yRGVsZXRlZCA9IHRydWU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2Vi
Q29yZTo6Q0NSZW5kZXJQYXNzOjpJZD4geworICAgIHR5cGVkZWYgSW50SGFzaDxXZWJDb3JlOjpD
Q1JlbmRlclBhc3M6OklkPiBIYXNoOworfTsKK30gLy8gbmFtZXNwYWNlIFdURgogCi19CituYW1l
c3BhY2UgV2ViQ29yZSB7Cit0eXBlZGVmIFZlY3RvcjxDQ1JlbmRlclBhc3MqPiBDQ1JlbmRlclBh
c3NMaXN0OwordHlwZWRlZiBIYXNoTWFwPENDUmVuZGVyUGFzczo6SWQsIE93blB0cjxDQ1JlbmRl
clBhc3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmNwcAppbmRleCA4
ZDI4NjhlMjMwNWNkN2E5OTkyMTZjNzU2ZGEyNzQzODdhOTQ5Yjk4Li5hYWU1Zjc1Mzk4ODZhODIz
NDQ1NzVmYmE1ZTQ0ZTg1NmRiZTY1ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
RHJhd1F1YWQuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1QYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6
Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgY29uc3Qg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2Nh
bGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgs
IGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdR
dWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6
OklkIHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0IENDUmVzb3VyY2VQcm92aWRl
cjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1Rl
eENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29v
cmRPZmZzZXRZKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJQYXNzRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1h
c2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbWFza1RleENvb3Jk
U2NhbGVYLCBtYXNrVGV4Q29vcmRTY2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhD
b29yZE9mZnNldFkpKTsKIH0KIAotQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFzc0Ry
YXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IElu
dFJlY3QmIHF1YWRSZWN0LCBpbnQgcmVuZGVyUGFzc0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBm
bG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0
IG1hc2tUZXhDb29yZE9mZnNldFkpCitDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNz
RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29uc3Qg
SW50UmVjdCYgcXVhZFJlY3QsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBib29sIGlz
UmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkLCBj
b25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxvYXQgbWFza1Rl
eENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1hc2tUZXhDb29y
ZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpCiAgICAgOiBDQ0RyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzcywgcXVhZFJlY3QpCiAgICAgLCBt
X3JlbmRlclBhc3NJZChyZW5kZXJQYXNzSWQpCiAgICAgLCBtX2lzUmVwbGljYShpc1JlcGxpY2Ep
CkBAIC00NSw3ICs0NSw4IEBAIENDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NEcmF3
UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0CiAgICAgLCBtX21hc2tU
ZXhDb29yZE9mZnNldFgobWFza1RleENvb3JkT2Zmc2V0WCkKICAgICAsIG1fbWFza1RleENvb3Jk
T2Zmc2V0WShtYXNrVGV4Q29vcmRPZmZzZXRZKQogewotICAgIEFTU0VSVChtX3JlbmRlclBhc3NJ
ZCA+IDApOworICAgIEFTU0VSVChtX3JlbmRlclBhc3NJZC5maXJzdCA+IDApOworICAgIEFTU0VS
VChtX3JlbmRlclBhc3NJZC5zZWNvbmQgPj0gMCk7CiB9CiAKIGNvbnN0IENDUmVuZGVyUGFzc0Ry
YXdRdWFkKiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1
YWQqIHF1YWQpCkBAIC01NCw3ICs1NSw3IEBAIGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKiBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGNvbnN0IENDRHJhd1F1YWQqCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDUmVuZGVyUGFzc0RyYXdRdWFkKj4ocXVhZCk7CiB9
CiAKLVBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFk
Ojpjb3B5KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBjb3BpZWRTaGFyZWRRdWFkU3RhdGUsIGlu
dCBjb3BpZWRSZW5kZXJQYXNzSWQpIGNvbnN0CitQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdR
dWFkPiBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y29weShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSog
Y29waWVkU2hhcmVkUXVhZFN0YXRlLCBDQ1JlbmRlclBhc3M6OklkIGNvcGllZFJlbmRlclBhc3NJ
ZCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBieXRlcyA9IHNpemUoKTsKICAgICBBU1NFUlQoYnl0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFkLmgKaW5kZXggYzRjMzc3MDBk
ZWYzMzNjMGVmYjU3OGNhMTVkNWJhNjhlNzc1ZDkwZi4uMjkxMzZlZjk4NmQ1ZGVhZDFmNGVlMmYy
ZjFhZDY0MGYzM2M3OGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5o
CkBAIC0yNywyMCArMjcsMTkgQEAKICNkZWZpbmUgQ0NSZW5kZXJQYXNzRHJhd1F1YWRfaAogCiAj
aW5jbHVkZSAiQ0NEcmF3UXVhZC5oIgorI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgogI2luY2x1
ZGUgIkNDUmVzb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDUmVu
ZGVyUGFzczsKLQogY2xhc3MgQ0NSZW5kZXJQYXNzRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJ
ZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVz
b3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZs
b2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBt
YXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKKyAgICBzdGF0
aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lk
LCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNv
dXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgZmxv
YXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOwogCi0gICAgaW50
IHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFzc0lkOyB9CisgICAgQ0NS
ZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBhc3NJ
ZDsgfQogICAgIGJvb2wgaXNSZXBsaWNhKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0K
ICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQoKSBjb25z
dCB7IHJldHVybiBtX21hc2tSZXNvdXJjZUlkOyB9CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVu
dHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lOyB9CkBAIC01MSwxMiArNTAsMTIgQEAgcHVibGljOgogICAgIGZsb2F0
IG1hc2tUZXhDb29yZE9mZnNldFgoKSBjb25zdCB7IHJldHVybiBtX21hc2tUZXhDb29yZE9mZnNl
dFg7IH0KICAgICBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKCkgY29uc3QgeyByZXR1cm4gbV9t
YXNrVGV4Q29vcmRPZmZzZXRZOyB9CiAKLSAgICBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdR
dWFkPiBjb3B5KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBjb3BpZWRTaGFyZWRRdWFkU3RhdGUs
IGludCBjb3BpZWRSZW5kZXJQYXNzSWQpIGNvbnN0OworICAgIFBhc3NPd25QdHI8Q0NSZW5kZXJQ
YXNzRHJhd1F1YWQ+IGNvcHkoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIGNvcGllZFNoYXJlZFF1
YWRTdGF0ZSwgQ0NSZW5kZXJQYXNzOjpJZCBjb3BpZWRSZW5kZXJQYXNzSWQpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgY29uc3QgSW50UmVjdCYsIGludCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jl
c291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgs
IGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WCwgZmxv
YXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CisgICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NSZW5kZXJQYXNzOjpJZCByZW5k
ZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQg
bWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZy
YW1lLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwg
ZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CiAK
LSAgICBpbnQgbV9yZW5kZXJQYXNzSWQ7CisgICAgQ0NSZW5kZXJQYXNzOjpJZCBtX3JlbmRlclBh
c3NJZDsKICAgICBib29sIG1faXNSZXBsaWNhOwogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBtX21hc2tSZXNvdXJjZUlkOwogICAgIEludFJlY3QgbV9jb250ZW50c0NoYW5nZWRT
aW5jZUxhc3RGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDUwYTYz
NDlkNWUxZmQ1YmFmNTE0YWI3MTA1MTgxOWUzMDg5MTE4MWEuLjE2MzkzYjkzMGQ5MTRhNWRlYzk3
ZTMyYWI4MjlkYjQ5M2ZmMTdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApA
QCAtMTgxLDE2ICsxODEsMjQgQEAgc3RhdGljIGlubGluZSBJbnRSZWN0IGNvbXB1dGVDbGlwcGVk
UmVjdEluVGFyZ2V0KGNvbnN0IENDTGF5ZXJJbXBsKiBvd25pbmdMYXllcikKICAgICByZXR1cm4g
Y2xpcHBlZFJlY3RJblRhcmdldDsKIH0KIAorQ0NSZW5kZXJQYXNzOjpJZCBDQ1JlbmRlclN1cmZh
Y2U6OnJlbmRlclBhc3NJZCgpCit7CisgICAgaW50IGxheWVySWQgPSBtX293bmluZ0xheWVyLT5p
ZCgpOworICAgIGludCBzdWJJZCA9IDA7CisgICAgQVNTRVJUKGxheWVySWQgPiAwKTsKKyAgICBy
ZXR1cm4gQ0NSZW5kZXJQYXNzOjpJZChsYXllcklkLCBzdWJJZCk7Cit9CisKIHZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzU2luayYgcGFzc1Npbmsp
CiB7Ci0gICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRl
KG1fb3duaW5nTGF5ZXItPmlkKCksIG1fY29udGVudFJlY3QsIG1fc2NyZWVuU3BhY2VUcmFuc2Zv
cm0pOworICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0
ZShyZW5kZXJQYXNzSWQoKSwgbV9jb250ZW50UmVjdCwgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSk7
CiAgICAgcGFzcy0+c2V0RGFtYWdlUmVjdChtX2RhbWFnZVRyYWNrZXItPmN1cnJlbnREYW1hZ2VS
ZWN0KCkpOwogICAgIHBhc3MtPnNldEZpbHRlcnMobV9vd25pbmdMYXllci0+ZmlsdGVycygpKTsK
ICAgICBwYXNzLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5k
RmlsdGVycygpKTsKICAgICBwYXNzU2luay5hcHBlbmRSZW5kZXJQYXNzKHBhc3MucmVsZWFzZSgp
KTsKIH0KIAotdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1
YWRTaW5rLCBDQ0FwcGVuZFF1YWRzRGF0YSYgYXBwZW5kUXVhZHNEYXRhLCBib29sIGZvclJlcGxp
Y2EsIGludCByZW5kZXJQYXNzSWQpCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYgcXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEs
IGJvb2wgZm9yUmVwbGljYSwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQpCiB7CiAgICAg
QVNTRVJUKCFmb3JSZXBsaWNhIHx8IG1fb3duaW5nTGF5ZXItPmhhc1JlcGxpY2EoKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggMDlhMjg0Njc2ZjIyODIyOTQyNTI1YjEyNWYz
YTYzZjNjYzg3YmNiMy4uMmQ3YWFhOTNlZmQ1ZmVlM2M3NTUwZjZhYTAzODNhNmYzZjY2MTNmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAorI2luY2x1ZGUgIkNDUmVuZGVyUGFzcy5oIgog
I2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtNDAsNyArNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENDRGFtYWdlVHJhY2tlcjsKIGNsYXNzIENDUXVhZFNpbms7Ci1jbGFzcyBDQ1Jl
bmRlclBhc3M7CiBjbGFzcyBDQ1JlbmRlclBhc3NTaW5rOwogY2xhc3MgQ0NMYXllckltcGw7CiBj
bGFzcyBUZXh0U3RyZWFtOwpAQCAtMTA2LDggKzEwNiwxMCBAQCBwdWJsaWM6CiAKICAgICBDQ0Rh
bWFnZVRyYWNrZXIqIGRhbWFnZVRyYWNrZXIoKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVRyYWNr
ZXIuZ2V0KCk7IH0KIAorICAgIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkKCk7CisKICAg
ICB2b2lkIGFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJik7Ci0gICAgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgQ0NBcHBlbmRRdWFkc0RhdGEmLCBib29sIGZvclJlcGxp
Y2EsIGludCByZW5kZXJQYXNzSWQpOworICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IENDQXBwZW5kUXVhZHNEYXRhJiwgYm9vbCBmb3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCk7CiAKIHByaXZhdGU6CiAgICAgQ0NMYXllckltcGwqIG1fb3duaW5nTGF5ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlcmVyLmgKaW5kZXggOTQ2YWVjNjMzMzYyOWVhY2NiYTg4NjgzY2ExZDk3ODRk
YTQ1OTQzNi4uMDQ3YmQ4MGYzMTU3YWJhZTkzY2UzMWI0ZmRiOWQ3ZWE2MzZlMTRiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyZXIuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHZpZXdwb3J0Q2hhbmdlZCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVJlbmRlclBh
c3NBbGxvY2F0aW9uc0ZvckZyYW1lKGNvbnN0IENDUmVuZGVyUGFzc0xpc3QmKSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChpbnQpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNG
b3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYsIGNv
bnN0IENDUmVuZGVyUGFzc0lkSGFzaE1hcCYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RyYXdRdWFkVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDRHJhd1F1YWRUZXN0LmNwcAppbmRleCA2YTkyNmIwOWNkMWUxY2U4YzM1
MTA4MTc3NTViNDI4YzU1NTA5NzA3Li4zYzVjMzg0ZjhmNTU1NzkwNTJjNjM5MzE0MTg3MzY2MjIz
MDI4MTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRHJhd1F1
YWRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRHJhd1F1YWRU
ZXN0LmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIFRFU1QoQ0NEcmF3UXVhZFRlc3QsIGNvcHlJT1N1
cmZhY2VEcmF3UXVhZCkKIAogVEVTVChDQ0RyYXdRdWFkVGVzdCwgY29weVJlbmRlclBhc3NEcmF3
UXVhZCkKIHsKLSAgICBpbnQgcmVuZGVyUGFzc0lkID0gMjI7CisgICAgQ0NSZW5kZXJQYXNzOjpJ
ZCByZW5kZXJQYXNzSWQoMjIsIDY0KTsKICAgICBib29sIGlzUmVwbGljYSA9IHRydWU7CiAgICAg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkID0gNzg7CiAgICAg
SW50UmVjdCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSg0MiwgMTEsIDc0LCAyNCk7CkBA
IC0yMTksNyArMjE5LDcgQEAgVEVTVChDQ0RyYXdRdWFkVGVzdCwgY29weVJlbmRlclBhc3NEcmF3
UXVhZCkKICAgICBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYID0gLTQ1OwogICAgIGZsb2F0IG1h
c2tUZXhDb29yZE9mZnNldFkgPSAtMjE7CiAKLSAgICBpbnQgY29waWVkUmVuZGVyUGFzc0lkID0g
MjM1OworICAgIENDUmVuZGVyUGFzczo6SWQgY29waWVkUmVuZGVyUGFzc0lkKDIzNSwgMTEpOwog
CiAgICAgQ1JFQVRFX1NIQVJFRF9TVEFURSgpOwogICAgIENSRUFURV9RVUFEXzhfMShDQ1JlbmRl
clBhc3NEcmF3UXVhZCwgcmVuZGVyUGFzc0lkLCBpc1JlcGxpY2EsIG1hc2tSZXNvdXJjZUlkLCBj
b250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwgbWFza1RleENvb3JkU2NhbGVYLCBtYXNrVGV4
Q29vcmRTY2FsZVksIG1hc2tUZXhDb29yZE9mZnNldFgsIG1hc2tUZXhDb29yZE9mZnNldFksIGNv
cGllZFJlbmRlclBhc3NJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDc5NmEzMTk4ZTY2NWNhMTQz
MGI3ZDgwNDc0MTM3NWQ1ZmY0Y2ZhNzQuLmQ3ZTk1NTc4MzM0YzhjZTBjMWU0ZDI0ZGVlYTJlZTNl
N2JhMjgxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zNDc1LDEzICszNDc1LDE0IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAg
ICBncmFuZENoaWxkLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAKICAgICBDQ1RpbGVkTGF5ZXJJ
bXBsKiBjaGlsZFB0ciA9IGNoaWxkLmdldCgpOworICAgIENDUmVuZGVyUGFzczo6SWQgY2hpbGRQ
YXNzSWQoY2hpbGRQdHItPmlkKCksIDApOwogCiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hp
bGQucmVsZWFzZSgpKTsKICAgICByb290LT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwogICAg
IG15SG9zdEltcGwtPnNldFJvb3RMYXllcihyb290LnJlbGVhc2UoKSk7CiAgICAgbXlIb3N0SW1w
bC0+c2V0Vmlld3BvcnRTaXplKHJvb3RSZWN0LnNpemUoKSwgcm9vdFJlY3Quc2l6ZSgpKTsKIAot
ICAgIEVYUEVDVF9GQUxTRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3Vy
Y2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKG15
SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQo
Y2hpbGRQYXNzSWQpKTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJh
bWVEYXRhIGZyYW1lOwpAQCAtMzQ5MSw3ICszNDkyLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdl
IHNob3VsZCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyLgotICAgIEVYUEVDVF9U
UlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQ
YXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5k
ZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7
CiAKICAgICB7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSBmcmFtZTsK
QEAgLTM1MDEsNyArMzUwMiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgdGV4
dHVyZUNhY2hpbmdXaXRoU2Npc3NvcikKICAgICB9CiAKICAgICAvLyBXZSBzaG91bGQgc3RpbGwg
aGF2ZSBjYWNoZWQgdGV4dHVyZXMgZm9yIHN1cmZhY2UgMiBhZnRlciBkcmF3aW5nIHdpdGggbm8g
ZGFtYWdlLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
UGFzc0lkKGNoaWxkUGFzc0lkKSk7CiAKICAgICAvLyBEYW1hZ2UgYSBzaW5nbGUgdGlsZSBvZiBz
dXJmYWNlIDIuCiAgICAgY2hpbGRQdHItPnNldFVwZGF0ZVJlY3QoSW50UmVjdCgxMCwgMTAsIDEw
LCAxMCkpOwpAQCAtMzUxNCw3ICszNTE1LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdlIHNob3Vs
ZCBoYXZlIGEgY2FjaGVkIHRleHR1cmUgZm9yIHN1cmZhY2UgMiBhZ2FpbiBldmVuIHRob3VnaCBp
dCB3YXMgZGFtYWdlZC4KLSAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5o
YXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGNoaWxkUHRyLT5pZCgpKSk7CisgICAg
RVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0Zv
clJlbmRlclBhc3NJZChjaGlsZFBhc3NJZCkpOwogfQogCiBURVNUX0YoQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QsIHN1cmZhY2VUZXh0dXJlQ2FjaGluZykKQEAgLTM4NzYsMTggKzM4NzcsMTggQEAg
c3RydWN0IFJlbmRlclBhc3NDYWNoZUVudHJ5IHsKIH07CiAKIHN0cnVjdCBSZW5kZXJQYXNzUmVt
b3ZhbFRlc3REYXRhIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdEltcGw6OkZyYW1lRGF0YSB7Ci0g
ICAgc3RkOjptYXA8Y2hhciwgUmVuZGVyUGFzc0NhY2hlRW50cnk+IHJlbmRlclBhc3NDYWNoZTsK
KyAgICBzdGQ6Om1hcDxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4gcmVu
ZGVyUGFzc0NhY2hlOwogICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlOwogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyUGFzczogcHVibGljIENDUmVuZGVyUGFzcyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjcmVhdGUoaW50
IGlkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBy
b290VHJhbnNmb3JtKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwg
b3V0cHV0UmVjdCwgcm9vdFRyYW5zZm9ybSkpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NS
ZW5kZXJQYXNzPiBjcmVhdGUoQ0NSZW5kZXJQYXNzOjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0
LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IENDVGVzdFJlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFuc2Zv
cm0pKTsgfQogCiAgICAgdm9pZCBhcHBlbmRRdWFkKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcXVh
ZCkgeyBtX3F1YWRMaXN0LmFwcGVuZChxdWFkKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0
UmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0
LCByb290VHJhbnNmb3JtKSB7IH0KKyAgICBDQ1Rlc3RSZW5kZXJQYXNzKENDUmVuZGVyUGFzczo6
SWQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJvb3RUcmFuc2Zvcm0pIDogQ0NSZW5kZXJQYXNzKGlkLCBvdXRwdXRSZWN0LCByb290VHJhbnNm
b3JtKSB7IH0KIH07CiAKIGNsYXNzIENDVGVzdFJlbmRlcmVyIDogcHVibGljIENDUmVuZGVyZXJH
TCwgcHVibGljIENDUmVuZGVyZXJDbGllbnQgewpAQCAtMzkwMiw5ICszOTAzLDkgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZvaWQgY2xlYXJDYWNoZWRUZXh0dXJlcygpIHsgbV90ZXh0dXJlcy5j
bGVhcigpOyB9Ci0gICAgdm9pZCBzZXRIYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lk
KGludCBpZCkgeyBtX3RleHR1cmVzLmFkZChpZCk7IH0KKyAgICB2b2lkIHNldEhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgeyBtX3RleHR1cmVz
LmFkZChpZCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVu
ZGVyUGFzc0lkKGludCBpZCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90ZXh0dXJlcy5jb250
YWlucyhpZCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZChDQ1JlbmRlclBhc3M6OklkIGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3Rl
eHR1cmVzLmNvbnRhaW5zKGlkKTsgfQogCiAgICAgLy8gQ0NSZW5kZXJlckNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGRldmljZVZpZXdwb3J0U2l6ZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmlld3BvcnRTaXplOyB9CkBAIC0zOTIxLDcgKzM5
MjIsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIENDTGF5ZXJUcmVlU2V0dGluZ3MgbV9z
ZXR0aW5nczsKICAgICBJbnRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEhhc2hTZXQ8aW50PiBt
X3RleHR1cmVzOworICAgIEhhc2hTZXQ8Q0NSZW5kZXJQYXNzOjpJZD4gbV90ZXh0dXJlczsKIH07
CiAKIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0
ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSwgQ0NUZXN0UmVu
ZGVyZXIqIHJlbmRlcmVyKQpAQCAtMzkzNCwxMiArMzkzNSwxNyBAQCBzdGF0aWMgdm9pZCBjb25m
aWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciogdGVzdFNjcmlwdCwgUmVuZGVyUGFz
c1JlbW92YQogICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRDaGFyID0gdGVzdFNjcmlwdDsKIAogICAg
IC8vIFByZS1jcmVhdGUgcm9vdCBwYXNzCi0gICAgY2hhciByb290UmVuZGVyUGFzc0lkID0gdGVz
dFNjcmlwdFswXTsKKyAgICBDQ1JlbmRlclBhc3M6OklkIHJvb3RSZW5kZXJQYXNzSWQgPSBDQ1Jl
bmRlclBhc3M6OklkKHRlc3RTY3JpcHRbMF0sIHRlc3RTY3JpcHRbMV0pOwogICAgIE93blB0cjxD
Q1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0gQ0NUZXN0UmVuZGVyUGFzczo6Y3JlYXRlKHJv
b3RSZW5kZXJQYXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0g
ICAgdGVzdERhdGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Y2hhciwgUmVuZGVy
UGFzc0NhY2hlRW50cnk+KHJvb3RSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJv
b3RSZW5kZXJQYXNzLnJlbGVhc2UoKSkpKTsKKyAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUu
aW5zZXJ0KHN0ZDo6cGFpcjxDQ1JlbmRlclBhc3M6OklkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4o
cm9vdFJlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocm9vdFJlbmRlclBhc3MucmVs
ZWFzZSgpKSkpOwogICAgIHdoaWxlICgqY3VycmVudENoYXIpIHsKLSAgICAgICAgY2hhciByZW5k
ZXJQYXNzSWQgPSBjdXJyZW50Q2hhclswXTsKKyAgICAgICAgaW50IGxheWVySWQgPSAqY3VycmVu
dENoYXI7CiAgICAgICAgIGN1cnJlbnRDaGFyKys7CisgICAgICAgIEFTU0VSVF9UUlVFKGN1cnJl
bnRDaGFyKTsKKyAgICAgICAgaW50IGluZGV4ID0gKmN1cnJlbnRDaGFyOworICAgICAgICBjdXJy
ZW50Q2hhcisrOworCisgICAgICAgIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkID0gQ0NS
ZW5kZXJQYXNzOjpJZChsYXllcklkLCBpbmRleCk7CiAKICAgICAgICAgT3duUHRyPENDUmVuZGVy
UGFzcz4gcmVuZGVyUGFzczsKIApAQCAtMzk1OSw5ICszOTY1LDEzIEBAIHN0YXRpYyB2b2lkIGNv
bmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQ
YXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoKCpjdXJyZW50Q2hhciA+PSAnQScpICYmICgqY3VycmVudENoYXIgPD0gJ1onKSkg
ewogICAgICAgICAgICAgICAgIC8vIFJlbmRlclBhc3MgZHJhdyBxdWFkCi0gICAgICAgICAgICAg
ICAgY2hhciBuZXdSZW5kZXJQYXNzSWQgPSAqY3VycmVudENoYXI7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUX05FKHJvb3RSZW5kZXJQYXNzSWQsIG5ld1JlbmRlclBhc3NJZCk7CisgICAgICAgICAg
ICAgICAgaW50IGxheWVySWQgPSAqY3VycmVudENoYXI7CisgICAgICAgICAgICAgICAgY3VycmVu
dENoYXIrKzsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVFJVRShjdXJyZW50Q2hhcik7CisgICAg
ICAgICAgICAgICAgaW50IGluZGV4ID0gKmN1cnJlbnRDaGFyOwogICAgICAgICAgICAgICAgIGN1
cnJlbnRDaGFyKys7CisgICAgICAgICAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCBuZXdSZW5kZXJQ
YXNzSWQgPSBDQ1JlbmRlclBhc3M6OklkKGxheWVySWQsIGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfTkUocm9vdFJlbmRlclBhc3NJZCwgbmV3UmVuZGVyUGFzc0lkKTsKICAgICAgICAg
ICAgICAgICBib29sIGhhc1RleHR1cmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBib29sIGNv
bnRlbnRzQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgCkBAIC0zOTg3LDcgKzM5OTcs
NyBAQCBzdGF0aWMgdm9pZCBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgY2hhciog
dGVzdFNjcmlwdCwgUmVuZGVyUGFzc1JlbW92YQogICAgICAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyZXItPnNldEhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQobmV3UmVuZGVyUGFz
c0lkKTsKIAogICAgICAgICAgICAgICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByZW5kZXJQ
YXNzID0gQ0NUZXN0UmVuZGVyUGFzczo6Y3JlYXRlKG5ld1JlbmRlclBhc3NJZCwgSW50UmVjdCgp
LCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdERh
dGEucmVuZGVyUGFzc0NhY2hlLmluc2VydChzdGQ6OnBhaXI8Y2hhciwgUmVuZGVyUGFzc0NhY2hl
RW50cnk+KG5ld1JlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocmVuZGVyUGFzcy5y
ZWxlYXNlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNo
ZS5pbnNlcnQoc3RkOjpwYWlyPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5
PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5KHJlbmRlclBhc3MucmVsZWFz
ZSgpKSkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIEludFJlY3QgcXVh
ZFJlY3QgPSBJbnRSZWN0KDAsIDAsIDEsIDEpOwpAQCAtNDAwOCw3ICs0MDE4LDkgQEAgdm9pZCBk
dW1wUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRl
c3REYXRhLCBjaGFyKiBidWYKICAgICBjaGFyKiBwb3MgPSBidWZmZXI7CiAgICAgZm9yIChDQ1Jl
bmRlclBhc3NMaXN0Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGl0ID0gdGVzdERhdGEucmVuZGVy
UGFzc2VzLnJiZWdpbigpOyBpdCAhPSB0ZXN0RGF0YS5yZW5kZXJQYXNzZXMucmVuZCgpOyArK2l0
KSB7CiAgICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogY3VycmVudFBhc3MgPSAqaXQ7Ci0gICAg
ICAgICpwb3MgPSBjdXJyZW50UGFzcy0+aWQoKTsKKyAgICAgICAgKnBvcyA9IGN1cnJlbnRQYXNz
LT5pZCgpLmxheWVySWQ7CisgICAgICAgIHBvcysrOworICAgICAgICAqcG9zID0gY3VycmVudFBh
c3MtPmlkKCkuaW5kZXg7CiAgICAgICAgIHBvcysrOwogCiAgICAgICAgIENDUXVhZExpc3Q6OmNv
bnN0X2l0ZXJhdG9yIHF1YWRMaXN0SXRlcmF0b3IgPSBjdXJyZW50UGFzcy0+cXVhZExpc3QoKS5i
ZWdpbigpOwpAQCAtNDAyMCw3ICs0MDMyLDkgQEAgdm9pZCBkdW1wUmVuZGVyUGFzc1Rlc3REYXRh
KGNvbnN0IFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhLCBjaGFyKiBidWYKICAg
ICAgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKLSAgICAgICAgICAgICAgICAqcG9zID0gQ0NS
ZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJ
ZCgpOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJp
YWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkubGF5ZXJJZDsKKyAgICAgICAgICAg
ICAgICBwb3MrKzsKKyAgICAgICAgICAgICAgICAqcG9zID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
Om1hdGVyaWFsQ2FzdChjdXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpLmluZGV4OwogICAgICAg
ICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKQEAgLTQwNjQsMTE1ICs0MDc4LDExNSBAQCBUZXN0Q2FzZSByZW1vdmVSZW5kZXJQYXNz
ZXNDYXNlc1tdID0KICAgICB7CiAgICAgICAgIHsKICAgICAgICAgICAgICJTaW5nbGUgcm9vdCBw
YXNzIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIgorICAg
ICAgICAgICAgIlIwc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NcbiIKICAgICAgICAgfSwg
ewogICAgICAgICAgICAgIlNpbmdsZSBwYXNzIC0gbm8gcXVhZHMiLAotICAgICAgICAgICAgIlJc
biIsCi0gICAgICAgICAgICAiUlxuIgorICAgICAgICAgICAgIlIwXG4iLAorICAgICAgICAgICAg
IlIwXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJUd28gcGFzc2VzLCBubyByZW1vdmFs
IiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAg
ICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgorICAgICAgICAg
ICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAgICAgICAg
IlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAgICAgIH0sIHsKICAg
ICAgICAgICAgICJUd28gcGFzc2VzLCByZW1vdmUgbGFzdCIsCi0gICAgICAgICAgICAiUnNzc3NB
W2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNz
c1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nz
c1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAg
ICAgICAiSGF2ZSB0ZXh0dXJlIGJ1dCBjb250ZW50cyBjaGFuZ2VkIC0gbGVhdmUgcGFzcyIsCi0g
ICAgICAgICAgICAiUnNzc3NBW3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAg
ICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIKKyAgICAgICAgICAg
ICJSMHNzc3NBMFt0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAgICAgICAgICAg
ICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIgogICAgICAgICB9LCB7CiAg
ICAgICAgICAgICAiQ29udGVudHMgZGlkbid0IGNoYW5nZSBidXQgbm8gdGV4dHVyZSAtIGxlYXZl
IHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFzc3Nz
XG4iLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iCisg
ICAgICAgICAgICAiUjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisg
ICAgICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAg
ICAgfSwgewogICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNh
bWUgcGFzczsgcmVtb3ZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3RdQVtjdF1zc3NcbiIKLSAg
ICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCisgICAgICAg
ICAgICAiUjBzc3NzQTBbY3RdQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAor
ICAgICAgICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAg
IlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsgbGVhdmUiLAotICAg
ICAgICAgICAgIlJzc3NzQVtjXUFbY11zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAg
ICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCisgICAgICAg
ICAgICAiUjBzc3NzQTBbY11BMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwKKyAg
ICAgICAgICAgICJSMHNzc3NBMEEwc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAogICAg
ICAgICB9LCB7CiAgICAgICAgICAgICAiTWFueSBwYXNzZXMsIHJlbW92ZSBhbGwiLAotICAgICAg
ICAgICAgIlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3NzQltjdF1DW2N0XXNcbiIK
LSAgICAgICAgICAgICJCc3NzRFtjdF1zc0VbY3RdRltjdF1cbiIKLSAgICAgICAgICAgICJFc3Nz
c3NzXG4iCi0gICAgICAgICAgICAiQ0dbY3RdXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIK
LSAgICAgICAgICAgICJGc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0KLSAgICAg
ICAgICAgICJSc3Nzc0Fzc3NcbiIKKyAgICAgICAgICAgICJSMHNzc3NBMFtjdF1zc3NcbiIKKyAg
ICAgICAgICAgICJBMHNzc0IwW2N0XUMwW2N0XXNcbiIKKyAgICAgICAgICAgICJCMHNzc0QwW2N0
XXNzRTBbY3RdRjBbY3RdXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAg
ICJDMEcwW2N0XVxuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkYw
c3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4iLAorCisgICAgICAgICAgICAiUjBzc3Nz
QTBzc3NcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIkRlZXAgcmVjdXJzaW9uLCByZW1v
dmUgYWxsIiwKIAotICAgICAgICAgICAgIlJzc3Nzc0FbY3Rdc3Nzc1xuIgotICAgICAgICAgICAg
IkFzc3NzQnNzc1xuIgotICAgICAgICAgICAgIkJDXG4iCi0gICAgICAgICAgICAiQ0RcbiIKLSAg
ICAgICAgICAgICJERVxuIgotICAgICAgICAgICAgIkVGXG4iCi0gICAgICAgICAgICAiRkdcbiIK
LSAgICAgICAgICAgICJHSFxuIgotICAgICAgICAgICAgIkhzc3NJc3NzXG4iCi0gICAgICAgICAg
ICAiSUpcbiIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKKyAgICAgICAgICAgICJSMHNzc3NzQTBb
Y3Rdc3Nzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc0Iwc3NzXG4iCisgICAgICAgICAgICAiQjBD
MFxuIgorICAgICAgICAgICAgIkMwRDBcbiIKKyAgICAgICAgICAgICJEMEUwXG4iCisgICAgICAg
ICAgICAiRTBGMFxuIgorICAgICAgICAgICAgIkYwRzBcbiIKKyAgICAgICAgICAgICJHMEgwXG4i
CisgICAgICAgICAgICAiSDBzc3NJMHNzc1xuIgorICAgICAgICAgICAgIkkwSjBcbiIKKyAgICAg
ICAgICAgICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAKLSAgICAgICAgICAgICJSc3Nzc3NBc3Nz
c1xuIgorICAgICAgICAgICAgIlIwc3Nzc3NBMHNzc3NcbiIKICAgICAgICAgfSwgewogICAgICAg
ICAgICAgIldpZGUgcmVjdXJzaW9uLCByZW1vdmUgYWxsIiwKLSAgICAgICAgICAgICJSQVtjdF1C
W2N0XUNbY3RdRFtjdF1FW2N0XUZbY3RdR1tjdF1IW2N0XUlbY3RdSltjdF1cbiIKLSAgICAgICAg
ICAgICJBc1xuIgotICAgICAgICAgICAgIkJzXG4iCi0gICAgICAgICAgICAiQ3Nzc3NcbiIKLSAg
ICAgICAgICAgICJEc3Nzc1xuIgotICAgICAgICAgICAgIkVzXG4iCi0gICAgICAgICAgICAiRlxu
IgotICAgICAgICAgICAgIkdzXG4iCi0gICAgICAgICAgICAiSHNcbiIKLSAgICAgICAgICAgICJJ
c1xuIgotICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAgIlIwQTBbY3RdQjBbY3Rd
QzBbY3RdRDBbY3RdRTBbY3RdRjBbY3RdRzBbY3RdSDBbY3RdSTBbY3RdSjBbY3RdXG4iCisgICAg
ICAgICAgICAiQTBzXG4iCisgICAgICAgICAgICAiQjBzXG4iCisgICAgICAgICAgICAiQzBzc3Nz
XG4iCisgICAgICAgICAgICAiRDBzc3NzXG4iCisgICAgICAgICAgICAiRTBzXG4iCisgICAgICAg
ICAgICAiRjBcbiIKKyAgICAgICAgICAgICJHMHNcbiIKKyAgICAgICAgICAgICJIMHNcbiIKKyAg
ICAgICAgICAgICJJMHNcbiIKKyAgICAgICAgICAgICJKMHNzc3NcbiIsCiAgICAgICAgICAgICAK
LSAgICAgICAgICAgICJSQUJDREVGR0hJSlxuIgorICAgICAgICAgICAgIlIwQTBCMEMwRDBFMEYw
RzBIMEkwSjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlJlbW92ZSBwYXNzZXMgcmVn
YXJkbGVzcyBvZiBjYWNoZSBzdGF0ZSIsCi0gICAgICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgot
ICAgICAgICAgICAgIkFzc3NCQ3NcbiIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzRVt0XUZcbiIK
LSAgICAgICAgICAgICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAiQ0dcbiIKLSAgICAgICAgICAg
ICJEc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nz
c1xuIiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0Ew
W2N0XXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBDMHNcbiIKKyAgICAgICAgICAgICJCMHNz
c0QwW2Ndc3NFMFt0XUYwXG4iCisgICAgICAgICAgICAiRTBzc3Nzc3NcbiIKKyAgICAgICAgICAg
ICJDMEcwXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRjBzc3Nz
c3NzXG4iCisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAgICAgICJSMHNzc3NBMHNz
c1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiTGVhdmUgc29tZSBwYXNzZXMsIHJlbW92
ZSBvdGhlcnMiLAogCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAgICAgICAi
QXNzc0JbdF1DW2N0XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtjXXNzXG4iCi0gICAgICAgICAg
ICAiQ0dcbiIKLSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIs
Ci0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3NzQkNzXG4iCi0g
ICAgICAgICAgICAiQnNzc0Rzc1xuIgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCisgICAgICAg
ICAgICAiUjBzc3NzQTBbY11zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwW3RdQzBbY3Rdc1xu
IgorICAgICAgICAgICAgIkIwc3NzRDBbY11zc1xuIgorICAgICAgICAgICAgIkMwRzBcbiIKKyAg
ICAgICAgICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAg
ICAgICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAg
ICAgICAgIkIwc3NzRDBzc1xuIgorICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAwLCAwLCAwCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDUyMTkzMDI3
Y2M0NjUxODgxMmIwYWM1MDhhMjIwMGYwNzI1OGMzZmIuLjk4ZjEzZmYzYWM3OWY5MWQ2NGM2NDE2
ZGU0YzJiZWZhMzNiMTc3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjM1NCw4ICsyMzU0LDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJ
bXBsKiBob3N0SW1wbCkgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIENDUmVuZGVyZXIqIHJlbmRl
cmVyID0gaG9zdEltcGwtPnJlbmRlcmVyKCk7Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UxUmVu
ZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RMYXllcigpLT5jaGlsZHJlbigpWzBdLT5pZCgpOwot
ICAgICAgICB1bnNpZ25lZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5
ZXIoKS0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+aWQoKTsKKyAgICAgICAgQ0NSZW5k
ZXJQYXNzOjpJZCBzdXJmYWNlMVJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5ZXIoKS0+
Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAg
Q0NSZW5kZXJQYXNzOjpJZCBzdXJmYWNlMlJlbmRlclBhc3NJZCA9IGhvc3RJbXBsLT5yb290TGF5
ZXIoKS0+Y2hpbGRyZW4oKVswXS0+Y2hpbGRyZW4oKVswXS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5k
ZXJQYXNzSWQoKTsKIAogICAgICAgICBzd2l0Y2ggKGhvc3RJbXBsLT5zb3VyY2VGcmFtZU51bWJl
cigpKSB7CiAgICAgICAgIGNhc2UgMDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZW5kZXJQYXNzVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUmVuZGVyUGFzc1Rlc3QuY3BwCmluZGV4IDZhZTQxMzQ1ZjA3ZjIxNTliMjY3MjVkNmY4
ZmY4YjNlOTk3MDQ4NmEuLjBmNzZlMmVjMDE5ZGIwMDQ0MTAyODYwOWNjZGQzODNmOTVkNmQ5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJQYXNzVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclBhc3NUZXN0
LmNwcApAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgQ0NSZW5kZXJQYXNzU2l6ZSB7CiAKIFRFU1Qo
Q0NSZW5kZXJQYXNzVGVzdCwgY29weVNob3VsZEJlSWRlbnRpY2FsRXhjZXB0SWRBbmRRdWFkcykK
IHsKLSAgICBpbnQgaWQgPSAzOworICAgIENDUmVuZGVyUGFzczo6SWQgaWQoMywgMik7CiAgICAg
SW50UmVjdCBvdXRwdXRSZWN0KDQ1LCAyMiwgMTIwLCAxMyk7CiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtVG9Sb290KDEsIDAuNSwgMC41LCAtMC41LCAtMSwgMCk7CiAKQEAg
LTg4LDcgKzg4LDcgQEAgVEVTVChDQ1JlbmRlclBhc3NUZXN0LCBjb3B5U2hvdWxkQmVJZGVudGlj
YWxFeGNlcHRJZEFuZFF1YWRzKQogICAgIHRlc3RQYXNzLT5zaGFyZWRRdWFkU3RhdGVMaXN0KCku
YXBwZW5kKENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgSW50UmVjdCgpLCBJbnRSZWN0KCksIDEsIGZhbHNlKSk7CiAgICAgdGVzdFBhc3MtPnF1YWRM
aXN0KCkuYXBwZW5kKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZSh0ZXN0UGFzcy0+c2hh
cmVkUXVhZFN0YXRlTGlzdCgpLmxhc3QoKS5nZXQoKSwgSW50UmVjdCgpKSk7CiAKLSAgICBpbnQg
bmV3SWQgPSA2MzsKKyAgICBDQ1JlbmRlclBhc3M6OklkIG5ld0lkKDYzLCA0KTsKIAogICAgIE93
blB0cjxDQ1JlbmRlclBhc3M+IGNvcHkocGFzcy0+Y29weShuZXdJZCkpOwogICAgIEVYUEVDVF9F
UShuZXdJZCwgY29weS0+aWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAppbmRleCAwNjY5M2YzMzc0ZjA5ZTA1ODMyN2M2
OTU1MWMyMGZmMjk3ZDAxNzZkLi5kNjZiOGM5NTE2YTNlODgyODZlMzZiODE1N2E0MDYxYjA2Y2Fh
NGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3Vy
ZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJT
dXJmYWNlVGVzdC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFjZVRl
c3QsIHNhbml0eUNoZWNrU3VyZmFjZUNyZWF0ZXNDb3JyZWN0U2hhcmVkUXVhZFN0YXRlKQogICAg
IENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKIAogICAgIGJvb2wgZm9yUmVwbGlj
YSA9IGZhbHNlOwotICAgIHJlbmRlclN1cmZhY2UtPmFwcGVuZFF1YWRzKG1vY2tRdWFkQ3VsbGVy
LCBhcHBlbmRRdWFkc0RhdGEsIGZvclJlcGxpY2EsIDIpOworICAgIHJlbmRlclN1cmZhY2UtPmFw
cGVuZFF1YWRzKG1vY2tRdWFkQ3VsbGVyLCBhcHBlbmRRdWFkc0RhdGEsIGZvclJlcGxpY2EsIEND
UmVuZGVyUGFzczo6SWQoMiwgMCkpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBzaGFyZWRTdGF0ZUxp
c3Quc2l6ZSgpKTsKICAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gc2hh
cmVkU3RhdGVMaXN0WzBdLmdldCgpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIFRFU1QoQ0NSZW5kZXJT
dXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RSZW5kZXJQYXNzKQog
ICAgIEFTU0VSVF9FUSgxdSwgcGFzc1NpbmsucmVuZGVyUGFzc2VzKCkuc2l6ZSgpKTsKICAgICBD
Q1JlbmRlclBhc3MqIHBhc3MgPSBwYXNzU2luay5yZW5kZXJQYXNzZXMoKVswXS5nZXQoKTsKIAot
ICAgIEVYUEVDVF9FUSgyLCBwYXNzLT5pZCgpKTsKKyAgICBFWFBFQ1RfRVEoQ0NSZW5kZXJQYXNz
OjpJZCgyLCAwKSwgcGFzcy0+aWQoKSk7CiAgICAgRVhQRUNUX0VRKGNvbnRlbnRSZWN0LCBwYXNz
LT5vdXRwdXRSZWN0KCkpOwogICAgIEVYUEVDVF9FUShvcmlnaW4sIHBhc3MtPnRyYW5zZm9ybVRv
Um9vdFRhcmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NSZW5kZXJlckdMVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UmVuZGVyZXJHTFRlc3QuY3BwCmluZGV4IDJmM2ZkNmEwODEzNTg3MDkxYTJmYzRiMDllNDkwYmQ3
MTBmNmU5NTMuLjBjNzhjNWVlOWFlYzhiYWZjY2UyY2QxNDdkYzVmNzQyZDRjZTk1ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJlckdMVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcApA
QCAtODAsOSArODAsMTEgQEAgcHVibGljOgogICAgICAgICAsIG1fcm9vdExheWVyKENDTGF5ZXJJ
bXBsOjpjcmVhdGUoMSkpCiAgICAgICAgICwgbV9tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyhD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlZmF1bHRNZW1vcnlBbGxvY2F0aW9uTGltaXQo
KSkKICAgICB7Ci0gICAgICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0g
Q0NSZW5kZXJQYXNzOjpjcmVhdGUobV9yb290TGF5ZXItPmlkKCksIEludFJlY3QoKSwgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIG1fcm9vdExheWVyLT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7CisgICAgICAgIENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkID0gbV9yb290
TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+cmVuZGVyUGFzc0lkKCk7CisgICAgICAgIE93blB0cjxD
Q1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVhdGUocmVuZGVy
UGFzc0lkLCBJbnRSZWN0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogICAgICAgICBt
X3JlbmRlclBhc3Nlc0luRHJhd09yZGVyLmFwcGVuZChyb290UmVuZGVyUGFzcy5nZXQoKSk7Ci0g
ICAgICAgIG1fcmVuZGVyUGFzc2VzLnNldChtX3Jvb3RMYXllci0+aWQoKSwgcm9vdFJlbmRlclBh
c3MucmVsZWFzZSgpKTsKKyAgICAgICAgbV9yZW5kZXJQYXNzZXMuc2V0KHJlbmRlclBhc3NJZCwg
cm9vdFJlbmRlclBhc3MucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xp
ZW50IG1ldGhvZHMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162827</attachid>
            <date>2012-09-07 11:14:55 -0700</date>
            <delta_ts>2012-09-07 12:37:07 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95500-20120907141434.patch</filename>
            <type>text/plain</type>
            <size>44931</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE1OTA5MGUyYWViNThj
OWE2Mjc1OThmNjc2OWQzYmYyNWU4ZmNmYy4uNmVjOGVlMjM4ZDBjOTgzMzE3YTZmMDEyNjA5OTRk
YWNhMzAyNzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFr
ZSBSZW5kZXJQYXNzIGlkcyBob2xkIGJvdGggZ2VuZXJhdGluZyBsYXllciBpZCBhbmQgYW4gaW5k
ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTAw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIGFsbG93cyB1cyB0byBhdm9pZCBjb21wbGV4IHJlbmRlclBhc3NJZCBtYXBwaW5ncyBi
ZXR3ZWVuCisgICAgICAgIGNvbXBvc2l0b3JzIGZvciB1YmVyY29tcC4gVGhlIHViZXJjb21wIGxh
eWVyIG5lZWRzIHRvIGFkZCBhIG51bWJlcgorICAgICAgICBvZiBSZW5kZXJQYXNzZXMgdG8gdGhl
IGZyYW1lLCBhbmQgdGhlc2UgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCBvdGhlcgorICAgICAgICBS
ZW5kZXJQYXNzZXMgaW4gdGhlIGZyYW1lLiBCeSB1c2luZyBpdHMgbGF5ZXIgaWQgYWxvbmcgd2l0
aCBhbiBleHRyYQorICAgICAgICB2YWx1ZSBpdCBkZXRlcm1pbmVzLCB0aGUgbGF5ZXIgY2FuIGNy
ZWF0ZSBhIHVuaXF1ZSBpZCB3aXRob3V0IG5lZWRpbmcKKyAgICAgICAgYWNjZXNzIHRvIGFueSBn
bG9iYWwgc3RhdGUgb3IgaWQgZ2VuZXJhdG9yLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rp
cmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGlyZWN0UmVuZGVyZXI6OmRl
Y2lkZVJlbmRlclBhc3NBbGxvY2F0aW9uc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkND
RGlyZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaDoK
KyAgICAgICAgKENDRGlyZWN0UmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OmZpbmRSZW5kZXJQYXNzQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVSZW5k
ZXJQYXNzZXNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmg6Cisg
ICAgICAgIChJZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkOjpJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzOjpJZDo6b3BlcmF0b3I8KToKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmlkKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0Ry
YXdRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3NEcmF3UXVhZC5oOgorICAgICAgICAoQ0NSZW5kZXJQYXNzRHJhd1F1YWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OnJlbmRlclBhc3NJZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6cmVuZGVyUGFzc0lkKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRS
ZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRR
dWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZCk6CisKIDIwMTItMDktMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYSBjdXN0b21pemVkIGNvcHkoKSBtZXRob2Qg
dG8gQ0NSZW5kZXJQYXNzRHJhd1F1YWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMmE4
NTlkOTc0MTVhOGQ1ZTAxNmY5NzE3Y2E4MjNjODlkOTJjYjE4OC4uYzYwOTY3MjRhOWQ0NTc5M2E0
YzA1NzA0M2ExMTdjNDlmZmZmOGU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMi0wOS0wNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBbY2hyb21pdW1dIE1ha2UgUmVuZGVyUGFzcyBpZHMgaG9sZCBib3RoIGdl
bmVyYXRpbmcgbGF5ZXIgaWQgYW5kIGFuIGluZGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTUwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkcmll
bm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlcmVy
R0xUZXN0LmNwcDoKKyAgICAgICAgKEZha2VDQ1JlbmRlcmVyQ2xpZW50OjpGYWtlQ0NSZW5kZXJl
ckNsaWVudCk6CisKIDIwMTItMDktMDYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYSBjdXN0b21pemVkIGNvcHkoKSBtZXRob2Qg
dG8gQ0NSZW5kZXJQYXNzRHJhd1F1YWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAK
aW5kZXggNDY4OGJlZDE5YmZjNGU4MzViYWRmMzc5MjZkOTAzZDI2YTBlZDM0Zi4uNmI1Mzc4OWY1
NTNlYjVkNTA3MzZkMjdlN2Q4OGNlNTEyMjU3Y2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RS
ZW5kZXJlci5jcHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIEludFJlY3QgQ0NEaXJlY3RSZW5kZXJl
cjo6bW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERyYXdpbmdGcmFtZSYgZnJhbWUsIEZs
CiAKIHZvaWQgQ0NEaXJlY3RSZW5kZXJlcjo6ZGVjaWRlUmVuZGVyUGFzc0FsbG9jYXRpb25zRm9y
RnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYgcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIpCiB7
Ci0gICAgSGFzaE1hcDxpbnQsIGNvbnN0IENDUmVuZGVyUGFzcyo+IHJlbmRlclBhc3Nlc0luRnJh
bWU7CisgICAgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBjb25zdCBDQ1JlbmRlclBhc3MqPiBy
ZW5kZXJQYXNzZXNJbkZyYW1lOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVuZGVyUGFz
c2VzSW5EcmF3T3JkZXIuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlbmRlclBhc3Nlc0luRnJhbWUu
c2V0KHJlbmRlclBhc3Nlc0luRHJhd09yZGVyW2ldLT5pZCgpLCByZW5kZXJQYXNzZXNJbkRyYXdP
cmRlcltpXSk7CiAKLSAgICBWZWN0b3I8aW50PiBwYXNzZXNUb0RlbGV0ZTsKLSAgICBIYXNoTWFw
PGludCwgT3duUHRyPENhY2hlZFRleHR1cmU+ID46OmNvbnN0X2l0ZXJhdG9yIHBhc3NJdGVyYXRv
cjsKKyAgICBWZWN0b3I8Q0NSZW5kZXJQYXNzOjpJZD4gcGFzc2VzVG9EZWxldGU7CisgICAgSGFz
aE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q2FjaGVkVGV4dHVyZT4gPjo6Y29uc3RfaXRl
cmF0b3IgcGFzc0l0ZXJhdG9yOwogICAgIGZvciAocGFzc0l0ZXJhdG9yID0gbV9yZW5kZXJQYXNz
VGV4dHVyZXMuYmVnaW4oKTsgcGFzc0l0ZXJhdG9yICE9IG1fcmVuZGVyUGFzc1RleHR1cmVzLmVu
ZCgpOyArK3Bhc3NJdGVyYXRvcikgewogICAgICAgICBjb25zdCBDQ1JlbmRlclBhc3MqIHJlbmRl
clBhc3NJbkZyYW1lID0gcmVuZGVyUGFzc2VzSW5GcmFtZS5nZXQocGFzc0l0ZXJhdG9yLT5maXJz
dCk7CiAgICAgICAgIGlmICghcmVuZGVyUGFzc0luRnJhbWUpIHsKQEAgLTIxMiw3ICsyMTIsNyBA
QCBib29sIENDRGlyZWN0UmVuZGVyZXI6OnVzZVJlbmRlclBhc3MoRHJhd2luZ0ZyYW1lJiBmcmFt
ZSwgY29uc3QgQ0NSZW5kZXJQYXNzKiByZQogICAgIHJldHVybiBiaW5kRnJhbWVidWZmZXJUb1Rl
eHR1cmUoZnJhbWUsIHRleHR1cmUsIHJlbmRlclBhc3MtPm91dHB1dFJlY3QoKSk7CiB9CiAKLWJv
b2wgQ0NEaXJlY3RSZW5kZXJlcjo6aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChp
bnQgaWQpIGNvbnN0Citib29sIENDRGlyZWN0UmVuZGVyZXI6OmhhdmVDYWNoZWRSZXNvdXJjZXNG
b3JSZW5kZXJQYXNzSWQoQ0NSZW5kZXJQYXNzOjpJZCBpZCkgY29uc3QKIHsKICAgICBDYWNoZWRU
ZXh0dXJlKiB0ZXh0dXJlID0gbV9yZW5kZXJQYXNzVGV4dHVyZXMuZ2V0KGlkKTsKICAgICByZXR1
cm4gdGV4dHVyZSAmJiB0ZXh0dXJlLT5pZCgpICYmIHRleHR1cmUtPmlzQ29tcGxldGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RGlyZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGlyZWN0UmVuZGVyZXIuaAppbmRleCAyOTQxNTJjZGRmM2E1NWVhZWU4Y2FjMjM1
YjMxYTJiOWUwMjM3MzAwLi43M2Q2MjRmYmEyMzZkYjY5YTY4YmQ5ZWZlMmU1ZDlhZjYzOTI5M2Q0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RpcmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEaXJlY3RSZW5kZXJlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlUHJvdmlkZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVSZW5k
ZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0JiByZW5kZXJQ
YXNzZXNJbkRyYXdPcmRlcikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6
OklkKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lKGNvbnN0IEND
UmVuZGVyUGFzc0xpc3QmIHJlbmRlclBhc3Nlc0luRHJhd09yZGVyLCBjb25zdCBDQ1JlbmRlclBh
c3NJZEhhc2hNYXAmIHJlbmRlclBhc3Nlc0J5SWQpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6CkBA
IC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVN
YXRyaWNlcyhEcmF3aW5nRnJhbWUmLCBjb25zdCBJbnRSZWN0JiBkcmF3UmVjdCwgYm9vbCBmbGlw
WSk7CiAgICAgc3RhdGljIEludFJlY3QgbW92ZVNjaXNzb3JUb1dpbmRvd1NwYWNlKGNvbnN0IERy
YXdpbmdGcmFtZSYsIEZsb2F0UmVjdCBzY2lzc29yUmVjdCk7CiAKLSAgICBib29sIGhhdmVDYWNo
ZWRSZXNvdXJjZXMoaW50IHJlbmRlclBhc3NJZCkgY29uc3Q7CisgICAgYm9vbCBoYXZlQ2FjaGVk
UmVzb3VyY2VzKENDUmVuZGVyUGFzczo6SWQpIGNvbnN0OwogICAgIHN0YXRpYyBJbnRTaXplIHJl
bmRlclBhc3NUZXh0dXJlU2l6ZShjb25zdCBDQ1JlbmRlclBhc3MqKTsKICAgICBzdGF0aWMgR0Mz
RGVudW0gcmVuZGVyUGFzc1RleHR1cmVGb3JtYXQoY29uc3QgQ0NSZW5kZXJQYXNzKik7CiAKQEAg
LTExOCw3ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRHJhd2lu
Z0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoRHJhd2lu
Z0ZyYW1lKERyYXdpbmdGcmFtZSYpID0gMDsKIAotICAgIEhhc2hNYXA8aW50LCBPd25QdHI8Q2Fj
aGVkVGV4dHVyZT4gPiBtX3JlbmRlclBhc3NUZXh0dXJlczsKKyAgICBIYXNoTWFwPENDUmVuZGVy
UGFzczo6SWQsIE93blB0cjxDYWNoZWRUZXh0dXJlPiA+IG1fcmVuZGVyUGFzc1RleHR1cmVzOwog
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBkNDU2N2NiZTQyMjk0OGM5YzUw
MjAzMjA4YmFkYzY1NWVmNGMzYzcxLi40NDdjMzJmMmJjZDQ3NzdiNzk4ZmNkYWMwNWExZWU5NTJj
MzhhYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzA5
LDcgKzMwOSw3IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGVuZCA9IEND
TGF5ZXJJdGVyYXRvclR5cGU6OmVuZChmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bihmcmFtZS5yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIGludCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBpdC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIo
KS0+aWQoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCB0YXJnZXRSZW5kZXJQYXNzSWQgPSBp
dC50YXJnZXRSZW5kZXJTdXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNz
SWQoKTsKICAgICAgICAgQ0NSZW5kZXJQYXNzKiB0YXJnZXRSZW5kZXJQYXNzID0gZnJhbWUucmVu
ZGVyUGFzc2VzQnlJZC5nZXQodGFyZ2V0UmVuZGVyUGFzc0lkKTsKIAogICAgICAgICBvY2NsdXNp
b25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIGJvb2wgQ0NMYXll
clRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAg
ICAgICAgIENDQXBwZW5kUXVhZHNEYXRhIGFwcGVuZFF1YWRzRGF0YTsKIAogICAgICAgICBpZiAo
aXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSkgewotICAgICAgICAgICAg
aW50IGNvbnRyaWJ1dGluZ1JlbmRlclBhc3NJZCA9IGl0LT5pZCgpOworICAgICAgICAgICAgQ0NS
ZW5kZXJQYXNzOjpJZCBjb250cmlidXRpbmdSZW5kZXJQYXNzSWQgPSBpdC0+cmVuZGVyU3VyZmFj
ZSgpLT5yZW5kZXJQYXNzSWQoKTsKICAgICAgICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0
aW5nUmVuZGVyUGFzcyA9IGZyYW1lLnJlbmRlclBhc3Nlc0J5SWQuZ2V0KGNvbnRyaWJ1dGluZ1Jl
bmRlclBhc3NJZCk7CiAgICAgICAgICAgICB0YXJnZXRSZW5kZXJQYXNzLT5hcHBlbmRRdWFkc0Zv
clJlbmRlclN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsICZvY2NsdXNp
b25UcmFja2VyLCBhcHBlbmRRdWFkc0RhdGEpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJl
c2VudHNJdHNlbGYoKSAmJiAhaXQtPnZpc2libGVDb250ZW50UmVjdCgpLmlzRW1wdHkoKSkgewpA
QCAtNDEyLDE0ICs0MTIsMTQgQEAgSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcm9vdFNjcm9sbExheWVySW1wbC0+Y2hpbGRyZW4o
KVswXS0+Y29udGVudEJvdW5kcygpOwogfQogCi1zdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyog
ZmluZFJlbmRlclBhc3NCeUlkKGludCByZW5kZXJQYXNzSWQsIGNvbnN0IENDTGF5ZXJUcmVlSG9z
dEltcGw6OkZyYW1lRGF0YSYgZnJhbWUpCitzdGF0aWMgaW5saW5lIENDUmVuZGVyUGFzcyogZmlu
ZFJlbmRlclBhc3NCeUlkKENDUmVuZGVyUGFzczo6SWQgcmVuZGVyUGFzc0lkLCBjb25zdCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzc0lk
SGFzaE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmcmFtZS5yZW5kZXJQYXNzZXNCeUlkLmZpbmQo
cmVuZGVyUGFzc0lkKTsKICAgICBBU1NFUlQoaXQgIT0gZnJhbWUucmVuZGVyUGFzc2VzQnlJZC5l
bmQoKSk7CiAgICAgcmV0dXJuIGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJl
bW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShpbnQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQorc3RhdGljIHZvaWQgcmVtb3ZlUmVuZGVy
UGFzc2VzUmVjdXJzaXZlKENDUmVuZGVyUGFzczo6SWQgcmVtb3ZlUmVuZGVyUGFzc0lkLCBDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEmIGZyYW1lKQogewogICAgIENDUmVuZGVyUGFzcyog
cmVtb3ZlUmVuZGVyUGFzcyA9IGZpbmRSZW5kZXJQYXNzQnlJZChyZW1vdmVSZW5kZXJQYXNzSWQs
IGZyYW1lKTsKICAgICBzaXplX3QgcmVtb3ZlSW5kZXggPSBmcmFtZS5yZW5kZXJQYXNzZXMuZmlu
ZChyZW1vdmVSZW5kZXJQYXNzKTsKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCByZW1v
dmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUoaW50IHJlbW92ZVJlbmRlclBhc3NJZCwgQ0NMYXllclRy
ZWVIb3N0SQogICAgICAgICBpZiAoY3VycmVudFF1YWQtPm1hdGVyaWFsKCkgIT0gQ0NEcmF3UXVh
ZDo6UmVuZGVyUGFzcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGludCBuZXh0
UmVtb3ZlUmVuZGVyUGFzc0lkID0gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6Om1hdGVyaWFsQ2FzdChj
dXJyZW50UXVhZCktPnJlbmRlclBhc3NJZCgpOworICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5l
eHRSZW1vdmVSZW5kZXJQYXNzSWQgPSBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0
KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCk7CiAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nl
c1JlY3Vyc2l2ZShuZXh0UmVtb3ZlUmVuZGVyUGFzc0lkLCBmcmFtZSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggYjFlMzE2MjNjMjgyYjUwZjg5MzM4YzQ3Y2ZkNDA2
ZWU3MjIwY2M1Mi4uYTY3NzE0NTRmZGJiMjc4MTcwMDRkOTllYTk3N2JiNzI1NmJkNGNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0zOCwyMiArMzgsMjMgQEAgdXNpbmcgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
T3duUHRyPENDUmVuZGVyUGFzcz4gQ0NSZW5kZXJQYXNzOjpjcmVhdGUoaW50IGlkLCBJbnRSZWN0
IG91dHB1dFJlY3QsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybVRvUm9vdFRhcmdldCkKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6
OmNyZWF0ZShJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1Jvb3RUYXJnZXQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDQ1JlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHRyYW5zZm9ybVRvUm9vdFRh
cmdldCkpOwogfQogCi1DQ1JlbmRlclBhc3M6OkNDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qg
b3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtVG9Sb290VGFyZ2V0KQorQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoSWQgaWQsIEludFJl
Y3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9Sb290VGFyZ2V0KQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHJhbnNmb3JtVG9S
b290VGFyZ2V0KHRyYW5zZm9ybVRvUm9vdFRhcmdldCkKICAgICAsIG1fb3V0cHV0UmVjdChvdXRw
dXRSZWN0KQogICAgICwgbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSkKICAgICAsIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKGZhbHNlKQogewotICAgIEFTU0VS
VChpZCA+IDApOworICAgIEFTU0VSVChpZC5sYXllcklkID4gMCk7CisgICAgQVNTRVJUKGlkLmlu
ZGV4ID49IDApOwogfQogCi1QYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gQ0NSZW5kZXJQYXNzOjpj
b3B5KGludCBuZXdJZCkgY29uc3QKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBh
c3M6OmNvcHkoSWQgbmV3SWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG5ld0lkICE9IG1faWQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDQwZWYyMTI4MjQ3ZDI2ZTZiOTlmY2U0YWRlM2Zj
ODA0NDkwODZiZDUuLmNlNzE0YWE0NzRiMjlmNGI2ZjJmMGQ0Y2JmZDNjMTE5OTEyNmE5ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC02MCwxMCArNjAsMjcgQEAgdHlwZWRlZiBWZWN0b3I8
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IENDU2hhcmVkUXVhZFN0YXRlTGlzdDsKIGNsYXNz
IENDUmVuZGVyUGFzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShpbnQg
aWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKKyAgICBzdHJ1Y3QgSWQgeworICAgICAgICBp
bnQgbGF5ZXJJZDsKKyAgICAgICAgaW50IGluZGV4OworCisgICAgICAgIElkKGludCBsYXllcklk
LCBpbnQgaW5kZXgpCisgICAgICAgICAgICA6IGxheWVySWQobGF5ZXJJZCkKKyAgICAgICAgICAg
ICwgaW5kZXgoaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChsYXllcklkID4g
MCk7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPj0gMCk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSWQmIG90aGVyKSBjb25zdCB7IHJldHVybiBsYXllcklk
ID09IG90aGVyLmxheWVySWQgJiYgaW5kZXggPT0gb3RoZXIuaW5kZXg7IH0KKyAgICAgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IElkJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSWQmIG90aGVyKSBjb25zdCB7
IHJldHVybiBsYXllcklkIDwgb3RoZXIubGF5ZXJJZCB8fCAobGF5ZXJJZCA9PSBvdGhlci5sYXll
cklkICYmIGluZGV4IDwgb3RoZXIuaW5kZXgpOyB9CisgICAgfTsKKworICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKElkLCBJbnRSZWN0IG91dHB1dFJlY3QsIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvUm9vdFRhcmdldCk7
CiAKICAgICAvLyBBIHNoYWxsb3cgY29weSBvZiB0aGUgcmVuZGVyIHBhc3MsIHdoaWNoIGRvZXMg
bm90IGluY2x1ZGUgaXRzIHF1YWRzLgotICAgIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBjb3B5
KGludCBuZXdJZCkgY29uc3Q7CisgICAgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNvcHkoSWQg
bmV3SWQpIGNvbnN0OwogCiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvckxheWVyKENDTGF5ZXJJbXBs
KiwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCosIENDQXBwZW5kUXVhZHNEYXRhJik7CiAgICAgdm9p
ZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCosIGNvbnN0IEND
UmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcywgQ0NPY2NsdXNpb25UcmFja2VySW1w
bCosIENDQXBwZW5kUXVhZHNEYXRhJik7CkBAIC03MSw3ICs4OCw3IEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkTGlzdDsg
fQogCi0gICAgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIElkIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQogCiAgICAgLy8gRklYTUU6IE1vZGlmeSB0aGlzIHRyYW5zZm9y
bSB3aGVuIG1lcmdpbmcgdGhlIFJlbmRlclBhc3MgaW50byBhIHBhcmVudCBjb21wb3NpdG9yLgog
ICAgIC8vIFRyYW5zZm9ybXMgZnJvbSBxdWFkJ3Mgb3JpZ2luYWwgY29udGVudCBzcGFjZSB0byB0
aGUgcm9vdCB0YXJnZXQncyBjb250ZW50IHNwYWNlLgpAQCAtOTUsOSArMTEyLDkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KICAgICB2
b2lkIHNldEhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZShib29sIGhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSkgeyBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRl
VGFyZ2V0U3VyZmFjZSA9IGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsgfQog
cHJvdGVjdGVkOgotICAgIENDUmVuZGVyUGFzcyhpbnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFy
Z2V0KTsKKyAgICBDQ1JlbmRlclBhc3MoSWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9Sb290VGFyZ2V0KTsKIAot
ICAgIGludCBtX2lkOworICAgIElkIG1faWQ7CiAgICAgQ0NRdWFkTGlzdCBtX3F1YWRMaXN0Owog
ICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybVRvUm9vdFRhcmdldDsKQEAg
LTEwOSw5ICsxMjYsMjkgQEAgcHJvdGVjdGVkOgogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0
aW9ucyBtX2JhY2tncm91bmRGaWx0ZXJzOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8Q0NSZW5kZXJQ
YXNzKj4gQ0NSZW5kZXJQYXNzTGlzdDsKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIE93blB0cjxDQ1Jl
bmRlclBhc3M+ID4gQ0NSZW5kZXJQYXNzSWRIYXNoTWFwOworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29y
ZTo6Q0NSZW5kZXJQYXNzOjpJZD4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpDQ1JlbmRl
clBhc3M6OklkPiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IGZh
bHNlOworICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKKyAg
ICBzdGF0aWMgV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCBlbXB0eVZhbHVlKCkgeyByZXR1cm4g
V2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCgwLCAwKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkJiBzbG90KSB7IHNsb3Qg
PSBXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkKC0xLCAtMSk7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c0RlbGV0ZWRWYWx1ZShXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkIHZhbHVlKSB7IHJldHVybiB2
YWx1ZS5sYXllcklkID09IC0xICYmIHZhbHVlLmluZGV4ID09IC0xOyB9Cit9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSW50SGFzaDxXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OklkPiB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCYga2V5KSB7IHJl
dHVybiBQYWlySGFzaDxpbnQsIGludD46Omhhc2goc3RkOjptYWtlX3BhaXIoa2V5LmxheWVySWQs
IGtleS5pbmRleCkpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6Q0NS
ZW5kZXJQYXNzOjpJZCYgYSwgY29uc3QgV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpJZCYgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1w
dHlPckRlbGV0ZWQgPSB0cnVlOworfTsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdl
YkNvcmU6OkNDUmVuZGVyUGFzczo6SWQ+IHsKKyAgICB0eXBlZGVmIEludEhhc2g8V2ViQ29yZTo6
Q0NSZW5kZXJQYXNzOjpJZD4gSGFzaDsKK307Cit9IC8vIG5hbWVzcGFjZSBXVEYKIAotfQorbmFt
ZXNwYWNlIFdlYkNvcmUgewordHlwZWRlZiBWZWN0b3I8Q0NSZW5kZXJQYXNzKj4gQ0NSZW5kZXJQ
YXNzTGlzdDsKK3R5cGVkZWYgSGFzaE1hcDxDQ1JlbmRlclBhc3M6OklkLCBPd25QdHI8Q0NSZW5k
ZXJQYXNzPiA+IENDUmVuZGVyUGFzc0lkSGFzaE1hcDsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5jcHAKaW5kZXgg
OGQyODY4ZTIzMDVjZDdhOTk5MjE2Yzc1NmRhMjc0Mzg3YTk0OWI5OC4uNDMyNDExMGI4Nzc0ZmFj
ZDYwMzhmZWYyNTM0MDVkNjNkYThjZWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6
OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIGNvbnN0
IENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50
UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNj
YWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRY
LCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKQorUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3
UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NSZW5kZXJQYXNz
OjpJZCByZW5kZXJQYXNzSWQsIGJvb2wgaXNSZXBsaWNhLCBjb25zdCBDQ1Jlc291cmNlUHJvdmlk
ZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hh
bmdlZFNpbmNlTGFzdEZyYW1lLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tU
ZXhDb29yZFNjYWxlWSwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENv
b3JkT2Zmc2V0WSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyUGFzc0RyYXdR
dWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIHJlbmRlclBhc3NJZCwgaXNSZXBsaWNhLCBt
YXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIG1hc2tUZXhDb29y
ZFNjYWxlWCwgbWFza1RleENvb3JkU2NhbGVZLCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4
Q29vcmRPZmZzZXRZKSk7CiB9CiAKLUNDUmVuZGVyUGFzc0RyYXdRdWFkOjpDQ1JlbmRlclBhc3NE
cmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJ
bnRSZWN0JiBxdWFkUmVjdCwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVz
b3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYg
Y29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwg
ZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9h
dCBtYXNrVGV4Q29vcmRPZmZzZXRZKQorQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OkNDUmVuZGVyUGFz
c0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCwgYm9vbCBp
c1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwg
Y29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tU
ZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29v
cmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKQogICAgIDogQ0NEcmF3UXVhZChz
aGFyZWRRdWFkU3RhdGUsIENDRHJhd1F1YWQ6OlJlbmRlclBhc3MsIHF1YWRSZWN0KQogICAgICwg
bV9yZW5kZXJQYXNzSWQocmVuZGVyUGFzc0lkKQogICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNh
KQpAQCAtNDUsNyArNDUsOCBAQCBDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Q0NSZW5kZXJQYXNzRHJh
d1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdAogICAgICwgbV9tYXNr
VGV4Q29vcmRPZmZzZXRYKG1hc2tUZXhDb29yZE9mZnNldFgpCiAgICAgLCBtX21hc2tUZXhDb29y
ZE9mZnNldFkobWFza1RleENvb3JkT2Zmc2V0WSkKIHsKLSAgICBBU1NFUlQobV9yZW5kZXJQYXNz
SWQgPiAwKTsKKyAgICBBU1NFUlQobV9yZW5kZXJQYXNzSWQubGF5ZXJJZCA+IDApOworICAgIEFT
U0VSVChtX3JlbmRlclBhc3NJZC5pbmRleCA+PSAwKTsKIH0KIAogY29uc3QgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3
UXVhZCogcXVhZCkKQEAgLTU0LDcgKzU1LDcgQEAgY29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQq
IENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRlcmlhbENhc3QoY29uc3QgQ0NEcmF3UXVhZCoKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NSZW5kZXJQYXNzRHJhd1F1YWQqPihxdWFkKTsK
IH0KIAotUGFzc093blB0cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gQ0NSZW5kZXJQYXNzRHJhd1F1
YWQ6OmNvcHkoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIGNvcGllZFNoYXJlZFF1YWRTdGF0ZSwg
aW50IGNvcGllZFJlbmRlclBhc3NJZCkgY29uc3QKK1Bhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJh
d1F1YWQ+IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjb3B5KGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBjb3BpZWRTaGFyZWRRdWFkU3RhdGUsIENDUmVuZGVyUGFzczo6SWQgY29waWVkUmVuZGVyUGFz
c0lkKSBjb25zdAogewogICAgIHVuc2lnbmVkIGJ5dGVzID0gc2l6ZSgpOwogICAgIEFTU0VSVChi
eXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaAppbmRleCBjNGMzNzcw
MGRlZjMzM2MwZWZiNTc4Y2ExNWQ1YmE2OGU3NzVkOTBmLi4yOTEzNmVmOTg2ZDVkZWFkMWY0ZWUy
ZjJmMWFkNjQwZjMzYzc4YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzc0RyYXdRdWFk
LmgKQEAgLTI3LDIwICsyNywxOSBAQAogI2RlZmluZSBDQ1JlbmRlclBhc3NEcmF3UXVhZF9oCiAK
ICNpbmNsdWRlICJDQ0RyYXdRdWFkLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAjaW5j
bHVkZSAiQ0NSZXNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NS
ZW5kZXJQYXNzOwotCiBjbGFzcyBDQ1JlbmRlclBhc3NEcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdR
dWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3NEcmF3UXVhZCk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJhd1F1YWQ+IGNyZWF0
ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBpbnQgcmVuZGVyUGFz
c0lkLCBib29sIGlzUmVwbGljYSwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1hc2tS
ZXNvdXJjZUlkLCBjb25zdCBJbnRSZWN0JiBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwg
ZmxvYXQgbWFza1RleENvb3JkU2NhbGVYLCBmbG9hdCBtYXNrVGV4Q29vcmRTY2FsZVksIGZsb2F0
IG1hc2tUZXhDb29yZE9mZnNldFgsIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkpOworICAgIHN0
YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyUGFzc0RyYXdRdWFkPiBjcmVhdGUoY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNz
SWQsIGJvb2wgaXNSZXBsaWNhLCBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jl
c291cmNlSWQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBm
bG9hdCBtYXNrVGV4Q29vcmRTY2FsZVgsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWSwgZmxvYXQg
bWFza1RleENvb3JkT2Zmc2V0WCwgZmxvYXQgbWFza1RleENvb3JkT2Zmc2V0WSk7CiAKLSAgICBp
bnQgcmVuZGVyUGFzc0lkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJQYXNzSWQ7IH0KKyAgICBD
Q1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyUGFz
c0lkOyB9CiAgICAgYm9vbCBpc1JlcGxpY2EoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwbGljYTsg
fQogICAgIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWFza1Jlc291cmNlSWQ7IH0KICAgICBjb25zdCBJbnRSZWN0JiBjb250
ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNDaGFu
Z2VkU2luY2VMYXN0RnJhbWU7IH0KQEAgLTUxLDEyICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgbWFza1RleENvb3JkT2Zmc2V0WCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFza1RleENvb3JkT2Zm
c2V0WDsgfQogICAgIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFkoKSBjb25zdCB7IHJldHVybiBt
X21hc2tUZXhDb29yZE9mZnNldFk7IH0KIAotICAgIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzRHJh
d1F1YWQ+IGNvcHkoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIGNvcGllZFNoYXJlZFF1YWRTdGF0
ZSwgaW50IGNvcGllZFJlbmRlclBhc3NJZCkgY29uc3Q7CisgICAgUGFzc093blB0cjxDQ1JlbmRl
clBhc3NEcmF3UXVhZD4gY29weShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogY29waWVkU2hhcmVk
UXVhZFN0YXRlLCBDQ1JlbmRlclBhc3M6OklkIGNvcGllZFJlbmRlclBhc3NJZCkgY29uc3Q7CiAK
IHByaXZhdGU6Ci0gICAgQ0NSZW5kZXJQYXNzRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3Rh
dGUqLCBjb25zdCBJbnRSZWN0JiwgaW50IHJlbmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIEND
UmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVj
dCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxl
WCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBm
bG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsKKyAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNvbnN0IEludFJlY3QmLCBDQ1JlbmRlclBhc3M6OklkIHJl
bmRlclBhc3NJZCwgYm9vbCBpc1JlcGxpY2EsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJ
ZCBtYXNrUmVzb3VyY2VJZCwgY29uc3QgSW50UmVjdCYgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0
RnJhbWUsIGZsb2F0IG1hc2tUZXhDb29yZFNjYWxlWCwgZmxvYXQgbWFza1RleENvb3JkU2NhbGVZ
LCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBmbG9hdCBtYXNrVGV4Q29vcmRPZmZzZXRZKTsK
IAotICAgIGludCBtX3JlbmRlclBhc3NJZDsKKyAgICBDQ1JlbmRlclBhc3M6OklkIG1fcmVuZGVy
UGFzc0lkOwogICAgIGJvb2wgbV9pc1JlcGxpY2E7CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpS
ZXNvdXJjZUlkIG1fbWFza1Jlc291cmNlSWQ7CiAgICAgSW50UmVjdCBtX2NvbnRlbnRzQ2hhbmdl
ZFNpbmNlTGFzdEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKaW5kZXggNTBh
NjM0OWQ1ZTFmZDViYWY1MTRhYjcxMDUxODE5ZTMwODkxMTgxYS4uMTYzOTNiOTMwZDkxNGE1ZGVj
OTdlMzJhYjgyOWRiNDkzZmYxN2ZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3Bw
CkBAIC0xODEsMTYgKzE4MSwyNCBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZUNsaXBw
ZWRSZWN0SW5UYXJnZXQoY29uc3QgQ0NMYXllckltcGwqIG93bmluZ0xheWVyKQogICAgIHJldHVy
biBjbGlwcGVkUmVjdEluVGFyZ2V0OwogfQogCitDQ1JlbmRlclBhc3M6OklkIENDUmVuZGVyU3Vy
ZmFjZTo6cmVuZGVyUGFzc0lkKCkKK3sKKyAgICBpbnQgbGF5ZXJJZCA9IG1fb3duaW5nTGF5ZXIt
PmlkKCk7CisgICAgaW50IHN1YklkID0gMDsKKyAgICBBU1NFUlQobGF5ZXJJZCA+IDApOworICAg
IHJldHVybiBDQ1JlbmRlclBhc3M6OklkKGxheWVySWQsIHN1YklkKTsKK30KKwogdm9pZCBDQ1Jl
bmRlclN1cmZhY2U6OmFwcGVuZFJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NTaW5rJiBwYXNzU2lu
aykKIHsKLSAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiBwYXNzID0gQ0NSZW5kZXJQYXNzOjpjcmVh
dGUobV9vd25pbmdMYXllci0+aWQoKSwgbV9jb250ZW50UmVjdCwgbV9zY3JlZW5TcGFjZVRyYW5z
Zm9ybSk7CisgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3Jl
YXRlKHJlbmRlclBhc3NJZCgpLCBtX2NvbnRlbnRSZWN0LCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jt
KTsKICAgICBwYXNzLT5zZXREYW1hZ2VSZWN0KG1fZGFtYWdlVHJhY2tlci0+Y3VycmVudERhbWFn
ZVJlY3QoKSk7CiAgICAgcGFzcy0+c2V0RmlsdGVycyhtX293bmluZ0xheWVyLT5maWx0ZXJzKCkp
OwogICAgIHBhc3MtPnNldEJhY2tncm91bmRGaWx0ZXJzKG1fb3duaW5nTGF5ZXItPmJhY2tncm91
bmRGaWx0ZXJzKCkpOwogICAgIHBhc3NTaW5rLmFwcGVuZFJlbmRlclBhc3MocGFzcy5yZWxlYXNl
KCkpOwogfQogCi12b2lkIENDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIENDQXBwZW5kUXVhZHNEYXRhJiBhcHBlbmRRdWFkc0RhdGEsIGJvb2wgZm9yUmVw
bGljYSwgaW50IHJlbmRlclBhc3NJZCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgQ0NBcHBlbmRRdWFkc0RhdGEmIGFwcGVuZFF1YWRzRGF0
YSwgYm9vbCBmb3JSZXBsaWNhLCBDQ1JlbmRlclBhc3M6OklkIHJlbmRlclBhc3NJZCkKIHsKICAg
ICBBU1NFUlQoIWZvclJlcGxpY2EgfHwgbV9vd25pbmdMYXllci0+aGFzUmVwbGljYSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAwOWEyODQ2NzZmMjI4MjI5NDI1MjViMTI1
ZjNhNjNmM2NjODdiY2IzLi4yZDdhYWE5M2VmZDVmZWUzYzc1NTBmNmFhMDM4M2E2ZjNmNjYxM2Zk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMjksNiArMjksNyBAQAogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgi
CiAjaW5jbHVkZSAiQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ0NEYW1hZ2VUcmFja2VyOwogY2xhc3MgQ0NRdWFkU2luazsKLWNsYXNzIEND
UmVuZGVyUGFzczsKIGNsYXNzIENDUmVuZGVyUGFzc1Npbms7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIFRleHRTdHJlYW07CkBAIC0xMDYsOCArMTA2LDEwIEBAIHB1YmxpYzoKIAogICAgIEND
RGFtYWdlVHJhY2tlciogZGFtYWdlVHJhY2tlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlVHJh
Y2tlci5nZXQoKTsgfQogCisgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQoKTsKKwog
ICAgIHZvaWQgYXBwZW5kUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc1NpbmsmKTsKLSAgICB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ0FwcGVuZFF1YWRzRGF0YSYsIGJvb2wgZm9yUmVw
bGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiwgQ0NBcHBlbmRRdWFkc0RhdGEmLCBib29sIGZvclJlcGxpY2EsIENDUmVuZGVyUGFzczo6SWQg
cmVuZGVyUGFzc0lkKTsKIAogcHJpdmF0ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyZXIuaAppbmRleCA5NDZhZWM2MzMzNjI5ZWFjY2JhODg2ODNjYTFkOTc4
NGRhNDU5NDM2Li4wNDdiZDgwZjMxNTdhYmFlOTNjZTMxYjRmZGI5ZDdlYTYzNmUxNGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJlci5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgdmlld3BvcnRDaGFuZ2VkKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUmVuZGVy
UGFzc0FsbG9jYXRpb25zRm9yRnJhbWUoY29uc3QgQ0NSZW5kZXJQYXNzTGlzdCYpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyUGFzc0lkKGludCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZUNhY2hlZFJlc291cmNl
c0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZShjb25zdCBDQ1JlbmRlclBhc3NMaXN0Jiwg
Y29uc3QgQ0NSZW5kZXJQYXNzSWRIYXNoTWFwJikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRHJhd1F1YWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NEcmF3UXVhZFRlc3QuY3BwCmluZGV4IDZhOTI2YjA5Y2QxZTFjZThj
MzUxMDgxNzc1NWI0MjhjNTU1MDk3MDcuLjNjNWMzODRmOGY1NTU3OTA1MmM2MzkzMTQxODczNjYy
MjMwMjgxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEcmF3
UXVhZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEcmF3UXVh
ZFRlc3QuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgVEVTVChDQ0RyYXdRdWFkVGVzdCwgY29weUlP
U3VyZmFjZURyYXdRdWFkKQogCiBURVNUKENDRHJhd1F1YWRUZXN0LCBjb3B5UmVuZGVyUGFzc0Ry
YXdRdWFkKQogewotICAgIGludCByZW5kZXJQYXNzSWQgPSAyMjsKKyAgICBDQ1JlbmRlclBhc3M6
OklkIHJlbmRlclBhc3NJZCgyMiwgNjQpOwogICAgIGJvb2wgaXNSZXBsaWNhID0gdHJ1ZTsKICAg
ICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQgPSA3ODsKICAg
ICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lKDQyLCAxMSwgNzQsIDI0KTsK
QEAgLTIxOSw3ICsyMTksNyBAQCBURVNUKENDRHJhd1F1YWRUZXN0LCBjb3B5UmVuZGVyUGFzc0Ry
YXdRdWFkKQogICAgIGZsb2F0IG1hc2tUZXhDb29yZE9mZnNldFggPSAtNDU7CiAgICAgZmxvYXQg
bWFza1RleENvb3JkT2Zmc2V0WSA9IC0yMTsKIAotICAgIGludCBjb3BpZWRSZW5kZXJQYXNzSWQg
PSAyMzU7CisgICAgQ0NSZW5kZXJQYXNzOjpJZCBjb3BpZWRSZW5kZXJQYXNzSWQoMjM1LCAxMSk7
CiAKICAgICBDUkVBVEVfU0hBUkVEX1NUQVRFKCk7CiAgICAgQ1JFQVRFX1FVQURfOF8xKENDUmVu
ZGVyUGFzc0RyYXdRdWFkLCByZW5kZXJQYXNzSWQsIGlzUmVwbGljYSwgbWFza1Jlc291cmNlSWQs
IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLCBtYXNrVGV4Q29vcmRTY2FsZVgsIG1hc2tU
ZXhDb29yZFNjYWxlWSwgbWFza1RleENvb3JkT2Zmc2V0WCwgbWFza1RleENvb3JkT2Zmc2V0WSwg
Y29waWVkUmVuZGVyUGFzc0lkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNzk2YTMxOThlNjY1Y2Ex
NDMwYjdkODA0NzQxMzc1ZDVmZjRjZmE3NC4uZDdlOTU1NzgzMzRjOGNlMGMxZTRkMjRkZWVhMmVl
M2U3YmEyODEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM0NzUsMTMgKzM0NzUsMTQgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQog
ICAgIGdyYW5kQ2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAogICAgIENDVGlsZWRMYXll
ckltcGwqIGNoaWxkUHRyID0gY2hpbGQuZ2V0KCk7CisgICAgQ0NSZW5kZXJQYXNzOjpJZCBjaGls
ZFBhc3NJZChjaGlsZFB0ci0+aWQoKSwgMCk7CiAKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRD
aGlsZC5yZWxlYXNlKCkpOwogICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkLnJlbGVhc2UoKSk7CiAg
ICAgbXlIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3QucmVsZWFzZSgpKTsKICAgICBteUhvc3RJ
bXBsLT5zZXRWaWV3cG9ydFNpemUocm9vdFJlY3Quc2l6ZSgpLCByb290UmVjdC5zaXplKCkpOwog
Ci0gICAgRVhQRUNUX0ZBTFNFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
bXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJ
ZChjaGlsZFBhc3NJZCkpOwogCiAgICAgewogICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpG
cmFtZURhdGEgZnJhbWU7CkBAIC0zNDkxLDcgKzM0OTIsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAgICAgfQogCiAgICAgLy8g
V2Ugc2hvdWxkIGhhdmUgY2FjaGVkIHRleHR1cmVzIGZvciBzdXJmYWNlIDIuCi0gICAgRVhQRUNU
X1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRl
clBhc3NJZChjaGlsZFB0ci0+aWQoKSkpOworICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJl
bmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQYXNzSWQp
KTsKIAogICAgIHsKICAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1l
OwpAQCAtMzUwMSw3ICszNTAyLDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCB0
ZXh0dXJlQ2FjaGluZ1dpdGhTY2lzc29yKQogICAgIH0KIAogICAgIC8vIFdlIHNob3VsZCBzdGls
bCBoYXZlIGNhY2hlZCB0ZXh0dXJlcyBmb3Igc3VyZmFjZSAyIGFmdGVyIGRyYXdpbmcgd2l0aCBu
byBkYW1hZ2UuCi0gICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cmVuZGVyZXIoKS0+aGF2ZUNh
Y2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChjaGlsZFB0ci0+aWQoKSkpOworICAgIEVYUEVD
VF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCktPmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5k
ZXJQYXNzSWQoY2hpbGRQYXNzSWQpKTsKIAogICAgIC8vIERhbWFnZSBhIHNpbmdsZSB0aWxlIG9m
IHN1cmZhY2UgMi4KICAgICBjaGlsZFB0ci0+c2V0VXBkYXRlUmVjdChJbnRSZWN0KDEwLCAxMCwg
MTAsIDEwKSk7CkBAIC0zNTE0LDcgKzM1MTUsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHRleHR1cmVDYWNoaW5nV2l0aFNjaXNzb3IpCiAgICAgfQogCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgYSBjYWNoZWQgdGV4dHVyZSBmb3Igc3VyZmFjZSAyIGFnYWluIGV2ZW4gdGhvdWdo
IGl0IHdhcyBkYW1hZ2VkLgotICAgIEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnJlbmRlcmVyKCkt
PmhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNzSWQoY2hpbGRQdHItPmlkKCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5yZW5kZXJlcigpLT5oYXZlQ2FjaGVkUmVzb3VyY2Vz
Rm9yUmVuZGVyUGFzc0lkKGNoaWxkUGFzc0lkKSk7CiB9CiAKIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVDYWNoaW5nKQpAQCAtMzg3NiwxOCArMzg3NywxOCBA
QCBzdHJ1Y3QgUmVuZGVyUGFzc0NhY2hlRW50cnkgewogfTsKIAogc3RydWN0IFJlbmRlclBhc3NS
ZW1vdmFsVGVzdERhdGEgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIHsK
LSAgICBzdGQ6Om1hcDxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeT4gcmVuZGVyUGFzc0NhY2hl
OworICAgIHN0ZDo6bWFwPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5PiBy
ZW5kZXJQYXNzQ2FjaGU7CiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGU7CiB9OwogCiBjbGFzcyBDQ1Rlc3RSZW5kZXJQYXNzOiBwdWJsaWMgQ0NSZW5kZXJQYXNz
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0ZShp
bnQgaWQsIEludFJlY3Qgb3V0cHV0UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJvb3RUcmFuc2Zvcm0pIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1Rlc3RSZW5kZXJQYXNzKGlk
LCBvdXRwdXRSZWN0LCByb290VHJhbnNmb3JtKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1JlbmRlclBhc3M+IGNyZWF0ZShDQ1JlbmRlclBhc3M6OklkIGlkLCBJbnRSZWN0IG91dHB1dFJl
Y3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByb290VHJhbnNmb3JtKSB7IHJldHVy
biBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyhpZCwgb3V0cHV0UmVjdCwgcm9vdFRyYW5z
Zm9ybSkpOyB9CiAKICAgICB2b2lkIGFwcGVuZFF1YWQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBx
dWFkKSB7IG1fcXVhZExpc3QuYXBwZW5kKHF1YWQpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBDQ1Rl
c3RSZW5kZXJQYXNzKGludCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBhc3MoaWQsIG91dHB1dFJl
Y3QsIHJvb3RUcmFuc2Zvcm0pIHsgfQorICAgIENDVGVzdFJlbmRlclBhc3MoQ0NSZW5kZXJQYXNz
OjpJZCBpZCwgSW50UmVjdCBvdXRwdXRSZWN0LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcm9vdFRyYW5zZm9ybSkgOiBDQ1JlbmRlclBhc3MoaWQsIG91dHB1dFJlY3QsIHJvb3RUcmFu
c2Zvcm0pIHsgfQogfTsKIAogY2xhc3MgQ0NUZXN0UmVuZGVyZXIgOiBwdWJsaWMgQ0NSZW5kZXJl
ckdMLCBwdWJsaWMgQ0NSZW5kZXJlckNsaWVudCB7CkBAIC0zOTAyLDkgKzM5MDMsOSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdm9pZCBjbGVhckNhY2hlZFRleHR1cmVzKCkgeyBtX3RleHR1cmVz
LmNsZWFyKCk7IH0KLSAgICB2b2lkIHNldEhhdmVDYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJQYXNz
SWQoaW50IGlkKSB7IG1fdGV4dHVyZXMuYWRkKGlkKTsgfQorICAgIHZvaWQgc2V0SGF2ZUNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChDQ1JlbmRlclBhc3M6OklkIGlkKSB7IG1fdGV4dHVy
ZXMuYWRkKGlkKTsgfQogCi0gICAgdmlydHVhbCBib29sIGhhdmVDYWNoZWRSZXNvdXJjZXNGb3JS
ZW5kZXJQYXNzSWQoaW50IGlkKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RleHR1cmVzLmNv
bnRhaW5zKGlkKTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXZlQ2FjaGVkUmVzb3VyY2VzRm9yUmVu
ZGVyUGFzc0lkKENDUmVuZGVyUGFzczo6SWQgaWQpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
dGV4dHVyZXMuY29udGFpbnMoaWQpOyB9CiAKICAgICAvLyBDQ1JlbmRlcmVyQ2xpZW50IGltcGxl
bWVudGF0aW9uLgogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgZGV2aWNlVmlld3BvcnRTaXpl
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KQEAgLTM5MjEsNyAr
MzkyMiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgQ0NMYXllclRyZWVTZXR0aW5ncyBt
X3NldHRpbmdzOwogICAgIEludFNpemUgbV92aWV3cG9ydFNpemU7Ci0gICAgSGFzaFNldDxpbnQ+
IG1fdGV4dHVyZXM7CisgICAgSGFzaFNldDxDQ1JlbmRlclBhc3M6OklkPiBtX3RleHR1cmVzOwog
fTsKIAogc3RhdGljIHZvaWQgY29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIq
IHRlc3RTY3JpcHQsIFJlbmRlclBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhLCBDQ1Rlc3RS
ZW5kZXJlciogcmVuZGVyZXIpCkBAIC0zOTM0LDEyICszOTM1LDE3IEBAIHN0YXRpYyB2b2lkIGNv
bmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQ
YXNzUmVtb3ZhCiAgICAgY29uc3QgY2hhciogY3VycmVudENoYXIgPSB0ZXN0U2NyaXB0OwogCiAg
ICAgLy8gUHJlLWNyZWF0ZSByb290IHBhc3MKLSAgICBjaGFyIHJvb3RSZW5kZXJQYXNzSWQgPSB0
ZXN0U2NyaXB0WzBdOworICAgIENDUmVuZGVyUGFzczo6SWQgcm9vdFJlbmRlclBhc3NJZCA9IEND
UmVuZGVyUGFzczo6SWQodGVzdFNjcmlwdFswXSwgdGVzdFNjcmlwdFsxXSk7CiAgICAgT3duUHRy
PENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1Rlc3RSZW5kZXJQYXNzOjpjcmVhdGUo
cm9vdFJlbmRlclBhc3NJZCwgSW50UmVjdCgpLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsK
LSAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxjaGFyLCBSZW5k
ZXJQYXNzQ2FjaGVFbnRyeT4ocm9vdFJlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnko
cm9vdFJlbmRlclBhc3MucmVsZWFzZSgpKSkpOworICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNo
ZS5pbnNlcnQoc3RkOjpwYWlyPENDUmVuZGVyUGFzczo6SWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5
Pihyb290UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyb290UmVuZGVyUGFzcy5y
ZWxlYXNlKCkpKSk7CiAgICAgd2hpbGUgKCpjdXJyZW50Q2hhcikgewotICAgICAgICBjaGFyIHJl
bmRlclBhc3NJZCA9IGN1cnJlbnRDaGFyWzBdOworICAgICAgICBpbnQgbGF5ZXJJZCA9ICpjdXJy
ZW50Q2hhcjsKICAgICAgICAgY3VycmVudENoYXIrKzsKKyAgICAgICAgQVNTRVJUX1RSVUUoY3Vy
cmVudENoYXIpOworICAgICAgICBpbnQgaW5kZXggPSAqY3VycmVudENoYXI7CisgICAgICAgIGN1
cnJlbnRDaGFyKys7CisKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBD
Q1JlbmRlclBhc3M6OklkKGxheWVySWQsIGluZGV4KTsKIAogICAgICAgICBPd25QdHI8Q0NSZW5k
ZXJQYXNzPiByZW5kZXJQYXNzOwogCkBAIC0zOTU5LDkgKzM5NjUsMTMgQEAgc3RhdGljIHZvaWQg
Y29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRl
clBhc3NSZW1vdmEKICAgICAgICAgICAgICAgICBjdXJyZW50Q2hhcisrOwogICAgICAgICAgICAg
fSBlbHNlIGlmICgoKmN1cnJlbnRDaGFyID49ICdBJykgJiYgKCpjdXJyZW50Q2hhciA8PSAnWicp
KSB7CiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyUGFzcyBkcmF3IHF1YWQKLSAgICAgICAgICAg
ICAgICBjaGFyIG5ld1JlbmRlclBhc3NJZCA9ICpjdXJyZW50Q2hhcjsKLSAgICAgICAgICAgICAg
ICBBU1NFUlRfTkUocm9vdFJlbmRlclBhc3NJZCwgbmV3UmVuZGVyUGFzc0lkKTsKKyAgICAgICAg
ICAgICAgICBpbnQgbGF5ZXJJZCA9ICpjdXJyZW50Q2hhcjsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Q2hhcisrOworICAgICAgICAgICAgICAgIEFTU0VSVF9UUlVFKGN1cnJlbnRDaGFyKTsKKyAg
ICAgICAgICAgICAgICBpbnQgaW5kZXggPSAqY3VycmVudENoYXI7CiAgICAgICAgICAgICAgICAg
Y3VycmVudENoYXIrKzsKKyAgICAgICAgICAgICAgICBDQ1JlbmRlclBhc3M6OklkIG5ld1JlbmRl
clBhc3NJZCA9IENDUmVuZGVyUGFzczo6SWQobGF5ZXJJZCwgaW5kZXgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVF9ORShyb290UmVuZGVyUGFzc0lkLCBuZXdSZW5kZXJQYXNzSWQpOwogICAgICAg
ICAgICAgICAgIGJvb2wgaGFzVGV4dHVyZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJvb2wg
Y29udGVudHNDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKQEAgLTM5ODcsNyArMzk5
Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFy
KiB0ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlci0+c2V0SGF2ZUNhY2hlZFJlc291cmNlc0ZvclJlbmRlclBhc3NJZChuZXdSZW5kZXJQ
YXNzSWQpOwogCiAgICAgICAgICAgICAgICAgICAgIE93blB0cjxDQ1JlbmRlclBhc3M+IHJlbmRl
clBhc3MgPSBDQ1Rlc3RSZW5kZXJQYXNzOjpjcmVhdGUobmV3UmVuZGVyUGFzc0lkLCBJbnRSZWN0
KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwotICAgICAgICAgICAgICAgICAgICB0ZXN0
RGF0YS5yZW5kZXJQYXNzQ2FjaGUuaW5zZXJ0KHN0ZDo6cGFpcjxjaGFyLCBSZW5kZXJQYXNzQ2Fj
aGVFbnRyeT4obmV3UmVuZGVyUGFzc0lkLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyZW5kZXJQYXNz
LnJlbGVhc2UoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdERhdGEucmVuZGVyUGFzc0Nh
Y2hlLmluc2VydChzdGQ6OnBhaXI8Q0NSZW5kZXJQYXNzOjpJZCwgUmVuZGVyUGFzc0NhY2hlRW50
cnk+KG5ld1JlbmRlclBhc3NJZCwgUmVuZGVyUGFzc0NhY2hlRW50cnkocmVuZGVyUGFzcy5yZWxl
YXNlKCkpKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgSW50UmVjdCBx
dWFkUmVjdCA9IEludFJlY3QoMCwgMCwgMSwgMSk7CkBAIC00MDA4LDcgKzQwMTgsOSBAQCB2b2lk
IGR1bXBSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSYg
dGVzdERhdGEsIGNoYXIqIGJ1ZgogICAgIGNoYXIqIHBvcyA9IGJ1ZmZlcjsKICAgICBmb3IgKEND
UmVuZGVyUGFzc0xpc3Q6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgaXQgPSB0ZXN0RGF0YS5yZW5k
ZXJQYXNzZXMucmJlZ2luKCk7IGl0ICE9IHRlc3REYXRhLnJlbmRlclBhc3Nlcy5yZW5kKCk7ICsr
aXQpIHsKICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiBjdXJyZW50UGFzcyA9ICppdDsKLSAg
ICAgICAgKnBvcyA9IGN1cnJlbnRQYXNzLT5pZCgpOworICAgICAgICAqcG9zID0gY3VycmVudFBh
c3MtPmlkKCkubGF5ZXJJZDsKKyAgICAgICAgcG9zKys7CisgICAgICAgICpwb3MgPSBjdXJyZW50
UGFzcy0+aWQoKS5pbmRleDsKICAgICAgICAgcG9zKys7CiAKICAgICAgICAgQ0NRdWFkTGlzdDo6
Y29uc3RfaXRlcmF0b3IgcXVhZExpc3RJdGVyYXRvciA9IGN1cnJlbnRQYXNzLT5xdWFkTGlzdCgp
LmJlZ2luKCk7CkBAIC00MDIwLDcgKzQwMzIsOSBAQCB2b2lkIGR1bXBSZW5kZXJQYXNzVGVzdERh
dGEoY29uc3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSYgdGVzdERhdGEsIGNoYXIqIGJ1Zgog
ICAgICAgICAgICAgICAgIHBvcysrOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzOgotICAgICAgICAgICAgICAgICpwb3MgPSBD
Q1JlbmRlclBhc3NEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFz
c0lkKCk7CisgICAgICAgICAgICAgICAgKnBvcyA9IENDUmVuZGVyUGFzc0RyYXdRdWFkOjptYXRl
cmlhbENhc3QoY3VycmVudFF1YWQpLT5yZW5kZXJQYXNzSWQoKS5sYXllcklkOworICAgICAgICAg
ICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgICpwb3MgPSBDQ1JlbmRlclBhc3NEcmF3UXVh
ZDo6bWF0ZXJpYWxDYXN0KGN1cnJlbnRRdWFkKS0+cmVuZGVyUGFzc0lkKCkuaW5kZXg7CiAgICAg
ICAgICAgICAgICAgcG9zKys7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBk
ZWZhdWx0OgpAQCAtNDA2NCwxMTUgKzQwNzgsMTE1IEBAIFRlc3RDYXNlIHJlbW92ZVJlbmRlclBh
c3Nlc0Nhc2VzW10gPQogICAgIHsKICAgICAgICAgewogICAgICAgICAgICAgIlNpbmdsZSByb290
IHBhc3MiLAotICAgICAgICAgICAgIlJzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzXG4iCisg
ICAgICAgICAgICAiUjBzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc1xuIgogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAiU2luZ2xlIHBhc3MgLSBubyBxdWFkcyIsCi0gICAgICAgICAgICAi
UlxuIiwKLSAgICAgICAgICAgICJSXG4iCisgICAgICAgICAgICAiUjBcbiIsCisgICAgICAgICAg
ICAiUjBcbiIKICAgICAgICAgfSwgewogICAgICAgICAgICAgIlR3byBwYXNzZXMsIG5vIHJlbW92
YWwiLAotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAot
ICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iCisgICAgICAg
ICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCisgICAgICAgICAg
ICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIKICAgICAgICAgfSwgewog
ICAgICAgICAgICAgIlR3byBwYXNzZXMsIHJlbW92ZSBsYXN0IiwKLSAgICAgICAgICAgICJSc3Nz
c0FbY3Rdc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NB
c3NzXG4iCisgICAgICAgICAgICAiUjBzc3NzQTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBz
c3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc0Ewc3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAg
ICAgICAgICJIYXZlIHRleHR1cmUgYnV0IGNvbnRlbnRzIGNoYW5nZWQgLSBsZWF2ZSBwYXNzIiwK
LSAgICAgICAgICAgICJSc3Nzc0FbdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAg
ICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgorICAgICAgICAg
ICAgIlIwc3Nzc0EwW3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAorICAgICAgICAg
ICAgIlIwc3Nzc0Ewc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iCiAgICAgICAgIH0sIHsK
ICAgICAgICAgICAgICJDb250ZW50cyBkaWRuJ3QgY2hhbmdlIGJ1dCBubyB0ZXh0dXJlIC0gbGVh
dmUgcGFzcyIsCi0gICAgICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAgICAgICAiQXNz
c3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIK
KyAgICAgICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIiwK
KyAgICAgICAgICAgICJSMHNzc3NBMHNzc1xuIgorICAgICAgICAgICAgIkEwc3Nzc1xuIgogICAg
ICAgICB9LCB7CiAgICAgICAgICAgICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVyZW5jZSB0aGUg
c2FtZSBwYXNzOyByZW1vdmUiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1BW2N0XXNzc1xuIgot
ICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQUFzc3NcbiIKKyAgICAg
ICAgICAgICJSMHNzc3NBMFtjdF1BMFtjdF1zc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIs
CisgICAgICAgICAgICAiUjBzc3NzQTBBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAg
ICAiUmVwbGljYTogdHdvIHF1YWRzIHJlZmVyZW5jZSB0aGUgc2FtZSBwYXNzOyBsZWF2ZSIsCi0g
ICAgICAgICAgICAiUnNzc3NBW2NdQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAot
ICAgICAgICAgICAgIlJzc3NzQUFzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKKyAgICAg
ICAgICAgICJSMHNzc3NBMFtjXUEwW2Ndc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzXG4iLAor
ICAgICAgICAgICAgIlIwc3Nzc0EwQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc3NcbiIsCiAg
ICAgICAgIH0sIHsKICAgICAgICAgICAgICJNYW55IHBhc3NlcywgcmVtb3ZlIGFsbCIsCi0gICAg
ICAgICAgICAiUnNzc3NBW2N0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCW2N0XUNbY3Rdc1xu
IgotICAgICAgICAgICAgIkJzc3NEW2N0XXNzRVtjdF1GW2N0XVxuIgotICAgICAgICAgICAgIkVz
c3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1tjdF1cbiIKLSAgICAgICAgICAgICJEc3Nzc3Nzc1xu
IgotICAgICAgICAgICAgIkZzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xuIiwKLQotICAg
ICAgICAgICAgIlJzc3NzQXNzc1xuIgorICAgICAgICAgICAgIlIwc3Nzc0EwW2N0XXNzc1xuIgor
ICAgICAgICAgICAgIkEwc3NzQjBbY3RdQzBbY3Rdc1xuIgorICAgICAgICAgICAgIkIwc3NzRDBb
Y3Rdc3NFMFtjdF1GMFtjdF1cbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgorICAgICAgICAg
ICAgIkMwRzBbY3RdXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCisgICAgICAgICAgICAi
RjBzc3Nzc3NzXG4iCisgICAgICAgICAgICAiRzBzc3NcbiIsCisKKyAgICAgICAgICAgICJSMHNz
c3NBMHNzc1xuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiRGVlcCByZWN1cnNpb24sIHJl
bW92ZSBhbGwiLAogCi0gICAgICAgICAgICAiUnNzc3NzQVtjdF1zc3NzXG4iCi0gICAgICAgICAg
ICAiQXNzc3NCc3NzXG4iCi0gICAgICAgICAgICAiQkNcbiIKLSAgICAgICAgICAgICJDRFxuIgot
ICAgICAgICAgICAgIkRFXG4iCi0gICAgICAgICAgICAiRUZcbiIKLSAgICAgICAgICAgICJGR1xu
IgotICAgICAgICAgICAgIkdIXG4iCi0gICAgICAgICAgICAiSHNzc0lzc3NcbiIKLSAgICAgICAg
ICAgICJJSlxuIgotICAgICAgICAgICAgIkpzc3NzXG4iLAorICAgICAgICAgICAgIlIwc3Nzc3NB
MFtjdF1zc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NzQjBzc3NcbiIKKyAgICAgICAgICAgICJC
MEMwXG4iCisgICAgICAgICAgICAiQzBEMFxuIgorICAgICAgICAgICAgIkQwRTBcbiIKKyAgICAg
ICAgICAgICJFMEYwXG4iCisgICAgICAgICAgICAiRjBHMFxuIgorICAgICAgICAgICAgIkcwSDBc
biIKKyAgICAgICAgICAgICJIMHNzc0kwc3NzXG4iCisgICAgICAgICAgICAiSTBKMFxuIgorICAg
ICAgICAgICAgIkowc3Nzc1xuIiwKICAgICAgICAgICAgIAotICAgICAgICAgICAgIlJzc3Nzc0Fz
c3NzXG4iCisgICAgICAgICAgICAiUjBzc3Nzc0Ewc3Nzc1xuIgogICAgICAgICB9LCB7CiAgICAg
ICAgICAgICAiV2lkZSByZWN1cnNpb24sIHJlbW92ZSBhbGwiLAotICAgICAgICAgICAgIlJBW2N0
XUJbY3RdQ1tjdF1EW2N0XUVbY3RdRltjdF1HW2N0XUhbY3RdSVtjdF1KW2N0XVxuIgotICAgICAg
ICAgICAgIkFzXG4iCi0gICAgICAgICAgICAiQnNcbiIKLSAgICAgICAgICAgICJDc3Nzc1xuIgot
ICAgICAgICAgICAgIkRzc3NzXG4iCi0gICAgICAgICAgICAiRXNcbiIKLSAgICAgICAgICAgICJG
XG4iCi0gICAgICAgICAgICAiR3NcbiIKLSAgICAgICAgICAgICJIc1xuIgotICAgICAgICAgICAg
IklzXG4iCi0gICAgICAgICAgICAiSnNzc3NcbiIsCisgICAgICAgICAgICAiUjBBMFtjdF1CMFtj
dF1DMFtjdF1EMFtjdF1FMFtjdF1GMFtjdF1HMFtjdF1IMFtjdF1JMFtjdF1KMFtjdF1cbiIKKyAg
ICAgICAgICAgICJBMHNcbiIKKyAgICAgICAgICAgICJCMHNcbiIKKyAgICAgICAgICAgICJDMHNz
c3NcbiIKKyAgICAgICAgICAgICJEMHNzc3NcbiIKKyAgICAgICAgICAgICJFMHNcbiIKKyAgICAg
ICAgICAgICJGMFxuIgorICAgICAgICAgICAgIkcwc1xuIgorICAgICAgICAgICAgIkgwc1xuIgor
ICAgICAgICAgICAgIkkwc1xuIgorICAgICAgICAgICAgIkowc3Nzc1xuIiwKICAgICAgICAgICAg
IAotICAgICAgICAgICAgIlJBQkNERUZHSElKXG4iCisgICAgICAgICAgICAiUjBBMEIwQzBEMEUw
RjBHMEgwSTBKMFxuIgogICAgICAgICB9LCB7CiAgICAgICAgICAgICAiUmVtb3ZlIHBhc3NlcyBy
ZWdhcmRsZXNzIG9mIGNhY2hlIHN0YXRlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3Rdc3NzXG4i
Ci0gICAgICAgICAgICAiQXNzc0JDc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Ndc3NFW3RdRlxu
IgotICAgICAgICAgICAgIkVzc3Nzc3NcbiIKLSAgICAgICAgICAgICJDR1xuIgotICAgICAgICAg
ICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiRnNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJH
c3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NBc3NzXG4iCisgICAgICAgICAgICAiUjBzc3Nz
QTBbY3Rdc3NzXG4iCisgICAgICAgICAgICAiQTBzc3NCMEMwc1xuIgorICAgICAgICAgICAgIkIw
c3NzRDBbY11zc0UwW3RdRjBcbiIKKyAgICAgICAgICAgICJFMHNzc3Nzc1xuIgorICAgICAgICAg
ICAgIkMwRzBcbiIKKyAgICAgICAgICAgICJEMHNzc3Nzc3NcbiIKKyAgICAgICAgICAgICJGMHNz
c3Nzc3NcbiIKKyAgICAgICAgICAgICJHMHNzc1xuIiwKKworICAgICAgICAgICAgIlIwc3Nzc0Ew
c3NzXG4iCiAgICAgICAgIH0sIHsKICAgICAgICAgICAgICJMZWF2ZSBzb21lIHBhc3NlcywgcmVt
b3ZlIG90aGVycyIsCiAKLSAgICAgICAgICAgICJSc3Nzc0FbY11zc3NcbiIKLSAgICAgICAgICAg
ICJBc3NzQlt0XUNbY3Rdc1xuIgotICAgICAgICAgICAgIkJzc3NEW2Ndc3NcbiIKLSAgICAgICAg
ICAgICJDR1xuIgotICAgICAgICAgICAgIkRzc3Nzc3NzXG4iCi0gICAgICAgICAgICAiR3Nzc1xu
IiwKLQotICAgICAgICAgICAgIlJzc3NzQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCQ3NcbiIK
LSAgICAgICAgICAgICJCc3NzRHNzXG4iCi0gICAgICAgICAgICAiRHNzc3Nzc3NcbiIKKyAgICAg
ICAgICAgICJSMHNzc3NBMFtjXXNzc1xuIgorICAgICAgICAgICAgIkEwc3NzQjBbdF1DMFtjdF1z
XG4iCisgICAgICAgICAgICAiQjBzc3NEMFtjXXNzXG4iCisgICAgICAgICAgICAiQzBHMFxuIgor
ICAgICAgICAgICAgIkQwc3Nzc3Nzc1xuIgorICAgICAgICAgICAgIkcwc3NzXG4iLAorCisgICAg
ICAgICAgICAiUjBzc3NzQTBzc3NcbiIKKyAgICAgICAgICAgICJBMHNzc0IwQzBzXG4iCisgICAg
ICAgICAgICAiQjBzc3NEMHNzXG4iCisgICAgICAgICAgICAiRDBzc3Nzc3NzXG4iCiAgICAgICAg
IH0sIHsKICAgICAgICAgICAgIDAsIDAsIDAKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNTIxOTMw
MjdjYzQ2NTE4ODEyYjBhYzUwOGEyMjAwZjA3MjU4YzNmYi4uOThmMTNmZjNhYzc5ZjkxZDY0YzY0
MTZkZTRjMmJlZmEzM2IxNzc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yMzU0LDggKzIzNTQsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9z
dEltcGwqIGhvc3RJbXBsKSBPVkVSUklERQogICAgIHsKICAgICAgICAgQ0NSZW5kZXJlciogcmVu
ZGVyZXIgPSBob3N0SW1wbC0+cmVuZGVyZXIoKTsKLSAgICAgICAgdW5zaWduZWQgc3VyZmFjZTFS
ZW5kZXJQYXNzSWQgPSBob3N0SW1wbC0+cm9vdExheWVyKCktPmNoaWxkcmVuKClbMF0tPmlkKCk7
Ci0gICAgICAgIHVuc2lnbmVkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RM
YXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5pZCgpOworICAgICAgICBDQ1Jl
bmRlclBhc3M6OklkIHN1cmZhY2UxUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RMYXllcigp
LT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJmYWNlKCktPnJlbmRlclBhc3NJZCgpOworICAgICAg
ICBDQ1JlbmRlclBhc3M6OklkIHN1cmZhY2UyUmVuZGVyUGFzc0lkID0gaG9zdEltcGwtPnJvb3RM
YXllcigpLT5jaGlsZHJlbigpWzBdLT5jaGlsZHJlbigpWzBdLT5yZW5kZXJTdXJmYWNlKCktPnJl
bmRlclBhc3NJZCgpOwogCiAgICAgICAgIHN3aXRjaCAoaG9zdEltcGwtPnNvdXJjZUZyYW1lTnVt
YmVyKCkpIHsKICAgICAgICAgY2FzZSAwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1JlbmRlclBhc3NUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NSZW5kZXJQYXNzVGVzdC5jcHAKaW5kZXggNmFlNDEzNDVmMDdmMjE1OWIyNjcyNWQ2
ZjhmZjhiM2U5OTcwNDg2YS4uMGY3NmUyZWMwMTlkYjAwNDQxMDI4NjA5Y2NkZDM4M2Y5NWQ2ZDll
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclBhc3NU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyUGFzc1Rl
c3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0cnVjdCBDQ1JlbmRlclBhc3NTaXplIHsKIAogVEVT
VChDQ1JlbmRlclBhc3NUZXN0LCBjb3B5U2hvdWxkQmVJZGVudGljYWxFeGNlcHRJZEFuZFF1YWRz
KQogewotICAgIGludCBpZCA9IDM7CisgICAgQ0NSZW5kZXJQYXNzOjpJZCBpZCgzLCAyKTsKICAg
ICBJbnRSZWN0IG91dHB1dFJlY3QoNDUsIDIyLCAxMjAsIDEzKTsKICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2Zvcm1Ub1Jvb3QoMSwgMC41LCAwLjUsIC0wLjUsIC0xLCAwKTsKIApA
QCAtODgsNyArODgsNyBAQCBURVNUKENDUmVuZGVyUGFzc1Rlc3QsIGNvcHlTaG91bGRCZUlkZW50
aWNhbEV4Y2VwdElkQW5kUXVhZHMpCiAgICAgdGVzdFBhc3MtPnNoYXJlZFF1YWRTdGF0ZUxpc3Qo
KS5hcHBlbmQoQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSwgMSwgZmFsc2UpKTsKICAgICB0ZXN0UGFzcy0+cXVh
ZExpc3QoKS5hcHBlbmQoQ0NDaGVja2VyYm9hcmREcmF3UXVhZDo6Y3JlYXRlKHRlc3RQYXNzLT5z
aGFyZWRRdWFkU3RhdGVMaXN0KCkubGFzdCgpLmdldCgpLCBJbnRSZWN0KCkpKTsKIAotICAgIGlu
dCBuZXdJZCA9IDYzOworICAgIENDUmVuZGVyUGFzczo6SWQgbmV3SWQoNjMsIDQpOwogCiAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gY29weShwYXNzLT5jb3B5KG5ld0lkKSk7CiAgICAgRVhQRUNU
X0VRKG5ld0lkLCBjb3B5LT5pZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IDA2NjkzZjMzNzRmMDllMDU4MzI3
YzY5NTUxYzIwZmYyOTdkMDE3NmQuLmQ2NmI4Yzk1MTZhM2U4ODI4NmUzNmI4MTU3YTQwNjFiMDZj
YWE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJT
dXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRl
clN1cmZhY2VUZXN0LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNl
VGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAg
ICAgQ0NBcHBlbmRRdWFkc0RhdGEgYXBwZW5kUXVhZHNEYXRhOwogCiAgICAgYm9vbCBmb3JSZXBs
aWNhID0gZmFsc2U7Ci0gICAgcmVuZGVyU3VyZmFjZS0+YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxs
ZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwgMik7CisgICAgcmVuZGVyU3VyZmFjZS0+
YXBwZW5kUXVhZHMobW9ja1F1YWRDdWxsZXIsIGFwcGVuZFF1YWRzRGF0YSwgZm9yUmVwbGljYSwg
Q0NSZW5kZXJQYXNzOjpJZCgyLCAwKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIHNoYXJlZFN0YXRl
TGlzdC5zaXplKCkpOwogICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBz
aGFyZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgVEVTVChDQ1JlbmRl
clN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFJlbmRlclBhc3Mp
CiAgICAgQVNTRVJUX0VRKDF1LCBwYXNzU2luay5yZW5kZXJQYXNzZXMoKS5zaXplKCkpOwogICAg
IENDUmVuZGVyUGFzcyogcGFzcyA9IHBhc3NTaW5rLnJlbmRlclBhc3NlcygpWzBdLmdldCgpOwog
Ci0gICAgRVhQRUNUX0VRKDIsIHBhc3MtPmlkKCkpOworICAgIEVYUEVDVF9FUShDQ1JlbmRlclBh
c3M6OklkKDIsIDApLCBwYXNzLT5pZCgpKTsKICAgICBFWFBFQ1RfRVEoY29udGVudFJlY3QsIHBh
c3MtPm91dHB1dFJlY3QoKSk7CiAgICAgRVhQRUNUX0VRKG9yaWdpbiwgcGFzcy0+dHJhbnNmb3Jt
VG9Sb290VGFyZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZW5kZXJlckdMVGVzdC5jcHAKaW5kZXggMmYzZmQ2YTA4MTM1ODcwOTFhMmZjNGIwOWU0OTBi
ZDcxMGY2ZTk1My4uMGM3OGM1ZWU5YWVjOGJhZmNjZTJjZDE0N2RjNWY3NDJkNGNlOTVlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlcmVyR0xUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyZXJHTFRlc3QuY3Bw
CkBAIC04MCw5ICs4MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9yb290TGF5ZXIoQ0NMYXll
ckltcGw6OmNyZWF0ZSgxKSkKICAgICAgICAgLCBtX21lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVz
KENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVmYXVsdE1lbW9yeUFsbG9jYXRpb25MaW1p
dCgpKQogICAgIHsKLSAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3Mg
PSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShtX3Jvb3RMYXllci0+aWQoKSwgSW50UmVjdCgpLCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgbV9yb290TGF5ZXItPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKKyAgICAgICAgQ0NSZW5kZXJQYXNzOjpJZCByZW5kZXJQYXNzSWQgPSBtX3Jv
b3RMYXllci0+cmVuZGVyU3VyZmFjZSgpLT5yZW5kZXJQYXNzSWQoKTsKKyAgICAgICAgT3duUHRy
PENDUmVuZGVyUGFzcz4gcm9vdFJlbmRlclBhc3MgPSBDQ1JlbmRlclBhc3M6OmNyZWF0ZShyZW5k
ZXJQYXNzSWQsIEludFJlY3QoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAg
IG1fcmVuZGVyUGFzc2VzSW5EcmF3T3JkZXIuYXBwZW5kKHJvb3RSZW5kZXJQYXNzLmdldCgpKTsK
LSAgICAgICAgbV9yZW5kZXJQYXNzZXMuc2V0KG1fcm9vdExheWVyLT5pZCgpLCByb290UmVuZGVy
UGFzcy5yZWxlYXNlKCkpOworICAgICAgICBtX3JlbmRlclBhc3Nlcy5zZXQocmVuZGVyUGFzc0lk
LCByb290UmVuZGVyUGFzcy5yZWxlYXNlKCkpOwogICAgIH0KIAogICAgIC8vIENDUmVuZGVyZXJD
bGllbnQgbWV0aG9kcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>