<?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>37538</bug_id>
          
          <creation_ts>2010-04-13 17:17:38 -0700</creation_ts>
          <short_desc>Implement page format data programming interface</short_desc>
          <delta_ts>2010-06-23 00:30:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>35961</dependson>
          <blocked>15548</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuzo Fujishima">yuzo</reporter>
          <assigned_to name="Yuzo Fujishima">yuzo</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hamaji</cc>
    
    <cc>hayato</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>peter.linss</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212175</commentid>
    <comment_count>0</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-13 17:17:38 -0700</bug_when>
    <thetext>CSS Paged Media Module Level 3 (http://dev.w3.org/csswg/css3-page/) enables the document author to specify the size and orientation of the page box. Combined with Media Queries (http://www.w3.org/TR/2009/CR-css3-mediaqueries-20090423/), it also enables the document author to specify page format depending on the page size.

This means WebCore needs to provide a programming interface for page size negotiation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212190</commentid>
    <comment_count>1</comment_count>
      <attachid>53306</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-04-13 18:27:23 -0700</bug_when>
    <thetext>Created attachment 53306
Add skeletal methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213039</commentid>
    <comment_count>2</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-15 14:09:24 -0700</bug_when>
    <thetext>This seems very detached and hard to understand without the context in which it&apos;s used. I&apos;d say this is a rare case where the patch is too small :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223071</commentid>
    <comment_count>3</comment_count>
      <attachid>53306</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-09 14:01:59 -0700</bug_when>
    <thetext>Comment on attachment 53306
Add skeletal methods.

We don&apos;t generally add unused/untested code to the repository.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239328</commentid>
    <comment_count>4</comment_count>
      <attachid>58977</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-17 04:20:08 -0700</bug_when>
    <thetext>Created attachment 58977
Implement page format data programming interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239776</commentid>
    <comment_count>5</comment_count>
      <attachid>58977</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-17 23:32:11 -0700</bug_when>
    <thetext>Comment on attachment 58977
Implement page format data programming interface.

WebCore/dom/Document.cpp:1517
 +      int x = style-&gt;marginLeft().calcValue(maxValue) + style-&gt;borderLeft().width() + style-&gt;paddingLeft().calcValue(maxValue);
I&apos;m not 100% sure, but maybe we want to make margin=0px when display is none.

WebCore/css/CSSStyleSelector.cpp:5516
 +      case 2:
We usually don&apos;t put a newline after case&apos;s colon?

WebCore/css/CSSStyleSelector.cpp:5534
 +                  if (!pageSizeFromName(primitiveValue0, primitiveValue1, width, height))
Is this OK even for &quot;size: a4 a4&quot; ?

LayoutTests/printing/page-format-data-expected.txt:22
 +  PASS layoutTestController.preferredPageSizeInPixels(0) is &quot;(816,1056)&quot;
Cannot we make the results more readable? For example, inch(30) or something like this?

LayoutTests/printing/page-format-data.html:120
 +  
We might want to test more invalid cases such as size: 100px 100px 100px, size: -100px, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240592</commentid>
    <comment_count>6</comment_count>
      <attachid>59227</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-20 22:27:54 -0700</bug_when>
    <thetext>Created attachment 59227
Addressed review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240595</commentid>
    <comment_count>7</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-20 22:29:41 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #5)
&gt; (From update of attachment 58977 [details])
&gt; WebCore/dom/Document.cpp:1517
&gt;  +      int x = style-&gt;marginLeft().calcValue(maxValue) + style-&gt;borderLeft().width() + style-&gt;paddingLeft().calcValue(maxValue);
&gt; I&apos;m not 100% sure, but maybe we want to make margin=0px when display is none.

Changed as suggested.

&gt; 
&gt; WebCore/css/CSSStyleSelector.cpp:5516
&gt;  +      case 2:
&gt; We usually don&apos;t put a newline after case&apos;s colon?

Done.

&gt; 
&gt; WebCore/css/CSSStyleSelector.cpp:5534
&gt;  +                  if (!pageSizeFromName(primitiveValue0, primitiveValue1, width, height))
&gt; Is this OK even for &quot;size: a4 a4&quot; ?

Added a test.

&gt; 
&gt; LayoutTests/printing/page-format-data-expected.txt:22
&gt;  +  PASS layoutTestController.preferredPageSizeInPixels(0) is &quot;(816,1056)&quot;
&gt; Cannot we make the results more readable? For example, inch(30) or something like this?

Changed to use mmSize() and inchSize().

&gt; 
&gt; LayoutTests/printing/page-format-data.html:120
&gt;  +  
&gt; We might want to test more invalid cases such as size: 100px 100px 100px, size: -100px, etc.

Added tests.

I also changed test expectations for non-mac platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241222</commentid>
    <comment_count>8</comment_count>
      <attachid>59227</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-22 05:17:43 -0700</bug_when>
    <thetext>Comment on attachment 59227
Addressed review comments.

WebCore/css/CSSStyleSelector.cpp:5613
 +      Length&amp; h = portrait ? height : width;
This is OK, but I slightly prefer to swap them after the switch sentence if portrait is true.

WebCore/css/CSSStyleSelector.h:266
 +          Length inchLength(double inch);
I think they (or at least the latter three functions) should be placed in private section of this class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241675</commentid>
    <comment_count>9</comment_count>
      <attachid>59479</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-22 23:15:41 -0700</bug_when>
    <thetext>Created attachment 59479
display property doesn&apos;t apply to @page, addressed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241678</commentid>
    <comment_count>10</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-22 23:19:15 -0700</bug_when>
    <thetext>Thank you for the review.

It turned out that display property doesn&apos;t apply to @page. I&apos;ve changed the code accordingly.

(In reply to comment #8)
&gt; (From update of attachment 59227 [details])
&gt; WebCore/css/CSSStyleSelector.cpp:5613
&gt;  +      Length&amp; h = portrait ? height : width;
&gt; This is OK, but I slightly prefer to swap them after the switch sentence if portrait is true.

Done.

&gt; 
&gt; WebCore/css/CSSStyleSelector.h:266
&gt;  +          Length inchLength(double inch);
&gt; I think they (or at least the latter three functions) should be placed in private section of this class?

They are already private, although &quot;Review Patch&quot; shows them as if they were public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241679</commentid>
    <comment_count>11</comment_count>
      <attachid>59479</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-22 23:21:44 -0700</bug_when>
    <thetext>Comment on attachment 59479
display property doesn&apos;t apply to @page, addressed comments

&gt; They are already private, although &quot;Review Patch&quot; shows them as if they were public.

Oops. It seems our code pretty printer didn&apos;t work well here... Sorry for the confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241719</commentid>
    <comment_count>12</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-06-23 00:30:24 -0700</bug_when>
    <thetext>Committed r61670: &lt;http://trac.webkit.org/changeset/61670&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53306</attachid>
            <date>2010-04-13 18:27:23 -0700</date>
            <delta_ts>2010-06-17 04:20:03 -0700</delta_ts>
            <desc>Add skeletal methods.</desc>
            <filename>bug-37538-20100414102721.patch</filename>
            <type>text/plain</type>
            <size>3440</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDNlM2U5YS4uNTM3MWM4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0xMiAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW1wbGVtZW50IFBhZ2UgU2l6ZSBOZWdvdGlhdGlvbiBQcm9ncmFtbWlu
ZyBJbnRlcmZhY2UgKEl0ZXJhdGlvbiAxKQorICAgICAgICBBZGQgc2tlbGV0YWwgbWV0aG9kcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisK
KyAgICAgICAgVXNlIG1pY3JvbWV0ZXIgYXMgdGhlIHBhZ2Ugc2l6ZSB1bml0LiBBc3N1bWluZyAz
Mi1iaXQgaW50ZWdlciwgaXQgaGFzIGVub3VnaCBwcmVjaXNpb24gYW5kIHJhbmdlICgxdW0gdG8g
Mi4xa20pLgorICAgICAgICBBbGwgdGhlIHNpemVzIHNwZWNpZmllZCBpbiB0aGUgQ1NTMyBQYWdl
ZCBNZWRpYSwgZS5nLiwgQTQgYW5kIExldHRlciwgY2FuIGJlIGV4cHJlc3NlZCBwcmVjaXNlbHku
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFyZSBhZGRlZCBiZWNhdXNlIG5vbmUgb2YgdGhlIHNr
ZWxldGFsIG1ldGhvZHMgYXJlIHVzZWQgeWV0LgorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4
cDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmlzUGFnZUZvcm1hdFNwZWNpZmllZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cHJlZmVycmVkUGFnZVNpemVJbk1pY3JvbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldFBhZ2VTaXplSW5NaWNyb21ldGVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KwogMjAxMC0wMy0xMCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUuYmFzZS5leHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMTFmZGFmMy4uZGRj
ZjY3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cApAQCAtNjM3LDkgKzYzNywxMiBAQCBfX1pON1dlYkNvcmU4RG9jdW1l
bnQxM3N2Z0V4dGVuc2lvbnNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1c2VkTm9k
ZUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTdn
ZXRGb2N1c2FibGVOb2Rlc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0w
RUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgorX19aTjdX
ZWJDb3JlOERvY3VtZW50MjFpc1BhZ2VGb3JtYXRTcGVjaWZpZWRFdgogX19aTjdXZWJDb3JlOERv
Y3VtZW50MjJjcmVhdGVEb2N1bWVudEZyYWdtZW50RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDIz
cmVuZGVyZWRSZWN0c0Zvck1hcmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUUK
K19fWk43V2ViQ29yZThEb2N1bWVudDIzc2V0UGFnZVNpemVJbk1pY3JvbWV0ZXJFUktOU183SW50
U2l6ZUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDI0c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzRWIK
K19fWk43V2ViQ29yZThEb2N1bWVudDI5cHJlZmVycmVkUGFnZVNpemVJbk1pY3JvbWV0ZXJFdgog
X19aTjdXZWJDb3JlOERvY3VtZW50MzZ1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgogX19aTjdXZWJDb3JlOEZvcm1EYXRh
RDFFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGU2MjZiODIuLjczOTYzODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQ3OTQs
NiArNDc5NCwyNSBAQCB2b2lkIERvY3VtZW50OjplbnF1ZXVlUG9wc3RhdGVFdmVudChQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplYwogICAgIGRpc3BhdGNoV2luZG93
RXZlbnQoUG9wU3RhdGVFdmVudDo6Y3JlYXRlKHN0YXRlT2JqZWN0KSk7CiB9CiAKKworYm9vbCBE
b2N1bWVudDo6aXNQYWdlRm9ybWF0U3BlY2lmaWVkKCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCisgICAgcmV0dXJuIGZhbHNlOworfQorCitJbnRTaXplIERvY3VtZW50OjpwcmVm
ZXJyZWRQYWdlU2l6ZUluTWljcm9tZXRlcigpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgorICAgIHJldHVybiBJbnRTaXplKDAsIDApOyAvLyAoMCwgMCkgbWVhbnMgdGhhdCB0aGUg
c2l6ZSBpcyBub3Qgc3BlY2lmaWVkLgorfQorCit2b2lkIERvY3VtZW50OjpzZXRQYWdlU2l6ZUlu
TWljcm9tZXRlcihJbnRTaXplIGNvbnN0JikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCit9CisKKwogI2lmIEVOQUJMRShYSFRNTE1QKQogYm9vbCBEb2N1bWVudDo6aXNYSFRNTE1Q
RG9jdW1lbnQoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2MzZTU1OS4uY2E5ZjViYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2lm
IFVTRShKU0MpCkBAIC05NjYsNiArOTY3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGVucXVldWVQ
YWdlc2hvd0V2ZW50KFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSk7CiAgICAgdm9pZCBlbnF1ZXVl
SGFzaGNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgb2xkVVJMLCBjb25zdCBTdHJpbmcmIG5ld1VS
TCk7CiAKKyAgICAvLyBNZXRob2RzIHJlbGF0ZWQgdG8gQ1NTMyBQYWdlZCBNZWRpYQorICAgIGJv
b2wgaXNQYWdlRm9ybWF0U3BlY2lmaWVkKCk7CisgICAgSW50U2l6ZSBwcmVmZXJyZWRQYWdlU2l6
ZUluTWljcm9tZXRlcigpOworICAgIHZvaWQgc2V0UGFnZVNpemVJbk1pY3JvbWV0ZXIoSW50U2l6
ZSBjb25zdCYpOworCiBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQoRnJhbWUqLCBib29sIGlzWEhU
TUwsIGJvb2wgaXNIVE1MKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58977</attachid>
            <date>2010-06-17 04:20:08 -0700</date>
            <delta_ts>2010-06-20 22:27:48 -0700</delta_ts>
            <desc>Implement page format data programming interface.</desc>
            <filename>bug-37538-20100617042006.patch</filename>
            <type>text/plain</type>
            <size>42079</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZjUyNGI0ZjlmMmRiNmUzYmQwODAxN2MyYzY1YTgwYWRjYmIwMzQ2Li5mNjkwNWYw
M2ZkZDk1OGIzOWVkOGViNTA4NjdmNDk0Y2U4NWQ5NTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMDYtMTcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBwYWdlIGZv
cm1hdCBkYXRhIHByb2dyYW1taW5nIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAgICAgKiBwcmludGluZy9wYWdl
LWZvcm1hdC1kYXRhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFn
ZS1mb3JtYXQtZGF0YS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNi0xNSAgRG1pdHJ5IFRpdG92ICA8
ZGltaWNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQsIHVwZGF0aW5nIENo
cm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRp
bmcvcGFnZS1mb3JtYXQtZGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9w
YWdlLWZvcm1hdC1kYXRhLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDY1ZjQ0NWEyYjVjMTk0
NmM4MTY0MjA0MGQzMDQ5ZTllZjI2YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2MyBAQAor
VGhpcyB0ZXN0cyBwYWdlIGZvcm1hdCBkYXRhCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitUZXN0IGRlZmF1bHQgdmlzaWJpbGl0eQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5p
c1BhZ2VCb3hWaXNpYmxlKDApIGlzIHRydWUKK1Rlc3QgdmlzaWJpbGl0eTp2aXNpYmxlCitQQVNT
IGxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkgaXMgdHJ1ZQorVGVzdCBk
aXNwbGF5Om5vbmUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgw
KSBpcyBmYWxzZQorVGVzdCBkaXNwbGF5Om5vbmUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aXNQYWdlQm94VmlzaWJsZSgwKSBpcyBmYWxzZQorVGVzdCBkaXNwbGF5OmlubGluZQorUEFTUyBs
YXlvdXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hWaXNpYmxlKDApIGlzIHRydWUKK1Rlc3Qgdmlz
aWJpbGl0eTpoaWRkZW47IGRpc3BsYXk6bm9uZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5p
c1BhZ2VCb3hWaXNpYmxlKDApIGlzIGZhbHNlCitUZXN0IHZpc2liaWxpdHk6dmlzaWJsZTsgZGlz
cGxheTppbmxpbmUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgw
KSBpcyB0cnVlCisKK1Rlc3QgZGVmYXVsdCBwYWdlIHNpemUKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAiKDgxNiwxMDU2KSIKK1Rlc3Qg
YXV0byBwYWdlIHNpemUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNp
emVJblBpeGVscygwKSBpcyAiKDgxNiwxMDU2KSIKK1Rlc3QgbGFuZHNjYXBlCitQQVNTIGxheW91
dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgIigxMDU2LDgx
NikiCitUZXN0IHBvcnRyYWl0CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMoMCkgaXMgIig4MTYsMTA1NikiCitUZXN0IGE1CitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgIig1NTksNzkzKSIK
K1Rlc3QgYTUgbGFuZHNjYXBlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMoMCkgaXMgIig3OTMsNTU5KSIKK1Rlc3QgcG9ydHJhaXQgYTQKK1BBU1Mg
bGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAiKDc5
MywxMTIyKSIKK1Rlc3QgYTMKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFn
ZVNpemVJblBpeGVscygwKSBpcyAiKDExMjIsMTU4NykiCitUZXN0IGI1CitQQVNTIGxheW91dFRl
c3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgIig2NjUsOTQ0KSIK
K1Rlc3QgYjQKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBp
eGVscygwKSBpcyAiKDk0NCwxMzM0KSIKK1Rlc3QgbGV0dGVyCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgIig4MTYsMTA1NikiCitUZXN0
IGxlZ2FsCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhl
bHMoMCkgaXMgIig4MTYsMTM0NCkiCitUZXN0IGxlZGdlcgorUEFTUyBsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzICIoMTA1NiwxNjMyKSIKK1Rlc3Qg
MTBjbQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxz
KDApIGlzICIoMzc3LDM3NykiCitUZXN0IDIwY20geCAzMGNtCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgIig3NTUsMTEzMykiCitUZXN0
IDEwMDAwcHggMjAwMDBweAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdl
U2l6ZUluUGl4ZWxzKDApIGlzICIoMTAwMDAsMjAwMDApIgorCitUZXN0IHBhZ2UgYXJlYSB3aGVu
IG1hcmdpbiwgcGFkZGluZywgYW5kIGJvcmRlciBhcmUgMHB4CitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnBhZ2VBcmVhUmVjdEluUGl4ZWxzKDApIGlzICIoMCwwLDEwMDAwLDIwMDAwKSIKK1Rl
c3Qgbm9uLXplcm8gbWFyZ2luLCBwYWRkaW5nLCBhbmQgYm9yZGVyCitQQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VBcmVhUmVjdEluUGl4ZWxzKDApIGlzICIoMjE4NCwyNzMsNzI3MCwxODYz
NSkiCitUZXN0IHBlcmNlbnRhZ2UgbWFyZ2luIGFuZCBwYWRkaW5nCitQQVNTIGxheW91dFRlc3RD
b250cm9sbGVyLnBhZ2VBcmVhUmVjdEluUGl4ZWxzKDApIGlzICIoMTUwMCwyNTAwLDcwMDAsMTUw
MDApIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEuaHRtbCBi
L0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YjllY2RiNDg1ZjI4NjI2NTA5OTExNzM3YjM3M2JmOTI1YzY5MTQyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sCkBAIC0wLDAgKzEs
MTQzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQgaWQ9ImhlYWRfZWxlbWVudCI+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dD4KKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBwYWdlIGZvcm1hdCBkYXRhIik7CisKKyAg
ICBmdW5jdGlvbiBhcHBlbmRTdHlsZShzdHlsZVN0cmluZykKKyAgICB7CisgICAgICAgIHZhciBz
dHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgICAgICBz
dHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGVTdHJpbmc7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJoZWFkX2VsZW1lbnQiKS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOwor
ICAgIH0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIC8vIFBhZ2UgYm94
IHZpc2liaWxpdHkgdGVzdHMuCisKKyAgICAgICAgZGVidWcoIlRlc3QgZGVmYXVsdCB2aXNpYmls
aXR5Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hW
aXNpYmxlKDApIiwgInRydWUiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCB2aXNpYmlsaXR5OnZp
c2libGUiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHt2aXNpYmlsaXR5OnZpc2libGU7
fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94Vmlz
aWJsZSgwKSIsICJ0cnVlIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgZGlzcGxheTpub25lIik7
CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7ZGlzcGxheTpub25lO30iKTsKKyAgICAgICAg
c2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkiLCAiZmFs
c2UiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBkaXNwbGF5Om5vbmUiKTsKKyAgICAgICAgYXBw
ZW5kU3R5bGUoIkBwYWdlIHtkaXNwbGF5Om5vbmU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5
b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJmYWxzZSIpOworCisgICAg
ICAgIGRlYnVnKCJUZXN0IGRpc3BsYXk6aW5saW5lIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJA
cGFnZSB7ZGlzcGxheTppbmxpbmU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJ0cnVlIik7CisKKyAgICAgICAgZGVidWco
IlRlc3QgdmlzaWJpbGl0eTpoaWRkZW47IGRpc3BsYXk6bm9uZSIpOworICAgICAgICBhcHBlbmRT
dHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6aGlkZGVuOyBkaXNwbGF5Om5vbmU7fSIpOworICAgICAg
ICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJm
YWxzZSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHZpc2liaWxpdHk6dmlzaWJsZTsgZGlzcGxh
eTppbmxpbmUiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHt2aXNpYmlsaXR5OnZpc2li
bGU7IGRpc3BsYXk6aW5saW5lO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250
cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkiLCAidHJ1ZSIpOworCisgICAgICAgIC8vIFBhZ2Ug
c2l6ZSB0ZXN0cworCisgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBk
ZWZhdWx0IHBhZ2Ugc2l6ZSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91
dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiKDgxNiwxMDU2
KSIpOyAvLyBMZXR0ZXIsIDk2ZHBpCisKKyAgICAgICAgZGVidWcoIlRlc3QgYXV0byBwYWdlIHNp
emUiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOmF1dG87fSIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMoMCkiLCAiKDgxNiwxMDU2KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0
IGxhbmRzY2FwZSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6bGFuZHNjYXBl
O30iKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxl
ci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIigxMDU2LDgxNikiKTsKKworICAgICAg
ICBkZWJ1ZygiVGVzdCBwb3J0cmFpdCIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3Np
emU6cG9ydHJhaXQ7fSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRl
c3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiKDgxNiwxMDU2KSIp
OworCisgICAgICAgIGRlYnVnKCJUZXN0IGE1Iik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFn
ZSB7c2l6ZTphNTt9Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVz
dENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICIoNTU5LDc5MykiKTsK
KworICAgICAgICBkZWJ1ZygiVGVzdCBhNSBsYW5kc2NhcGUiKTsKKyAgICAgICAgYXBwZW5kU3R5
bGUoIkBwYWdlIHtzaXplOmE1IGxhbmRzY2FwZTt9Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygw
KSIsICIoNzkzLDU1OSkiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBwb3J0cmFpdCBhNCIpOwor
ICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6cG9ydHJhaXQgYTQ7fSIpOworICAgICAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMoMCkiLCAiKDc5MywxMTIyKSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0
IGEzIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7c2l6ZTphMzt9Iik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFn
ZVNpemVJblBpeGVscygwKSIsICIoMTEyMiwxNTg3KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0
IGI1Iik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7c2l6ZTpiNTt9Iik7CisgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFn
ZVNpemVJblBpeGVscygwKSIsICIoNjY1LDk0NCkiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBi
NCIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6YjQ7fSIpOworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VT
aXplSW5QaXhlbHMoMCkiLCAiKDk0NCwxMzM0KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGxl
dHRlciIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6bGV0dGVyO30iKTsKKyAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIig4MTYsMTA1NikiKTsKKworICAgICAgICBkZWJ1Zygi
VGVzdCBsZWdhbCIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6bGVnYWw7fSIp
OworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxheW91dFRlc3RDb250cm9sbGVyLnBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiKDgxNiwxMzQ0KSIpOworCisgICAgICAgIGRl
YnVnKCJUZXN0IGxlZGdlciIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6bGVk
Z2VyO30iKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIigxMDU2LDE2MzIpIik7CisKKyAg
ICAgICAgZGVidWcoIlRlc3QgMTBjbSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3Np
emU6MTBjbTt9Iik7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENv
bnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICIoMzc3LDM3NykiKTsKKwor
ICAgICAgICBkZWJ1ZygiVGVzdCAyMGNtIHggMzBjbSIpOworICAgICAgICBhcHBlbmRTdHlsZSgi
QHBhZ2Uge3NpemU6MjBjbSAzMGNtO30iKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIig3
NTUsMTEzMykiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCAxMDAwMHB4IDIwMDAwcHgiKTsKKyAg
ICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOjEwMDAwcHggMjAwMDBweDt9Iik7CisgICAg
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVk
UGFnZVNpemVJblBpeGVscygwKSIsICIoMTAwMDAsMjAwMDApIik7CisKKyAgICAgICAgLy8gUGFn
ZSBhcmVhIHRlc3RzCisKKyAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgIGRlYnVnKCJUZXN0
IHBhZ2UgYXJlYSB3aGVuIG1hcmdpbiwgcGFkZGluZywgYW5kIGJvcmRlciBhcmUgMHB4Iik7Cisg
ICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7bWFyZ2luOjBweDtwYWRkaW5nOjBweDtib3JkZXI6
MHB4O30iKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSIsICIoMCwwLDEwMDAwLDIwMDAwKSIpOworCisg
ICAgICAgIGRlYnVnKCJUZXN0IG5vbi16ZXJvIG1hcmdpbiwgcGFkZGluZywgYW5kIGJvcmRlciIp
OworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge21hcmdpbjoxcHggMnB4IDRweCA4cHg7IHBh
ZGRpbmc6MTZweCAzMnB4IDY0cHggMTI4cHg7IGJvcmRlci13aWR0aDoyNTZweCA1MTJweCAxMDI0
cHggMjA0OHB4O30iKTsgLy8gdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0CisgICAgICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhl
bHMoMCkiLCAiKDIxODQsMjczLDcyNzAsMTg2MzUpIik7CisKKyAgICAgICAgZGVidWcoIlRlc3Qg
cGVyY2VudGFnZSBtYXJnaW4gYW5kIHBhZGRpbmciKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBw
YWdlIHttYXJnaW46MjAlIDEwJTsgcGFkZGluZzo1JTsgYm9yZGVyLXdpZHRoOjBweDt9Iik7Cisg
ICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZUFy
ZWFSZWN0SW5QaXhlbHMoMCkiLCAiKDE1MDAsMjUwMCw3MDAwLDE1MDAwKSIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRoaXMgdGVzdCBjYW4gYmUgcnVuIG9ubHkgd2l0aCB3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKKyAgICB9CisgICAgdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZGRmMzJh
NzdjODIxYjlhOWM1NDE1NjZkZjVmZDE1ZWEwMzczMzczLi5iODU0MmJlYmI1MTk0MDUxYmE0OGQ2
YzIzNTA2NmJiNTYyMzk1Njk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTA2LTE3ICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFnZSBmb3JtYXQgZGF0YSBwcm9ncmFtbWluZyBp
bnRlcmZhY2UuCisgICAgICAgIFRoZSBmaW5hbCBnb2FsIGlzIHRvIGltcGxlbWVudCBDU1MgUGFn
ZWQgTWVkaWEgTW9kdWxlIExldmVsIDMgKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcGFn
ZS8pLgorICAgICAgICBUbyBiZWdpbiB3aXRoLCB0aGlzIGNoYW5nZSBhZGRzIG1ldGhvZHMgdG8g
a25vdzoKKyAgICAgICAgLSBpZiBwYWdlIGJveCBpcyB2aXNpYmxlLAorICAgICAgICAtIHRoZSBw
YWdlIGFyZWEgcmVjdGFuZ2xlLCBhbmQKKyAgICAgICAgLSBwcmVmZXJyZWQgcGFnZSBzaXplLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUzOAor
CisgICAgICAgIFRlc3Q6IHByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEuaHRtbAorCisgICAgICAg
ICogV2ViQ29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wZXJ0eSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwYWdlU2l6ZUZyb21OYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1tTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmluY2hMZW5ndGgpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL2h0bWwuY3NzOgorICAgICAgICAoQHBh
Z2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFn
ZUFyZWFSZWN0SW5QaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByZWZlcnJl
ZFBhZ2VTaXplSW5QaXhlbHMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6
aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnBhZ2VB
cmVhUmVjdEluUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6cHJlZmVy
cmVkUGFnZVNpemVJblBpeGVscyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkluaGVyaXRlZEZsYWdzOjpwYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRG
bGFnczo6c2V0UGFnZVNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTAtMDYtMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBEYXZpZCBIYXJyaXNvbi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAppbmRleCBlNDY5ZDFkZjIxNzE4YTA4MGJlZWFiMjQyMTEyMGVkYjIzY2VhNGIxLi44NWEzYjU3
NDcwOTNkNTU3MjAzYjE5OTgxZWFmNThkMDI2MTQ2MzA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0yNTAsNyAr
MjUwLDEwIEBAIF9fWk43V2ViQ29yZTEySWNvbkRhdGFiYXNlOXNldENsaWVudEVQTlNfMThJY29u
RGF0YWJhc2VDbGllbnRFCiBfX1pON1dlYkNvcmUxMlBsdWdpbldpZGdldDE0aW52YWxpZGF0ZVJl
Y3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJwYWdlUHJvcGVy
dHlFUE5TXzVGcmFtZUVQS2NpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEzbnVtYmVyT2ZQ
YWdlc0VQTlNfNUZyYW1lRVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250
ZXh0MTZpc1BhZ2VCb3hWaXNpYmxlRVBOU181RnJhbWVFaQorX19aTjdXZWJDb3JlMTJQcmludENv
bnRleHQyMHBhZ2VBcmVhUmVjdEluUGl4ZWxzRVBOU181RnJhbWVFaQogX19aTjdXZWJDb3JlMTJQ
cmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVudEVSS05TXzlGbG9h
dFNpemVFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDI1cHJlZmVycmVkUGFnZVNpemVJblBp
eGVsc0VQTlNfNUZyYW1lRWkKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfOUZsb2F0U2l6ZUViCiBfX1pON1dlYkNvcmUxMlByaW50
Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEQxRXYKQEAg
LTYyMSwxMSArNjI0LDE0IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgog
X19aTjdXZWJDb3JlOERvY3VtZW50MTNyZW1vdmVNYXJrZXJzRU5TXzE0RG9jdW1lbnRNYXJrZXIx
ME1hcmtlclR5cGVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxM3N2Z0V4dGVuc2lvbnNFdgogX19a
TjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1c2VkTm9kZUVOM1dURjEwUGFzc1JlZlB0cklOU180
Tm9kZUVFRQorX19aTjdXZWJDb3JlOERvY3VtZW50MTZpc1BhZ2VCb3hWaXNpYmxlRWkKIF9fWk43
V2ViQ29yZThEb2N1bWVudDE3Z2V0Rm9jdXNhYmxlTm9kZXNFUk4zV1RGNlZlY3RvcklOUzFfNlJl
ZlB0cklOU180Tm9kZUVFRUxtMEVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTlhY2Nlc3NTVkdF
eHRlbnNpb25zRXYKK19fWk43V2ViQ29yZThEb2N1bWVudDIwcGFnZUFyZWFSZWN0SW5QaXhlbHNF
aQogX19aTjdXZWJDb3JlOERvY3VtZW50MjJjcmVhdGVEb2N1bWVudEZyYWdtZW50RXYKIF9fWk43
V2ViQ29yZThEb2N1bWVudDIzcmVuZGVyZWRSZWN0c0Zvck1hcmtlcnNFTlNfMTREb2N1bWVudE1h
cmtlcjEwTWFya2VyVHlwZUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDI0c2V0U2hvdWxkQ3JlYXRl
UmVuZGVyZXJzRWIKK19fWk43V2ViQ29yZThEb2N1bWVudDI1cHJlZmVycmVkUGFnZVNpemVJblBp
eGVsc0VpCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQzNnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0c0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQ0aGVhZEV2CiBfX1pON1dlYkNvcmU4
Rm9ybURhdGFEMUV2CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGJmZjA3YmE5ZWNmYzVj
OWExN2QyNzJhM2M4ZjMyMGYyMWRmOGVhMTcuLjE2ODYwMWIwODdmNDYwZjc1ZDlkNGU0MGUzYzk0
YzQ4MjRmZGExOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKKyNpbmNsdWRlICJDU1NI
ZWxwZXIuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFS
dWxlLmgiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuaCIKQEAgLTU0NDksMTIgKzU0NTAsMTQgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZh
bHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZSgqcHJpbWl0aXZlVmFsdWUp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToK
KyAgICAgICAgYXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUZvbnRTdHJldGNoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlRdW90ZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExp
bmVUaHJvdWdoQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6
CkBAIC01NTAyLDYgKzU1MDUsMTYzIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQYWdlU2l6ZVByb3BlcnR5KENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBp
ZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisgICAgQ1NTVmFsdWVM
aXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAg
TGVuZ3RoIHdpZHRoOworICAgIExlbmd0aCBoZWlnaHQ7CisgICAgc3dpdGNoICh2YWx1ZUxpc3Qt
Pmxlbmd0aCgpKSB7CisgICAgY2FzZSAyOgorICAgICAgICB7CisgICAgICAgICAgICAvLyA8bGVu
Z3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgICAgIGlmICghdmFs
dWVMaXN0LT5pdGVtKDApLT5pc1ByaW1pdGl2ZVZhbHVlKCkgfHwgIXZhbHVlTGlzdC0+aXRlbSgx
KS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZTAgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUxID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZUxpc3QtPml0ZW0oMSkpOworICAgICAgICAgICAgaW50IHR5cGUwID0gcHJpbWl0
aXZlVmFsdWUwLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgICAgICBpbnQgdHlwZTEgPSBwcmlt
aXRpdmVWYWx1ZTEtPnByaW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgICAgIGlmIChDU1NQcmltaXRp
dmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMCkpIHsKKyAgICAgICAgICAgICAgICAvLyA8
bGVuZ3RoPnsyfQorICAgICAgICAgICAgICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5p
dFR5cGVMZW5ndGgodHlwZTEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgd2lkdGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3RoSW50
Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUxLT5jb21wdXRlTGVuZ3RoSW50
Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9u
PgorICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUg
Q1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCisgICAgICAgICAgICAgICAgaWYgKCFwYWdl
U2l6ZUZyb21OYW1lKHByaW1pdGl2ZVZhbHVlMCwgcHJpbWl0aXZlVmFsdWUxLCB3aWR0aCwgaGVp
Z2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICBjYXNlIDE6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRz
Y2FwZV0KKyAgICAgICAgICAgIGlmICghdmFsdWVMaXN0LT5pdGVtKDApLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZUxpc3QtPml0ZW0oMCkpOworICAgICAgICAgICAgaW50IHR5cGUgPSBwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjpp
c1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CisgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAg
ICAgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpLCBGaXhl
ZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0eXBlICE9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgICAgICAgICAgICAgIC8v
IGF1dG8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKDAsIDAsIHdp
ZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6
CisgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKKyAgICAgICAgICAgICAg
ICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZy
b21OYW1lKDAsIHByaW1pdGl2ZVZhbHVlLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gWyBwb3J0cmFpdCB8IGxhbmRz
Y2FwZV0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKHByaW1pdGl2
ZVZhbHVlLCAwLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9z
dHlsZS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJu
OworfQorCitib29sIENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0
aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlv
biwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCit7CisgICAgc3RhdGljIGNvbnN0IExl
bmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0aCgyMTApOwor
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTRXaWR0aCA9IG1tTGVuZ3RoKDIxMCksIGE0SGVpZ2h0
ID0gbW1MZW5ndGgoMjk3KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGEzV2lkdGggPSBtbUxl
bmd0aCgyOTcpLCBhM0hlaWdodCA9IG1tTGVuZ3RoKDQyMCk7CisgICAgc3RhdGljIGNvbnN0IExl
bmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0aCgyNTApOwor
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYjRXaWR0aCA9IG1tTGVuZ3RoKDI1MCksIGI0SGVpZ2h0
ID0gbW1MZW5ndGgoMzUzKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxldHRlcldpZHRoID0g
aW5jaExlbmd0aCg4LjUpLCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDExKTsKKyAgICBzdGF0
aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxlZ2FsSGVpZ2h0
ID0gaW5jaExlbmd0aCgxNCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWRnZXJXaWR0aCA9
IGluY2hMZW5ndGgoMTEpLCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDE3KTsKKworICAgIC8v
IEZJWE1FOiBEZWZpbmUgVUEgZGVmYXVsdCBwYWdlIHNpemUuIEFzc3VtZSBsZXR0ZXIgZm9yIG5v
dy4KKyAgICBpbnQgaWRlbnQgPSBDU1NWYWx1ZUxldHRlcjsKKyAgICBpZiAocGFnZVNpemVOYW1l
KSB7CisgICAgICAgIGlmIChwYWdlU2l6ZU5hbWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZGVudCA9IHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQoKTsKKyAgICB9CisKKyAgICAvLyBGSVhN
RTogRGVmaW5lIFVBIGRlZmF1bHQgcGFnZSBvcmllbnRhdGlvbi4gQXNzdW1lIHBvcnRyYWl0IGZv
ciBub3cuCisgICAgYm9vbCBwb3J0cmFpdCA9IHRydWU7CisgICAgaWYgKHBhZ2VPcmllbnRhdGlv
bikgeworICAgICAgICBpZiAocGFnZU9yaWVudGF0aW9uLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdldElkZW50KCkpIHsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUxhbmRzY2FwZToKKyAgICAgICAgICAgIHBvcnRyYWl0ID0gZmFsc2U7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0OgorICAgICAgICAg
ICAgcG9ydHJhaXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgTGVuZ3Ro
JiB3ID0gcG9ydHJhaXQgPyB3aWR0aCA6IGhlaWdodDsKKyAgICBMZW5ndGgmIGggPSBwb3J0cmFp
dCA/IGhlaWdodCA6IHdpZHRoOworICAgIHN3aXRjaCAoaWRlbnQpIHsKKyAgICBjYXNlIENTU1Zh
bHVlQTU6CisgICAgICAgIHcgPSBhNVdpZHRoOworICAgICAgICBoID0gYTVIZWlnaHQ7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVBNDoKKyAgICAgICAgdyA9IGE0V2lkdGg7Cisg
ICAgICAgIGggPSBhNEhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUEz
OgorICAgICAgICB3ID0gYTNXaWR0aDsKKyAgICAgICAgaCA9IGEzSGVpZ2h0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQjU6CisgICAgICAgIHcgPSBiNVdpZHRoOworICAgICAg
ICBoID0gYjVIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCNDoKKyAg
ICAgICAgdyA9IGI0V2lkdGg7CisgICAgICAgIGggPSBiNEhlaWdodDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZUxldHRlcjoKKyAgICAgICAgdyA9IGxldHRlcldpZHRoOworICAg
ICAgICBoID0gbGV0dGVySGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVl
TGVnYWw6CisgICAgICAgIHcgPSBsZWdhbFdpZHRoOworICAgICAgICBoID0gbGVnYWxIZWlnaHQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVMZWRnZXI6CisgICAgICAgIHcgPSBs
ZWRnZXJXaWR0aDsKKyAgICAgICAgaCA9IGxlZGdlckhlaWdodDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6Om1tTGVuZ3RoKGRvdWJsZSBtbSkKK3sK
KyAgICByZXR1cm4gTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1f
cm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6
OmluY2hMZW5ndGgoZG91YmxlIGluY2gpCit7CisgICAgcmV0dXJuIExlbmd0aChDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRl
TGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsK
K30KKwogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUo
KSA9PSBDU1NWYWx1ZTo6Q1NTX0lOSVRJQUwpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCAw
NWNkMTA5YzFjYjJjMDdlNmJlMzBhYTc1NWNjMDJkOGZkMTRlNDcyLi5mMGRlODNiZTYxNTQ4OWYx
ZTZkZWU5OWNkZjQ1MDljZTk0NTM2MDZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0yNjAs
NiArMjYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZShDU1NW
YWx1ZSosIE5pbmVQaWVjZUltYWdlJik7CiAKICAgICAgICAgdm9pZCBhcHBseVByb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUqKTsKKyAgICAgICAgdm9pZCBhcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NT
VmFsdWUqKTsKKyAgICAgICAgYm9vbCBwYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVl
KiwgQ1NTUHJpbWl0aXZlVmFsdWUqLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCk7Cisg
ICAgICAgIExlbmd0aCBtbUxlbmd0aChkb3VibGUgbW0pOworICAgICAgICBMZW5ndGggaW5jaExl
bmd0aChkb3VibGUgaW5jaCk7CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgdm9pZCBhcHBseVNW
R1Byb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9jc3MvaHRtbC5jc3MgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCBmZTI4NTI4NzBjYzdj
ZGRlZTM4YzczODAwYTkwYjg5MzdjOWI4ODU2Li5kOGNiNzYwYjc1NWNmNDBlM2I1Yzk0N2Q3MzJk
ZTNmNDcxZTdhNzEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJD
b3JlL2Nzcy9odG1sLmNzcwpAQCAtNjg3LDYgKzY4Nyw3IEBAIGlmcmFtZSB7CiAKIEBwYWdlIHsK
ICAgICAvKiBGSVhNRTogRGVmaW5lIHRoZSByaWdodCBkZWZhdWx0IHZhbHVlcyBmb3IgcGFnZSBw
cm9wZXJ0aWVzLiAqLworICAgIHNpemU6IGF1dG87CiAgICAgbWFyZ2luOiAxaW47CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA4ZjkxNTcxODY0MTgyYzdmMGIwYjhiYmQ1NmI2YTQyNjdmMmY2ODJiLi4yZGZi
N2Y5YzM1ODJlZjVmNGI2NGM5M2FkNWQwZWFiY2IwOTkzN2MwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNTAy
LDYgKzE1MDIsMzUgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9y
UGFnZShpbnQgcGFnZUluZGV4KQogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKK2Jv
b2wgRG9jdW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBSZWZQ
dHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CisgICAgcmV0
dXJuIHN0eWxlLT52aXNpYmlsaXR5KCkgIT0gSElEREVOICYmIHN0eWxlLT5kaXNwbGF5KCkgIT0g
Tk9ORTsKK30KKworSW50UmVjdCBEb2N1bWVudDo6cGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBh
Z2VJbmRleCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JQYWdl
KHBhZ2VJbmRleCk7CisgICAgSW50U2l6ZSBwYWdlU2l6ZSA9IHByZWZlcnJlZFBhZ2VTaXplSW5Q
aXhlbHMocGFnZUluZGV4KTsKKyAgICAvLyAxMDAlIHZhbHVlIGZvciBtYXJnaW4te2xlZnQscmln
aHQsdG9wLGJvdHRvbX0uIFRoaXMgaXMgdXNlZCBhbHNvIGZvciB0b3AgYW5kIGJvdHRvbS4gaHR0
cDovL3d3dy53My5vcmcvVFIvQ1NTMi9ib3guaHRtbCN2YWx1ZS1kZWYtbWFyZ2luLXdpZHRoCisg
ICAgaW50IG1heFZhbHVlID0gcGFnZVNpemUud2lkdGgoKTsKKyAgICBpbnQgeCA9IHN0eWxlLT5t
YXJnaW5MZWZ0KCkuY2FsY1ZhbHVlKG1heFZhbHVlKSArIHN0eWxlLT5ib3JkZXJMZWZ0KCkud2lk
dGgoKSArIHN0eWxlLT5wYWRkaW5nTGVmdCgpLmNhbGNWYWx1ZShtYXhWYWx1ZSk7CisgICAgaW50
IHkgPSBzdHlsZS0+bWFyZ2luVG9wKCkuY2FsY1ZhbHVlKG1heFZhbHVlKSArIHN0eWxlLT5ib3Jk
ZXJUb3AoKS53aWR0aCgpICsgc3R5bGUtPnBhZGRpbmdUb3AoKS5jYWxjVmFsdWUobWF4VmFsdWUp
OworICAgIGludCB3aWR0aCA9IHBhZ2VTaXplLndpZHRoKCkgLSB4IC0gc3R5bGUtPm1hcmdpblJp
Z2h0KCkuY2FsY1ZhbHVlKG1heFZhbHVlKSAtIHN0eWxlLT5ib3JkZXJSaWdodCgpLndpZHRoKCkg
LSBzdHlsZS0+cGFkZGluZ1JpZ2h0KCkuY2FsY1ZhbHVlKG1heFZhbHVlKTsKKyAgICBpbnQgaGVp
Z2h0ID0gcGFnZVNpemUuaGVpZ2h0KCkgLSB5IC0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmNhbGNW
YWx1ZShtYXhWYWx1ZSkgLSBzdHlsZS0+Ym9yZGVyQm90dG9tKCkud2lkdGgoKSAtIHN0eWxlLT5w
YWRkaW5nQm90dG9tKCkuY2FsY1ZhbHVlKG1heFZhbHVlKTsKKworICAgIHJldHVybiBJbnRSZWN0
KHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCitJbnRTaXplIERvY3VtZW50OjpwcmVmZXJyZWRQ
YWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlSW5kZXgpCit7CisgICAgUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSA9IHN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOworICAgIExlbmd0aFNpemUgc2l6ZSA9
IHN0eWxlLT5wYWdlU2l6ZSgpOworICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsK
KyAgICBBU1NFUlQoc2l6ZS5oZWlnaHQoKS5pc0ZpeGVkKCkpOworICAgIHJldHVybiBJbnRTaXpl
KHNpemUud2lkdGgoKS5jYWxjVmFsdWUoMCksIHNpemUuaGVpZ2h0KCkuY2FsY1ZhbHVlKDApKTsK
K30KKwogdm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCiB7CiAgICAgYm9vbCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYmMxMmRhMzZhNzQzNzU1
YTcxY2FjZmE4NzU0Nzg2NTdkOGIwM2Y4ZC4uMzE3ZmJiNzY3ZjhjZWQ2NzRkZDRlMjE3NDI5ZDQ4
YjA5MzczYWU0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00ODMsNiArNDgzLDkgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gc3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoRWxl
bWVudCopOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUGFnZShpbnQgcGFn
ZUluZGV4KTsKKyAgICBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCk7CisgICAg
SW50UmVjdCBwYWdlQXJlYVJlY3RJblBpeGVscyhpbnQgcGFnZUluZGV4KTsKKyAgICBJbnRTaXpl
IHByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VJbmRleCk7CiAgICAgc3RhdGljIHZv
aWQgdXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsgLy8gRklYTUU6IFRyeSB0byByZWR1Y2Ug
dGhlICMgb2YgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbi4KICAgICBEb2NMb2FkZXIqIGRvY0xvYWRl
cigpIHsgcmV0dXJuIG1fZG9jTG9hZGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5k
ZXggOGZmOGE2MmI5MjRhYzVkNzdlMjUwOTNjMjA4ZmFhYTI4ZWJiYTk5ZS4uNGFiNzM2N2M0ZDc5
YTE4MjNlN2JkNzE3ZTk2NDk3N2Y5ZGFjZDA0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKQEAgLTIx
OCw2ICsyMTgsMjMgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVByb3BlcnR5KEZyYW1lKiBm
cmFtZSwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGEKICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoInBhZ2VQcm9wZXJ0eSgpIHVuaW1wbGVtZW50ZWQgZm9yOiAlcyIsIHByb3BlcnR5
TmFtZSk7CiB9CiAKK2Jvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBm
cmFtZSwgaW50IHBhZ2VOdW1iZXIpCit7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5p
c1BhZ2VCb3hWaXNpYmxlKHBhZ2VOdW1iZXIpOworfQorCitTdHJpbmcgUHJpbnRDb250ZXh0Ojpw
YWdlQXJlYVJlY3RJblBpeGVscyhGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKQoreworICAg
IEludFJlY3QgcGFnZUFyZWEgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFnZUFyZWFSZWN0SW5QaXhl
bHMocGFnZU51bWJlcik7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIoJWQsJWQsJWQsJWQp
IiwgcGFnZUFyZWEueCgpLCBwYWdlQXJlYS55KCksIHBhZ2VBcmVhLndpZHRoKCksIHBhZ2VBcmVh
LmhlaWdodCgpKTsKK30KKworU3RyaW5nIFByaW50Q29udGV4dDo6cHJlZmVycmVkUGFnZVNpemVJ
blBpeGVscyhGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKQoreworICAgIEludFNpemUgcGFn
ZVNpemUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhwYWdl
TnVtYmVyKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiglZCwlZCkiLCBwYWdlU2l6ZS53
aWR0aCgpLCBwYWdlU2l6ZS5oZWlnaHQoKSk7Cit9CisKIGludCBQcmludENvbnRleHQ6Om51bWJl
ck9mUGFnZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMp
CiB7CiAgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5o
CmluZGV4IDkzOThhNmViZDA4OGU4NjAxM2YyNGY2NjUyOTI1Njc0MDllMjQ4NTEuLjgxYTliNzY0
ZDEyODE5YjFlNDg3YzMzNDNlN2NlMTc1OGY0M2E0NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaAorKysgYi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKQEAgLTU2
LDYgKzU2LDkgQEAgcHVibGljOgogICAgIC8vIFVzZWQgYnkgbGF5b3V0IHRlc3RzLgogICAgIHN0
YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYg
cGFnZVNpemVJblBpeGVscyk7CiAgICAgc3RhdGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJhbWUq
IGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKKyAgICBz
dGF0aWMgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIp
OworICAgIHN0YXRpYyBTdHJpbmcgcGFnZUFyZWFSZWN0SW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBp
bnQgcGFnZU51bWJlcik7CisgICAgc3RhdGljIFN0cmluZyBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpOwogICAgIHN0YXRpYyBpbnQgbnVtYmVy
T2ZQYWdlcyhGcmFtZSosIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDE4OWJlY2Zk
YjAwY2RmMDU4Y2ZmNTcxNzE2MmJmNTk0NzVjNTljOTIuLmFmYzQ2YzE0YmIzOGM3MmEzZjYzYmRl
MjQ3OGQ5YTU2YjZmMTFhZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApA
QCAtNzAxLDYgKzcwMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmUgPiAwOyB9CiAg
ICAgTGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWDsgfQogICAgIExlbmd0aCBwZXJzcGVjdGl2
ZU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wZXJzcGVj
dGl2ZU9yaWdpblk7IH0KKyAgICBMZW5ndGhTaXplIHBhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGFnZVNpemU7IH0KICAgICAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gV2hlbiBzZXQsIHRoaXMgZW5zdXJlcyB0aGF0IHN0
eWxlcyBjb21wYXJlIGFzIGRpZmZlcmVudC4gVXNlZCBkdXJpbmcgYWNjZWxlcmF0ZWQgYW5pbWF0
aW9ucy4KQEAgLTEwMjQsNiArMTAyNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBlcnNwZWN0
aXZlKGZsb2F0IHApIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2
ZSwgcCk7IH0KICAgICB2b2lkIHNldFBlcnNwZWN0aXZlT3JpZ2luWChMZW5ndGggbCkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWCwgbCk7IH0KICAg
ICB2b2lkIHNldFBlcnNwZWN0aXZlT3JpZ2luWShMZW5ndGggbCkgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlT3JpZ2luWSwgbCk7IH0KKyAgICB2b2lkIHNldFBh
Z2VTaXplKExlbmd0aFNpemUgcykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Bh
Z2VTaXplLCBzKTsgfQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZv
aWQgc2V0SXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24oYm9vbCBiID0gdHJ1ZSkgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbiwg
Yik7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuaAppbmRleCBkNmZlOTZlYTQxNzQxYjJmYTllM2YzNjFlNzU2Njg2OGU0MjQ0MTk5
Li5lZTFhNDM4NTJkNzQ5ZTRlOGRiMmFiYjkyMmVlMGY5NTY0MjlhZDY3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC00
MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uTGlzdDsK
IGNsYXNzIENTU1N0eWxlU2VsZWN0b3I7CitjbGFzcyBMZW5ndGhTaXplOwogY2xhc3MgU2hhZG93
RGF0YTsKIGNsYXNzIFN0eWxlRmxleGlibGVCb3hEYXRhOwogY2xhc3MgU3R5bGVNYXJxdWVlRGF0
YTsKQEAgLTEyMyw2ICsxMjQsOCBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIG1fcGVyc3BlY3RpdmVP
cmlnaW5YOwogICAgIExlbmd0aCBtX3BlcnNwZWN0aXZlT3JpZ2luWTsKIAorICAgIExlbmd0aFNp
emUgbV9wYWdlU2l6ZTsKKwogI2lmIEVOQUJMRShYQkwpCiAgICAgT3duUHRyPEJpbmRpbmdVUkk+
IGJpbmRpbmdVUkk7IC8vIFRoZSBYQkwgYmluZGluZyBVUkkgbGlzdC4KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBi
NTJhMzUxZDA2MzkzNjU4NWYxNGY3MmFmMGE5ZDQxYWVlOGQ5OTNhLi5jNGRlNDdmMzU4ZmRmNzEz
MDc2Mjc1Y2FkZWMxMWFjZDQ2NmI4MmVkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA2LTE3
ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgcGFnZSBmb3JtYXQgZGF0YSBw
cm9ncmFtbWluZyBpbnRlcmZhY2UuCisgICAgICAgIEFkZCBtZXRob2RzIGZvciB0ZXN0aW5nLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MzgKKwor
ICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaDoKKyAgICAgICAgKiBNaXNjL1dlYkNv
cmVTdGF0aXN0aWNzLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBpc1BhZ2VCb3hWaXNpYmxlOl0p
OgorICAgICAgICAoLVtXZWJGcmFtZSBwYWdlQXJlYVJlY3RJblBpeGVsczpdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgcHJlZmVycmVkUGFnZVNpemVJblBpeGVsczpdKToKKwogMjAxMC0wNi0xMCAg
WXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2hpbmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0
YXRpc3RpY3MuaCBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCmluZGV4IGM3
OWM5NmRmMWEwYzA5NGVkMzZjZDgzY2ZhNDE4YjgzMTQ4MTJmZDguLmUzNTdiNzJjMWYwZGEyNjk5
MWY1ZTFjODIyYjRjM2Q0ODQ2MTYwMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJD
b3JlU3RhdGlzdGljcy5oCisrKyBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5o
CkBAIC04OCw0ICs4OCw3IEBACiAtIChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1l
bnQqKWVsZW1lbnQ6KGZsb2F0KXBhZ2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5Q
aXhlbHM7CiAtIChpbnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZs
b2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25z
dCBjaGFyKilwcm9wZXJ0eU5hbWU6KGludClwYWdlTnVtYmVyOworLSAoYm9vbClpc1BhZ2VCb3hW
aXNpYmxlOihpbnQpcGFnZU51bWJlcjsKKy0gKE5TU3RyaW5nICopcGFnZUFyZWFSZWN0SW5QaXhl
bHM6KGludClwYWdlTnVtYmVyOworLSAoTlNTdHJpbmcgKilwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzOihpbnQpcGFnZU51bWJlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9X
ZWJDb3JlU3RhdGlzdGljcy5tbSBiL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5t
bQppbmRleCA4OWY3MGZkOWM3MzI2YTM3ZGFlZjVjNTg2NDRlMzk3MjEyNGM2YmY1Li45MTEyZDIx
YTJiYTIyMmIzZjk4MWNhMmU2NWVkMjlkZWI0MjVjY2QxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVT
dGF0aXN0aWNzLm1tCkBAIC0yODAsNCArMjgwLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShfcHJpdmF0ZS0+Y29yZUZy
YW1lLCBwcm9wZXJ0eU5hbWUsIHBhZ2VOdW1iZXIpOwogfQogCistIChib29sKWlzUGFnZUJveFZp
c2libGU6KGludClwYWdlTnVtYmVyCit7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6aXNQYWdl
Qm94VmlzaWJsZShfcHJpdmF0ZS0+Y29yZUZyYW1lLCBwYWdlTnVtYmVyKTsKK30KKworLSAoTlNT
dHJpbmcgKilwYWdlQXJlYVJlY3RJblBpeGVsczooaW50KXBhZ2VOdW1iZXIKK3sKKyAgICByZXR1
cm4gUHJpbnRDb250ZXh0OjpwYWdlQXJlYVJlY3RJblBpeGVscyhfcHJpdmF0ZS0+Y29yZUZyYW1l
LCBwYWdlTnVtYmVyKTsKK30KKworLSAoTlNTdHJpbmcgKilwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzOihpbnQpcGFnZU51bWJlcjsKK3sKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKF9wcml2YXRlLT5jb3JlRnJhbWUsIHBhZ2VOdW1iZXIpOworfQog
QGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDI3YWVlZmQwNThkY2E4OTM2MmI2ZDZhODRmZGU4OTY4MjlkMGY2ZDEuLjUz
MjQzMTBkNGQ1YzhlYzYyNWU4OWM3OGE3Y2E1NzhjNTJlNmFhYWIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxMC0wNi0xNyAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHBh
Z2UgZm9ybWF0IGRhdGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLgorICAgICAgICBBZGQgbWV0aG9k
cyBmb3IgdGVzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM3NTM4CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChwYXJzZVBhZ2VOdW1iZXIpOgorICAgICAgICAoaXNQYWdlQm94
VmlzaWJsZUNhbGxiYWNrKToKKyAgICAgICAgKHBhZ2VBcmVhUmVjdEluUGl4ZWxzQ2FsbGJhY2sp
OgorICAgICAgICAocHJlZmVycmVkUGFnZVNpemVJblBpeGVsc0NhbGxiYWNrKToKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpwYWdlQXJlYVJlY3RJblBpeGVscyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cHJlZmVycmVkUGFnZVNpemVJblBpeGVscyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
bWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmlzUGFnZUJveFZpc2libGUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpw
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmlzUGFnZUJveFZpc2libGUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBh
Z2VBcmVhUmVjdEluUGl4ZWxzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwcmVm
ZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKToKKwogMjAxMC0wNi0xMCAgWXV6byBGdWppc2hpbWEgIDx5
dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamku
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggMzU2NDAwMThlZDBhOWMwZWE5ZGFlOWQzYzEyYmY3ZDI4MGI5N2MwMS4uZDc3
N2YwYzkwZjFhMTA5NmFmNTQ0NTJkZGY2MmMzNjYwZTkzNDI1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNTQ3LDYg
KzU0NywxNSBAQCBzdGF0aWMgYm9vbCBwYXJzZVBhZ2VQcm9wZXJ0eVBhcmFtZXRlcnMoSlNDb250
ZXh0UmVmIGNvbnRleHQsIGludCBhcmd1bWVudENvdW50LAogICAgIH0KIH0KIAorc3RhdGljIGJv
b2wgcGFyc2VQYWdlTnVtYmVyKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiogYXJndW1lbnRzLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24sIGlu
dCYgcGFnZU51bWJlcikKK3sKKyAgICBwYWdlTnVtYmVyID0gMDsKKyAgICBpZiAoYXJndW1lbnRD
b3VudCAhPSAxKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcGFnZU51bWJlciA9IHN0YXRp
Y19jYXN0PGludD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0
aW9uKSk7CisgICAgcmV0dXJuICEqZXhjZXB0aW9uOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBw
YWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CiAgICAgZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMgPSAwOwpAQCAtNTg4LDYgKzU5Nywz
NiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlUHJvcGVydHlDYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3RpbwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgaXNQYWdlQm94VmlzaWJsZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBh
Z2VOdW1iZXIoY29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24sIHBh
Z2VOdW1iZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPmlzUGFnZUJv
eFZpc2libGUocGFnZU51bWJlcikpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBwYWdlQXJlYVJl
Y3RJblBpeGVsc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBp
bnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24sIHBhZ2VOdW1iZXIpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4o
SlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VT
dHJpbmcoY29udGV4dCwgY29udHJvbGxlci0+cGFnZUFyZWFSZWN0SW5QaXhlbHMocGFnZU51bWJl
cikuZ2V0KCkpOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGludCBwYWdl
TnVtYmVyID0gMDsKKyAgICBpZiAoIXBhcnNlUGFnZU51bWJlcihjb250ZXh0LCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbiwgcGFnZU51bWJlcikpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVN0cmluZyhj
b250ZXh0LCBjb250cm9sbGVyLT5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKHBhZ2VOdW1iZXIp
LmdldCgpKTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2lu
ZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMTYzMyw2ICsxNjcyLDcgQEAgSlNTdGF0aWNGdW5jdGlv
biogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgImNv
dW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkIiwgY291bnRlclZhbHVlRm9yRWxlbWVudEJ5SWRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJncmFudERlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNz
aW9uIiwgZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
IAogICAgICAgICB7ICJpc0NvbW1hbmRFbmFibGVkIiwgaXNDb21tYW5kRW5hYmxlZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgImlzUGFnZUJveFZpc2libGUiLCBpc1BhZ2VCb3hWaXNpYmxl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlz
dG9yeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImxheWVyVHJlZUFzVGV4dCIsIGxheWVy
VHJlZUFzVGV4dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGFnZXMiLCBu
dW1iZXJPZlBhZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAgLTE2NDEsMTAgKzE2ODEsMTIgQEAgSlNT
dGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAg
ICAgICAgIHsgIm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyIsIG51bWJlck9mQWN0aXZlQW5pbWF0
aW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92
ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhZ2VOdW1iZXJG
b3JFbGVtZW50QnlJZCIsIHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgInBhZ2VBcmVhUmVjdEluUGl4ZWxzIiwgcGFnZUFyZWFSZWN0SW5QaXhlbHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlUHJvcGVydHkiLCBwYWdlUHJvcGVydHlD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwgcGF0aFRv
TG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdXNlQW5pbWF0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRo
SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVs
ZW1lbnRXaXRoSWQiLCBwYXVzZVRyYW5zaXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzIiwgcHJlZmVy
cmVkUGFnZVNpemVJblBpeGVsc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNhbXBsZVNW
R0FuaW1hdGlvbkZvckVsZW1lbnRBdFRpbWUiLCBzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50
QXRUaW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicHJpbnRUb1BERiIsIGR1bXBBc1BE
RkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVlQmFja05hdmlnYXRpb24iLCBxdWV1
ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDE0ZWMxMzBjNWUwNGIxM2Iz
MWI0ZmU2MDY1NTgxYzM3M2FmM2YzNDkuLjcyNjFlNTc5OGY2ZDk5NTUzYjExOTIwNmQ4MTVlMjI0
YjU3OTRlYTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaApAQCAtNjMsNiArNjMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBvdmVycmlk
ZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CiAgICAgaW50
IHBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZChKU1N0cmluZ1JlZiBpZCwgZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyk7CiAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IHBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdl
TnVtYmVyKSBjb25zdDsKKyAgICBib29sIGlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VOdW1iZXIp
IGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYWdlQXJlYVJlY3RJblBpeGVs
cyhpbnQgcGFnZU51bWJlcikgY29uc3Q7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0OwogICAgIEpTU3Ry
aW5nUmVmIHBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmLCBKU1N0cmluZ1JlZiB1cmwp
OwogICAgIHZvaWQgcXVldWVCYWNrTmF2aWdhdGlvbihpbnQgaG93RmFyQmFja3dhcmQpOwogICAg
IHZvaWQgcXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCk7CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9s
bGVyR3RrLmNwcAppbmRleCAyYmRkODBjN2I0MzljYmYxODFhMTgzZDg0MWNmMTFkZjA0ZTVhODVm
Li42ZjhlNjM3MWJmMWJmNTk5MGQwMWE5Mzg0Y2UwZDVkYTRhZGQyNGEzIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3Bw
CisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAKQEAgLTE3Nyw2ICsxNzcsMjQgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExh
eW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHkKICAg
ICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7CiB9CiAKK2Jvb2wgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlQXJlYVJlY3RJblBpeGVs
cyhpbnQgcGFnZU51bWJlcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
cmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOworfQorCitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMo
aW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogc2l6ZV90IExheW91dFRlc3RD
b250cm9sbGVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0
VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZWUxMDcwMzM2NjAyMDE0YzNhMzU0ODI2NzMyNjVk
N2ZlOTQyNTJkNi4uYzI5MjFkNjFhNmE4ZjY2MGIwYzU4MjAxZjkyMjI2NmU3YTNhM2QyMyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbQpAQCAtMjE4LDYgKzIxOCwyMyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9w
ZXJ0eQogICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlOwogfQogCitib29sIExheW91dFRlc3RDb250
cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIHJl
dHVybiBbbWFpbkZyYW1lIGlzUGFnZUJveFZpc2libGU6cGFnZU51bWJlcl07Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5Q
aXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0
cmluZ1JlZilbbWFpbkZyYW1lIHBhZ2VBcmVhUmVjdEluUGl4ZWxzOnBhZ2VOdW1iZXJdKSk7Cisg
ICAgcmV0dXJuIHByb3BlcnR5VmFsdWU7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhpbnQgcGFnZU51
bWJlcikgY29uc3QKK3sKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcHJvcGVydHlWYWx1
ZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoKENGU3RyaW5nUmVmKVttYWluRnJh
bWUgcHJlZmVycmVkUGFnZVNpemVJblBpeGVsczpwYWdlTnVtYmVyXSkpOworICAgIHJldHVybiBw
cm9wZXJ0eVZhbHVlOworfQorCiBpbnQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om51bWJlck9mUGFn
ZXMoZmxvYXQgcGFnZVdpZHRoSW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscykKIHsK
ICAgICByZXR1cm4gW21haW5GcmFtZSBudW1iZXJPZlBhZ2VzOnBhZ2VXaWR0aEluUGl4ZWxzOnBh
Z2VIZWlnaHRJblBpeGVsc107CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRleCBiMmEzNDViNTBlNzg1
YjU1YjViMWE5OWYzNjdhNzk1ZDRiOTBjMmE3Li5lMGQ1NzMxMzE3OWVkMDQ0YzA2ZDUzMTc4Y2Fk
ZjcwNDVlMGViZWU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTEyNDgsNiArMTI0OCwyNCBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNl
VVJMKEpTU3RyaW5nUmVmIHV0ZjhEYXRhLAogCiB9CiAKK2Jvb2wgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlQXJlYVJlY3RJblBpeGVscyhpbnQgcGFn
ZU51bWJlcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VO
dW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
YXBpVGVzdEdvVG9DdXJyZW50QmFja0ZvcndhcmRJdGVtKCkKIHsKICAgICBDT01QdHI8SVdlYlZp
ZXc+IHdlYlZpZXc7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59227</attachid>
            <date>2010-06-20 22:27:54 -0700</date>
            <delta_ts>2010-06-22 23:15:34 -0700</delta_ts>
            <desc>Addressed review comments.</desc>
            <filename>bug-37538-20100620222751.patch</filename>
            <type>text/plain</type>
            <size>49289</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MTliNjg1Y2Q1ZjhiODc0MjM4MzZmNTVlMDkyOTllMDJkYWM5NTczLi41MmZmY2M4
MTcyMWRkOTA5Nzk2MWI2MjdkZDg2MmNhNjUwYzk5OGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMjAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBwYWdlIGZv
cm1hdCBkYXRhIHByb2dyYW1taW5nIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wNi0xNyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKaW5kZXggNjI0NTM3MTAxYjE0NGU4ZDc3ZDYyOTFjMGJhZmQ1NDBjZjFjYjRiOC4uNjE2
OTg1NjczNDQ2YjgxOTdkODhlZWRlZTBiNmJkMDg4OTA2ZGFkOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjg3Niwz
ICsyODc2LDYgQEAgQlVHNDY2MDMgOiBmYXN0L2ZyYW1lcy9sb3RzLW9mLW9iamVjdHMuaHRtbCA9
IFBBU1MgVElNRU9VVAogLy8gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBu
b3QgaW1wbGVtZW50ZWQgZm9yIENocm9taXVtIHlldC4KIEJVR1dLMzU5NjEgOiBwcmludGluZy9w
YWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwgPSBURVhUCiAKKy8vIExheW91dFRlc3RDb250cm9sbGVy
Ojppc1BhZ2VCb3hWaXNpYmxlLCBwYWdlQXJlYVJlY3RJblBpeGVscywgYW5kIHByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIENocm9taXVtLgorQlVH
V0szNzUzOCA6IHByaW50aW5nL3BhZ2UtZm9ybWF0LWRhdGEuaHRtbCA9IFRFWFQKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA4MzBlNGQ4YzMyYzc0MWVkMTE2NmMwOGQ3NzQxZDNhM2I0
YWY5OTViLi4xOWViY2NlNDQ1MjU4YzE2NGViMDY2ZmI3MTI4ZmFkODA5YmMyNmU4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTkyMyw2ICs1OTIzLDkgQEAgZmFzdC9mb3Jtcy9zbGlk
ZXItem9vbWVkLmh0bWwKICMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VQcm9wZXJ0eSBpcyBu
b3QgaW1wbGVtZW50ZWQgZm9yIEdUSyB5ZXQuCiBwcmludGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9u
Lmh0bWwKIAorIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSwgcGFnZUFy
ZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzIGFyZSBub3QgaW1w
bGVtZW50ZWQgeWV0IGZvciBHVEsuCitwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwKKwog
IyBHdGsgc2VlbXMgdG8gYmUgcHVtcGluZyB0aGUgbGV4ZXIgYW4gZXh0cmEgdGltZSByZXZlYWxl
ZCBieSB0dXJuaW5nIG9uIHRoZQogIyBIVE1MNSBMZXhlciBpbiByNjEyMzQuCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDY2NApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKaW5kZXggNDQ5MzIxNmVmOTYxOWU4ZTRmYzcwOTgwNThlY2MyYmYxNGJmZThmMS4uZDMwMzRi
Y2EzODZhYTc0MDMxNWUyMjgwMWQyNTZlMTFmZGZjYWQyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lw
cGVkCkBAIC04NjIsNiArODYyLDkgQEAgZmFzdC9ydWJ5L3J1YnlET00tcmVtb3ZlLXRleHQyLmh0
bWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTYxCiBwcmlu
dGluZy9wYWdlLXJ1bGUtc2VsZWN0aW9uLmh0bWwKIAorIyBNaXNzaW5nIExheW91dFRlc3RDb250
cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlLCBwYWdlQXJlYVJlY3RJblBpeGVscywgYW5kIHByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMuCitwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwKKwog
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSAjCiAjIC0tLS0tLS0gZmFpbGluZyBlZGl0aW5nL2lucHV0
IHRlc3RzCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
aW5kZXggN2ZiOWFhZDg5MzBkY2NmNTBhMGI3NmJjYzM5ZTFmMjI4YTcxOTM5NS4uNTdjNDZkZWMw
MjE0YmVhMDU0NjZlZmM2N2IwODk3ZTBiZmU1NzQ2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKQEAgLTg5NiwzICs4OTYsNyBAQCBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMt
b24tZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFn
ZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgV0lOIHlldC4KIHByaW50aW5nL3BhZ2Ut
cnVsZS1zZWxlY3Rpb24uaHRtbAorCisjIExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hW
aXNpYmxlLCBwYWdlQXJlYVJlY3RJblBpeGVscywgYW5kIHByZWZlcnJlZFBhZ2VTaXplSW5QaXhl
bHMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQgZm9yIFdJTi4KK3ByaW50aW5nL3BhZ2UtZm9ybWF0
LWRhdGEuaHRtbAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLWZvcm1h
dC1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtZm9ybWF0LWRh
dGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYzhhZWExZWM0MTlhMDJmMzg0YjZiMzc5ZjVj
NWRlMDM5YjM4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdl
LWZvcm1hdC1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgwIEBACitUaGlzIHRlc3RzIHBh
Z2UgZm9ybWF0IGRhdGEKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Rlc3QgZGVm
YXVsdCB2aXNpYmlsaXR5CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZpc2li
bGUoMCkgaXMgdHJ1ZQorVGVzdCB2aXNpYmlsaXR5OnZpc2libGUKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSBpcyB0cnVlCitUZXN0IGRpc3BsYXk6bm9uZQor
UEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hWaXNpYmxlKDApIGlzIGZhbHNlCitU
ZXN0IGRpc3BsYXk6aW5saW5lCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZp
c2libGUoMCkgaXMgdHJ1ZQorVGVzdCB2aXNpYmlsaXR5OmhpZGRlbjsgZGlzcGxheTpub25lCitQ
QVNTIGxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkgaXMgZmFsc2UKK1Rl
c3QgdmlzaWJpbGl0eTpoaWRkZW47IGRpc3BsYXk6aW5saW5lCitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkgaXMgZmFsc2UKK1Rlc3QgdmlzaWJpbGl0eTp2aXNp
YmxlOyBkaXNwbGF5OmlubGluZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hW
aXNpYmxlKDApIGlzIHRydWUKKworVGVzdCBkZWZhdWx0IHBhZ2Ugc2l6ZQorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzIGluY2hTaXplKDgu
NSwgMTEpCitUZXN0IGF1dG8gcGFnZSBzaXplCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgaW5jaFNpemUoOC41LCAxMSkKK1Rlc3QgbGFu
ZHNjYXBlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhl
bHMoMCkgaXMgaW5jaFNpemUoMTEsIDguNSkKK1Rlc3QgcG9ydHJhaXQKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyBpbmNoU2l6ZSg4LjUs
IDExKQorVGVzdCBhNQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6
ZUluUGl4ZWxzKDApIGlzIG1tU2l6ZSgxNDgsIDIxMCkKK1Rlc3QgYTUgbGFuZHNjYXBlCitQQVNT
IGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgbW1T
aXplKDIxMCwgMTQ4KQorVGVzdCBwb3J0cmFpdCBhNAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxl
ci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzIG1tU2l6ZSgyMTAsIDI5NykKK1Rlc3Qg
YTMKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygw
KSBpcyBtbVNpemUoMjk3LCA0MjApCitUZXN0IGI1CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVy
LnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgbW1TaXplKDE3NiwgMjUwKQorVGVzdCBi
NAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDAp
IGlzIG1tU2l6ZSgyNTAsIDM1MykKK1Rlc3QgbGV0dGVyCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgaW5jaFNpemUoOC41LCAxMSkKK1Rl
c3QgbGVnYWwKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBp
eGVscygwKSBpcyBpbmNoU2l6ZSg4LjUsIDE0KQorVGVzdCBsZWRnZXIKK1BBU1MgbGF5b3V0VGVz
dENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyBpbmNoU2l6ZSgxMSwg
MTcpCitUZXN0IDEwY20KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNp
emVJblBpeGVscygwKSBpcyBtbVNpemUoMTAwLCAxMDApCitUZXN0IDIwY20geCAzMGNtCitQQVNT
IGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgbW1T
aXplKDIwMCwgMzAwKQorVGVzdCAxMDAwMHB4IDIwMDAwcHgKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAnKDEwMDAwLDIwMDAwKScKK1Rl
c3QgaW52YWxpZCBwYWdlIHNpemU6IC0xMGNtCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgJygxMDAwMCwyMDAwMCknCitUZXN0IGludmFs
aWQgcGFnZSBzaXplOiBhNCBhNAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQ
YWdlU2l6ZUluUGl4ZWxzKDApIGlzICcoMTAwMDAsMjAwMDApJworVGVzdCBpbnZhbGlkIHBhZ2Ug
c2l6ZTogbGFuZHNjYXBlIHBvcnRyYWl0CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgJygxMDAwMCwyMDAwMCknCitUZXN0IGludmFsaWQg
cGFnZSBzaXplOiAxMGNtIGxldHRlcgorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzICcoMTAwMDAsMjAwMDApJworVGVzdCBpbnZhbGlkIHBh
Z2Ugc2l6ZTogMTBjbSAxMGNtIDEwY20KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVy
cmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAnKDEwMDAwLDIwMDAwKScKK1Rlc3QgaW52YWxpZCBw
YWdlIHNpemU6IGVtcHR5CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VT
aXplSW5QaXhlbHMoMCkgaXMgJygxMDAwMCwyMDAwMCknCisKK1Rlc3QgcGFnZSBhcmVhIHdoZW4g
bWFyZ2luLCBwYWRkaW5nLCBhbmQgYm9yZGVyIGFyZSAwcHgKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkgaXMgJygwLDAsMTAwMDAsMjAwMDApJworVGVz
dCBub24temVybyBtYXJnaW4sIHBhZGRpbmcsIGFuZCBib3JkZXIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkgaXMgJygyMTg0LDI3Myw3MjcwLDE4NjM1
KScKK1Rlc3QgcGVyY2VudGFnZSBtYXJnaW4gYW5kIHBhZGRpbmcKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkgaXMgJygxNTAwLDI1MDAsNzAwMCwxNTAw
MCknCitUZXN0IGRpc3BsYXk6bm9uZQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlQXJl
YVJlY3RJblBpeGVscygwKSBpcyAnKDAsMCwxMDAwMCwyMDAwMCknCitUZXN0IGRpc3BsYXk6aW5s
aW5lIHZpc2liaWxpdHk6aGlkZGVuCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBhZ2VBcmVh
UmVjdEluUGl4ZWxzKDApIGlzICcoMTUwMCwyNTAwLDcwMDAsMTUwMDApJworCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sIGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4YWViMGZiODBjNzE2MDY3
MzdmNTQ5MzFmYzkwN2E1YmMwZTY3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwKQEAgLTAsMCArMSwxODggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZCBpZD0iaGVhZF9lbGVtZW50Ij4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHBhZ2UgZm9ybWF0IGRhdGEiKTsKKworICAgIGZ1bmN0aW9uIGFwcGVu
ZFN0eWxlKHN0eWxlU3RyaW5nKQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgIHN0eWxlRWxlbWVudC5pbm5l
ckhUTUwgPSBzdHlsZVN0cmluZzsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhl
YWRfZWxlbWVudCIpLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gaW5jaFNpemUod2lkdGgsIGhlaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiAiKCIg
KyBNYXRoLmZsb29yKHdpZHRoICogOTYpICsgIiwiICsgTWF0aC5mbG9vcihoZWlnaHQgKiA5Nikg
KyAiKSI7CisgICAgfQorCisgICAgZnVuY3Rpb24gbW1TaXplKHdpZHRoLCBoZWlnaHQpCisgICAg
eworICAgICAgICByZXR1cm4gIigiICsgTWF0aC5mbG9vcih3aWR0aCAqIDk2IC8gMjUuNCkgKyAi
LCIgKyBNYXRoLmZsb29yKGhlaWdodCAqIDk2IC8gMjUuNCkgKyAiKSI7CisgICAgfQorCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gUGFnZSBib3ggdmlzaWJpbGl0eSB0
ZXN0cy4KKworICAgICAgICBkZWJ1ZygiVGVzdCBkZWZhdWx0IHZpc2liaWxpdHkiKTsKKyAgICAg
ICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZpc2libGUoMCkiLCAi
dHJ1ZSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHZpc2liaWxpdHk6dmlzaWJsZSIpOworICAg
ICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6dmlzaWJsZTt9Iik7CisgICAgICAg
IHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hWaXNpYmxlKDApIiwgInRy
dWUiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBkaXNwbGF5Om5vbmUiKTsKKyAgICAgICAgYXBw
ZW5kU3R5bGUoIkBwYWdlIHtkaXNwbGF5Om5vbmU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5
b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJmYWxzZSIpOworCisgICAg
ICAgIGRlYnVnKCJUZXN0IGRpc3BsYXk6aW5saW5lIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJA
cGFnZSB7ZGlzcGxheTppbmxpbmU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJ0cnVlIik7CisKKyAgICAgICAgZGVidWco
IlRlc3QgdmlzaWJpbGl0eTpoaWRkZW47IGRpc3BsYXk6bm9uZSIpOworICAgICAgICBhcHBlbmRT
dHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6aGlkZGVuOyBkaXNwbGF5Om5vbmU7fSIpOworICAgICAg
ICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIsICJm
YWxzZSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHZpc2liaWxpdHk6aGlkZGVuOyBkaXNwbGF5
OmlubGluZSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6aGlkZGVu
OyBkaXNwbGF5OmlubGluZTt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5pc1BhZ2VCb3hWaXNpYmxlKDApIiwgImZhbHNlIik7CisKKyAgICAgICAgZGVidWcoIlRl
c3QgdmlzaWJpbGl0eTp2aXNpYmxlOyBkaXNwbGF5OmlubGluZSIpOworICAgICAgICBhcHBlbmRT
dHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6dmlzaWJsZTsgZGlzcGxheTppbmxpbmU7fSIpOworICAg
ICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSIs
ICJ0cnVlIik7CisKKyAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgIC8vIFBhZ2Ugc2l6ZSB0
ZXN0cworCisgICAgICAgIGRlYnVnKCJUZXN0IGRlZmF1bHQgcGFnZSBzaXplIik7CisgICAgICAg
IHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxz
KDApIiwgImluY2hTaXplKDguNSwgMTEpIik7IC8vIExldHRlcgorCisgICAgICAgIGRlYnVnKCJU
ZXN0IGF1dG8gcGFnZSBzaXplIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7c2l6ZTph
dXRvO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJl
ZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiaW5jaFNpemUoOC41LCAxMSkiKTsKKworICAgICAgICBk
ZWJ1ZygiVGVzdCBsYW5kc2NhcGUiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXpl
OmxhbmRzY2FwZTt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5w
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgImluY2hTaXplKDExLCA4LjUpIik7CisKKyAg
ICAgICAgZGVidWcoIlRlc3QgcG9ydHJhaXQiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdl
IHtzaXplOnBvcnRyYWl0O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9s
bGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiaW5jaFNpemUoOC41LCAxMSkiKTsK
KworICAgICAgICBkZWJ1ZygiVGVzdCBhNSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Ug
e3NpemU6YTU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJl
ZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJtbVNpemUoMTQ4LCAyMTApIik7CisKKyAgICAg
ICAgZGVidWcoIlRlc3QgYTUgbGFuZHNjYXBlIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFn
ZSB7c2l6ZTphNSBsYW5kc2NhcGU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJtbVNpemUoMjEwLCAxNDgp
Iik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgcG9ydHJhaXQgYTQiKTsKKyAgICAgICAgYXBwZW5k
U3R5bGUoIkBwYWdlIHtzaXplOnBvcnRyYWl0IGE0O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxh
eW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXpl
KDIxMCwgMjk3KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGEzIik7CisgICAgICAgIGFwcGVu
ZFN0eWxlKCJAcGFnZSB7c2l6ZTphMzt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0
Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIm1tU2l6ZSgyOTcsIDQy
MCkiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBiNSIpOworICAgICAgICBhcHBlbmRTdHlsZSgi
QHBhZ2Uge3NpemU6YjU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xs
ZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJtbVNpemUoMTc2LCAyNTApIik7CisK
KyAgICAgICAgZGVidWcoIlRlc3QgYjQiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtz
aXplOmI0O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXplKDI1MCwgMzUzKSIpOworCisgICAgICAg
IGRlYnVnKCJUZXN0IGxldHRlciIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6
bGV0dGVyO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiaW5jaFNpemUoOC41LCAxMSkiKTsKKworICAgICAg
ICBkZWJ1ZygiVGVzdCBsZWdhbCIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6
bGVnYWw7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVy
cmVkUGFnZVNpemVJblBpeGVscygwKSIsICJpbmNoU2l6ZSg4LjUsIDE0KSIpOworCisgICAgICAg
IGRlYnVnKCJUZXN0IGxlZGdlciIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6
bGVkZ2VyO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiaW5jaFNpemUoMTEsIDE3KSIpOworCisgICAgICAg
IGRlYnVnKCJUZXN0IDEwY20iKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOjEw
Y207fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVk
UGFnZVNpemVJblBpeGVscygwKSIsICJtbVNpemUoMTAwLCAxMDApIik7CisKKyAgICAgICAgZGVi
dWcoIlRlc3QgMjBjbSB4IDMwY20iKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXpl
OjIwY20gMzBjbTt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5w
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIm1tU2l6ZSgyMDAsIDMwMCkiKTsKKworICAg
ICAgICBkZWJ1ZygiVGVzdCAxMDAwMHB4IDIwMDAwcHgiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUo
IkBwYWdlIHtzaXplOjEwMDAwcHggMjAwMDBweDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIicoMTAwMDAs
MjAwMDApJyIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGludmFsaWQgcGFnZSBzaXplOiAtMTBj
bSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6LTEwY207fSIpOworICAgICAg
ICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVs
cygwKSIsICInKDEwMDAwLDIwMDAwKSciKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBpbnZhbGlk
IHBhZ2Ugc2l6ZTogYTQgYTQiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOmE0
IGE0O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJl
ZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiJygxMDAwMCwyMDAwMCknIik7CisKKyAgICAgICAgZGVi
dWcoIlRlc3QgaW52YWxpZCBwYWdlIHNpemU6IGxhbmRzY2FwZSBwb3J0cmFpdCIpOworICAgICAg
ICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6bGFuZHNjYXBlIHBvcnRyYWl0O30iKTsKKyAgICAg
ICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhl
bHMoMCkiLCAiJygxMDAwMCwyMDAwMCknIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgaW52YWxp
ZCBwYWdlIHNpemU6IDEwY20gbGV0dGVyIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7
c2l6ZToxMGNtIGxldHRlcjt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIicoMTAwMDAsMjAwMDApJyIpOwor
CisgICAgICAgIGRlYnVnKCJUZXN0IGludmFsaWQgcGFnZSBzaXplOiAxMGNtIDEwY20gMTBjbSIp
OworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6MTBjbSAxMGNtIDEwY207fSIpOwor
ICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJ
blBpeGVscygwKSIsICInKDEwMDAwLDIwMDAwKSciKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBp
bnZhbGlkIHBhZ2Ugc2l6ZTogZW1wdHkiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtz
aXplOjt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIicoMTAwMDAsMjAwMDApJyIpOworCisgICAgICAgIGRl
YnVnKCIiKTsKKworICAgICAgICAvLyBQYWdlIGFyZWEgdGVzdHMKKworICAgICAgICBkZWJ1Zygi
VGVzdCBwYWdlIGFyZWEgd2hlbiBtYXJnaW4sIHBhZGRpbmcsIGFuZCBib3JkZXIgYXJlIDBweCIp
OworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge21hcmdpbjowcHg7cGFkZGluZzowcHg7Ym9y
ZGVyOjBweDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdl
QXJlYVJlY3RJblBpeGVscygwKSIsICInKDAsMCwxMDAwMCwyMDAwMCknIik7CisKKyAgICAgICAg
ZGVidWcoIlRlc3Qgbm9uLXplcm8gbWFyZ2luLCBwYWRkaW5nLCBhbmQgYm9yZGVyIik7CisgICAg
ICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7bWFyZ2luOjFweCAycHggNHB4IDhweDsgcGFkZGluZzox
NnB4IDMycHggNjRweCAxMjhweDsgYm9yZGVyLXdpZHRoOjI1NnB4IDUxMnB4IDEwMjRweCAyMDQ4
cHg7fSIpOyAvLyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQKKyAgICAgICAgc2hvdWxkQmUoImxh
eW91dFRlc3RDb250cm9sbGVyLnBhZ2VBcmVhUmVjdEluUGl4ZWxzKDApIiwgIicoMjE4NCwyNzMs
NzI3MCwxODYzNSknIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgcGVyY2VudGFnZSBtYXJnaW4g
YW5kIHBhZGRpbmciKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHttYXJnaW46MjAlIDEw
JTsgcGFkZGluZzo1JTsgYm9yZGVyLXdpZHRoOjBweDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJs
YXlvdXRUZXN0Q29udHJvbGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSIsICInKDE1MDAsMjUw
MCw3MDAwLDE1MDAwKSciKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBkaXNwbGF5Om5vbmUiKTsK
KyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtkaXNwbGF5Om5vbmU7fSIpOworICAgICAgICBz
aG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkiLCAi
JygwLDAsMTAwMDAsMjAwMDApJyIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGRpc3BsYXk6aW5s
aW5lIHZpc2liaWxpdHk6aGlkZGVuIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7ZGlz
cGxheTppbmxpbmU7IHZpc2liaWxpdHk6aGlkZGVufSIpOworICAgICAgICBzaG91bGRCZSgibGF5
b3V0VGVzdENvbnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkiLCAiJygxNTAwLDI1MDAs
NzAwMCwxNTAwMCknIik7CisKKyAgICAgICAgZGVidWcoIiIpOworCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiVGhpcyB0ZXN0IGNhbiBiZSBydW4gb25seSB3aXRoIHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlciIpOworICAgIH0KKyAgICB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIwOGFlYWQ2YjdmMzlm
OTBmNzA1MGRjMmU0N2FiOGFhNWZiMTY0NTkuLjlmY2M5NWEwYTAxYzJmZjk3NmY4NDIzYjYxMDU4
ODlhZDliYWY1OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDYtMjAgIFl1em8gRnVqaXNoaW1hICA8
eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEltcGxlbWVudCBwYWdlIGZvcm1hdCBkYXRhIHByb2dyYW1taW5nIGludGVyZmFj
ZS4KKyAgICAgICAgVGhlIGZpbmFsIGdvYWwgaXMgdG8gaW1wbGVtZW50IENTUyBQYWdlZCBNZWRp
YSBNb2R1bGUgTGV2ZWwgMyAoaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzMy1wYWdlLykuCisg
ICAgICAgIFRvIGJlZ2luIHdpdGgsIHRoaXMgY2hhbmdlIGFkZHMgbWV0aG9kcyB0byBrbm93Ogor
ICAgICAgICAtIGlmIHBhZ2UgYm94IGlzIHZpc2libGUsCisgICAgICAgIC0gdGhlIHBhZ2UgYXJl
YSByZWN0YW5nbGUsIGFuZAorICAgICAgICAtIHByZWZlcnJlZCBwYWdlIHNpemUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAg
ICAgVGVzdDogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLmJhc2UuZXhwOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIpOgorICAgICAgICAqIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
YWdlU2l6ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBh
Z2VTaXplRnJvbU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bW1M
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6aW5jaExlbmd0aCk6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvaHRtbC5j
c3M6CisgICAgICAgIChAcGFnZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwYWdlQXJlYVJlY3RJblBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6cHJlZmVycmVkUGFnZVNpemVJblBpeGVscyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aW50Q29udGV4dDo6cGFnZUFyZWFSZWN0SW5QaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKToKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnBhZ2VTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRQYWdlU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMC0wNi0xNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmJhc2Uu
ZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDJkNGNhNjhjNGRkZWQyZDk0OGFm
NDhhYzJhMzgxZDkzNGZkYjgwMDEuLjMwZTAwMzFjM2FmMzZhNWNlZTQ2MTg0ZjA0OThiZDA2M2I5
NDgyMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9XZWJDb3Jl
L1dlYkNvcmUuYmFzZS5leHAKQEAgLTI1MCw3ICsyNTAsMTAgQEAgX19aTjdXZWJDb3JlMTJJY29u
RGF0YWJhc2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVudEUKIF9fWk43V2ViQ29y
ZTEyUGx1Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJD
b3JlMTJQcmludENvbnRleHQxMnBhZ2VQcm9wZXJ0eUVQTlNfNUZyYW1lRVBLY2kKIF9fWk43V2Vi
Q29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185RmxvYXRT
aXplRQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxNmlzUGFnZUJveFZpc2libGVFUE5TXzVG
cmFtZUVpCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZUFyZWFSZWN0SW5QaXhlbHNF
UE5TXzVGcmFtZUVpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZvckVs
ZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRD
b250ZXh0MjVwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzRVBOU181RnJhbWVFaQogX19aTjdXZWJD
b3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVFUktOU185Rmxv
YXRTaXplRWIKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0QzFFUE5TXzVGcmFtZUUKIF9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgpAQCAtNjIxLDExICs2MjQsMTQgQEAgX19aTjdXZWJD
b3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxM3JlbW92
ZU1hcmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUUKIF9fWk43V2ViQ29yZThE
b2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNHNldEZvY3Vz
ZWROb2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCitfX1pON1dlYkNvcmU4RG9jdW1l
bnQxNmlzUGFnZUJveFZpc2libGVFaQogX19aTjdXZWJDb3JlOERvY3VtZW50MTdnZXRGb2N1c2Fi
bGVOb2Rlc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0wRUVFCiBfX1pO
N1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgorX19aTjdXZWJDb3JlOERv
Y3VtZW50MjBwYWdlQXJlYVJlY3RJblBpeGVsc0VpCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyMmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MjNyZW5kZXJlZFJl
Y3RzRm9yTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRQogX19aTjdXZWJD
b3JlOERvY3VtZW50MjRzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnNFYgorX19aTjdXZWJDb3JlOERv
Y3VtZW50MjVwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzRWkKIF9fWk43V2ViQ29yZThEb2N1bWVu
dDM2dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzRXYKIF9fWk43V2ViQ29yZThE
b2N1bWVudDRoZWFkRXYKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4
IGY1Mjk1NjEwYmYyYzQ3MDJhOTE0ZWUwOGQyNzAzMGFiN2QyY2I5YmUuLjdlNTVlNWUyOTBiMjQ5
OWY1YWQ1YTVmMjg3ZjI5ZmRhYjc4YTFhZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjIzMywxMyArMjIz
MywxMyBAQCBDU1NQYXJzZXI6OlNpemVQYXJhbWV0ZXJUeXBlIENTU1BhcnNlcjo6cGFyc2VTaXpl
UGFyYW1ldGVyKENTU1ZhbHVlTGlzdCogcGFyc2VkVgogICAgIGNhc2UgQ1NTVmFsdWVMZXR0ZXI6
CiAgICAgICAgIGlmIChwcmV2UGFyYW1UeXBlID09IE5vbmUgfHwgcHJldlBhcmFtVHlwZSA9PSBP
cmllbnRhdGlvbikgewogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRvIFBhZ2UgU2l6ZSB0aGVu
IE9yaWVudGF0aW9uIG9yZGVyIGJ5IHByZXBlbmRpbmcuCi0gICAgICAgICAgICAvLyBUaGlzIGlz
IG5vdCBzcGVjaWZpZWQgYnkgdGhlIENTUzMgUGFnZWQgTWVkaWEgc3BlY2lmaWNhdGlvbiwgYnV0
IGZvciBzaW1wbGVyIHByb2Nlc3NpbmcgaGVyZWFmdGVyLgorICAgICAgICAgICAgLy8gVGhpcyBp
cyBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBDU1MzIFBhZ2VkIE1lZGlhIHNwZWNpZmljYXRpb24sIGJ1
dCBmb3Igc2ltcGxlciBwcm9jZXNzaW5nIGxhdGVyIChDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBh
Z2VTaXplUHJvcGVydHkpLgogICAgICAgICAgICAgcGFyc2VkVmFsdWVzLT5wcmVwZW5kKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlLT5pZCkpOwogICAgICAgICAgICAg
cmV0dXJuIFBhZ2VTaXplOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOb25lOwogICAgIGNh
c2UgMDoKLSAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCwgbV9zdHJpY3QpICYm
IChwcmV2UGFyYW1UeXBlID09IE5vbmUgfHwgcHJldlBhcmFtVHlwZSA9PSBMZW5ndGgpKSB7Cisg
ICAgICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnLCBtX3N0cmljdCkg
JiYgKHByZXZQYXJhbVR5cGUgPT0gTm9uZSB8fCBwcmV2UGFyYW1UeXBlID09IExlbmd0aCkpIHsK
ICAgICAgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUodmFsdWUtPmZWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cz4odmFsdWUtPnVuaXQpKSk7CiAgICAgICAgICAgICByZXR1cm4gTGVuZ3RoOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IGIxMzc3YzU3NjU5MTAyZTgyMjM2ZDYwMDk0
OTI1OWNjNjU0MWMzMDAuLjI2ZGE0OGFmNTE0M2VmMGIyOGM3NGQ2YmU5NDE0ZDNlNDExYzM4N2Eg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
Q1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKKyNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNp
bmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVkaWFSdWxlLmgiCiAjaW5j
bHVkZSAiQ1NTUGFnZVJ1bGUuaCIKQEAgLTU0NDksMTIgKzU0NTAsMTQgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAg
ICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZSgqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKKyAgICAgICAgYXBw
bHlQYWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZv
bnRTdHJldGNoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlRdW90ZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVRleHRMaW5lVGhyb3VnaDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoQ29s
b3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1vZGU6CkBAIC01NTAyLDYg
KzU1MDUsMTYxIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQs
IENTU1ZhbHVlICp2YWx1ZSkKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQYWdlU2l6ZVByb3BlcnR5KENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLT5p
c1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxp
c3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisgICAgTGVuZ3RoIHdpZHRo
OworICAgIExlbmd0aCBoZWlnaHQ7CisgICAgc3dpdGNoICh2YWx1ZUxpc3QtPmxlbmd0aCgpKSB7
CisgICAgY2FzZSAyOiB7CisgICAgICAgIC8vIDxsZW5ndGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9y
aWVudGF0aW9uPgorICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmltaXRpdmVW
YWx1ZSgpIHx8ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
MCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDApKTsK
KyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlMSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDEpKTsKKyAgICAgICAgaW50IHR5
cGUwID0gcHJpbWl0aXZlVmFsdWUwLT5wcmltaXRpdmVUeXBlKCk7CisgICAgICAgIGludCB0eXBl
MSA9IHByaW1pdGl2ZVZhbHVlMS0+cHJpbWl0aXZlVHlwZSgpOworICAgICAgICBpZiAoQ1NTUHJp
bWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTApKSB7CisgICAgICAgICAgICAvLyA8
bGVuZ3RoPnsyfQorICAgICAgICAgICAgaWYgKCFDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlw
ZUxlbmd0aCh0eXBlMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgd2lk
dGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAgICAgICAgIGhlaWdodCA9
IExlbmd0aChwcmltaXRpdmVWYWx1ZTEtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAgICAgICAgLy8gVGhlIHZh
bHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRl
ci4KKyAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZTAsIHBy
aW1pdGl2ZVZhbHVlMSwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIDE6IHsKKyAgICAgICAg
Ly8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBl
XQorICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlTGlzdC0+aXRlbSgw
KSk7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsK
KyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7
CisgICAgICAgICAgICAvLyA8bGVuZ3RoPgorICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgICAgICAgICAv
LyBhdXRvCisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKDAsIDAsIHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6CisgICAgICAgICAgICBj
YXNlIENTU1ZhbHVlTGFuZHNjYXBlOgorICAgICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+Cisg
ICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKDAsIHByaW1pdGl2ZVZhbHVlLCB3
aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvLyBbIHBv
cnRyYWl0IHwgbGFuZHNjYXBlXQorICAgICAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFt
ZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3N0eWxlLT5zZXRQ
YWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXR1cm47Cit9CisKK2Jv
b2wgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSog
cGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5ndGgm
IHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKK3sKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE1V2lk
dGggPSBtbUxlbmd0aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVuZ3RoKDIxMCk7CisgICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEwKSwgYTRIZWlnaHQgPSBtbUxlbmd0
aCgyOTcpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9IG1tTGVuZ3RoKDI5Nyks
IGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI1V2lk
dGggPSBtbUxlbmd0aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVuZ3RoKDI1MCk7CisgICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUwKSwgYjRIZWlnaHQgPSBtbUxlbmd0
aCgzNTMpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lkdGggPSBpbmNoTGVuZ3Ro
KDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEpOworICAgIHN0YXRpYyBjb25zdCBM
ZW5ndGggbGVnYWxXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGVnYWxIZWlnaHQgPSBpbmNoTGVu
Z3RoKDE0KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZGdlcldpZHRoID0gaW5jaExlbmd0
aCgxMSksIGxlZGdlckhlaWdodCA9IGluY2hMZW5ndGgoMTcpOworCisgICAgLy8gRklYTUU6IERl
ZmluZSBVQSBkZWZhdWx0IHBhZ2Ugc2l6ZS4gQXNzdW1lIGxldHRlciBmb3Igbm93LgorICAgIGlu
dCBpZGVudCA9IENTU1ZhbHVlTGV0dGVyOworICAgIGlmIChwYWdlU2l6ZU5hbWUpIHsKKyAgICAg
ICAgaWYgKHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSURFTlQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlkZW50ID0g
cGFnZVNpemVOYW1lLT5nZXRJZGVudCgpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEZWZpbmUg
VUEgZGVmYXVsdCBwYWdlIG9yaWVudGF0aW9uLiBBc3N1bWUgcG9ydHJhaXQgZm9yIG5vdy4KKyAg
ICBib29sIHBvcnRyYWl0ID0gdHJ1ZTsKKyAgICBpZiAocGFnZU9yaWVudGF0aW9uKSB7CisgICAg
ICAgIGlmIChwYWdlT3JpZW50YXRpb24tPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBzd2l0
Y2ggKHBhZ2VPcmllbnRhdGlvbi0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVl
TGFuZHNjYXBlOgorICAgICAgICAgICAgcG9ydHJhaXQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6CisgICAgICAgICAgICBwb3J0cmFp
dCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBMZW5ndGgmIHcgPSBwb3J0
cmFpdCA/IHdpZHRoIDogaGVpZ2h0OworICAgIExlbmd0aCYgaCA9IHBvcnRyYWl0ID8gaGVpZ2h0
IDogd2lkdGg7CisgICAgc3dpdGNoIChpZGVudCkgeworICAgIGNhc2UgQ1NTVmFsdWVBNToKKyAg
ICAgICAgdyA9IGE1V2lkdGg7CisgICAgICAgIGggPSBhNUhlaWdodDsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZUE0OgorICAgICAgICB3ID0gYTRXaWR0aDsKKyAgICAgICAgaCA9
IGE0SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlQTM6CisgICAgICAg
IHcgPSBhM1dpZHRoOworICAgICAgICBoID0gYTNIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTVmFsdWVCNToKKyAgICAgICAgdyA9IGI1V2lkdGg7CisgICAgICAgIGggPSBiNUhl
aWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUI0OgorICAgICAgICB3ID0g
YjRXaWR0aDsKKyAgICAgICAgaCA9IGI0SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlTGV0dGVyOgorICAgICAgICB3ID0gbGV0dGVyV2lkdGg7CisgICAgICAgIGggPSBs
ZXR0ZXJIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVMZWdhbDoKKyAg
ICAgICAgdyA9IGxlZ2FsV2lkdGg7CisgICAgICAgIGggPSBsZWdhbEhlaWdodDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxlZGdlcjoKKyAgICAgICAgdyA9IGxlZGdlcldpZHRo
OworICAgICAgICBoID0gbGVkZ2VySGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitM
ZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6bW1MZW5ndGgoZG91YmxlIG1tKQoreworICAgIHJldHVy
biBMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NTSktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlKSwgRml4ZWQpOworfQorCitMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6aW5jaExlbmd0
aChkb3VibGUgaW5jaCkKK3sKKyAgICByZXR1cm4gTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoaW5jaCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTiktPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworfQorCiB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxBdHRhY2htZW50KEZpbGxMYXllciogbGF5ZXIsIENT
U1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1Zh
bHVlOjpDU1NfSU5JVElBTCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDA1Y2QxMDljMWNi
MmMwN2U2YmUzMGFhNzU1Y2MwMmQ4ZmQxNGU0NzIuLmYwZGU4M2JlNjE1NDg5ZjFlNmRlZTk5Y2Rm
NDUwOWNlOTQ1MzYwNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTI2MCw2ICsyNjAsMTAg
QEAgcHVibGljOgogICAgICAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1ZhbHVlKiwgTmlu
ZVBpZWNlSW1hZ2UmKTsKIAogICAgICAgICB2b2lkIGFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NW
YWx1ZSopOworICAgICAgICB2b2lkIGFwcGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSopOwor
ICAgICAgICBib29sIHBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqLCBDU1NQcmlt
aXRpdmVWYWx1ZSosIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KTsKKyAgICAgICAgTGVu
Z3RoIG1tTGVuZ3RoKGRvdWJsZSBtbSk7CisgICAgICAgIExlbmd0aCBpbmNoTGVuZ3RoKGRvdWJs
ZSBpbmNoKTsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2b2lkIGFwcGx5U1ZHUHJvcGVydHko
aW50IGlkLCBDU1NWYWx1ZSopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9odG1s
LmNzcyBiL1dlYkNvcmUvY3NzL2h0bWwuY3NzCmluZGV4IGZlMjg1Mjg3MGNjN2NkZGVlMzhjNzM4
MDBhOTBiODkzN2M5Yjg4NTYuLmQ4Y2I3NjBiNzU1Y2Y0MGUzYjVjOTQ3ZDczMmRlM2Y0NzFlN2E3
MTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzCisrKyBiL1dlYkNvcmUvY3NzL2h0
bWwuY3NzCkBAIC02ODcsNiArNjg3LDcgQEAgaWZyYW1lIHsKIAogQHBhZ2UgewogICAgIC8qIEZJ
WE1FOiBEZWZpbmUgdGhlIHJpZ2h0IGRlZmF1bHQgdmFsdWVzIGZvciBwYWdlIHByb3BlcnRpZXMu
ICovCisgICAgc2l6ZTogYXV0bzsKICAgICBtYXJnaW46IDFpbjsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGU5YmE3OGM4M2YxNzMzZDgwZWMyZjYwMTY5YzU2Y2M5YzI5MTFjOTMuLjBjNzc5NGNkMDdjZjNj
MTdiMjgzZTI1ZDE4N2FhMjhjOThmZmVmODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MDIsNiArMTUwMiwz
OSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBEb2N1bWVudDo6c3R5bGVGb3JQYWdlKGludCBw
YWdlSW5kZXgpCiAgICAgcmV0dXJuIHN0eWxlLnJlbGVhc2UoKTsKIH0KIAorYm9vbCBEb2N1bWVu
dDo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZUluZGV4KQoreworICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gc3R5bGUgPSBzdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICByZXR1cm4gc3R5bGUt
PnZpc2liaWxpdHkoKSAhPSBISURERU4gJiYgc3R5bGUtPmRpc3BsYXkoKSAhPSBOT05FOworfQor
CitJbnRSZWN0IERvY3VtZW50OjpwYWdlQXJlYVJlY3RJblBpeGVscyhpbnQgcGFnZUluZGV4KQor
eworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBzdHlsZUZvclBhZ2UocGFnZUluZGV4
KTsKKyAgICBJbnRTaXplIHBhZ2VTaXplID0gcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhwYWdl
SW5kZXgpOworICAgIC8vIDEwMCUgdmFsdWUgZm9yIG1hcmdpbi17bGVmdCxyaWdodCx0b3AsYm90
dG9tfS4gVGhpcyBpcyB1c2VkIGFsc28gZm9yIHRvcCBhbmQgYm90dG9tLiBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyL2JveC5odG1sI3ZhbHVlLWRlZi1tYXJnaW4td2lkdGgKKyAgICBpbnQgbWF4
VmFsdWUgPSBwYWdlU2l6ZS53aWR0aCgpOworICAgIC8vIElmIGRpc3BsYXkgaXMgbm9uZSwgaWdu
b3JlIG1hcmdpbiwgYm9yZGVyLCBhbmQgcGFkZGluZy4KKyAgICBib29sIGlzRGlzcGxheU5vbmUg
PSBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkU7CisgICAgaW50IHN1cnJvdW5kTGVmdCA9IGlzRGlz
cGxheU5vbmUgPyAwIDogc3R5bGUtPm1hcmdpbkxlZnQoKS5jYWxjVmFsdWUobWF4VmFsdWUpICsg
c3R5bGUtPmJvcmRlckxlZnQoKS53aWR0aCgpICsgc3R5bGUtPnBhZGRpbmdMZWZ0KCkuY2FsY1Zh
bHVlKG1heFZhbHVlKTsKKyAgICBpbnQgc3Vycm91bmRSaWdodCA9IGlzRGlzcGxheU5vbmUgPyAw
IDogc3R5bGUtPm1hcmdpblJpZ2h0KCkuY2FsY1ZhbHVlKG1heFZhbHVlKSArIHN0eWxlLT5ib3Jk
ZXJSaWdodCgpLndpZHRoKCkgKyBzdHlsZS0+cGFkZGluZ1JpZ2h0KCkuY2FsY1ZhbHVlKG1heFZh
bHVlKTsKKyAgICBpbnQgc3Vycm91bmRUb3AgPSBpc0Rpc3BsYXlOb25lID8gMCA6IHN0eWxlLT5t
YXJnaW5Ub3AoKS5jYWxjVmFsdWUobWF4VmFsdWUpICsgc3R5bGUtPmJvcmRlclRvcCgpLndpZHRo
KCkgKyBzdHlsZS0+cGFkZGluZ1RvcCgpLmNhbGNWYWx1ZShtYXhWYWx1ZSk7CisgICAgaW50IHN1
cnJvdW5kQm90dG9tID0gaXNEaXNwbGF5Tm9uZSA/IDAgOiBzdHlsZS0+bWFyZ2luQm90dG9tKCku
Y2FsY1ZhbHVlKG1heFZhbHVlKSArIHN0eWxlLT5ib3JkZXJCb3R0b20oKS53aWR0aCgpICsgc3R5
bGUtPnBhZGRpbmdCb3R0b20oKS5jYWxjVmFsdWUobWF4VmFsdWUpOworICAgIGludCB3aWR0aCA9
IHBhZ2VTaXplLndpZHRoKCkgLSBzdXJyb3VuZExlZnQgLSBzdXJyb3VuZFJpZ2h0OworICAgIGlu
dCBoZWlnaHQgPSBwYWdlU2l6ZS5oZWlnaHQoKSAtIHN1cnJvdW5kVG9wIC0gc3Vycm91bmRCb3R0
b207CisKKyAgICByZXR1cm4gSW50UmVjdChzdXJyb3VuZExlZnQsIHN1cnJvdW5kVG9wLCB3aWR0
aCwgaGVpZ2h0KTsKK30KKworSW50U2l6ZSBEb2N1bWVudDo6cHJlZmVycmVkUGFnZVNpemVJblBp
eGVscyhpbnQgcGFnZUluZGV4KQoreworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSBz
dHlsZUZvclBhZ2UocGFnZUluZGV4KTsKKyAgICBMZW5ndGhTaXplIHNpemUgPSBzdHlsZS0+cGFn
ZVNpemUoKTsKKyAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7CisgICAgQVNTRVJU
KHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKKyAgICByZXR1cm4gSW50U2l6ZShzaXplLndpZHRo
KCkuY2FsY1ZhbHVlKDApLCBzaXplLmhlaWdodCgpLmNhbGNWYWx1ZSgwKSk7Cit9CisKIHZvaWQg
RG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IoKQogewogICAgIGJvb2wgbWF0Y2hBdXRob3JB
bmRVc2VyU3R5bGVzID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJjMTJkYTM2YTc0Mzc1NWE3MWNhY2ZhODc1
NDc4NjU3ZDhiMDNmOGQuLjMxN2ZiYjc2N2Y4Y2VkNjc0ZGQ0ZTIxNzQyOWQ0OGIwOTM3M2FlNGMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDgzLDYgKzQ4Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IHN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKEVsZW1lbnQqKTsKICAg
ICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvclBhZ2UoaW50IHBhZ2VJbmRleCk7Cisg
ICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpOworICAgIEludFJlY3QgcGFn
ZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBhZ2VJbmRleCk7CisgICAgSW50U2l6ZSBwcmVmZXJyZWRQ
YWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlSW5kZXgpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0
eWxlRm9yQWxsRG9jdW1lbnRzKCk7IC8vIEZJWE1FOiBUcnkgdG8gcmVkdWNlIHRoZSAjIG9mIGNh
bGxzIHRvIHRoaXMgZnVuY3Rpb24uCiAgICAgRG9jTG9hZGVyKiBkb2NMb2FkZXIoKSB7IHJldHVy
biBtX2RvY0xvYWRlci5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCmluZGV4IDhmZjhhNjJi
OTI0YWM1ZDc3ZTI1MDkzYzIwOGZhYWEyOGViYmE5OWUuLjRhYjczNjdjNGQ3OWExODIzZTdiZDcx
N2U5NjQ5NzdmOWRhY2QwNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwCkBAIC0yMTgsNiArMjE4LDIz
IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0
IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhCiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJw
YWdlUHJvcGVydHkoKSB1bmltcGxlbWVudGVkIGZvcjogJXMiLCBwcm9wZXJ0eU5hbWUpOwogfQog
Citib29sIFByaW50Q29udGV4dDo6aXNQYWdlQm94VmlzaWJsZShGcmFtZSogZnJhbWUsIGludCBw
YWdlTnVtYmVyKQoreworICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQYWdlQm94Vmlz
aWJsZShwYWdlTnVtYmVyKTsKK30KKworU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZUFyZWFSZWN0
SW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcikKK3sKKyAgICBJbnRSZWN0IHBh
Z2VBcmVhID0gZnJhbWUtPmRvY3VtZW50KCktPnBhZ2VBcmVhUmVjdEluUGl4ZWxzKHBhZ2VOdW1i
ZXIpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiKCVkLCVkLCVkLCVkKSIsIHBhZ2VBcmVh
LngoKSwgcGFnZUFyZWEueSgpLCBwYWdlQXJlYS53aWR0aCgpLCBwYWdlQXJlYS5oZWlnaHQoKSk7
Cit9CisKK1N0cmluZyBQcmludENvbnRleHQ6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoRnJh
bWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcikKK3sKKyAgICBJbnRTaXplIHBhZ2VTaXplID0gZnJh
bWUtPmRvY3VtZW50KCktPnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMocGFnZU51bWJlcik7Cisg
ICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIoJWQsJWQpIiwgcGFnZVNpemUud2lkdGgoKSwgcGFn
ZVNpemUuaGVpZ2h0KCkpOworfQorCiBpbnQgUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKEZy
YW1lKiBmcmFtZSwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIGZy
YW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuaCBiL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAppbmRleCA5Mzk4
YTZlYmQwODhlODYwMTNmMjRmNjY1MjkyNTY3NDA5ZTI0ODUxLi44MWE5Yjc2NGQxMjgxOWIxZTQ4
N2MzMzQzZTdjZTE3NThmNDNhNDQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmgKKysrIGIvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCkBAIC01Niw2ICs1Niw5IEBA
IHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IGxheW91dCB0ZXN0cy4KICAgICBzdGF0aWMgaW50IHBh
Z2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5Q
aXhlbHMpOwogICAgIHN0YXRpYyBTdHJpbmcgcGFnZVByb3BlcnR5KEZyYW1lKiBmcmFtZSwgY29u
c3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcik7CisgICAgc3RhdGljIGJvb2wg
aXNQYWdlQm94VmlzaWJsZShGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKTsKKyAgICBzdGF0
aWMgU3RyaW5nIHBhZ2VBcmVhUmVjdEluUGl4ZWxzKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1i
ZXIpOworICAgIHN0YXRpYyBTdHJpbmcgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhGcmFtZSog
ZnJhbWUsIGludCBwYWdlTnVtYmVyKTsKICAgICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJh
bWUqLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBlYWM1OWM2YzExYzU5MGViOTRl
ODg0ZjFiNzkzOGQ0NTY5NWM4OTA5Li5hZDUwYzU1MzQ2OWM4MmVkYTc4Mzg2ZDdhYTNlMDJmMmRi
ZmViNTc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTcwMSw2ICs3
MDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlID4gMDsgfQogICAgIExlbmd0aCBw
ZXJzcGVjdGl2ZU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9wZXJzcGVjdGl2ZU9yaWdpblg7IH0KICAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5ZKCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmlnaW5Z
OyB9CisgICAgTGVuZ3RoU2l6ZSBwYWdlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3BhZ2VTaXplOyB9CiAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIC8vIFdoZW4gc2V0LCB0aGlzIGVuc3VyZXMgdGhhdCBzdHlsZXMgY29tcGFy
ZSBhcyBkaWZmZXJlbnQuIFVzZWQgZHVyaW5nIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMuCkBAIC0x
MDI1LDYgKzEwMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQZXJzcGVjdGl2ZShmbG9hdCBw
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmUsIHApOyB9CiAg
ICAgdm9pZCBzZXRQZXJzcGVjdGl2ZU9yaWdpblgoTGVuZ3RoIGwpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblgsIGwpOyB9CiAgICAgdm9pZCBzZXRQ
ZXJzcGVjdGl2ZU9yaWdpblkoTGVuZ3RoIGwpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV9wZXJzcGVjdGl2ZU9yaWdpblksIGwpOyB9CisgICAgdm9pZCBzZXRQYWdlU2l6ZShMZW5n
dGhTaXplIHMpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZSwgcyk7
IH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2b2lkIHNldElzUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uKGJvb2wgYiA9IHRydWUpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9ydW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb24sIGIpOyB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgK
aW5kZXggZDZmZTk2ZWE0MTc0MWIyZmE5ZTNmMzYxZTc1NjY4NjhlNDI0NDE5OS4uZWUxYTQzODUy
ZDc0OWU0ZThkYjJhYmI5MjJlZTBmOTU2NDI5YWQ2NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkxpc3Q7CiBjbGFzcyBDU1NT
dHlsZVNlbGVjdG9yOworY2xhc3MgTGVuZ3RoU2l6ZTsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFz
cyBTdHlsZUZsZXhpYmxlQm94RGF0YTsKIGNsYXNzIFN0eWxlTWFycXVlZURhdGE7CkBAIC0xMjMs
NiArMTI0LDggQEAgcHVibGljOgogICAgIExlbmd0aCBtX3BlcnNwZWN0aXZlT3JpZ2luWDsKICAg
ICBMZW5ndGggbV9wZXJzcGVjdGl2ZU9yaWdpblk7CiAKKyAgICBMZW5ndGhTaXplIG1fcGFnZVNp
emU7CisKICNpZiBFTkFCTEUoWEJMKQogICAgIE93blB0cjxCaW5kaW5nVVJJPiBiaW5kaW5nVVJJ
OyAvLyBUaGUgWEJMIGJpbmRpbmcgVVJJIGxpc3QuCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMjE3Y2YwOWIzMDUx
NDJmNjcwZjVlZGU5YjY1MTFiYTMwNjA4YjYzNy4uMmVlMzM1N2NjMzQ3ODdiMjE3NGQ4MTcwM2My
YTk0NGU5NzU2NDlmNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNi0yMCAgWXV6byBGdWpp
c2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHBhZ2UgZm9ybWF0IGRhdGEgcHJvZ3JhbW1pbmcg
aW50ZXJmYWNlLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgdGVzdGluZy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAgICAgKiBN
aXNjL1dlYkNvcmVTdGF0aXN0aWNzLmg6CisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGlj
cy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgaXNQYWdlQm94VmlzaWJsZTpdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgcGFnZUFyZWFSZWN0SW5QaXhlbHM6XSk6CisgICAgICAgICgtW1dlYkZyYW1l
IHByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHM6XSk6CisKIDIwMTAtMDYtMTcgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MuaCBiL1dlYktpdC9t
YWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCmluZGV4IGM3OWM5NmRmMWEwYzA5NGVkMzZjZDgz
Y2ZhNDE4YjgzMTQ4MTJmZDguLmUzNTdiNzJjMWYwZGEyNjk5MWY1ZTFjODIyYjRjM2Q0ODQ2MTYw
MDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCisrKyBi
L1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oCkBAIC04OCw0ICs4OCw3IEBACiAt
IChpbnQpcGFnZU51bWJlckZvckVsZW1lbnQ6KERPTUVsZW1lbnQqKWVsZW1lbnQ6KGZsb2F0KXBh
Z2VXaWR0aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHM7CiAtIChpbnQpbnVtYmVy
T2ZQYWdlczooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVs
czsKIC0gKE5TU3RyaW5nICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFyKilwcm9wZXJ0eU5hbWU6
KGludClwYWdlTnVtYmVyOworLSAoYm9vbClpc1BhZ2VCb3hWaXNpYmxlOihpbnQpcGFnZU51bWJl
cjsKKy0gKE5TU3RyaW5nICopcGFnZUFyZWFSZWN0SW5QaXhlbHM6KGludClwYWdlTnVtYmVyOwor
LSAoTlNTdHJpbmcgKilwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzOihpbnQpcGFnZU51bWJlcjsK
IEBlbmQKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbSBi
L1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQppbmRleCA4OWY3MGZkOWM3MzI2
YTM3ZGFlZjVjNTg2NDRlMzk3MjEyNGM2YmY1Li45MTEyZDIxYTJiYTIyMmIzZjk4MWNhMmU2NWVk
MjlkZWI0MjVjY2QxIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3Rp
Y3MubW0KKysrIGIvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCkBAIC0yODAs
NCArMjgwLDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIHJldHVybiBQcmludENv
bnRleHQ6OnBhZ2VQcm9wZXJ0eShfcHJpdmF0ZS0+Y29yZUZyYW1lLCBwcm9wZXJ0eU5hbWUsIHBh
Z2VOdW1iZXIpOwogfQogCistIChib29sKWlzUGFnZUJveFZpc2libGU6KGludClwYWdlTnVtYmVy
Cit7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6aXNQYWdlQm94VmlzaWJsZShfcHJpdmF0ZS0+
Y29yZUZyYW1lLCBwYWdlTnVtYmVyKTsKK30KKworLSAoTlNTdHJpbmcgKilwYWdlQXJlYVJlY3RJ
blBpeGVsczooaW50KXBhZ2VOdW1iZXIKK3sKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdl
QXJlYVJlY3RJblBpeGVscyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBwYWdlTnVtYmVyKTsKK30KKwor
LSAoTlNTdHJpbmcgKilwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzOihpbnQpcGFnZU51bWJlcjsK
K3sKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKF9w
cml2YXRlLT5jb3JlRnJhbWUsIHBhZ2VOdW1iZXIpOworfQogQGVuZApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFiOTkzNmQ0
MmExZDBiYTQzNTRhZDIzYzRiNDU2NTQ5ZWQ4ZjA2YjUuLmJlMDA3ODZjYTAyZWYyZGQ5MjdhNGZm
ZjA3YTc1YmU5OTU3ZjE4MzYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysg
Yi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNi0yMCAgWXV6
byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHBhZ2UgZm9ybWF0IGRhdGEgcHJvZ3Jh
bW1pbmcgaW50ZXJmYWNlLgorICAgICAgICBBZGQgbWV0aG9kcyBmb3IgdGVzdGluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChw
YXJzZVBhZ2VOdW1iZXIpOgorICAgICAgICAoaXNQYWdlQm94VmlzaWJsZUNhbGxiYWNrKToKKyAg
ICAgICAgKHBhZ2VBcmVhUmVjdEluUGl4ZWxzQ2FsbGJhY2spOgorICAgICAgICAocHJlZmVycmVk
UGFnZVNpemVJblBpeGVsc0NhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250
cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hW
aXNpYmxlKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlQXJlYVJlY3RJblBp
eGVscyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cHJlZmVycmVkUGFnZVNpemVJ
blBpeGVscyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2li
bGUpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VBcmVhUmVjdEluUGl4ZWxz
KToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxz
KToKKwogMjAxMC0wNi0xNyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGRlOWVhZjU2MTU0NjA4NzVm
ODg2OThmZmI0NWYxMGQ5MWE3MTI2OGIuLjdiZmJmMTMzODE0YWZmYmRkZDE0NWFiZjcyYTQ1ODlj
N2IyNDI2ZjYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTU1Miw2ICs1NTIsMTUgQEAgc3RhdGljIGJvb2wgcGFyc2VQ
YWdlUHJvcGVydHlQYXJhbWV0ZXJzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBpbnQgYXJndW1lbnRD
b3VudCwKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIHBhcnNlUGFnZU51bWJlcihKU0NvbnRleHRS
ZWYgY29udGV4dCwgaW50IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYqIGFyZ3VtZW50
cywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBpbnQmIHBhZ2VOdW1iZXIpCit7CisgICAgcGFnZU51
bWJlciA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHBhZ2VOdW1iZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIHJldHVybiAhKmV4Y2VwdGlv
bjsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcGFnZU51bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGZsb2F0IHBhZ2VXaWR0aElu
UGl4ZWxzID0gMDsKQEAgLTU5Myw2ICs2MDIsMzYgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGFnZVBy
b3BlcnR5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8K
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGlzUGFnZUJveFZpc2li
bGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IHBhZ2VO
dW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50Q291
bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihj
b250ZXh0LCBjb250cm9sbGVyLT5pc1BhZ2VCb3hWaXNpYmxlKHBhZ2VOdW1iZXIpKTsKK30KKwor
c3RhdGljIEpTVmFsdWVSZWYgcGFnZUFyZWFSZWN0SW5QaXhlbHNDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IHBhZ2VOdW1iZXIgPSAwOworICAgIGlmICgh
cGFyc2VQYWdlTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0
aW9uLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNf
Y2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0
KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5nKGNvbnRleHQsIGNvbnRyb2xsZXItPnBh
Z2VBcmVhUmVjdEluUGl4ZWxzKHBhZ2VOdW1iZXIpLmdldCgpKTsKK30KKworc3RhdGljIEpTVmFs
dWVSZWYgcHJlZmVycmVkUGFnZVNpemVJblBpeGVsc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKCFwYXJzZVBh
Z2VOdW1iZXIoY29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24sIHBh
Z2VOdW1iZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExh
eW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgY29udHJvbGxlci0+cHJlZmVycmVk
UGFnZVNpemVJblBpeGVscyhwYWdlTnVtYmVyKS5nZXQoKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTE2Mzgs
NiArMTY3Nyw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0
aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJjb3VudGVyVmFsdWVGb3JFbGVtZW50QnlJZCIsIGNv
dW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZ3Jh
bnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIsIGdyYW50RGVza3RvcE5vdGlmaWNhdGlv
blBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAgICAgICAgeyAiaXNDb21tYW5kRW5hYmxl
ZCIsIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpc1BhZ2VC
b3hWaXNpYmxlIiwgaXNQYWdlQm94VmlzaWJsZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImtlZXBXZWJIaXN0b3J5Iiwga2VlcFdlYkhpc3RvcnlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJsYXllclRyZWVBc1RleHQiLCBsYXllclRyZWVBc1RleHRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJudW1iZXJPZlBhZ2VzIiwgbnVtYmVyT2ZQYWdlc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CkBAIC0xNjQ2LDEwICsxNjg2LDEyIEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250
cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9y
RWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJwYWdlQXJlYVJlY3RJblBp
eGVscyIsIHBhZ2VBcmVhUmVjdEluUGl4ZWxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cGFnZVByb3BlcnR5IiwgcGFnZVByb3BlcnR5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cGF0aFRvTG9jYWxSZXNvdXJjZSIsIHBhdGhUb0xvY2FsUmVzb3VyY2VDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJwYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNl
QW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAicGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkIiwgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25FbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAicHJlZmVy
cmVkUGFnZVNpemVJblBpeGVscyIsIHByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHNDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzYW1wbGVTVkdBbmltYXRpb25Gb3JFbGVtZW50QXRUaW1lIiwg
c2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGltZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInByaW50VG9QREYiLCBkdW1wQXNQREZDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJxdWV1ZUJhY2tOYXZpZ2F0aW9uIiwgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAppbmRleCBmYzBjOWIxMTFmNzIwZWE4Y2M5MGIzOWFmMzU1NzExNmZkNjRhZTUwLi45MWVm
NGY4MzU1ZjRjOGYzZjRhMDM0NjQ4MTZiZWRjYWQ4MmVmYzhkIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTY0LDYgKzY0LDkg
QEAgcHVibGljOgogICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwg
SlNTdHJpbmdSZWYgdmFsdWUpOwogICAgIGludCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNT
dHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5Q
aXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwYWdlUHJvcGVydHkoY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJlcikgY29uc3Q7CisgICAgYm9vbCBpc1Bh
Z2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25zdDsKKyAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gcGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0OworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBw
YWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1N0cmluZ1JlZiBwYXRoVG9Mb2NhbFJlc291cmNlKEpT
Q29udGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKICAgICB2b2lkIHF1ZXVlQmFja05hdmlnYXRp
b24oaW50IGhvd0ZhckJhY2t3YXJkKTsKICAgICB2b2lkIHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24o
aW50IGhvd0ZhckZvcndhcmQpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggMmJkZDgwYzdiNDM5
Y2JmMTgxYTE4M2Q4NDFjZjExZGYwNGU1YTg1Zi4uNmY4ZTYzNzFiZjFiZjU5OTBkMDFhOTM4NGNl
MGQ1ZGE0YWRkMjRhMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCkBAIC0xNzcsNiArMTc3LDI0IEBA
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3Bl
cnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5CiAgICAgcmV0dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPigpOwogfQogCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxl
KGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4oKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVy
OjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
KCk7Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3Vu
dCgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IGVl
MTA3MDMzNjYwMjAxNGMzYTM1NDgyNjczMjY1ZDdmZTk0MjUyZDYuLmMyOTIxZDYxYTZhOGY2NjBi
MGM1ODIwMWY5MjIyNjZlN2EzYTNkMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTIxOCw2ICsy
MTgsMjMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpw
YWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHkKICAgICByZXR1cm4gcHJvcGVydHlWYWx1
ZTsKIH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZShpbnQg
cGFnZU51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gW21haW5GcmFtZSBpc1BhZ2VCb3hWaXNp
YmxlOnBhZ2VOdW1iZXJdOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKGludCBwYWdlTnVtYmVyKSBjb25zdAor
eworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcm9wZXJ0eVZhbHVlKEFkb3B0LCBKU1N0
cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW21haW5GcmFtZSBwYWdlQXJlYVJl
Y3RJblBpeGVsczpwYWdlTnVtYmVyXSkpOworICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnByZWZlcnJl
ZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5VmFsdWUoQWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHM6
cGFnZU51bWJlcl0pKTsKKyAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKK30KKwogaW50IExheW91
dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBm
bG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAgcmV0dXJuIFttYWluRnJhbWUgbnVtYmVy
T2ZQYWdlczpwYWdlV2lkdGhJblBpeGVsczpwYWdlSGVpZ2h0SW5QaXhlbHNdOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2lu
LmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxl
cldpbi5jcHAKaW5kZXggYjJhMzQ1YjUwZTc4NWI1NWI1YjFhOTlmMzY3YTc5NWQ0YjkwYzJhNy4u
ZTBkNTczMTMxNzllZDA0NGMwNmQ1MzE3OGNhZGY3MDQ1ZTBlYmVlNyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAor
KysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCkBAIC0xMjQ4LDYgKzEyNDgsMjQgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwKIAog
fQogCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdl
TnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
cGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30K
KworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRlc3RHb1RvQ3VycmVudEJhY2tGb3J3YXJk
SXRlbSgpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59479</attachid>
            <date>2010-06-22 23:15:41 -0700</date>
            <delta_ts>2010-06-22 23:21:44 -0700</delta_ts>
            <desc>display property doesn&apos;t apply to @page, addressed comments</desc>
            <filename>bug-37538-20100622231539.patch</filename>
            <type>text/plain</type>
            <size>48629</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMTIzYzk5YTE5N2UwMTUyNGJmNjY4YTE4YjQzODMzNTk5YjYxMDk5Li42YzVmMTRi
NzVhNDFjMDhlNmE3MzgxYjA5ZWM1Y2RiNzhmZTk3ZmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDYtMjAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBwYWdlIGZv
cm1hdCBkYXRhIHByb2dyYW1taW5nIGludGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NTM4CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wNi0yMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAwNWU1MzBiZjBiYzE2ZTU1
YmI3YTdhYTg3Nzg4M2MyZGI4YTI2Mjc1Li5lYzZiNGI1MjUyOTg4MDdhYTg2YWY3MGEwMjZmNWIx
OTE2M2JlZGE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CkBAIC0yODgxLDMgKzI4ODEsNyBAQCBCVUc0NTA0OCBXSU4gOiBm
YXN0L2hhcm5lc3Mvc2hvdy1tb2RhbC1kaWFsb2cuaHRtbCA9IFRJTUVPVVQKIAogLy8gV2ViS2l0
IHJvbGwgNjE1NDc6NjE2MjkuIFN0aWxsIG5lZWQgdG8gaW52ZXN0aWdhdGUuCiBCVUdfSENMQU0g
OiBmYXN0L2pzL3NjcmlwdC1saW5lLW51bWJlci5odG1sID0gVEVYVAorCisvLyBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBw
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGZvciBDaHJv
bWl1bS4KK0JVR1dLMzc1MzggOiBwcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwgPSBURVhU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggYjVlZDNlOTM2M2Q0Y2MzZGI0ZGEwNzEw
ZTVmMDliY2RmZDU4YzU5OC4uN2JhZjlhNTIyODIzMzBhMGQyNjA1OTUyNjJjNmFmN2U0NzlmMWQz
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTU4NjYsNiArNTg2Niw5IEBAIGZhc3Qv
Zm9ybXMvc2xpZGVyLXpvb21lZC5odG1sCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJv
cGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBHVEsgeWV0LgogcHJpbnRpbmcvcGFnZS1ydWxl
LXNlbGVjdGlvbi5odG1sCiAKKyMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2li
bGUsIHBhZ2VBcmVhUmVjdEluUGl4ZWxzLCBhbmQgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyBh
cmUgbm90IGltcGxlbWVudGVkIHlldCBmb3IgR1RLLgorcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0
YS5odG1sCisKICMgR3RrIHNlZW1zIHRvIGJlIHB1bXBpbmcgdGhlIGxleGVyIGFuIGV4dHJhIHRp
bWUgcmV2ZWFsZWQgYnkgdHVybmluZyBvbiB0aGUKICMgSFRNTDUgTGV4ZXIgaW4gcjYxMjM0Lgog
IyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA2NjQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9Ta2lwcGVkCmluZGV4IGFiYjZiYzZiNjdhZjU4N2U2N2I1YTBkNDM3ZDAyMTdlYjdmNmEz
MDcuLjgxN2YxYWZiYTg0MGFkM2FhYzY2ODBlY2U1Y2U3MTRhZTE0ZDM1ODkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtODU2LDYgKzg1Niw5IEBAIGZhc3QvcnVieS9ydWJ5RE9NLXJlbW92
ZS10ZXh0Mi5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NTk2MQogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCiAKKyMgTWlzc2luZyBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMs
IGFuZCBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzLgorcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0
YS5odG1sCisKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIwogIyAtLS0tLS0tIGZhaWxpbmcgZWRp
dGluZy9pbnB1dCB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAjCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9Ta2lwcGVkCmluZGV4IGY0NzIyYzZmODBjYWFkMDJmMGYwNzdjNzkyMThkY2EzZDc3M2ZiNDMu
Ljg1ZWMyZWI3YmQwY2FlYWQ2MjFlY2YzOWQzNjdlZTU1MjU2OThjNWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9Ta2lwcGVkCkBAIC05MzIsMyArOTMyLDggQEAgZmFzdC9qcy9zcHV0bmlrL0NvbmZvcm1h
bmNlLzEwX0V4ZWN1dGlvbl9Db250ZXh0cy8xMC4yX0VudGVyaW5nX0FuX0V4ZWN1dGlvbl9Db24K
IGZhc3QvanMvc3B1dG5pay9Db25mb3JtYW5jZS8xMF9FeGVjdXRpb25fQ29udGV4dHMvMTAuMl9F
bnRlcmluZ19Bbl9FeGVjdXRpb25fQ29udGV4dC8xMC4yLjJfRXZhbF9Db2RlL1MxMC4yLjJfQTEu
Ml9UNy5odG1sCiBmYXN0L2pzL3NwdXRuaWsvQ29uZm9ybWFuY2UvMTBfRXhlY3V0aW9uX0NvbnRl
eHRzLzEwLjJfRW50ZXJpbmdfQW5fRXhlY3V0aW9uX0NvbnRleHQvMTAuMi4yX0V2YWxfQ29kZS9T
MTAuMi4yX0ExLjFfVDkuaHRtbAogZmFzdC9qcy9zcHV0bmlrL0NvbmZvcm1hbmNlLzEwX0V4ZWN1
dGlvbl9Db250ZXh0cy8xMC4yX0VudGVyaW5nX0FuX0V4ZWN1dGlvbl9Db250ZXh0LzEwLjIuMl9F
dmFsX0NvZGUvUzEwLjIuMl9BMS4yX1Q5Lmh0bWwKKworIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
aXNQYWdlQm94VmlzaWJsZSwgcGFnZUFyZWFSZWN0SW5QaXhlbHMsIGFuZCBwcmVmZXJyZWRQYWdl
U2l6ZUluUGl4ZWxzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0IGZvciBXSU4uCitwcmludGluZy9w
YWdlLWZvcm1hdC1kYXRhLmh0bWwKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGlu
Zy9wYWdlLWZvcm1hdC1kYXRhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3Bh
Z2UtZm9ybWF0LWRhdGEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMWNhNTRmN2U5ZmJlZWZl
N2UyY2E3NzhlZDU4Nzg3MmI5NTI1NTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wYWdlLWZvcm1hdC1kYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc0IEBACitU
aGlzIHRlc3RzIHBhZ2UgZm9ybWF0IGRhdGEKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1Rlc3QgZGVmYXVsdCB2aXNpYmlsaXR5CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmlz
UGFnZUJveFZpc2libGUoMCkgaXMgdHJ1ZQorVGVzdCBkaXNwbGF5OiBub25lLiBkaXNwbGF5IHBy
b3BlcnR5IGRvZXNuJ3QgYXBwbHkgdG8gQHBhZ2UKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
aXNQYWdlQm94VmlzaWJsZSgwKSBpcyB0cnVlCitUZXN0IGRpc3BsYXk6IGlubGluZS4gZGlzcGxh
eSBwcm9wZXJ0eSBkb2Vzbid0IGFwcGx5IHRvIEBwYWdlCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLmlzUGFnZUJveFZpc2libGUoMCkgaXMgdHJ1ZQorVGVzdCB2aXNpYmlsaXR5OiBoaWRkZW4K
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuaXNQYWdlQm94VmlzaWJsZSgwKSBpcyBmYWxzZQor
VGVzdCB2aXNpYmlsaXR5OiB2aXNpYmxlCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLmlzUGFn
ZUJveFZpc2libGUoMCkgaXMgdHJ1ZQorCitUZXN0IGRlZmF1bHQgcGFnZSBzaXplCitQQVNTIGxh
eW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgaW5jaFNp
emUoOC41LCAxMSkKK1Rlc3QgYXV0byBwYWdlIHNpemUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyBpbmNoU2l6ZSg4LjUsIDExKQorVGVz
dCBsYW5kc2NhcGUKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJ
blBpeGVscygwKSBpcyBpbmNoU2l6ZSgxMSwgOC41KQorVGVzdCBwb3J0cmFpdAorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzIGluY2hTaXpl
KDguNSwgMTEpCitUZXN0IGE1CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHMoMCkgaXMgbW1TaXplKDE0OCwgMjEwKQorVGVzdCBhNSBsYW5kc2NhcGUK
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBp
cyBtbVNpemUoMjEwLCAxNDgpCitUZXN0IHBvcnRyYWl0IGE0CitQQVNTIGxheW91dFRlc3RDb250
cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgbW1TaXplKDIxMCwgMjk3KQor
VGVzdCBhMworUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzKDApIGlzIG1tU2l6ZSgyOTcsIDQyMCkKK1Rlc3QgYjUKK1BBU1MgbGF5b3V0VGVzdENvbnRy
b2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyBtbVNpemUoMTc2LCAyNTApCitU
ZXN0IGI0CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhl
bHMoMCkgaXMgbW1TaXplKDI1MCwgMzUzKQorVGVzdCBsZXR0ZXIKK1BBU1MgbGF5b3V0VGVzdENv
bnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyBpbmNoU2l6ZSg4LjUsIDEx
KQorVGVzdCBsZWdhbAorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6
ZUluUGl4ZWxzKDApIGlzIGluY2hTaXplKDguNSwgMTQpCitUZXN0IGxlZGdlcgorUEFTUyBsYXlv
dXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzIGluY2hTaXpl
KDExLCAxNykKK1Rlc3QgMTBjbQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQ
YWdlU2l6ZUluUGl4ZWxzKDApIGlzIG1tU2l6ZSgxMDAsIDEwMCkKK1Rlc3QgMjBjbSB4IDMwY20K
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBp
cyBtbVNpemUoMjAwLCAzMDApCitUZXN0IDEwMDAwcHggMjAwMDBweAorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzICcoMTAwMDAsMjAwMDAp
JworVGVzdCBpbnZhbGlkIHBhZ2Ugc2l6ZTogLTEwY20KK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xs
ZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAnKDEwMDAwLDIwMDAwKScKK1Rlc3Qg
aW52YWxpZCBwYWdlIHNpemU6IGE0IGE0CitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnByZWZl
cnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgJygxMDAwMCwyMDAwMCknCitUZXN0IGludmFsaWQg
cGFnZSBzaXplOiBsYW5kc2NhcGUgcG9ydHJhaXQKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSBpcyAnKDEwMDAwLDIwMDAwKScKK1Rlc3QgaW52
YWxpZCBwYWdlIHNpemU6IDEwY20gbGV0dGVyCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkgaXMgJygxMDAwMCwyMDAwMCknCitUZXN0IGludmFs
aWQgcGFnZSBzaXplOiAxMGNtIDEwY20gMTBjbQorUEFTUyBsYXlvdXRUZXN0Q29udHJvbGxlci5w
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIGlzICcoMTAwMDAsMjAwMDApJworVGVzdCBpbnZh
bGlkIHBhZ2Ugc2l6ZTogZW1wdHkKK1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVk
UGFnZVNpemVJblBpeGVscygwKSBpcyAnKDEwMDAwLDIwMDAwKScKKworVGVzdCBwYWdlIGFyZWEg
d2hlbiBtYXJnaW4sIHBhZGRpbmcsIGFuZCBib3JkZXIgYXJlIDBweAorUEFTUyBsYXlvdXRUZXN0
Q29udHJvbGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSBpcyAnKDAsMCwxMDAwMCwyMDAwMCkn
CitUZXN0IG5vbi16ZXJvIG1hcmdpbiwgcGFkZGluZywgYW5kIGJvcmRlcgorUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSBpcyAnKDIxODQsMjczLDcyNzAs
MTg2MzUpJworVGVzdCBwZXJjZW50YWdlIG1hcmdpbiBhbmQgcGFkZGluZworUEFTUyBsYXlvdXRU
ZXN0Q29udHJvbGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSBpcyAnKDE1MDAsMjUwMCw3MDAw
LDE1MDAwKScKK1Rlc3QgdmlzaWJpbGl0eTogaGlkZGVuCitQQVNTIGxheW91dFRlc3RDb250cm9s
bGVyLnBhZ2VBcmVhUmVjdEluUGl4ZWxzKDApIGlzICcoMTUwMCwyNTAwLDcwMDAsMTUwMDApJwor
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sIGIvTGF5
b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1mb3JtYXQtZGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxM2Rj
ZGI2ODZlOGMwMTI3MWIxOWU4MjgxOWM4OGM4ZTlmZDZlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wcmludGluZy9wYWdlLWZvcm1hdC1kYXRhLmh0bWwKQEAgLTAsMCArMSwxNzYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZCBpZD0iaGVhZF9lbGVtZW50Ij4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHBhZ2UgZm9ybWF0IGRhdGEiKTsKKworICAgIGZ1
bmN0aW9uIGFwcGVuZFN0eWxlKHN0eWxlU3RyaW5nKQorICAgIHsKKyAgICAgICAgdmFyIHN0eWxl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgIHN0eWxl
RWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZVN0cmluZzsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImhlYWRfZWxlbWVudCIpLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gaW5jaFNpemUod2lkdGgsIGhlaWdodCkKKyAgICB7CisgICAgICAg
IHJldHVybiAiKCIgKyBNYXRoLmZsb29yKHdpZHRoICogOTYpICsgIiwiICsgTWF0aC5mbG9vciho
ZWlnaHQgKiA5NikgKyAiKSI7CisgICAgfQorCisgICAgZnVuY3Rpb24gbW1TaXplKHdpZHRoLCBo
ZWlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gIigiICsgTWF0aC5mbG9vcih3aWR0aCAqIDk2
IC8gMjUuNCkgKyAiLCIgKyBNYXRoLmZsb29yKGhlaWdodCAqIDk2IC8gMjUuNCkgKyAiKSI7Cisg
ICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAgLy8gUGFnZSBib3gg
dmlzaWJpbGl0eSB0ZXN0cy4KKworICAgICAgICBkZWJ1ZygiVGVzdCBkZWZhdWx0IHZpc2liaWxp
dHkiKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZp
c2libGUoMCkiLCAidHJ1ZSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGRpc3BsYXk6IG5vbmUu
IGRpc3BsYXkgcHJvcGVydHkgZG9lc24ndCBhcHBseSB0byBAcGFnZSIpOworICAgICAgICBhcHBl
bmRTdHlsZSgiQHBhZ2Uge2Rpc3BsYXk6bm9uZTt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlv
dXRUZXN0Q29udHJvbGxlci5pc1BhZ2VCb3hWaXNpYmxlKDApIiwgInRydWUiKTsKKworICAgICAg
ICBkZWJ1ZygiVGVzdCBkaXNwbGF5OiBpbmxpbmUuIGRpc3BsYXkgcHJvcGVydHkgZG9lc24ndCBh
cHBseSB0byBAcGFnZSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge2Rpc3BsYXk6aW5s
aW5lO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJv
eFZpc2libGUoMCkiLCAidHJ1ZSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHZpc2liaWxpdHk6
IGhpZGRlbiIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3Zpc2liaWxpdHk6aGlkZGVu
O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZp
c2libGUoMCkiLCAiZmFsc2UiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCB2aXNpYmlsaXR5OiB2
aXNpYmxlIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7dmlzaWJpbGl0eTp2aXNpYmxl
O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLmlzUGFnZUJveFZp
c2libGUoMCkiLCAidHJ1ZSIpOworCisgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAvLyBQ
YWdlIHNpemUgdGVzdHMKKworICAgICAgICBkZWJ1ZygiVGVzdCBkZWZhdWx0IHBhZ2Ugc2l6ZSIp
OworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNp
emVJblBpeGVscygwKSIsICJpbmNoU2l6ZSg4LjUsIDExKSIpOyAvLyBMZXR0ZXIKKworICAgICAg
ICBkZWJ1ZygiVGVzdCBhdXRvIHBhZ2Ugc2l6ZSIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBh
Z2Uge3NpemU6YXV0bzt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxl
ci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgImluY2hTaXplKDguNSwgMTEpIik7CisK
KyAgICAgICAgZGVidWcoIlRlc3QgbGFuZHNjYXBlIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJA
cGFnZSB7c2l6ZTpsYW5kc2NhcGU7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJpbmNoU2l6ZSgxMSwgOC41
KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHBvcnRyYWl0Iik7CisgICAgICAgIGFwcGVuZFN0
eWxlKCJAcGFnZSB7c2l6ZTpwb3J0cmFpdDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRU
ZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgImluY2hTaXplKDgu
NSwgMTEpIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgYTUiKTsKKyAgICAgICAgYXBwZW5kU3R5
bGUoIkBwYWdlIHtzaXplOmE1O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250
cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXplKDE0OCwgMjEwKSIp
OworCisgICAgICAgIGRlYnVnKCJUZXN0IGE1IGxhbmRzY2FwZSIpOworICAgICAgICBhcHBlbmRT
dHlsZSgiQHBhZ2Uge3NpemU6YTUgbGFuZHNjYXBlO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxh
eW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXpl
KDIxMCwgMTQ4KSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHBvcnRyYWl0IGE0Iik7CisgICAg
ICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7c2l6ZTpwb3J0cmFpdCBhNDt9Iik7CisgICAgICAgIHNo
b3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDAp
IiwgIm1tU2l6ZSgyMTAsIDI5NykiKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBhMyIpOworICAg
ICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge3NpemU6YTM7fSIpOworICAgICAgICBzaG91bGRCZSgi
bGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJtbVNp
emUoMjk3LCA0MjApIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgYjUiKTsKKyAgICAgICAgYXBw
ZW5kU3R5bGUoIkBwYWdlIHtzaXplOmI1O30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRl
c3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXplKDE3Niwg
MjUwKSIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IGI0Iik7CisgICAgICAgIGFwcGVuZFN0eWxl
KCJAcGFnZSB7c2l6ZTpiNDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIm1tU2l6ZSgyNTAsIDM1MykiKTsK
KworICAgICAgICBkZWJ1ZygiVGVzdCBsZXR0ZXIiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBw
YWdlIHtzaXplOmxldHRlcjt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgImluY2hTaXplKDguNSwgMTEpIik7
CisKKyAgICAgICAgZGVidWcoIlRlc3QgbGVnYWwiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBw
YWdlIHtzaXplOmxlZ2FsO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9s
bGVyLnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiaW5jaFNpemUoOC41LCAxNCkiKTsK
KworICAgICAgICBkZWJ1ZygiVGVzdCBsZWRnZXIiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBw
YWdlIHtzaXplOmxlZGdlcjt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJv
bGxlci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgImluY2hTaXplKDExLCAxNykiKTsK
KworICAgICAgICBkZWJ1ZygiVGVzdCAxMGNtIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFn
ZSB7c2l6ZToxMGNtO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVy
LnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAibW1TaXplKDEwMCwgMTAwKSIpOworCisg
ICAgICAgIGRlYnVnKCJUZXN0IDIwY20geCAzMGNtIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJA
cGFnZSB7c2l6ZToyMGNtIDMwY207fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENv
bnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICJtbVNpemUoMjAwLCAzMDAp
Iik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgMTAwMDBweCAyMDAwMHB4Iik7CisgICAgICAgIGFw
cGVuZFN0eWxlKCJAcGFnZSB7c2l6ZToxMDAwMHB4IDIwMDAwcHg7fSIpOworICAgICAgICBzaG91
bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIs
ICInKDEwMDAwLDIwMDAwKSciKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBpbnZhbGlkIHBhZ2Ug
c2l6ZTogLTEwY20iKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOi0xMGNtO30i
KTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJlZFBhZ2VT
aXplSW5QaXhlbHMoMCkiLCAiJygxMDAwMCwyMDAwMCknIik7CisKKyAgICAgICAgZGVidWcoIlRl
c3QgaW52YWxpZCBwYWdlIHNpemU6IGE0IGE0Iik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFn
ZSB7c2l6ZTphNCBhNDt9Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxl
ci5wcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKDApIiwgIicoMTAwMDAsMjAwMDApJyIpOworCisg
ICAgICAgIGRlYnVnKCJUZXN0IGludmFsaWQgcGFnZSBzaXplOiBsYW5kc2NhcGUgcG9ydHJhaXQi
KTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOmxhbmRzY2FwZSBwb3J0cmFpdDt9
Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wcmVmZXJyZWRQYWdl
U2l6ZUluUGl4ZWxzKDApIiwgIicoMTAwMDAsMjAwMDApJyIpOworCisgICAgICAgIGRlYnVnKCJU
ZXN0IGludmFsaWQgcGFnZSBzaXplOiAxMGNtIGxldHRlciIpOworICAgICAgICBhcHBlbmRTdHls
ZSgiQHBhZ2Uge3NpemU6MTBjbSBsZXR0ZXI7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0
VGVzdENvbnRyb2xsZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICInKDEwMDAwLDIw
MDAwKSciKTsKKworICAgICAgICBkZWJ1ZygiVGVzdCBpbnZhbGlkIHBhZ2Ugc2l6ZTogMTBjbSAx
MGNtIDEwY20iKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHtzaXplOjEwY20gMTBjbSAx
MGNtO30iKTsKKyAgICAgICAgc2hvdWxkQmUoImxheW91dFRlc3RDb250cm9sbGVyLnByZWZlcnJl
ZFBhZ2VTaXplSW5QaXhlbHMoMCkiLCAiJygxMDAwMCwyMDAwMCknIik7CisKKyAgICAgICAgZGVi
dWcoIlRlc3QgaW52YWxpZCBwYWdlIHNpemU6IGVtcHR5Iik7CisgICAgICAgIGFwcGVuZFN0eWxl
KCJAcGFnZSB7c2l6ZTo7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xs
ZXIucHJlZmVycmVkUGFnZVNpemVJblBpeGVscygwKSIsICInKDEwMDAwLDIwMDAwKSciKTsKKwor
ICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgLy8gUGFnZSBhcmVhIHRlc3RzCisKKyAgICAg
ICAgZGVidWcoIlRlc3QgcGFnZSBhcmVhIHdoZW4gbWFyZ2luLCBwYWRkaW5nLCBhbmQgYm9yZGVy
IGFyZSAwcHgiKTsKKyAgICAgICAgYXBwZW5kU3R5bGUoIkBwYWdlIHttYXJnaW46MHB4O3BhZGRp
bmc6MHB4O2JvcmRlcjowcHg7fSIpOworICAgICAgICBzaG91bGRCZSgibGF5b3V0VGVzdENvbnRy
b2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkiLCAiJygwLDAsMTAwMDAsMjAwMDApJyIpOwor
CisgICAgICAgIGRlYnVnKCJUZXN0IG5vbi16ZXJvIG1hcmdpbiwgcGFkZGluZywgYW5kIGJvcmRl
ciIpOworICAgICAgICBhcHBlbmRTdHlsZSgiQHBhZ2Uge21hcmdpbjoxcHggMnB4IDRweCA4cHg7
IHBhZGRpbmc6MTZweCAzMnB4IDY0cHggMTI4cHg7IGJvcmRlci13aWR0aDoyNTZweCA1MTJweCAx
MDI0cHggMjA0OHB4O30iKTsgLy8gdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0CisgICAgICAgIHNo
b3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlQXJlYVJlY3RJblBpeGVscygwKSIsICIn
KDIxODQsMjczLDcyNzAsMTg2MzUpJyIpOworCisgICAgICAgIGRlYnVnKCJUZXN0IHBlcmNlbnRh
Z2UgbWFyZ2luIGFuZCBwYWRkaW5nIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7bWFy
Z2luOjIwJSAxMCU7IHBhZGRpbmc6NSU7IGJvcmRlci13aWR0aDowcHg7fSIpOworICAgICAgICBz
aG91bGRCZSgibGF5b3V0VGVzdENvbnRyb2xsZXIucGFnZUFyZWFSZWN0SW5QaXhlbHMoMCkiLCAi
JygxNTAwLDI1MDAsNzAwMCwxNTAwMCknIik7CisKKyAgICAgICAgZGVidWcoIlRlc3QgdmlzaWJp
bGl0eTogaGlkZGVuIik7CisgICAgICAgIGFwcGVuZFN0eWxlKCJAcGFnZSB7dmlzaWJpbGl0eTpo
aWRkZW59Iik7CisgICAgICAgIHNob3VsZEJlKCJsYXlvdXRUZXN0Q29udHJvbGxlci5wYWdlQXJl
YVJlY3RJblBpeGVscygwKSIsICInKDE1MDAsMjUwMCw3MDAwLDE1MDAwKSciKTsKKworICAgICAg
ICBkZWJ1ZygiIik7CisKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJUaGlzIHRl
c3QgY2FuIGJlIHJ1biBvbmx5IHdpdGggd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIik7Cisg
ICAgfQorICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNzA5ZTRkN2ZlN2EwZDRhNzM2ODhjMzU4NmM2MDY5YTY4M2M4YzNh
Ni4uMGMwMzY2ZjZlMGExYjZmMWI5ZjViNTIyMzkxYzFkNmM5NTNjZWE5NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBA
QAorMjAxMC0wNi0yMCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHBhZ2Ug
Zm9ybWF0IGRhdGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLgorICAgICAgICBUaGUgZmluYWwgZ29h
bCBpcyB0byBpbXBsZW1lbnQgQ1NTIFBhZ2VkIE1lZGlhIE1vZHVsZSBMZXZlbCAzIChodHRwOi8v
ZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXBhZ2UvKS4KKyAgICAgICAgVG8gYmVnaW4gd2l0aCwgdGhp
cyBjaGFuZ2UgYWRkcyBtZXRob2RzIHRvIGtub3c6CisgICAgICAgIC0gaWYgcGFnZSBib3ggaXMg
dmlzaWJsZSwKKyAgICAgICAgLSB0aGUgcGFnZSBhcmVhIHJlY3RhbmdsZSwgYW5kCisgICAgICAg
IC0gcHJlZmVycmVkIHBhZ2Ugc2l6ZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MzgKKworICAgICAgICBUZXN0OiBwcmludGluZy9wYWdlLWZv
cm1hdC1kYXRhLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2l6
ZVBhcmFtZXRlcik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjptbUxlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5oOgorICAgICAgICAqIGNzcy9odG1sLmNzczoKKyAgICAgICAgKEBwYWdlKToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omlz
UGFnZUJveFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VBcmVhUmVj
dEluUGl4ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwcmVmZXJyZWRQYWdlU2l6
ZUluUGl4ZWxzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL1By
aW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmlzUGFnZUJv
eFZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpwYWdlQXJlYVJlY3RJ
blBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnByZWZlcnJlZFBhZ2VT
aXplSW5QaXhlbHMpOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0
ZWRGbGFnczo6cGFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNl
dFBhZ2VTaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oOgorCiAyMDEwLTA2LTIyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDE0YmY3
YzFiNWE3N2UzZTBkOGI2NGEyYzA0MDk1ZGRjOThhZWNkMzEuLjI3NDRmZThiOWQwMzYxMTc4ZjVm
OWNiODMyOWU3MjRmNTYxMjRhMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4
cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTI1MCw3ICsyNTAsMTAgQEAgX19a
TjdXZWJDb3JlMTJJY29uRGF0YWJhc2U5c2V0Q2xpZW50RVBOU18xOEljb25EYXRhYmFzZUNsaWVu
dEUKIF9fWk43V2ViQ29yZTEyUGx1Z2luV2lkZ2V0MTRpbnZhbGlkYXRlUmVjdEVSS05TXzdJbnRS
ZWN0RQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxMnBhZ2VQcm9wZXJ0eUVQTlNfNUZyYW1l
RVBLY2kKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJh
bWVFUktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxNmlzUGFnZUJv
eFZpc2libGVFUE5TXzVGcmFtZUVpCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZUFy
ZWFSZWN0SW5QaXhlbHNFUE5TXzVGcmFtZUVpCiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIw
cGFnZU51bWJlckZvckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MjVwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzRVBOU181RnJh
bWVFaQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFn
ZVNpemVFUktOU185RmxvYXRTaXplRWIKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0QzFFUE5T
XzVGcmFtZUUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0RDFFdgpAQCAtNjIyLDExICs2MjUs
MTQgQEAgX19aTjdXZWJDb3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxM3JlbW92ZU1hcmtlcnNFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUUK
IF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9j
dW1lbnQxNHNldEZvY3VzZWROb2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQxNmlzUGFnZUJveFZpc2libGVFaQogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTdnZXRGb2N1c2FibGVOb2Rlc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzROb2Rl
RUVFTG0wRUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgor
X19aTjdXZWJDb3JlOERvY3VtZW50MjBwYWdlQXJlYVJlY3RJblBpeGVsc0VpCiBfX1pON1dlYkNv
cmU4RG9jdW1lbnQyMmNyZWF0ZURvY3VtZW50RnJhZ21lbnRFdgogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MjNyZW5kZXJlZFJlY3RzRm9yTWFya2Vyc0VOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJU
eXBlRQogX19aTjdXZWJDb3JlOERvY3VtZW50MjRzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnNFYgor
X19aTjdXZWJDb3JlOERvY3VtZW50MjVwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzRWkKIF9fWk43
V2ViQ29yZThEb2N1bWVudDM2dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzRXYK
IF9fWk43V2ViQ29yZThEb2N1bWVudDRoZWFkRXYKIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwCmluZGV4IDQzMzBkMDkwMzFkMzNjZDI2ZjA4MGUxM2NkYmNjYzljNTdjYzY0Mzcu
LmNkMzUwNjE3YjMyZDkzMmQyY2M4NDY1MDYxYmY5ZTk0ZDYzZTU3NDEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApA
QCAtMjI0NiwxMyArMjI0NiwxMyBAQCBDU1NQYXJzZXI6OlNpemVQYXJhbWV0ZXJUeXBlIENTU1Bh
cnNlcjo6cGFyc2VTaXplUGFyYW1ldGVyKENTU1ZhbHVlTGlzdCogcGFyc2VkVgogICAgIGNhc2Ug
Q1NTVmFsdWVMZXR0ZXI6CiAgICAgICAgIGlmIChwcmV2UGFyYW1UeXBlID09IE5vbmUgfHwgcHJl
dlBhcmFtVHlwZSA9PSBPcmllbnRhdGlvbikgewogICAgICAgICAgICAgLy8gTm9ybWFsaXplIHRv
IFBhZ2UgU2l6ZSB0aGVuIE9yaWVudGF0aW9uIG9yZGVyIGJ5IHByZXBlbmRpbmcuCi0gICAgICAg
ICAgICAvLyBUaGlzIGlzIG5vdCBzcGVjaWZpZWQgYnkgdGhlIENTUzMgUGFnZWQgTWVkaWEgc3Bl
Y2lmaWNhdGlvbiwgYnV0IGZvciBzaW1wbGVyIHByb2Nlc3NpbmcgaGVyZWFmdGVyLgorICAgICAg
ICAgICAgLy8gVGhpcyBpcyBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBDU1MzIFBhZ2VkIE1lZGlhIHNw
ZWNpZmljYXRpb24sIGJ1dCBmb3Igc2ltcGxlciBwcm9jZXNzaW5nIGxhdGVyIChDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkpLgogICAgICAgICAgICAgcGFyc2VkVmFsdWVz
LT5wcmVwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlLT5pZCkp
OwogICAgICAgICAgICAgcmV0dXJuIFBhZ2VTaXplOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBOb25lOwogICAgIGNhc2UgMDoKLSAgICAgICAgaWYgKHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0
aCwgbV9zdHJpY3QpICYmIChwcmV2UGFyYW1UeXBlID09IE5vbmUgfHwgcHJldlBhcmFtVHlwZSA9
PSBMZW5ndGgpKSB7CisgICAgICAgIGlmICh2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9u
TmVnLCBtX3N0cmljdCkgJiYgKHByZXZQYXJhbVR5cGUgPT0gTm9uZSB8fCBwcmV2UGFyYW1UeXBl
ID09IExlbmd0aCkpIHsKICAgICAgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUodmFsdWUtPmZWYWx1ZSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcz4odmFsdWUtPnVuaXQpKSk7CiAgICAgICAgICAgICByZXR1cm4gTGVu
Z3RoOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDg2MzQzMzJiYzg3
YTU0MjI5YmE4Nzg1ZjJjOTBhNzA1NGE3MGE2ZWIuLmFhMDEwZmQ3ZTk3Y2U1ZjFjMTM0MmVkNzBm
YzExMjFhZTczNTZmNDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiQ1NTQm9yZGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNv
ckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVJ1bGUuaCIKKyNpbmNsdWRlICJD
U1NIZWxwZXIuaCIKICNpbmNsdWRlICJDU1NJbXBvcnRSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTTWVk
aWFSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTUGFnZVJ1bGUuaCIKQEAgLTU0NTcsMTIgKzU0NTgsMTQg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUg
KnZhbHVlKQogICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q29sb3JTcGFjZSgqcHJpbWl0aXZlVmFs
dWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENTU1Byb3BlcnR5U2l6
ZToKKyAgICAgICAgYXBwbHlQYWdlU2l6ZVByb3BlcnR5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUZvbnRTdHJldGNoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlRdW90ZXM6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRMaW5lVGhyb3VnaE1v
ZGU6CkBAIC01NTEwLDYgKzU1MTMsMTYxIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICB9CiB9CiAKK3ZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlQYWdlU2l6ZVByb3BlcnR5KENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAg
ICBpZiAoIXZhbHVlLT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisgICAgQ1NTVmFs
dWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Cisg
ICAgTGVuZ3RoIHdpZHRoOworICAgIExlbmd0aCBoZWlnaHQ7CisgICAgc3dpdGNoICh2YWx1ZUxp
c3QtPmxlbmd0aCgpKSB7CisgICAgY2FzZSAyOiB7CisgICAgICAgIC8vIDxsZW5ndGg+ezJ9IHwg
PHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgw
KS0+aXNQcmltaXRpdmVWYWx1ZSgpIHx8ICF2YWx1ZUxpc3QtPml0ZW0oMSktPmlzUHJpbWl0aXZl
VmFsdWUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlMCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVM
aXN0LT5pdGVtKDApKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
MSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVMaXN0LT5pdGVtKDEpKTsK
KyAgICAgICAgaW50IHR5cGUwID0gcHJpbWl0aXZlVmFsdWUwLT5wcmltaXRpdmVUeXBlKCk7Cisg
ICAgICAgIGludCB0eXBlMSA9IHByaW1pdGl2ZVZhbHVlMS0+cHJpbWl0aXZlVHlwZSgpOworICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZTApKSB7Cisg
ICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQorICAgICAgICAgICAgaWYgKCFDU1NQcmltaXRpdmVW
YWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgd2lkdGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKKyAgICAg
ICAgICAgIGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZTEtPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgorICAgICAg
ICAgICAgLy8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBh
cnNlU2l6ZVBhcmFtZXRlci4KKyAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShwcmlt
aXRpdmVWYWx1ZTAsIHByaW1pdGl2ZVZhbHVlMSwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IDE6IHsKKyAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRy
YWl0IHwgbGFuZHNjYXBlXQorICAgICAgICBpZiAoIXZhbHVlTGlzdC0+aXRlbSgwKS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlTGlzdC0+aXRlbSgwKSk7CisgICAgICAgIGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKTsKKyAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBl
TGVuZ3RoKHR5cGUpKSB7CisgICAgICAgICAgICAvLyA8bGVuZ3RoPgorICAgICAgICAgICAgd2lk
dGggPSBoZWlnaHQgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JM
ZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVO
VCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAg
ICAgICAgICAgICAgICAvLyBhdXRvCisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21O
YW1lKDAsIDAsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6
CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgorICAgICAgICAgICAgICAgIC8v
IDxwYWdlLXNpemU+CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKDAsIHBy
aW1pdGl2ZVZhbHVlLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAvLyBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlXQorICAgICAgICAgICAgICAgIGlmICgh
cGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lkdGgsIGhlaWdodCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3N0eWxlLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBy
ZXR1cm47Cit9CisKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZShDU1NQ
cmltaXRpdmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVu
dGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKK3sKKyAgICBzdGF0aWMgY29u
c3QgTGVuZ3RoIGE1V2lkdGggPSBtbUxlbmd0aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVuZ3RoKDIx
MCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEwKSwgYTRI
ZWlnaHQgPSBtbUxlbmd0aCgyOTcpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9
IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKKyAgICBzdGF0aWMgY29u
c3QgTGVuZ3RoIGI1V2lkdGggPSBtbUxlbmd0aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVuZ3RoKDI1
MCk7CisgICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUwKSwgYjRI
ZWlnaHQgPSBtbUxlbmd0aCgzNTMpOworICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lk
dGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEpOworICAg
IHN0YXRpYyBjb25zdCBMZW5ndGggbGVnYWxXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGVnYWxI
ZWlnaHQgPSBpbmNoTGVuZ3RoKDE0KTsKKyAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZGdlcldp
ZHRoID0gaW5jaExlbmd0aCgxMSksIGxlZGdlckhlaWdodCA9IGluY2hMZW5ndGgoMTcpOworCisg
ICAgLy8gRklYTUU6IERlZmluZSBVQSBkZWZhdWx0IHBhZ2Ugc2l6ZS4gQXNzdW1lIGxldHRlciBm
b3Igbm93LgorICAgIGludCBpZGVudCA9IENTU1ZhbHVlTGV0dGVyOworICAgIGlmIChwYWdlU2l6
ZU5hbWUpIHsKKyAgICAgICAgaWYgKHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgpICE9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGlkZW50ID0gcGFnZVNpemVOYW1lLT5nZXRJZGVudCgpOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBEZWZpbmUgVUEgZGVmYXVsdCBwYWdlIG9yaWVudGF0aW9uLiBBc3N1bWUgcG9ydHJh
aXQgZm9yIG5vdy4KKyAgICBib29sIHBvcnRyYWl0ID0gdHJ1ZTsKKyAgICBpZiAocGFnZU9yaWVu
dGF0aW9uKSB7CisgICAgICAgIGlmIChwYWdlT3JpZW50YXRpb24tPnByaW1pdGl2ZVR5cGUoKSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBzd2l0Y2ggKHBhZ2VPcmllbnRhdGlvbi0+Z2V0SWRlbnQoKSkgeworICAgICAg
ICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgorICAgICAgICAgICAgcG9ydHJhaXQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlUG9ydHJhaXQ6CisgICAg
ICAgICAgICBwb3J0cmFpdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBz
d2l0Y2ggKGlkZW50KSB7CisgICAgY2FzZSBDU1NWYWx1ZUE1OgorICAgICAgICB3aWR0aCA9IGE1
V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGE1SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1ZhbHVlQTQ6CisgICAgICAgIHdpZHRoID0gYTRXaWR0aDsKKyAgICAgICAgaGVpZ2h0
ID0gYTRIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVBMzoKKyAgICAg
ICAgd2lkdGggPSBhM1dpZHRoOworICAgICAgICBoZWlnaHQgPSBhM0hlaWdodDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUI1OgorICAgICAgICB3aWR0aCA9IGI1V2lkdGg7Cisg
ICAgICAgIGhlaWdodCA9IGI1SGVpZ2h0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Zh
bHVlQjQ6CisgICAgICAgIHdpZHRoID0gYjRXaWR0aDsKKyAgICAgICAgaGVpZ2h0ID0gYjRIZWln
aHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVMZXR0ZXI6CisgICAgICAgIHdp
ZHRoID0gbGV0dGVyV2lkdGg7CisgICAgICAgIGhlaWdodCA9IGxldHRlckhlaWdodDsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUxlZ2FsOgorICAgICAgICB3aWR0aCA9IGxlZ2Fs
V2lkdGg7CisgICAgICAgIGhlaWdodCA9IGxlZ2FsSGVpZ2h0OworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1ZhbHVlTGVkZ2VyOgorICAgICAgICB3aWR0aCA9IGxlZGdlcldpZHRoOworICAg
ICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKCFwb3J0cmFpdCkKKyAgICAg
ICAgc3dhcCh3aWR0aCwgaGVpZ2h0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworTGVuZ3RoIENT
U1N0eWxlU2VsZWN0b3I6Om1tTGVuZ3RoKGRvdWJsZSBtbSkKK3sKKyAgICByZXR1cm4gTGVuZ3Ro
KENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0p
LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSks
IEZpeGVkKTsKK30KKworTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6OmluY2hMZW5ndGgoZG91Ymxl
IGluY2gpCit7CisgICAgcmV0dXJuIExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGlu
Y2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKK30KKwogdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSog
dmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NWYWx1ZTo6Q1NT
X0lOSVRJQUwpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBi
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCAwNWNkMTA5YzFjYjJjMDdlNmJl
MzBhYTc1NWNjMDJkOGZkMTRlNDcyLi5mMGRlODNiZTYxNTQ4OWYxZTZkZWU5OWNkZjQ1MDljZTk0
NTM2MDZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0yNjAsNiArMjYwLDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZShDU1NWYWx1ZSosIE5pbmVQaWVjZUlt
YWdlJik7CiAKICAgICAgICAgdm9pZCBhcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUqKTsK
KyAgICAgICAgdm9pZCBhcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFsdWUqKTsKKyAgICAgICAg
Ym9vbCBwYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiwgQ1NTUHJpbWl0aXZlVmFs
dWUqLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCk7CisgICAgICAgIExlbmd0aCBtbUxl
bmd0aChkb3VibGUgbW0pOworICAgICAgICBMZW5ndGggaW5jaExlbmd0aChkb3VibGUgaW5jaCk7
CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5KGludCBpZCwg
Q1NTVmFsdWUqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MgYi9X
ZWJDb3JlL2Nzcy9odG1sLmNzcwppbmRleCAxNjMzNGNmMjUxZGE2N2E1YWI3YWFjMzU0ODAxYjAw
MTI4YWE0MTg5Li4xMDUxNjU5MmE0YjA5OGUyMWRhNTYxN2IzNjM3NTExM2RlNThlMzJjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9odG1sLmNzcworKysgYi9XZWJDb3JlL2Nzcy9odG1sLmNzcwpA
QCAtNzI3LDYgKzcyNyw3IEBAIGlmcmFtZSB7CiAKIEBwYWdlIHsKICAgICAvKiBGSVhNRTogRGVm
aW5lIHRoZSByaWdodCBkZWZhdWx0IHZhbHVlcyBmb3IgcGFnZSBwcm9wZXJ0aWVzLiAqLworICAg
IHNpemU6IGF1dG87CiAgICAgbWFyZ2luOiAxaW47CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlOWJhNzhj
ODNmMTczM2Q4MGVjMmY2MDE2OWM1NmNjOWMyOTExYzkzLi41YTAwZDZhNWY1MjQzOTFhNWVjNWRk
YjhhNTNlNGNlOWUyNzFjNmY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNTAyLDYgKzE1MDIsMzcgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnQ6OnN0eWxlRm9yUGFnZShpbnQgcGFnZUluZGV4
KQogICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgRG9jdW1lbnQ6OmlzUGFn
ZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlID0gc3R5bGVGb3JQYWdlKHBhZ2VJbmRleCk7CisgICAgcmV0dXJuIHN0eWxlLT52aXNpYmls
aXR5KCkgIT0gSElEREVOOyAvLyBkaXNwbGF5IHByb3BlcnR5IGRvZXNuJ3QgYXBwbHkgdG8gQHBh
Z2UuCit9CisKK0ludFJlY3QgRG9jdW1lbnQ6OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKGludCBwYWdl
SW5kZXgpCit7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHN0eWxlRm9yUGFnZShw
YWdlSW5kZXgpOworICAgIEludFNpemUgcGFnZVNpemUgPSBwcmVmZXJyZWRQYWdlU2l6ZUluUGl4
ZWxzKHBhZ2VJbmRleCk7CisgICAgLy8gMTAwJSB2YWx1ZSBmb3IgbWFyZ2luLXtsZWZ0LHJpZ2h0
LHRvcCxib3R0b219LiBUaGlzIGlzIHVzZWQgYWxzbyBmb3IgdG9wIGFuZCBib3R0b20uIGh0dHA6
Ly93d3cudzMub3JnL1RSL0NTUzIvYm94Lmh0bWwjdmFsdWUtZGVmLW1hcmdpbi13aWR0aAorICAg
IGludCBtYXhWYWx1ZSA9IHBhZ2VTaXplLndpZHRoKCk7CisgICAgaW50IHN1cnJvdW5kTGVmdCA9
IHN0eWxlLT5tYXJnaW5MZWZ0KCkuY2FsY1ZhbHVlKG1heFZhbHVlKSArIHN0eWxlLT5ib3JkZXJM
ZWZ0KCkud2lkdGgoKSArIHN0eWxlLT5wYWRkaW5nTGVmdCgpLmNhbGNWYWx1ZShtYXhWYWx1ZSk7
CisgICAgaW50IHN1cnJvdW5kUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5jYWxjVmFsdWUo
bWF4VmFsdWUpICsgc3R5bGUtPmJvcmRlclJpZ2h0KCkud2lkdGgoKSArIHN0eWxlLT5wYWRkaW5n
UmlnaHQoKS5jYWxjVmFsdWUobWF4VmFsdWUpOworICAgIGludCBzdXJyb3VuZFRvcCA9IHN0eWxl
LT5tYXJnaW5Ub3AoKS5jYWxjVmFsdWUobWF4VmFsdWUpICsgc3R5bGUtPmJvcmRlclRvcCgpLndp
ZHRoKCkgKyBzdHlsZS0+cGFkZGluZ1RvcCgpLmNhbGNWYWx1ZShtYXhWYWx1ZSk7CisgICAgaW50
IHN1cnJvdW5kQm90dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmNhbGNWYWx1ZShtYXhWYWx1
ZSkgKyBzdHlsZS0+Ym9yZGVyQm90dG9tKCkud2lkdGgoKSArIHN0eWxlLT5wYWRkaW5nQm90dG9t
KCkuY2FsY1ZhbHVlKG1heFZhbHVlKTsKKyAgICBpbnQgd2lkdGggPSBwYWdlU2l6ZS53aWR0aCgp
IC0gc3Vycm91bmRMZWZ0IC0gc3Vycm91bmRSaWdodDsKKyAgICBpbnQgaGVpZ2h0ID0gcGFnZVNp
emUuaGVpZ2h0KCkgLSBzdXJyb3VuZFRvcCAtIHN1cnJvdW5kQm90dG9tOworCisgICAgcmV0dXJu
IEludFJlY3Qoc3Vycm91bmRMZWZ0LCBzdXJyb3VuZFRvcCwgd2lkdGgsIGhlaWdodCk7Cit9CisK
K0ludFNpemUgRG9jdW1lbnQ6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VJbmRl
eCkKK3sKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc3R5bGVGb3JQYWdlKHBhZ2VJ
bmRleCk7CisgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7CisgICAgQVNT
RVJUKHNpemUud2lkdGgoKS5pc0ZpeGVkKCkpOworICAgIEFTU0VSVChzaXplLmhlaWdodCgpLmlz
Rml4ZWQoKSk7CisgICAgcmV0dXJuIEludFNpemUoc2l6ZS53aWR0aCgpLmNhbGNWYWx1ZSgwKSwg
c2l6ZS5oZWlnaHQoKS5jYWxjVmFsdWUoMCkpOworfQorCiB2b2lkIERvY3VtZW50OjpjcmVhdGVT
dHlsZVNlbGVjdG9yKCkKIHsKICAgICBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyA9IHRy
dWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBiYzEyZGEzNmE3NDM3NTVhNzFjYWNmYTg3NTQ3ODY1N2Q4YjAzZjhkLi4z
MTdmYmI3NjdmOGNlZDY3NGRkNGUyMTc0MjlkNDhiMDkzNzNhZTRjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQ4Myw2
ICs0ODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvckVsZW1lbnRJ
Z25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cyhFbGVtZW50Kik7CiAgICAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gc3R5bGVGb3JQYWdlKGludCBwYWdlSW5kZXgpOworICAgIGJvb2wgaXNQYWdlQm94
VmlzaWJsZShpbnQgcGFnZUluZGV4KTsKKyAgICBJbnRSZWN0IHBhZ2VBcmVhUmVjdEluUGl4ZWxz
KGludCBwYWdlSW5kZXgpOworICAgIEludFNpemUgcHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhp
bnQgcGFnZUluZGV4KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50
cygpOyAvLyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0byB0aGlzIGZ1bmN0
aW9uLgogICAgIERvY0xvYWRlciogZG9jTG9hZGVyKCkgeyByZXR1cm4gbV9kb2NMb2FkZXIuZ2V0
KCk7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9XZWJD
b3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAppbmRleCA4ZmY4YTYyYjkyNGFjNWQ3N2UyNTA5M2My
MDhmYWFhMjhlYmJhOTllLi40YWI3MzY3YzRkNzlhMTgyM2U3YmQ3MTdlOTY0OTc3ZjlkYWNkMDQ4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvUHJpbnRDb250ZXh0LmNwcApAQCAtMjE4LDYgKzIxOCwyMyBAQCBTdHJpbmcgUHJpbnRD
b250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGludCBwYQogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicGFnZVByb3BlcnR5KCkgdW5p
bXBsZW1lbnRlZCBmb3I6ICVzIiwgcHJvcGVydHlOYW1lKTsKIH0KIAorYm9vbCBQcmludENvbnRl
eHQ6OmlzUGFnZUJveFZpc2libGUoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcikKK3sKKyAg
ICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPmlzUGFnZUJveFZpc2libGUocGFnZU51bWJlcik7
Cit9CisKK1N0cmluZyBQcmludENvbnRleHQ6OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKEZyYW1lKiBm
cmFtZSwgaW50IHBhZ2VOdW1iZXIpCit7CisgICAgSW50UmVjdCBwYWdlQXJlYSA9IGZyYW1lLT5k
b2N1bWVudCgpLT5wYWdlQXJlYVJlY3RJblBpeGVscyhwYWdlTnVtYmVyKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiglZCwlZCwlZCwlZCkiLCBwYWdlQXJlYS54KCksIHBhZ2VBcmVhLnko
KSwgcGFnZUFyZWEud2lkdGgoKSwgcGFnZUFyZWEuaGVpZ2h0KCkpOworfQorCitTdHJpbmcgUHJp
bnRDb250ZXh0OjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKEZyYW1lKiBmcmFtZSwgaW50IHBh
Z2VOdW1iZXIpCit7CisgICAgSW50U2l6ZSBwYWdlU2l6ZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5w
cmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKHBhZ2VOdW1iZXIpOworICAgIHJldHVybiBTdHJpbmc6
OmZvcm1hdCgiKCVkLCVkKSIsIHBhZ2VTaXplLndpZHRoKCksIHBhZ2VTaXplLmhlaWdodCgpKTsK
K30KKwogaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0
IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIHsKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0Lmgg
Yi9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgKaW5kZXggOTM5OGE2ZWJkMDg4ZTg2MDEzZjI0
ZjY2NTI5MjU2NzQwOWUyNDg1MS4uODFhOWI3NjRkMTI4MTliMWU0ODdjMzM0M2U3Y2UxNzU4ZjQz
YTQ0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oCisrKyBiL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuaApAQCAtNTYsNiArNTYsOSBAQCBwdWJsaWM6CiAgICAgLy8g
VXNlZCBieSBsYXlvdXQgdGVzdHMuCiAgICAgc3RhdGljIGludCBwYWdlTnVtYmVyRm9yRWxlbWVu
dChFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICBzdGF0
aWMgU3RyaW5nIHBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSwgaW50IHBhZ2VOdW1iZXIpOworICAgIHN0YXRpYyBib29sIGlzUGFnZUJveFZpc2libGUo
RnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlcik7CisgICAgc3RhdGljIFN0cmluZyBwYWdlQXJl
YVJlY3RJblBpeGVscyhGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKTsKKyAgICBzdGF0aWMg
U3RyaW5nIHByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51
bWJlcik7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBhZ2VzKEZyYW1lKiwgY29uc3QgRmxvYXRT
aXplJiBwYWdlU2l6ZUluUGl4ZWxzKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKaW5kZXggNDRlNWI4ODgwN2Y1YzNjM2MyZWU4MzY1ZGE2Y2QwMWNiNzYx
NjVkYi4uNDlmZDk0ZGM2ZjBjZDU0YmExMjc5MTVjYjk2Yzk0MGU5ZTBjZTk2MiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC03MDMsNiArNzAzLDcgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9wZXJzcGVjdGl2ZSA+IDA7IH0KICAgICBMZW5ndGggcGVyc3BlY3RpdmVPcmlnaW5Y
KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fcGVyc3BlY3RpdmVPcmln
aW5YOyB9CiAgICAgTGVuZ3RoIHBlcnNwZWN0aXZlT3JpZ2luWSgpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3BlcnNwZWN0aXZlT3JpZ2luWTsgfQorICAgIExlbmd0aFNp
emUgcGFnZVNpemUoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9wYWdl
U2l6ZTsgfQogICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBX
aGVuIHNldCwgdGhpcyBlbnN1cmVzIHRoYXQgc3R5bGVzIGNvbXBhcmUgYXMgZGlmZmVyZW50LiBV
c2VkIGR1cmluZyBhY2NlbGVyYXRlZCBhbmltYXRpb25zLgpAQCAtMTAyOSw2ICsxMDMwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX3BlcnNwZWN0aXZlLCBwKTsgfQogICAgIHZvaWQgc2V0UGVyc3Bl
Y3RpdmVPcmlnaW5YKExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGVyc3BlY3RpdmVPcmlnaW5YLCBsKTsgfQogICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5Z
KExlbmd0aCBsKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVyc3BlY3RpdmVP
cmlnaW5ZLCBsKTsgfQorICAgIHZvaWQgc2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSBzKSB7IFNFVF9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGFnZVNpemUsIHMpOyB9CiAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdm9pZCBzZXRJc1J1bm5pbmdBY2NlbGVyYXRlZEFu
aW1hdGlvbihib29sIGIgPSB0cnVlKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uLCBiKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IDBiNzA0YzRlNGQz
YzBlNmM0NzQzOTRkY2QzODVlNGE0MWYxZTUyNTcuLjc0ZTczNmNmMmE1Y2QzY2MzODcyYWMxMDMw
N2ExMWM4YzY2N2ZlY2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbmltYXRpb25MaXN0OwogY2xhc3MgQ1NTU3R5bGVTZWxlY3RvcjsKK2Ns
YXNzIExlbmd0aFNpemU7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVGbGV4aWJsZUJv
eERhdGE7CiBjbGFzcyBTdHlsZU1hcnF1ZWVEYXRhOwpAQCAtMTIzLDYgKzEyNCw4IEBAIHB1Ymxp
YzoKICAgICBMZW5ndGggbV9wZXJzcGVjdGl2ZU9yaWdpblg7CiAgICAgTGVuZ3RoIG1fcGVyc3Bl
Y3RpdmVPcmlnaW5ZOwogCisgICAgTGVuZ3RoU2l6ZSBtX3BhZ2VTaXplOworCiAjaWYgRU5BQkxF
KFhCTCkKICAgICBPd25QdHI8QmluZGluZ1VSST4gYmluZGluZ1VSSTsgLy8gVGhlIFhCTCBiaW5k
aW5nIFVSSSBsaXN0LgogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMwYzBiYTE0YmJkZjQ0Y2UxMTcxMDEzZmYzYmI5
MTVhYzA3ZTE3MTAuLmJkYTFjYjhlY2M3NGEwNTNhMWRjYTRiM2U1YWFmODJlZGY0NDdjZmQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMjAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBwYWdlIGZvcm1hdCBkYXRhIHByb2dyYW1taW5nIGludGVyZmFjZS4KKyAgICAg
ICAgQWRkIG1ldGhvZHMgZm9yIHRlc3RpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUzOAorCisgICAgICAgICogTWlzYy9XZWJDb3JlU3RhdGlz
dGljcy5oOgorICAgICAgICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgt
W1dlYkZyYW1lIGlzUGFnZUJveFZpc2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHBhZ2VB
cmVhUmVjdEluUGl4ZWxzOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBwcmVmZXJyZWRQYWdlU2l6
ZUluUGl4ZWxzOl0pOgorCiAyMDEwLTA2LTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5oIGIvV2ViS2l0L21hYy9NaXNjL1dl
YkNvcmVTdGF0aXN0aWNzLmgKaW5kZXggYzc5Yzk2ZGYxYTBjMDk0ZWQzNmNkODNjZmE0MThiODMx
NDgxMmZkOC4uZTM1N2I3MmMxZjBkYTI2OTkxZjVlMWM4MjJiNGMzZDQ4NDYxNjAwOSAxMDA2NDQK
LS0tIGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKKysrIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLmgKQEAgLTg4LDQgKzg4LDcgQEAKIC0gKGludClwYWdl
TnVtYmVyRm9yRWxlbWVudDooRE9NRWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5Q
aXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVsczsKIC0gKGludCludW1iZXJPZlBhZ2VzOihm
bG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhlaWdodEluUGl4ZWxzOwogLSAoTlNT
dHJpbmcgKilwYWdlUHJvcGVydHk6KGNvbnN0IGNoYXIqKXByb3BlcnR5TmFtZTooaW50KXBhZ2VO
dW1iZXI7CistIChib29sKWlzUGFnZUJveFZpc2libGU6KGludClwYWdlTnVtYmVyOworLSAoTlNT
dHJpbmcgKilwYWdlQXJlYVJlY3RJblBpeGVsczooaW50KXBhZ2VOdW1iZXI7CistIChOU1N0cmlu
ZyAqKXByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHM6KGludClwYWdlTnVtYmVyOwogQGVuZApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tIGIvV2ViS2l0L21h
Yy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCmluZGV4IDg5ZjcwZmQ5YzczMjZhMzdkYWVmNWM1
ODY0NGUzOTcyMTI0YzZiZjUuLjkxMTJkMjFhMmJhMjIyYjNmOTgxY2EyZTY1ZWQyOWRlYjQyNWNj
ZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQorKysg
Yi9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KQEAgLTI4MCw0ICsyODAsMTgg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFn
ZVByb3BlcnR5KF9wcml2YXRlLT5jb3JlRnJhbWUsIHByb3BlcnR5TmFtZSwgcGFnZU51bWJlcik7
CiB9CiAKKy0gKGJvb2wpaXNQYWdlQm94VmlzaWJsZTooaW50KXBhZ2VOdW1iZXIKK3sKKyAgICBy
ZXR1cm4gUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKF9wcml2YXRlLT5jb3JlRnJhbWUs
IHBhZ2VOdW1iZXIpOworfQorCistIChOU1N0cmluZyAqKXBhZ2VBcmVhUmVjdEluUGl4ZWxzOihp
bnQpcGFnZU51bWJlcgoreworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VBcmVhUmVjdElu
UGl4ZWxzKF9wcml2YXRlLT5jb3JlRnJhbWUsIHBhZ2VOdW1iZXIpOworfQorCistIChOU1N0cmlu
ZyAqKXByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHM6KGludClwYWdlTnVtYmVyOworeworICAgIHJl
dHVybiBQcmludENvbnRleHQ6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoX3ByaXZhdGUtPmNv
cmVGcmFtZSwgcGFnZU51bWJlcik7Cit9CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMDZkM2Q3ZWU5Y2FjZTVmNmJj
NjMwYTAxMDJlNjMyOTVlMzA1MjczZi4uN2JiODEwZTJiYzMyZGYyODk2OGYzYjA4NWU1Zjc3ZDc3
ZmY2YjkzYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA2LTIwICBZdXpvIEZ1amlzaGlt
YSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgcGFnZSBmb3JtYXQgZGF0YSBwcm9ncmFtbWluZyBpbnRl
cmZhY2UuCisgICAgICAgIEFkZCBtZXRob2RzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1MzgKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHBhcnNlUGFnZU51
bWJlcik6CisgICAgICAgIChpc1BhZ2VCb3hWaXNpYmxlQ2FsbGJhY2spOgorICAgICAgICAocGFn
ZUFyZWFSZWN0SW5QaXhlbHNDYWxsYmFjayk6CisgICAgICAgIChwcmVmZXJyZWRQYWdlU2l6ZUlu
UGl4ZWxzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1
bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmlzUGFnZUJveFZpc2libGUpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VBcmVhUmVjdEluUGl4ZWxzKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk6CisgICAg
ICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5QaXhlbHMpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHA6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6aXNQYWdlQm94VmlzaWJsZSk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5QaXhlbHMpOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMpOgorCiAyMDEw
LTA2LTIyICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLiAgQWRkIFRvbnkgR2VudGlsY29yZSBub3cgdGhhdCBoZSdzIGEgY29tbWl0dGVyLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGRiNTM0MGQ1Y2U1NGU0ZDE2NWM0NzIzMGEzNmQzYTg3ZDUxN2VjNzAuLjAyYzc3YTQy
NzU3YWY1MTgwZDU1ZTMwODJlNjk0Y2M0OWFiOTdiMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTU1Miw2ICs1NTIs
MTUgQEAgc3RhdGljIGJvb2wgcGFyc2VQYWdlUHJvcGVydHlQYXJhbWV0ZXJzKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBpbnQgYXJndW1lbnRDb3VudCwKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIHBh
cnNlUGFnZU51bWJlcihKU0NvbnRleHRSZWYgY29udGV4dCwgaW50IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYqIGFyZ3VtZW50cywgSlNWYWx1ZVJlZiogZXhjZXB0aW9uLCBpbnQmIHBh
Z2VOdW1iZXIpCit7CisgICAgcGFnZU51bWJlciA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
IT0gMSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHBhZ2VOdW1iZXIgPSBzdGF0aWNfY2Fz
dDxpbnQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikp
OworICAgIHJldHVybiAhKmV4Y2VwdGlvbjsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgcGFnZU51
bWJlckZvckVsZW1lbnRCeUlkQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewogICAgIGZsb2F0IHBhZ2VXaWR0aEluUGl4ZWxzID0gMDsKQEAgLTU5Myw2ICs2MDIsMzYgQEAg
c3RhdGljIEpTVmFsdWVSZWYgcGFnZVByb3BlcnR5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW8KICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3N0YXRpYyBK
U1ZhbHVlUmVmIGlzUGFnZUJveFZpc2libGVDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgaW50IHBhZ2VOdW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uLCBwYWdlTnVt
YmVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc1BhZ2VCb3hWaXNp
YmxlKHBhZ2VOdW1iZXIpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcGFnZUFyZWFSZWN0SW5Q
aXhlbHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24s
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IHBh
Z2VOdW1iZXIgPSAwOworICAgIGlmICghcGFyc2VQYWdlTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50
Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uLCBwYWdlTnVtYmVyKSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlU3RyaW5n
KGNvbnRleHQsIGNvbnRyb2xsZXItPnBhZ2VBcmVhUmVjdEluUGl4ZWxzKHBhZ2VOdW1iZXIpLmdl
dCgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgcHJlZmVycmVkUGFnZVNpemVJblBpeGVsc0Nh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgcGFnZU51bWJl
ciA9IDA7CisgICAgaWYgKCFwYXJzZVBhZ2VOdW1iZXIoY29udGV4dCwgYXJndW1lbnRDb3VudCwg
YXJndW1lbnRzLCBleGNlcHRpb24sIHBhZ2VOdW1iZXIpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4
dCwgY29udHJvbGxlci0+cHJlZmVycmVkUGFnZVNpemVJblBpeGVscyhwYWdlTnVtYmVyKS5nZXQo
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3Mg
aW1wbGVtZW50YXRpb24KQEAgLTE2NTEsNiArMTY5MCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExh
eW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJjb3VudGVy
VmFsdWVGb3JFbGVtZW50QnlJZCIsIGNvdW50ZXJWYWx1ZUZvckVsZW1lbnRCeUlkQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiZ3JhbnREZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbiIs
IGdyYW50RGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LCAKICAg
ICAgICAgeyAiaXNDb21tYW5kRW5hYmxlZCIsIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAorICAgICAgICB7ICJpc1BhZ2VCb3hWaXNpYmxlIiwgaXNQYWdlQm94VmlzaWJsZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImtlZXBXZWJIaXN0b3J5Iiwga2VlcFdlYkhpc3RvcnlD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJsYXllclRyZWVBc1RleHQiLCBsYXllclRyZWVB
c1RleHRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZlBhZ2VzIiwgbnVtYmVy
T2ZQYWdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC0xNjU5LDEwICsxNjk5LDEyIEBAIEpTU3RhdGlj
RnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAg
ICB7ICJudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMiLCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlk
ZVByZWZlcmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQiLCBwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJwYWdlQXJlYVJlY3RJblBpeGVscyIsIHBhZ2VBcmVhUmVjdEluUGl4ZWxzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAicGFnZVByb3BlcnR5IiwgcGFnZVByb3BlcnR5Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAicGF0aFRvTG9jYWxSZXNvdXJjZSIsIHBhdGhUb0xvY2Fs
UmVzb3VyY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXVzZUFuaW1hdGlvbkF0VGlt
ZU9uRWxlbWVudFdpdGhJZCIsIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50
V2l0aElkIiwgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAicHJlZmVycmVkUGFnZVNpemVJblBpeGVscyIsIHByZWZlcnJlZFBh
Z2VTaXplSW5QaXhlbHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzYW1wbGVTVkdBbmlt
YXRpb25Gb3JFbGVtZW50QXRUaW1lIiwgc2FtcGxlU1ZHQW5pbWF0aW9uRm9yRWxlbWVudEF0VGlt
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInByaW50VG9QREYiLCBkdW1wQXNQREZDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJxdWV1ZUJhY2tOYXZpZ2F0aW9uIiwgcXVldWVCYWNr
TmF2aWdhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAyOTA5NzgzZTFhYmIwYjFjOWNhYTk0
MWE1OWQ1ZjdiOTEzYTQwY2Y0Li42YWYyYzU3MWE4NmMyMWI2NmMyYjM4NmMyODdmMzY0YzYzMDMz
OTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgKQEAgLTY0LDYgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgb3ZlcnJpZGVQcmVm
ZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpOwogICAgIGludCBwYWdl
TnVtYmVyRm9yRWxlbWVudEJ5SWQoSlNTdHJpbmdSZWYgaWQsIGZsb2F0IHBhZ2VXaWR0aEluUGl4
ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpOwogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBpbnQgcGFnZU51bWJl
cikgY29uc3Q7CisgICAgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25z
dDsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gcGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50
IHBhZ2VOdW1iZXIpIGNvbnN0OworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBwcmVmZXJy
ZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlTnVtYmVyKSBjb25zdDsKICAgICBKU1N0cmluZ1Jl
ZiBwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiwgSlNTdHJpbmdSZWYgdXJsKTsKICAg
ICB2b2lkIHF1ZXVlQmFja05hdmlnYXRpb24oaW50IGhvd0ZhckJhY2t3YXJkKTsKICAgICB2b2lk
IHF1ZXVlRm9yd2FyZE5hdmlnYXRpb24oaW50IGhvd0ZhckZvcndhcmQpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNw
cCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0
ay5jcHAKaW5kZXggMmJkZDgwYzdiNDM5Y2JmMTgxYTE4M2Q4NDFjZjExZGYwNGU1YTg1Zi4uNmY4
ZTYzNzFiZjFiZjU5OTBkMDFhOTM4NGNlMGQ1ZGE0YWRkMjRhMyAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC0xNzcsNiArMTc3LDI0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5KGNvbnN0IGNoYXIqIHByb3BlcnR5CiAgICAgcmV0
dXJuIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPigpOwogfQogCitib29sIExheW91dFRlc3RDb250
cm9sbGVyOjppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50
IHBhZ2VOdW1iZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBw
YWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4g
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHNpemVfdCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCmluZGV4IDY0NGE0MDQ0OWZmMjFhODZjNDVkMTA0NGEwZmQ3YjllZmI2
NTU0MDguLmQwNTk5ZTBmMWUwYmMwYThjZjg4Y2QzNDRjYmY2MzRiOTZlZjQzM2YgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1h
Yy5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRy
b2xsZXJNYWMubW0KQEAgLTIxOCw2ICsyMTgsMjMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHkK
ICAgICByZXR1cm4gcHJvcGVydHlWYWx1ZTsKIH0KIAorYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6aXNQYWdlQm94VmlzaWJsZShpbnQgcGFnZU51bWJlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
W21haW5GcmFtZSBpc1BhZ2VCb3hWaXNpYmxlOnBhZ2VOdW1iZXJdOworfQorCitKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhZ2VBcmVhUmVjdEluUGl4ZWxz
KGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBw
cm9wZXJ0eVZhbHVlKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdS
ZWYpW21haW5GcmFtZSBwYWdlQXJlYVJlY3RJblBpeGVsczpwYWdlTnVtYmVyXSkpOworICAgIHJl
dHVybiBwcm9wZXJ0eVZhbHVlOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnByZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHMoaW50IHBhZ2VOdW1iZXIp
IGNvbnN0Cit7CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHByb3BlcnR5VmFsdWUoQWRv
cHQsIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZilbbWFpbkZyYW1lIHBy
ZWZlcnJlZFBhZ2VTaXplSW5QaXhlbHM6cGFnZU51bWJlcl0pKTsKKyAgICByZXR1cm4gcHJvcGVy
dHlWYWx1ZTsKK30KKwogaW50IExheW91dFRlc3RDb250cm9sbGVyOjpudW1iZXJPZlBhZ2VzKGZs
b2F0IHBhZ2VXaWR0aEluUGl4ZWxzLCBmbG9hdCBwYWdlSGVpZ2h0SW5QaXhlbHMpCiB7CiAgICAg
cmV0dXJuIFttYWluRnJhbWUgbnVtYmVyT2ZQYWdlczpwYWdlV2lkdGhJblBpeGVsczpwYWdlSGVp
Z2h0SW5QaXhlbHNdOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggYjJhMzQ1YjUwZTc4NWI1NWI1
YjFhOTlmMzY3YTc5NWQ0YjkwYzJhNy4uZTBkNTczMTMxNzllZDA0NGMwNmQ1MzE3OGNhZGY3MDQ1
ZTBlYmVlNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC0xMjQ4LDYgKzEyNDgsMjQgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTChK
U1N0cmluZ1JlZiB1dGY4RGF0YSwKIAogfQogCitib29sIExheW91dFRlc3RDb250cm9sbGVyOjpp
c1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlTnVtYmVyKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZUFyZWFSZWN0SW5QaXhlbHMoaW50IHBhZ2VOdW1i
ZXIpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4oKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IExheW91
dFRlc3RDb250cm9sbGVyOjpwcmVmZXJyZWRQYWdlU2l6ZUluUGl4ZWxzKGludCBwYWdlTnVtYmVy
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+KCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmFwaVRl
c3RHb1RvQ3VycmVudEJhY2tGb3J3YXJkSXRlbSgpCiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3
ZWJWaWV3Owo=
</data>
<flag name="review"
          id="46357"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
      

    </bug>

</bugzilla>