<?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>129402</bug_id>
          
          <creation_ts>2014-02-26 15:39:07 -0800</creation_ts>
          <short_desc>Web Replay: capture and replay wheel events and scroll commands</short_desc>
          <delta_ts>2014-07-23 19:03:56 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>129692</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>984952</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-26 15:39:07 -0800</bug_when>
    <thetext>The capture and replay machinery is not thread-safe, so it would be very painful to change it to capture and replay true async scrolling. It would also make recordings unintelligible between async and !async-enabled clients. Instead, we should just force synchronous scrolling when capturing or replaying.

In a branch, I implemented this by adding a flag (set by ReplayController) that contributes to ScrollingCoordinator::synchronousScrollingReasons. Let me know if that&apos;s not the right thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991036</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-16 14:18:00 -0700</bug_when>
    <thetext>I will roll wheel events and scroll commands into this patch since they all work together to implement common scrolling scenarios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994804</commentid>
    <comment_count>2</comment_count>
      <attachid>227914</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-26 20:41:16 -0700</bug_when>
    <thetext>Created attachment 227914
wip - no scrolling coordinator integration yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994821</commentid>
    <comment_count>3</comment_count>
      <attachid>227914</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-03-26 21:29:17 -0700</bug_when>
    <thetext>Comment on attachment 227914
wip - no scrolling coordinator integration yet

Looks good so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996110</commentid>
    <comment_count>4</comment_count>
      <attachid>228237</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-03-31 20:47:09 -0700</bug_when>
    <thetext>Created attachment 228237
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996378</commentid>
    <comment_count>5</comment_count>
      <attachid>228237</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-04-01 11:58:19 -0700</bug_when>
    <thetext>Comment on attachment 228237
the patch

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

&gt; Source/WebCore/replay/SerializationMethods.cpp:82
&gt; +#define DECODE_OWNED_TYPE_WITH_KEY(_encodedValue, _type, _key) \

DECODE_UNIQUE_TYPE_WITH_KEY? DECODE_OWNED_TYPE_WITH_KEY sounds like OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996471</commentid>
    <comment_count>6</comment_count>
      <attachid>228237</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-01 15:01:32 -0700</bug_when>
    <thetext>Comment on attachment 228237
the patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:366
&gt; +#if ENABLE(WEB_REPLAY)
&gt; +void ScrollingTree::setDeterministicScrollingEnabled(bool flag)
&gt; +{
&gt; +    m_deterministicScrollingEnabled = flag;
&gt; +}
&gt; +
&gt; +bool ScrollingTree::deterministicScrollingEnabled()
&gt; +{
&gt; +    return m_deterministicScrollingEnabled;
&gt; +}
&gt; +#endif
&gt; +

I think you should add a flag to ScrollingCoordinator::MainThreadScrollingReasonFlags rather than doing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996544</commentid>
    <comment_count>7</comment_count>
      <attachid>228347</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-01 17:38:30 -0700</bug_when>
    <thetext>Created attachment 228347
the patch.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996545</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-01 17:39:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 228237 [details])
&gt; 
&gt; I think you should add a flag to ScrollingCoordinator::MainThreadScrollingReasonFlags rather than doing this.

Oh, yes that is a bit simpler. I redid it that way in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996546</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-01 17:40:41 -0700</bug_when>
    <thetext>Attachment 228347 did not pass style-queue:


ERROR: Source/WebCore/replay/SerializationMethods.cpp:79:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:83:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:87:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:95:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/ScrollTypes.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 5 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996762</commentid>
    <comment_count>10</comment_count>
      <attachid>228347</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-04-02 11:46:19 -0700</bug_when>
    <thetext>Comment on attachment 228347
the patch.2

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:310
&gt; +        synchronousScrollingReasons |= ForcedOnMainThread;

Looks like this should use ForcedDeterministicScrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996769</commentid>
    <comment_count>11</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-02 12:02:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 228347 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228347&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.cpp:310
&gt; &gt; +        synchronousScrollingReasons |= ForcedOnMainThread;
&gt; 
&gt; Looks like this should use ForcedDeterministicScrolling.

Simon said (lol) to just reuse ForcedOnMainThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996773</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-04-02 12:07:47 -0700</bug_when>
    <thetext>So should ForcedDeterministicScrolling be removed from the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996811</commentid>
    <comment_count>13</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-02 13:13:53 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; So should ForcedDeterministicScrolling be removed from the patch?

Yes, I&apos;ll remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996828</commentid>
    <comment_count>14</comment_count>
      <attachid>228424</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-02 13:36:00 -0700</bug_when>
    <thetext>Created attachment 228424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996829</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 13:38:44 -0700</bug_when>
    <thetext>Attachment 228424 did not pass style-queue:


ERROR: Source/WebCore/replay/SerializationMethods.cpp:79:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:83:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:87:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/replay/SerializationMethods.cpp:95:  _key is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/ScrollTypes.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 5 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997575</commentid>
    <comment_count>16</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-04 08:52:25 -0700</bug_when>
    <thetext>EWS redness appears unrelated, as the tree was pretty red at the time (mac-wk2) and internal compiler error (efl).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997732</commentid>
    <comment_count>17</comment_count>
      <attachid>228424</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 16:14:42 -0700</bug_when>
    <thetext>Comment on attachment 228424
Patch

Clearing flags on attachment: 228424

Committed r166811: &lt;http://trac.webkit.org/changeset/166811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997733</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-04 16:14:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024335</commentid>
    <comment_count>19</comment_count>
      <attachid>228424</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-23 14:32:23 -0700</bug_when>
    <thetext>Comment on attachment 228424
Patch

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

&gt; Source/WebCore/platform/ScrollTypes.h:33
&gt; +    enum ScrollDirection : uint64_t {

Did these really need to take up 64 bits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024423</commentid>
    <comment_count>20</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-23 18:44:55 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 228424 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=228424&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollTypes.h:33
&gt; &gt; +    enum ScrollDirection : uint64_t {
&gt; 
&gt; Did these really need to take up 64 bits?

Definitely not. Previous patches for other replay things used the smallest acceptable explicit size (usually u8), but Anders said (in another review or on IRC) that using different explicit sizes was confusing and to just use a size that fits any enums.

(I&apos;m happy to put up a patch changing it to use whatever explicit size people find acceptable... as long as it can be forward-declared)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024425</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-23 19:03:56 -0700</bug_when>
    <thetext>I&apos;m worried that blindly using 64 bits for all enums will have bloated a lot of data structures without us noticing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227914</attachid>
            <date>2014-03-26 20:41:16 -0700</date>
            <delta_ts>2014-03-31 20:47:06 -0700</delta_ts>
            <desc>wip - no scrolling coordinator integration yet</desc>
            <filename>bug-129402-20140326204054.patch</filename>
            <type>text/plain</type>
            <size>29550</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVkOTRiZDljNDkzNzdh
Nzc0OWRlYzcyZDMyY2NiNjY1NjYxODM1OC4uODhkMDFhYjdlNGU2MWFjMmJhZDIyZTU4M2NmMDYz
MjdlNmE5ZTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE0LTAzLTI2ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBSZXBsYXk6IGNhcHR1cmUg
YW5kIHJlcGxheSB3aGVlbCBldmVudHMgYW5kIHNjcm9sbCBjb21tYW5kcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NDAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISku
CisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6U2Nyb2xsaW5nQ29vcmRpbmF0
b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaDoKKyAgICAgICAgKiByZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1l
dGhvZHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGFuZGxlV2hlZWxFdmVudDo6ZGlzcGF0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6TG9naWNhbFNjcm9sbFBhZ2U6OmRpc3BhdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFBhZ2U6OmRpc3BhdGNoKToKKyAgICAgICAgKiByZXBsYXkvU2Vy
aWFsaXphdGlvbk1ldGhvZHMuY3BwOgorICAgICAgICAoSlNDOjpFbmNvZGluZ1RyYWl0czxOb25k
ZXRlcm1pbmlzdGljSW5wdXRCYXNlPjo6ZW5jb2RlVmFsdWUpOgorICAgICAgICAoSlNDOjpFbmNv
ZGluZ1RyYWl0czxLZXlwcmVzc0NvbW1hbmQ+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6
OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD46OmVuY29kZVZhbHVlKToKKyAg
ICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1Nb3VzZUV2ZW50Pjo6ZW5jb2RlVmFs
dWUpOgorICAgICAgICAoSlNDOjpQbGF0Zm9ybVdoZWVsRXZlbnRDb2NvYTo6UGxhdGZvcm1XaGVl
bEV2ZW50Q29jb2EpOgorICAgICAgICAoSlNDOjpFbmNvZGluZ1RyYWl0czxQbGF0Zm9ybVdoZWVs
RXZlbnQ+OjplbmNvZGVWYWx1ZSk6CisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRm
b3JtV2hlZWxFdmVudD46OmRlY29kZVZhbHVlKToKKyAgICAgICAgKiByZXBsYXkvU2VyaWFsaXph
dGlvbk1ldGhvZHMuaDoKKyAgICAgICAgKiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OnNjcm9sbFJlY3Vyc2l2ZWx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KToK
KyAgICAgICAgKiByZXBsYXkvV2ViSW5wdXRzLmpzb246CisKIDIwMTQtMDMtMjUgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIFJlcGxheTogcmVzb3VyY2UgdW5p
cXVlIGlkZW50aWZpZXJzIHNob3VsZCBiZSB1bmlxdWUtcGVyLWZyYW1lLCBub3QgZ2xvYmFsbHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCA4ZGFkMTYwMDQ3ZmZhNGQxYWQxYWVlMmZhOTIyNjNiMTljNWYyNjk5
Li42OWJmNDFkMzk2NDA0ZmE4YTQ0ODVmNjdmNWI5ZTllOGJjOTUwYWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3Bw
CkBAIC02Miw2ICs2Miw5IEBAIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpTY3JvbGxpbmdDb29yZGluYXRvcihQYWdlKiBwYWdlKQogICAgIDogbV9wYWdlKHBhZ2UpCiAg
ICAgLCBtX2ZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcyhmYWxzZSkK
KyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICAsIG1fZm9yY2VEZXRlcm1pbmlzdGljU2Nyb2xs
aW5nKGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDU5YWYwM2Q3YzZlZDYyNDU2
MGE2NTA3MWFkOTVjMmNhOGZkN2JiNjMuLjg2ZDdjYjFlNDRjYjJiZGJkYjE0ZDM0YTVjMWM3Nzc2
MmIxNjFmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTQzLDYgKzE0MywxMSBAQCBwdWJsaWM6CiAgICAgLy8g
Rm9yY2UgYWxsIHNjcm9sbCBsYXllciBwb3NpdGlvbiB1cGRhdGVzIHRvIGhhcHBlbiBvbiB0aGUg
bWFpbiB0aHJlYWQuCiAgICAgdm9pZCBzZXRGb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3Np
dGlvblVwZGF0ZXMoYm9vbCk7CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICAvLyBGb3Jj
ZSBzeW5jaHJvbm91cyBwb3NpdGlvbiB1cGRhdGVzIGFuZCBoYW5kbGluZyBvZiB3aGVlbCBldmVu
dHMgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHZvaWQgc2V0Rm9yY2VEZXRlcm1pbmlzdGljU2Ny
b2xsaW5nKGJvb2wpOworI2VuZGlmCisKICAgICAvLyBUaGVzZSB2aXJ0dWFsIGZ1bmN0aW9ucyBh
cmUgY3VycmVudGx5IHVuaXF1ZSB0byB0aGUgdGhyZWFkZWQgc2Nyb2xsaW5nIGFyY2hpdGVjdHVy
ZS4gCiAgICAgLy8gVGhlaXIgbWVhbmluZ2Z1bCBpbXBsZW1lbnRhdGlvbnMgYXJlIGluIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLgogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5l
ZWRlZCgpIHsgfQpAQCAtMjA0LDYgKzIwOSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVT
eW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKTsKICAgICAKICAgICBib29sIG1fZm9yY2VTeW5j
aHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzOworI2lmIEVOQUJMRShXRUJfUkVQTEFZ
KQorICAgIGJvb2wgbV9mb3JjZURldGVybWluaXN0aWNTY3JvbGxpbmc7CisjZW5kaWYKIH07CiAK
ICNkZWZpbmUgU0NST0xMSU5HX0NPT1JESU5BVE9SX1RZUEVfQ0FTVFMoVG9WYWx1ZVR5cGVOYW1l
LCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50LmgKaW5kZXggYWEzMDhmOGVlZTg5MjlkNjgyNzg3NWY4N2Q0MjFlYjYyODMxZDQ1NS4uMWYx
MWZlZGZlZDQyYzE1ZTBhY2YwM2EzNGEzNzc2Mjc4NDBmNGNkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gYW5kIHN5bnRoZXNpemVkIGluIG90aGVyIGNhc2VzIHdo
ZXJlIHBsYXRmb3JtcyBnZW5lcmF0ZSBsaW5lLWJ5LWxpbmUgc2Nyb2xsaW5nIGV2ZW50cy4KICAg
ICAvLyBUaGUgU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgd2hlZWwg
ZXZlbnQgc2hvdWxkIHNjcm9sbCBhbiBlbnRpcmUgcGFnZS4gIEluIHRoaXMgY2FzZSBXZWJDb3Jl
J3MgYnVpbHQgaW4gcGFnaW5nIGJlaGF2aW9yIGlzIHVzZWQgdG8gcGFnZQogICAgIC8vIHVwIGFu
ZCBkb3duICh5b3UgZ2V0IHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIHRoZSB1c2VyIHdhcyBjbGlj
a2luZyBpbiBhIHNjcm9sbGJhciB0cmFjayB0byBwYWdlIHVwIG9yIHBhZ2UgZG93bikuCi0gICAg
ZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSB7CisgICAgZW51bSBQbGF0Zm9ybVdo
ZWVsRXZlbnRHcmFudWxhcml0eSA6IHVpbnQ4X3QgewogICAgICAgICBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50LAogICAgICAgICBTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKICAgICB9OwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0gICAgZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSB7CisgICAg
ZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSA6IHVpbnQ4X3QgewogICAgICAgICBQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMCwKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50
UGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwgMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCmluZGV4IGM5OGQ3Nzg1YjNmMTI2YzA1YTM4MDFjY2JmODI5ZjY3NmU4YzU3NjQuLjk5NGFi
OWQ1ODkwNTQ1MTMzOWIyMGM3NGE3NjgyNThiNTQ5MTE5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVHlwZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGVudW0gU2Nyb2xsRGlyZWN0aW9uIHsKKyAgICBlbnVtIFNjcm9sbERpcmVjdGlv
biA6IHVpbnQ4X3QgewogICAgICAgICBTY3JvbGxVcCwKICAgICAgICAgU2Nyb2xsRG93biwKICAg
ICAgICAgU2Nyb2xsTGVmdCwKICAgICAgICAgU2Nyb2xsUmlnaHQKICAgICB9OwogCi0gICAgZW51
bSBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIHsKKyAgICBlbnVtIFNjcm9sbExvZ2ljYWxEaXJlY3Rp
b24gOiB1aW50OF90IHsKICAgICAgICAgU2Nyb2xsQmxvY2tEaXJlY3Rpb25CYWNrd2FyZCwKICAg
ICAgICAgU2Nyb2xsQmxvY2tEaXJlY3Rpb25Gb3J3YXJkLAogICAgICAgICBTY3JvbGxJbmxpbmVE
aXJlY3Rpb25CYWNrd2FyZCwKQEAgLTEwMyw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHJldHVybiBTY3JvbGxVcDsKICAgICB9CiAKLSAgICBlbnVtIFNjcm9sbEdyYW51
bGFyaXR5IHsKKyAgICBlbnVtIFNjcm9sbEdyYW51bGFyaXR5IDogdWludDhfdCB7CiAgICAgICAg
IFNjcm9sbEJ5TGluZSwKICAgICAgICAgU2Nyb2xsQnlQYWdlLAogICAgICAgICBTY3JvbGxCeURv
Y3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0RGlz
cGF0Y2hNZXRob2RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dERpc3Bh
dGNoTWV0aG9kcy5jcHAKaW5kZXggMTA0NWU2NWJmODA2YzJlYmRiNmYwYWMwMjkyM2ZhNjYwMTdl
NjczYS4uZmJhNjdkY2M5MTYyMmQ3NmQ3NDczZTExYTRkNGVhNjRjOTRmMzY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0RGlzcGF0Y2hNZXRob2RzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1ldGhvZHMuY3Bw
CkBAIC03Nyw2ICs3NywyMSBAQCB2b2lkIEhhbmRsZU1vdXNlUmVsZWFzZTo6ZGlzcGF0Y2goUmVw
bGF5Q29udHJvbGxlciYgY29udHJvbGxlcikKICAgICBjb250cm9sbGVyLnBhZ2UoKS51c2VySW5w
dXRCcmlkZ2UoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChwbGF0Zm9ybUV2ZW50KCksIElucHV0
U291cmNlOjpTeW50aGV0aWMpOwogfQogCit2b2lkIEhhbmRsZVdoZWVsRXZlbnQ6OmRpc3BhdGNo
KFJlcGxheUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci5wYWdlKCku
dXNlcklucHV0QnJpZGdlKCkuaGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KCksIElucHV0
U291cmNlOjpTeW50aGV0aWMpOworfQorCit2b2lkIExvZ2ljYWxTY3JvbGxQYWdlOjpkaXNwYXRj
aChSZXBsYXlDb250cm9sbGVyJiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xsZXIucGFnZSgp
LnVzZXJJbnB1dEJyaWRnZSgpLmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24oKSwg
Z3JhbnVsYXJpdHkoKSwgSW5wdXRTb3VyY2U6OlN5bnRoZXRpYyk7Cit9CisKK3ZvaWQgU2Nyb2xs
UGFnZTo6ZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYgY29udHJvbGxlcikKK3sKKyAgICBjb250
cm9sbGVyLnBhZ2UoKS51c2VySW5wdXRCcmlkZ2UoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rp
b24oKSwgZ3JhbnVsYXJpdHkoKSwgSW5wdXRTb3VyY2U6OlN5bnRoZXRpYyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKaW5kZXggNWNiOWVm
MTZhM2QwNjczNTk3MGEyOTZhZjM0M2NmOWU0NzQ4ZGY2Zi4uNDBlNGEwMDNkZGEwNTQyM2YyMWRj
NzJkMGZiMDliOTZmYjFhMGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Nl
cmlhbGl6YXRpb25NZXRob2RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFs
aXphdGlvbk1ldGhvZHMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQWxsUmVwbGF5
SW5wdXRzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVwbGF5SW5wdXRUeXBlcy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CiAjaW5jbHVkZSAiVVJMLmgiCkBAIC00NCwzMSArNDUsNTUgQEAgdXNpbmcgV2ViQ29yZTo6TW91
c2VCdXR0b247CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OwogdXNpbmcgV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OwogdXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50
OwordXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50OwordXNpbmcgV2ViQ29yZTo6UGxh
dGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHk7CiB1c2luZyBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjsKIHVzaW5nIFdlYkNvcmU6OlVSTDsKIHVzaW5nIFdlYkNvcmU6OmlucHV0VHlwZXM7CiAKKyNp
ZiBQTEFURk9STShDT0NPQSkKK3VzaW5nIFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
OworI2VuZGlmCisKICNkZWZpbmUgSU1QT1JUX0ZST01fV0VCQ09SRV9OQU1FU1BBQ0UobmFtZSkg
XAogdXNpbmcgV2ViQ29yZTo6bmFtZTsgXAogCiBXRUJfUkVQTEFZX0lOUFVUX05BTUVTX0ZPUl9F
QUNIKElNUE9SVF9GUk9NX1dFQkNPUkVfTkFNRVNQQUNFKQogI3VuZGVmIElNUE9SVF9GUk9NX1dF
QkNPUkVfTkFNRVNQQUNFCiAKLSNkZWZpbmUgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKF9l
bmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5LCBfdmFsdWUpIFwKKyNkZWZpbmUgRU5DT0RFX1RZUEVf
V0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSkgXAogICAgIF9lbmNv
ZGVkVmFsdWUucHV0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfdmFsdWUpCiAKLSNkZWZp
bmUgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5
KSBcCi0gICAgX3R5cGUgX2tleTsgXAotICAgIGlmICghX2VuY29kZWRWYWx1ZS5nZXQ8X3R5cGU+
KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9rZXkpKSBcCisjZGVmaW5lIEVOQ09ERV9PUFRJT05BTF9U
WVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5LCBfdmFsdWUsIGNvbmRpdGlv
bikgXAorICAgIGlmIChjb25kaXRpb24pIFwKKyAgICAgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVko
X2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSkKKworI2RlZmluZSBERUNPREVfVFlQ
RV9XSVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9sdmFsdWUp
IFwKKyAgICBpZiAoIV9lbmNvZGVkVmFsdWUuZ2V0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkp
LCBfbHZhbHVlKSkgXAogICAgICAgICByZXR1cm4gZmFsc2UKIAotI2RlZmluZSBFTkNPREVfT1BU
SU9OQUxfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92
YWx1ZSwgY29uZGl0aW9uKSBcCi0gICAgaWYgKGNvbmRpdGlvbikgXAotICAgICAgICBfZW5jb2Rl
ZFZhbHVlLnB1dDxfdHlwZT4oQVNDSUlMaXRlcmFsKCNfa2V5KSwgX3ZhbHVlKQorI2RlZmluZSBE
RUNPREVfT1BUSU9OQUxfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5
cGUsIF9rZXksIF9sdmFsdWUpIFwKKyAgICBib29sIF9rZXkgIyMgV2FzRGVjb2RlZCA9IF9lbmNv
ZGVkVmFsdWUuZ2V0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfbHZhbHVlKQorCisjZGVm
aW5lIERFQ09ERV9SRUZDT1VOVEVEX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUs
IF9rZXkpIFwKKyAgICBSZWZQdHI8X3R5cGU+IF9rZXk7IFwKKyAgICBERUNPREVfVFlQRV9XSVRI
X0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9rZXkpCisKKyNkZWZp
bmUgREVDT0RFX09XTkVEX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkp
IFwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8X3R5cGU+IF9rZXk7IFwKKyAgICBERUNPREVfVFlQRV9X
SVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9rZXkpCisKKyNk
ZWZpbmUgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBf
a2V5KSBcCisgICAgX3R5cGUgX2tleTsgXAorICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xW
QUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKIAogI2RlZmluZSBERUNPREVf
T1BUSU9OQUxfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkp
IFwKICAgICBfdHlwZSBfa2V5OyBcCi0gICAgYm9vbCBfa2V5ICMjIFdhc0RlY29kZWQgPSBfZW5j
b2RlZFZhbHVlLmdldDxfdHlwZT4oQVNDSUlMaXRlcmFsKCNfa2V5KSwgX2tleSkKKyAgICBERUNP
REVfT1BUSU9OQUxfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUs
IF9rZXksIF9rZXkpCisKKyNkZWZpbmUgREVDT0RFX09QVElPTkFMX1JFRkNPVU5URURfVFlQRV9X
SVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSkgXAorICAgIFJlZlB0cjxfdHlwZT4g
X2tleTsgXAorICAgIERFQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5j
b2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc3
LDcgKzEwMiw3IEBAIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGlj
SW5wdXRCYXNlPjo6ZW5jb2RlVmFsdWUoY29uc3QgTm9uZGV0CiAgICAgRW5jb2RlZFZhbHVlIGVu
Y29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlID0gaW5wdXQudHlwZSgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBF
X1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0eXBlLCB0eXBlLnN0cmluZygpKTsKKyAg
ICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdHlwZSwgdHlwZS5z
dHJpbmcoKSk7CiAKICNkZWZpbmUgRU5DT0RFX0lGX1RZUEVfVEFHX01BVENIRVMobmFtZSkgXAog
ICAgIGlmICh0eXBlID09IGlucHV0VHlwZXMoKS5uYW1lKSB7IFwKQEAgLTEzNCw4ICsxNTksOCBA
QCBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8S2V5cHJlc3NDb21tYW5kPjo6ZW5jb2RlVmFs
dWUoY29uc3QgS2V5cHJlc3NDb21tYW5kJgogewogICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFs
dWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9U
WVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCBjb21tYW5kTmFtZSwgY29tbWFuZC5j
b21tYW5kTmFtZSk7Ci0gICAgRU5DT0RFX09QVElPTkFMX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVu
Y29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFjb21tYW5kLnRleHQuaXNF
bXB0eSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywg
Y29tbWFuZE5hbWUsIGNvbW1hbmQuY29tbWFuZE5hbWUpOworICAgIEVOQ09ERV9PUFRJT05BTF9U
WVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFj
b21tYW5kLnRleHQuaXNFbXB0eSgpKTsKIAogICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CiB9CkBA
IC0xNjQsMjEgKzE4OSwyMSBAQCBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1L
ZXlib2FyZEV2ZW50Pjo6ZW5jb2RlVmFsdWUoY29uc3QgUGxhdGZvcm1LZQogewogICAgIEVuY29k
ZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0g
ICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgZG91YmxlLCB0aW1l
c3RhbXAsIGlucHV0LnRpbWVzdGFtcCgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9L
RVkoZW5jb2RlZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBlKCkp
OwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVycywgbW9kaWZpZXJzLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcnM+KGlucHV0Lm1vZGlmaWVycygpKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBpbnB1dC50ZXh0KCkpOwotICAgIEVO
Q09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdW5tb2RpZmll
ZFRleHQsIGlucHV0LnVubW9kaWZpZWRUZXh0KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9X
SVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwgaW5wdXQua2V5SWRl
bnRpZmllcigpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVl
LCBpbnQsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW5wdXQud2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwg
bmF0aXZlVmlydHVhbEtleUNvZGUsIGlucHV0Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkpOwotICAg
IEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNv
ZGUsIGlucHV0Lm1hY0NoYXJDb2RlKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tF
WShlbmNvZGVkVmFsdWUsIGJvb2wsIGF1dG9SZXBlYXQsIGlucHV0LmlzQXV0b1JlcGVhdCgpKTsK
LSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBrZXlw
YWQsIGlucHV0LmlzS2V5cGFkKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShl
bmNvZGVkVmFsdWUsIGJvb2wsIHN5c3RlbUtleSwgaW5wdXQuaXNTeXN0ZW1LZXkoKSk7CisgICAg
RU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBkb3VibGUsIHRpbWVzdGFtcCwgaW5w
dXQudGltZXN0YW1wKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
UGxhdGZvcm1FdmVudDo6VHlwZSwgdHlwZSwgaW5wdXQudHlwZSgpKTsKKyAgICBFTkNPREVfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycywgbW9kaWZp
ZXJzLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KGlucHV0Lm1vZGlmaWVy
cygpKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRl
eHQsIGlucHV0LnRleHQoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVl
LCBTdHJpbmcsIHVubW9kaWZpZWRUZXh0LCBpbnB1dC51bm1vZGlmaWVkVGV4dCgpKTsKKyAgICBF
TkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwg
aW5wdXQua2V5SWRlbnRpZmllcigpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVk
VmFsdWUsIGludCwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnB1dC53aW5kb3dzVmlydHVhbEtl
eUNvZGUoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIG5h
dGl2ZVZpcnR1YWxLZXlDb2RlLCBpbnB1dC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpKTsKKyAgICBF
TkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNvZGUsIGlucHV0
Lm1hY0NoYXJDb2RlKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
Ym9vbCwgYXV0b1JlcGVhdCwgaW5wdXQuaXNBdXRvUmVwZWF0KCkpOworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwga2V5cGFkLCBpbnB1dC5pc0tleXBhZCgpKTsK
KyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIHN5c3RlbUtleSwg
aW5wdXQuaXNTeXN0ZW1LZXkoKSk7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBFTkNPREVfU0NBTEFS
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwg
aW5wdXQuaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWRWYWx1ZSwgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4sIGNvbW1hbmRzLCBp
bnB1dC5jb21tYW5kcygpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGJvb2wsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBpbnB1dC5oYW5kbGVkQnlJbnB1dE1ldGhvZCgp
KTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFZlY3RvcjxLZXlwcmVz
c0NvbW1hbmQ+LCBjb21tYW5kcywgaW5wdXQuY29tbWFuZHMoKSk7CiAjZW5kaWYKICAgICByZXR1
cm4gZW5jb2RlZFZhbHVlOwogfQpAQCAtMjE1LDE4ICsyNDAsMTggQEAgRW5jb2RlZFZhbHVlIEVu
Y29kaW5nVHJhaXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKGNvbnN0IFBsYXRm
b3JtTW91c2UKIHsKICAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVl
OjpjcmVhdGVPYmplY3QoKTsKIAotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkVmFsdWUsIGludCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7Ci0gICAgRU5D
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBwb3NpdGlvblksIGlu
cHV0LnBvc2l0aW9uKCkueSgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5j
b2RlZFZhbHVlLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54
KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwg
Z2xvYmFsUG9zaXRpb25ZLCBpbnB1dC5nbG9iYWxQb3NpdGlvbigpLnkoKSk7Ci0gICAgRU5DT0RF
X1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgTW91c2VCdXR0b24sIGJ1dHRvbiwg
aW5wdXQuYnV0dG9uKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVk
VmFsdWUsIFBsYXRmb3JtRXZlbnQ6OlR5cGUsIHR5cGUsIGlucHV0LnR5cGUoKSk7Ci0gICAgRU5D
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBjbGlja0NvdW50LCBp
bnB1dC5jbGlja0NvdW50KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkVmFsdWUsIGJvb2wsIHNoaWZ0S2V5LCBpbnB1dC5zaGlmdEtleSgpKTsKLSAgICBFTkNPREVf
U0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBjdHJsS2V5LCBpbnB1dC5j
dHJsS2V5KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGJvb2wsIGFsdEtleSwgaW5wdXQuYWx0S2V5KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9X
SVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIG1ldGFLZXksIGlucHV0Lm1ldGFLZXkoKSk7Ci0g
ICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCB0aW1lc3Rh
bXAsIGlucHV0LnRpbWVzdGFtcCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVk
VmFsdWUsIGludCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7CisgICAgRU5DT0RF
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIHBvc2l0aW9uWSwgaW5wdXQucG9zaXRp
b24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBn
bG9iYWxQb3NpdGlvblgsIGlucHV0Lmdsb2JhbFBvc2l0aW9uKCkueCgpKTsKKyAgICBFTkNPREVf
VFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFsUG9zaXRpb25ZLCBpbnB1dC5n
bG9iYWxQb3NpdGlvbigpLnkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZh
bHVlLCBNb3VzZUJ1dHRvbiwgYnV0dG9uLCBpbnB1dC5idXR0b24oKSk7CisgICAgRU5DT0RFX1RZ
UEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1
dC50eXBlKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBj
bGlja0NvdW50LCBpbnB1dC5jbGlja0NvdW50KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgYm9vbCwgc2hpZnRLZXksIGlucHV0LnNoaWZ0S2V5KCkpOworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgY3RybEtleSwgaW5wdXQuY3Ry
bEtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGFs
dEtleSwgaW5wdXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRW
YWx1ZSwgYm9vbCwgbWV0YUtleSwgaW5wdXQubWV0YUtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9X
SVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgdGltZXN0YW1wLCBpbnB1dC50aW1lc3RhbXAoKSk7
CiAKICAgICByZXR1cm4gZW5jb2RlZFZhbHVlOwogfQpAQCAtMjUzLDYgKzI3OCwxMDIgQEAgYm9v
bCBFbmNvZGluZ1RyYWl0czxQbGF0Zm9ybU1vdXNlRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVk
VmFsdWUmIGVuY29kZWRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorc3RydWN0IFBsYXRmb3JtV2hlZWxFdmVudENvY29hQXJndW1lbnRzIHsKKyAgICBi
b29sIGRpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICBib29sIGhhc1ByZWNpc2VTY3Jv
bGxpbmdEZWx0YXM7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2U7CisgICAgUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZTsKKyAgICBpbnQgc2Nyb2xsQ291bnQ7
CisgICAgZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICBmbG9hdCB1bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZOworfTsKKworY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50
Q29jb2EgOiBwdWJsaWMgUGxhdGZvcm1XaGVlbEV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9y
bVdoZWVsRXZlbnRDb2NvYShQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBQbGF0Zm9ybVdoZWVs
RXZlbnRDb2NvYUFyZ3VtZW50cyYgYXJndW1lbnRzKQorICAgICAgICA6IFBsYXRmb3JtV2hlZWxF
dmVudChldmVudCkKKyAgICB7CisgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNl
ID0gYXJndW1lbnRzLmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICAgICAgbV9oYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gYXJndW1lbnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXM7CisgICAgICAgIG1fcGhhc2UgPSBhcmd1bWVudHMucGhhc2U7CisgICAgICAgIG1fbW9tZW50
dW1QaGFzZSA9IGFyZ3VtZW50cy5tb21lbnR1bVBoYXNlOworICAgICAgICBtX3Njcm9sbENvdW50
ID0gYXJndW1lbnRzLnNjcm9sbENvdW50OworICAgICAgICBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxp
bmdEZWx0YVggPSBhcmd1bWVudHMudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICAg
ICAgbV91bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZID0gYXJndW1lbnRzLnVuYWNjZWxlcmF0
ZWRTY3JvbGxpbmdEZWx0YVk7CisgICAgfQorfTsKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkK
KworRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29k
ZVZhbHVlKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgaW5wdXQpCit7CisgICAgRW5jb2RlZFZh
bHVlIGVuY29kZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKKworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9uWCwgaW5wdXQucG9z
aXRpb24oKS54KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQs
IHBvc2l0aW9uWSwgaW5wdXQucG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhf
S0VZKGVuY29kZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRp
b24oKS54KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIGds
b2JhbFBvc2l0aW9uWSwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9U
WVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSwgaW5wdXQuc2hpZnRLZXko
KSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGN0cmxLZXks
IGlucHV0LmN0cmxLZXkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEs
IGJvb2wsIGFsdEtleSwgaW5wdXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZ
KGVuY29kZWREYXRhLCBib29sLCBtZXRhS2V5LCBpbnB1dC5tZXRhS2V5KCkpOworICAgIEVOQ09E
RV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgZGVsdGFYLCBpbnB1dC5kZWx0YVgo
KSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVks
IGlucHV0LmRlbHRhWSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwg
ZmxvYXQsIHdoZWVsVGlja3NYLCBpbnB1dC53aGVlbFRpY2tzWCgpKTsKKyAgICBFTkNPREVfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHdoZWVsVGlja3NZLCBpbnB1dC53aGVlbFRp
Y2tzWSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgUGxhdGZvcm1X
aGVlbEV2ZW50R3JhbnVsYXJpdHksIGdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdo
ZWVsRXZlbnRHcmFudWxhcml0eT4oaW5wdXQuZ3JhbnVsYXJpdHkoKSkpOworCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGRp
cmVjdGlvbkludmVydGVkRnJvbURldmljZSwgaW5wdXQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2
aWNlKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBoYXNQ
cmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCBpbnB1dC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSwgcGhhc2UsIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihpbnB1
dC5waGFzZSgpKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlLCBtb21lbnR1bVBoYXNlLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZT4oaW5wdXQubW9tZW50dW1QaGFzZSgpKSk7CisgICAgRU5DT0RFX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGlucHV0LnNjcm9sbENvdW50
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhWCwgaW5wdXQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRh
WCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHVuYWNj
ZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVksIGlucHV0LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0
YVkoKSk7CisjZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkRGF0YTsKK30KKworYm9vbCBFbmNv
ZGluZ1RyYWl0czxQbGF0Zm9ybVdoZWVsRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUm
IGVuY29kZWREYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiYgaW5wdXQp
Cit7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBv
c2l0aW9uWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBp
bnQsIHBvc2l0aW9uWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRE
YXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhf
S0VZKGVuY29kZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWSk7CisgICAgREVDT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSk7CisgICAgREVDT0RF
X1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBjdHJsS2V5KTsKKyAgICBE
RUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGFsdEtleSk7Cisg
ICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBtZXRhS2V5
KTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBk
ZWx0YVgpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxv
YXQsIGRlbHRhWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRh
LCBmbG9hdCwgd2hlZWxUaWNrc1gpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShl
bmNvZGVkRGF0YSwgZmxvYXQsIHdoZWVsVGlja3NZKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZERhdGEsIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5LCBncmFu
dWxhcml0eSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRD
b2NvYUFyZ3VtZW50cyBhcmd1bWVudHM7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZB
TFVFKGVuY29kZWREYXRhLCBib29sLCBkaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UsIGFyZ3Vt
ZW50cy5kaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhf
S0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgYm9vbCwgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cywgYXJndW1lbnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpOworICAgIERFQ09ERV9UWVBF
X1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2Us
IHBoYXNlLCBhcmd1bWVudHMucGhhc2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xW
QUxVRShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIG1vbWVudHVtUGhhc2Us
IGFyZ3VtZW50cy5tb21lbnR1bVBoYXNlKTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19M
VkFMVUUoZW5jb2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGFyZ3VtZW50cy5zY3JvbGxDb3Vu
dCk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBmbG9h
dCwgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCwgYXJndW1lbnRzLnVuYWNjZWxlcmF0ZWRT
Y3JvbGxpbmdEZWx0YVgpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNv
ZGVkRGF0YSwgZmxvYXQsIHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVksIGFyZ3VtZW50cy51
bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZKTsKKyNlbmRpZgorCisgICAgUGxhdGZvcm1XaGVl
bEV2ZW50IGV2ZW50KEludFBvaW50KHBvc2l0aW9uWCwgcG9zaXRpb25ZKSwgSW50UG9pbnQoZ2xv
YmFsUG9zaXRpb25YLCBnbG9iYWxQb3NpdGlvblkpLAorICAgICAgICBkZWx0YVgsIGRlbHRhWSwg
d2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZLCBncmFudWxhcml0eSwgc2hpZnRLZXksIGN0cmxLZXks
IGFsdEtleSwgbWV0YUtleSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpbnB1dCA9IHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Q29jb2E+KGV2ZW50LCBhcmd1bWVudHMp
OworI2Vsc2UKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50
PihldmVudCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRW5jb2RlZFZhbHVlIEVu
Y29kaW5nVHJhaXRzPFNlY3VyaXR5T3JpZ2luPjo6ZW5jb2RlVmFsdWUoUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBpbnB1dCkKIHsKICAgICByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmco
aW5wdXQtPnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Nl
cmlhbGl6YXRpb25NZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlv
bk1ldGhvZHMuaAppbmRleCA3YWZhMjMyYjYyNmRhMGRhNTA0NDE4MWFiZjUyZjk1MjdkOTcwNWVi
Li4zNzg5NWU1YTgyM2Q0NmQ4OWVlYWM4NTMyYWMwZGMyMzkxYTY1ZmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBGcmFtZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFVSTDsKIApAQCAtODEsNiArODIsMTMgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiB7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4mIHZhbHVlKTsKIH07CiAKK3RlbXBsYXRl
PD4gc3RydWN0IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudD4gewor
ICAgIHR5cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IERlY29kZWRUeXBlOworCisg
ICAgc3RhdGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bVdoZWVsRXZlbnQmIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVk
VmFsdWUmLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50PiYgdmFs
dWUpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6VVJM
PiB7CiAgICAgdHlwZWRlZiBXZWJDb3JlOjpVUkwgRGVjb2RlZFR5cGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKaW5kZXggMzgzYzA4YzFjZDYyM2Q0OGFiNGUz
ZTZhZTEwYmJhYjJkZWE5MzZkYi4uZmM4NDU3YTlmNDgyOTYyZGRlZmFiYTAyNWY2ZTM0YTg5NGFj
ZTRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKQEAgLTE2
MCw4ICsxNjAsMTkgQEAgYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUFjY2Vzc0tleUV2ZW50
KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5RXZlbnQKICAgICByZXR1cm4gbV9wYWdl
LmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhh
bmRsZUFjY2Vzc0tleShrZXlFdmVudCk7CiB9CiAKLWJvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgSW5wdXRT
b3VyY2UpCitib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIElucHV0U291cmNlIGlucHV0U291cmNlKQogewor
I2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERfSUdOT1JF
X0lOUFVUOworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVudD4gb3duZWRFdmVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Pih3aGVlbEV2ZW50KTsKKyAgICAgICAgYWN0
aXZlQ3Vyc29yKCkuYXBwZW5kSW5wdXQ8SGFuZGxlV2hlZWxFdmVudD4oc3RkOjptb3ZlKG93bmVk
RXZlbnQpKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7Cisj
ZW5kaWYKKwogICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKIH0KIApAQCAtMTc1LDEzICsxODYsMzEgQEAgdm9p
ZCBVc2VySW5wdXRCcmlkZ2U6OmZvY3VzU2V0Rm9jdXNlZChib29sIGZvY3VzZWQsIElucHV0U291
cmNlKQogICAgIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkKGZvY3VzZWQpOwog
fQogCi1ib29sIFVzZXJJbnB1dEJyaWRnZTo6c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0
aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNl
KQorYm9vbCBVc2VySW5wdXRCcmlkZ2U6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlv
biBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBJbnB1dFNvdXJjZSBp
bnB1dFNvdXJjZSkKIHsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBFQVJMWV9SRVRVUk5f
SUZfU0hPVUxEX0lHTk9SRV9JTlBVVDsKKworICAgIGlmIChhY3RpdmVDdXJzb3IoKS5pc0NhcHR1
cmluZygpKQorICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1dDxTY3JvbGxQYWdlPihk
aXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291
cmNlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rp
b24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKIH0KIAotYm9vbCBVc2VySW5wdXRCcmlkZ2U6Omxv
Z2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwg
U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQorYm9vbCBVc2VySW5w
dXRCcmlkZ2U6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
IGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlIGlu
cHV0U291cmNlKQogeworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9J
Rl9TSE9VTERfSUdOT1JFX0lOUFVUOworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVy
aW5nKCkpCisgICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVuZElucHV0PExvZ2ljYWxTY3JvbGxQ
YWdlPihkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlu
cHV0U291cmNlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJz
aXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9XZWJJbnB1dHMuanNvbgppbmRleCBlMjRmZDliYTQ4ODBjMDIzNTY5MmU3M2E2ODU0MTlh
NGM2OWM2MTllLi4xMGVjMGYyN2FlZDUxOWEyYTNmNDA2NjViYmY5OGJjNDdmZDViZjAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uCkBAIC02Myw2ICs2Myw2MCBAQAogICAgICAg
ICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXRm
b3JtV2hlZWxFdmVudCIsICJtb2RlIjogIk9XTkVEIiwKKyAgICAgICAgICAgICAgICAiaGVhZGVy
IjogInBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIgorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9ybVdoZWVsRXZlbnRHcmFu
dWxhcml0eSIsICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ4X3QiLAorICAgICAg
ICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBb
IlNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQiLCAiU2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQiXSwKKyAg
ICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIgor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJQ
bGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSIsICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVp
bnQ4X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAg
ICAgICJndWFyZCI6ICJQTEFURk9STShDT0NPQSkiLAorICAgICAgICAgICAgICAgICJ2YWx1ZXMi
OiBbCisgICAgICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUiLAor
ICAgICAgICAgICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiIsCisgICAg
ICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZVN0YXRpb25hcnkiLAorICAg
ICAgICAgICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDaGFuZ2VkIiwKKyAgICAg
ICAgICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQiLAorICAgICAgICAg
ICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VDYW5jZWxsZWQiLAorICAgICAgICAg
ICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VNYXlCZWdpbiIKKyAgICAgICAgICAg
ICAgICBdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICJuYW1lIjogIlNjcm9sbERpcmVjdGlvbiIsICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjog
InVpbnQ4X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAg
ICAgICAgICJ2YWx1ZXMiOiBbIlNjcm9sbFVwIiwgIlNjcm9sbERvd24iLCAiU2Nyb2xsTGVmdCIs
ICJTY3JvbGxSaWdodCJdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vU2Ny
b2xsVHlwZXMuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiU2Nyb2xsR3JhbnVsYXJpdHkiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFn
ZSI6ICJ1aW50OF90IiwKKyAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAg
ICAgICAgICAgICAidmFsdWVzIjogWworICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQnlMaW5l
IiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5UGFnZSIsCisgICAgICAgICAgICAgICAg
ICAgICJTY3JvbGxCeURvY3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5UGl4
ZWwiLAorICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQnlQcmVjaXNlUGl4ZWwiCisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRmb3JtL1Njcm9sbFR5
cGVzLmgiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogIlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24iLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFn
ZSI6ICJ1aW50OF90IiwKKyAgICAgICAgICAgICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAg
ICAgICAgICAgICAidmFsdWVzIjogWworICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQmxvY2tE
aXJlY3Rpb25CYWNrd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCbG9ja0RpcmVj
dGlvbkZvcndhcmQiLAorICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsSW5saW5lRGlyZWN0aW9u
QmFja3dhcmQiLAorICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsSW5saW5lRGlyZWN0aW9uRm9y
d2FyZCIKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxh
dGZvcm0vU2Nyb2xsVHlwZXMuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiU2VjdXJpdHlPcmlnaW4iLCAibW9kZSI6ICJTSEFSRUQiLAog
ICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGFnZS9TZWN1cml0eU9yaWdpbi5oIgogICAgICAg
ICAgICAgfSwKQEAgLTE0Niw2ICsyMDAsMTQgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgfSwK
ICAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiSGFuZGxlV2hlZWxFdmVudCIsCisgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBhIG1vdXNlIHdo
ZWVsIGV2ZW50LiIsCisgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBsYXRmb3JtRXZl
bnQiLCAidHlwZSI6ICJQbGF0Zm9ybVdoZWVsRXZlbnQiIH0KKyAgICAgICAgICAgIF0KKyAgICAg
ICAgfSwKKyAgICAgICAgewogICAgICAgICAgICAgIm5hbWUiOiAiSW5pdGlhbE5hdmlnYXRpb24i
LAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkluaXRpYXRlIHRoZSBpbml0aWFsIG1haW4g
ZnJhbWUgbmF2aWdhdGlvbi4iLAogICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLApA
QCAtMTU1LDYgKzIxNywyNCBAQAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidXJsIiwgInR5
cGUiOiAiVVJMIiB9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicmVmZXJyZXIiLCAidHlw
ZSI6ICJTdHJpbmciIH0KICAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAg
ICAgICAgICAgIm5hbWUiOiAiTG9naWNhbFNjcm9sbFBhZ2UiLAorICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQgYSBsb2dpY2FsIHNjcm9sbCBldmVudC4i
LAorICAgICAgICAgICAgInF1ZXVlIjogIkVWRU5UX0xPT1AiLAorICAgICAgICAgICAgIm1lbWJl
cnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkaXJlY3Rpb24iLCAidHlwZSI6ICJT
Y3JvbGxMb2dpY2FsRGlyZWN0aW9uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3Jh
bnVsYXJpdHkiLCAidHlwZSI6ICJTY3JvbGxHcmFudWxhcml0eSIgfQorICAgICAgICAgICAgXQor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJTY3JvbGxQYWdlIiwK
KyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgc2lnbmFsbGVkIGEgc2Ny
b2xsIGV2ZW50LiIsCisgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAg
ICAgICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpcmVjdGlvbiIs
ICJ0eXBlIjogIlNjcm9sbERpcmVjdGlvbiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImdyYW51bGFyaXR5IiwgInR5cGUiOiAiU2Nyb2xsR3JhbnVsYXJpdHkiIH0KKyAgICAgICAgICAg
IF0KICAgICAgICAgfQogICAgIF0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228237</attachid>
            <date>2014-03-31 20:47:09 -0700</date>
            <delta_ts>2014-04-01 17:38:27 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-129402-20140331204649.patch</filename>
            <type>text/plain</type>
            <size>37271</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM3MTQ4ZDc3NDA0YWRi
OTljNDc0MWRjNmJkYmIyNTA1ZTg5Yzc0ZC4uMzRlM2VjYjMzZmVhMDAxMWVlMmM3MWM2N2RkNmJm
NDYxM2YwYjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE0LTAzLTMxICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBjYXB0dXJlIGFuZCByZXBsYXkgd2hlZWwgZXZlbnRzIGFuZCBzY3JvbGwgY29tbWFuZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIHByb3Blcmx5
IGNhcHR1cmUgYW5kIHJlcGxheSB3aGVuIGFzeW5jaHJvbm91cyBzY3JvbGxpbmcgc3VwcG9ydCBp
cyBlbmFibGVkLAorICAgICAgICBhIGZsYWcgaXMgc2V0IG9uIHRoZSBTY3JvbGxpbmdUcmVlIHdo
ZW4gZW50ZXJpbmcgYW5kIGV4aXRpbmcgYSByZXBsYXkgc2Vzc2lvbi4KKyAgICAgICAgVGhlIGZs
YWcgdGVtcG9yYXJpbHkgZm9yY2VzIGRldGVybWluaXN0aWMgc2Nyb2xsaW5nIGJlaGF2aW9yIGJ5
IGFsd2F5cyBoYW5kbGluZworICAgICAgICB3aGVlbCBldmVudHMgb24gdGhlIG1haW4gdGhyZWFk
LgorCisgICAgICAgIEF1dG9tYXRlZCByZXBsYXkgcmVmdGVzdHMgZm9yIHNjcm9sbGluZyBhcmUg
bm90IGluY2x1ZGVkLCBiZWNhdXNlIHRoZXkgd2lsbCBiZQorICAgICAgICB0b28gZmxha3kgdW50
aWwgbW9yZSBub25kZXRlcm1pbmlzbSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIHJlc291cmNl
IGxvYWRpbmcsCisgICAgICAgIGluaXRpYWwgZm9jdXMvYWN0aXZlIHN0YXRlLCBhbmQgcGFyc2lu
ZyBhcmUga25vd24gYmxvY2tpbmcgaXNzdWVzLgorCisgICAgICAgIFRlc3Q6IE1hbnVhbFRlc3Rz
L2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZTo6U2Nyb2xsaW5nVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpzaG91
bGRIYW5kbGVXaGVlbEV2ZW50U3luY2hyb25vdXNseSk6IEFkZCBuZXcgY2FzZS4KKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnNldERldGVybWluaXN0aWNTY3JvbGxpbmdFbmFibGVk
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpkZXRlcm1pbmlzdGlj
U2Nyb2xsaW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDogQWRk
IGV4cGxpY2l0IGVudW0gc3RvcmFnZSB0eXBlcyB3aGVyZSBuZWVkZWQuCisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsVHlwZXMuaDogQWRkIGV4cGxpY2l0IGVudW0gc3RvcmFnZSB0eXBlcyB3aGVy
ZSBuZWVkZWQuCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c2V0Rm9yY2VEZXRlcm1pbmlzdGljU2V0dGlu
Z3MpOiBJZiBhc3luYyBzY3JvbGxpbmcKKyAgICAgICAgc3VwcG9ydCBpcyBhdmFpbGFibGUsIHRl
bGwgdGhlIHNjcm9sbGluZyB0cmVlIHRvIGJlaGF2ZSBkZXRlcm1pbmlzdGljYWxseS4KKworICAg
ICAgICAqIHJlcGxheS9SZXBsYXlJbnB1dERpc3BhdGNoTWV0aG9kcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIYW5kbGVXaGVlbEV2ZW50OjpkaXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TG9naWNhbFNjcm9sbFBhZ2U6OmRpc3BhdGNoKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxQYWdlOjpkaXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9TZXJp
YWxpemF0aW9uTWV0aG9kcy5jcHA6IEludHJvZHVjZSBtb3JlIHNwZWNpZmljIG1hY3JvcyBmb3Ig
dmFsdWVzCisgICAgICAgIGRlc2VyaWFsaXplZCB0byBhcmJpdHJhcmF5IGx2YWx1ZXMsIHNjYWxh
cnMsIFJlZlB0ciwgYW5kIHVuaXF1ZV9wdHIuIEZpeCBleGlzdGluZworICAgICAgICB1c2VzIG9m
IGRlY29kZSBtYWNyb3MuCisKKyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8Tm9uZGV0ZXJt
aW5pc3RpY0lucHV0QmFzZT46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAg
IChKU0M6OkVuY29kaW5nVHJhaXRzPEtleXByZXNzQ29tbWFuZD46OmVuY29kZVZhbHVlKTogRml4
IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtS2V5Ym9h
cmRFdmVudD46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVu
Y29kaW5nVHJhaXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKTogRml4IG1hY3Jv
IG5hbWUuCisgICAgICAgIChKU0M6OlBsYXRmb3JtV2hlZWxFdmVudENvY29hOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRDb2NvYSk6IEFkZGVkLiBFbmNhcHN1bGF0ZQorICAgICAgICBhbmQgaW5pdGlhbGl6
ZSBkYXRhIG1lbWJlcnMgc3BlY2lmaWMgdG8gUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIChK
U0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29kZVZhbHVlKTogQWRk
ZWQuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmRl
Y29kZVZhbHVlKTogQWRkZWQuCisgICAgICAgICogcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2Rz
Lmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHA6IEZpbGwgaW4gYnJpZGdl
IG1ldGhvZHMgdG8gY2FwdHVyZSBpbnB1dHMuCisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRC
cmlkZ2U6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJp
ZGdlOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlk
Z2U6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogcmVwbGF5L1dlYklucHV0
cy5qc29uOiBBZGQgaW5wdXRzIGFuZCBuZXcgZW51bSB0eXBlcy4KKwogMjAxNC0wMy0zMSAgWmFu
IERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
QWRkcmVzc2luZyByZXZpZXdpbmcgY29tbWVudHMgZm9yIHIxNjY0OTEgdGhhdCBJIGZvcmdvdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAppbmRl
eCBlNTczNzRlMmRhMTdmMmJlYTM4NjE4NzQzYTE0Y2E1ZDY0NjExMGUzLi42OWQwOWY4ZjAxOTYy
NzA2NTgyNzhhMDE4NTFjYjY3YzRkZjc4ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcApAQCAtMzgsNiArMzgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNjcm9sbGluZ1RyZWU6OlNjcm9sbGluZ1RyZWUoKQogICAgIDogbV9oYXNX
aGVlbEV2ZW50SGFuZGxlcnMoZmFsc2UpCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgLCBt
X2RldGVybWluaXN0aWNTY3JvbGxpbmdFbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX3J1
YmJlckJhbmRzQXRMZWZ0KHRydWUpCiAgICAgLCBtX3J1YmJlckJhbmRzQXRSaWdodCh0cnVlKQog
ICAgICwgbV9ydWJiZXJCYW5kc0F0VG9wKHRydWUpCkBAIC02Niw2ICs2OSwxMSBAQCBib29sIFNj
cm9sbGluZ1RyZWU6OnNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudAogICAgIGlmIChtX2hhc1doZWVsRXZlbnRIYW5kbGVycykKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBpZiAobV9kZXRl
cm1pbmlzdGljU2Nyb2xsaW5nRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICAKICAgICBib29sIHNob3VsZFNldExhdGNoID0gd2hlZWxFdmVudC5zaG91bGRDb25zaWRl
ckxhdGNoaW5nKCk7CiAgICAgCiAgICAgaWYgKGhhc0xhdGNoZWROb2RlKCkgJiYgIXNob3VsZFNl
dExhdGNoKQpAQCAtMzQ0LDYgKzM1MiwxOCBAQCBib29sIFNjcm9sbGluZ1RyZWU6OnNjcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoKQogICAgIHJldHVybiBtX3Njcm9sbGluZ1BlcmZv
cm1hbmNlTG9nZ2luZ0VuYWJsZWQ7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKK3ZvaWQg
U2Nyb2xsaW5nVHJlZTo6c2V0RGV0ZXJtaW5pc3RpY1Njcm9sbGluZ0VuYWJsZWQoYm9vbCBmbGFn
KQoreworICAgIG1fZGV0ZXJtaW5pc3RpY1Njcm9sbGluZ0VuYWJsZWQgPSBmbGFnOworfQorCiti
b29sIFNjcm9sbGluZ1RyZWU6OmRldGVybWluaXN0aWNTY3JvbGxpbmdFbmFibGVkKCkKK3sKKyAg
ICByZXR1cm4gbV9kZXRlcm1pbmlzdGljU2Nyb2xsaW5nRW5hYmxlZDsKK30KKyNlbmRpZgorCiBT
Y3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nVHJlZTo6bGF0Y2hlZE5vZGUoKQogewogICAgIE11dGV4
TG9ja2VyIGxvY2tlcihtX211dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuaAppbmRleCAzMjBmNTRlYTdjOWM3MmUwYjI0NGMyNWNjZmIxMjQyY2Zi
NDMxNmEwLi5mZmQ2NGY0NmNjODhkNGJhMGRkMGIyZjY5MDVlYWFmMjEwOTFjNTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCkBAIC02Miw3ICs2
Miw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgRXZlbnRSZXN1bHQgdHJ5VG9IYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAgICBib29sIHNob3VsZEhh
bmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwot
ICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0Q2hhbmdlZFZpYURlbGVnYXRlZFNjcm9s
bGluZyhTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlld3BvcnRS
ZWN0LCBkb3VibGUgc2NhbGUpOwogCiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc1J1YmJlckJhbmRp
bmcoYm9vbCk7CkBAIC05OSw2ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgYm9vbCBzY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCk7CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkK
KyAgICB2b2lkIHNldERldGVybWluaXN0aWNTY3JvbGxpbmdFbmFibGVkKGJvb2wpOworICAgIGJv
b2wgZGV0ZXJtaW5pc3RpY1Njcm9sbGluZ0VuYWJsZWQoKTsKKyNlbmRpZgorCiAgICAgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9k
ZS5nZXQoKTsgfQogCiAgICAgU2Nyb2xsaW5nTm9kZUlEIGxhdGNoZWROb2RlKCk7CkBAIC0xMjks
NiArMTM0LDkgQEAgcHJpdmF0ZToKICAgICBSZWdpb24gbV9ub25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bjsKICAgICBGbG9hdFBvaW50IG1fbWFpbkZyYW1lU2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBt
X2hhc1doZWVsRXZlbnRIYW5kbGVyczsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBib29s
IG1fZGV0ZXJtaW5pc3RpY1Njcm9sbGluZ0VuYWJsZWQ7CisjZW5kaWYKIAogICAgIE11dGV4IG1f
c3dpcGVTdGF0ZU11dGV4OwogICAgIGJvb2wgbV9ydWJiZXJCYW5kc0F0TGVmdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggYWEzMDhmOGVlZTg5
MjlkNjgyNzg3NWY4N2Q0MjFlYjYyODMxZDQ1NS4uMWYxMWZlZGZlZDQyYzE1ZTBhY2YwM2EzNGEz
Nzc2Mjc4NDBmNGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1XaGVlbEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKQEAgLTQ4LDEzICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8g
YW5kIHN5bnRoZXNpemVkIGluIG90aGVyIGNhc2VzIHdoZXJlIHBsYXRmb3JtcyBnZW5lcmF0ZSBs
aW5lLWJ5LWxpbmUgc2Nyb2xsaW5nIGV2ZW50cy4KICAgICAvLyBUaGUgU2Nyb2xsQnlQYWdlV2hl
ZWxFdmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgd2hlZWwgZXZlbnQgc2hvdWxkIHNjcm9sbCBhbiBl
bnRpcmUgcGFnZS4gIEluIHRoaXMgY2FzZSBXZWJDb3JlJ3MgYnVpbHQgaW4gcGFnaW5nIGJlaGF2
aW9yIGlzIHVzZWQgdG8gcGFnZQogICAgIC8vIHVwIGFuZCBkb3duICh5b3UgZ2V0IHRoZSBzYW1l
IGJlaGF2aW9yIGFzIGlmIHRoZSB1c2VyIHdhcyBjbGlja2luZyBpbiBhIHNjcm9sbGJhciB0cmFj
ayB0byBwYWdlIHVwIG9yIHBhZ2UgZG93bikuCi0gICAgZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRH
cmFudWxhcml0eSB7CisgICAgZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSA6IHVp
bnQ4X3QgewogICAgICAgICBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50LAogICAgICAgICBTY3JvbGxC
eVBpeGVsV2hlZWxFdmVudCwKICAgICB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW51
bSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSB7CisgICAgZW51bSBQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZSA6IHVpbnQ4X3QgewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgICAg
ICAgID0gMCwKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiAgICAgICA9IDEg
PDwgMCwKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwg
MSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IGM5OGQ3Nzg1YjNmMTI2
YzA1YTM4MDFjY2JmODI5ZjY3NmU4YzU3NjQuLjk5NGFiOWQ1ODkwNTQ1MTMzOWIyMGM3NGE3Njgy
NThiNTQ5MTE5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMzAs
MTQgKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGVudW0gU2Nyb2xsRGly
ZWN0aW9uIHsKKyAgICBlbnVtIFNjcm9sbERpcmVjdGlvbiA6IHVpbnQ4X3QgewogICAgICAgICBT
Y3JvbGxVcCwKICAgICAgICAgU2Nyb2xsRG93biwKICAgICAgICAgU2Nyb2xsTGVmdCwKICAgICAg
ICAgU2Nyb2xsUmlnaHQKICAgICB9OwogCi0gICAgZW51bSBTY3JvbGxMb2dpY2FsRGlyZWN0aW9u
IHsKKyAgICBlbnVtIFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gOiB1aW50OF90IHsKICAgICAgICAg
U2Nyb2xsQmxvY2tEaXJlY3Rpb25CYWNrd2FyZCwKICAgICAgICAgU2Nyb2xsQmxvY2tEaXJlY3Rp
b25Gb3J3YXJkLAogICAgICAgICBTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNrd2FyZCwKQEAgLTEw
Myw3ICsxMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBTY3JvbGxV
cDsKICAgICB9CiAKLSAgICBlbnVtIFNjcm9sbEdyYW51bGFyaXR5IHsKKyAgICBlbnVtIFNjcm9s
bEdyYW51bGFyaXR5IDogdWludDhfdCB7CiAgICAgICAgIFNjcm9sbEJ5TGluZSwKICAgICAgICAg
U2Nyb2xsQnlQYWdlLAogICAgICAgICBTY3JvbGxCeURvY3VtZW50LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGVkZmM5ZWIwYjQ2MzAzZDA2ZTNlOWIy
MWI3YTFjZDBjMzYxMTM1ZWYuLmMxODM5ODIzOGFhMjdlOWY4MmJjN2M3ZjIxYmY5OWI0NjZlZTQ3
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTUw
LDYgKzUwLDEyIEBACiAjaW5jbHVkZSA8cmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQor
I2luY2x1ZGUgIkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKyNpbmNsdWRlICJTY3JvbGxp
bmdUaHJlYWQuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBSZXBsYXlDb250cm9sbGVyOjpSZXBsYXlDb250cm9sbGVyKFBhZ2Um
IHBhZ2UpCkBAIC02NiwxNyArNzIsMjIgQEAgUmVwbGF5Q29udHJvbGxlcjo6UmVwbGF5Q29udHJv
bGxlcihQYWdlJiBwYWdlKQogewogfQogCi12b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldEZvcmNl
RGV0ZXJtaW5pc3RpY1NldHRpbmdzKGJvb2wgc2hvdWxkRm9yY2UpCit2b2lkIFJlcGxheUNvbnRy
b2xsZXI6OnNldEZvcmNlRGV0ZXJtaW5pc3RpY1NldHRpbmdzKGJvb2wgc2hvdWxkRm9yY2VEZXRl
cm1pbmlzdGljQmVoYXZpb3IpCiB7Ci0gICAgQVNTRVJUKHNob3VsZEZvcmNlIF4gKG1fc2Vzc2lv
blN0YXRlID09IFNlc3Npb25TdGF0ZTo6SW5hY3RpdmUpKTsKKyAgICBBU1NFUlQoc2hvdWxkRm9y
Y2VEZXRlcm1pbmlzdGljQmVoYXZpb3IgXiAobV9zZXNzaW9uU3RhdGUgPT0gU2Vzc2lvblN0YXRl
OjpJbmFjdGl2ZSkpOwogCi0gICAgaWYgKHNob3VsZEZvcmNlKSB7CisgICAgaWYgKHNob3VsZEZv
cmNlRGV0ZXJtaW5pc3RpY0JlaGF2aW9yKSB7CiAgICAgICAgIG1fc2F2ZWRTZXR0aW5ncy51c2Vz
UGFnZUNhY2hlID0gbV9wYWdlLnNldHRpbmdzKCkudXNlc1BhZ2VDYWNoZSgpOwogCiAgICAgICAg
IG1fcGFnZS5zZXR0aW5ncygpLnNldFVzZXNQYWdlQ2FjaGUoZmFsc2UpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fcGFnZS5zZXR0aW5ncygpLnNldFVzZXNQYWdlQ2FjaGUobV9zYXZlZFNldHRp
bmdzLnVzZXNQYWdlQ2FjaGUpOwogICAgIH0KKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CisgICAgaWYgKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gdG9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKG1fcGFnZS5zY3JvbGxpbmdDb29yZGluYXRv
cigpKSkKKyAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChiaW5kKCZTY3JvbGxpbmdU
cmVlOjpzZXREZXRlcm1pbmlzdGljU2Nyb2xsaW5nRW5hYmxlZCwgc2Nyb2xsaW5nQ29vcmRpbmF0
b3ItPnNjcm9sbGluZ1RyZWUoKSwgc2hvdWxkRm9yY2VEZXRlcm1pbmlzdGljQmVoYXZpb3IpKTsK
KyNlbmRpZgogfQogCiB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldFNlc3Npb25TdGF0ZShTZXNz
aW9uU3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5
SW5wdXREaXNwYXRjaE1ldGhvZHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlu
cHV0RGlzcGF0Y2hNZXRob2RzLmNwcAppbmRleCAxMDQ1ZTY1YmY4MDZjMmViZGI2ZjBhYzAyOTIz
ZmE2NjAxN2U2NzNhLi5mYmE2N2RjYzkxNjIyZDc2ZDc0NzNlMTFhNGQ0ZWE2NGM5NGYzNjU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1ldGhv
ZHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dERpc3BhdGNoTWV0
aG9kcy5jcHAKQEAgLTc3LDYgKzc3LDIxIEBAIHZvaWQgSGFuZGxlTW91c2VSZWxlYXNlOjpkaXNw
YXRjaChSZXBsYXlDb250cm9sbGVyJiBjb250cm9sbGVyKQogICAgIGNvbnRyb2xsZXIucGFnZSgp
LnVzZXJJbnB1dEJyaWRnZSgpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtRXZlbnQo
KSwgSW5wdXRTb3VyY2U6OlN5bnRoZXRpYyk7CiB9CiAKK3ZvaWQgSGFuZGxlV2hlZWxFdmVudDo6
ZGlzcGF0Y2goUmVwbGF5Q29udHJvbGxlciYgY29udHJvbGxlcikKK3sKKyAgICBjb250cm9sbGVy
LnBhZ2UoKS51c2VySW5wdXRCcmlkZ2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQo
KSwgSW5wdXRTb3VyY2U6OlN5bnRoZXRpYyk7Cit9CisKK3ZvaWQgTG9naWNhbFNjcm9sbFBhZ2U6
OmRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxl
ci5wYWdlKCkudXNlcklucHV0QnJpZGdlKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVj
dGlvbigpLCBncmFudWxhcml0eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30KKwordm9p
ZCBTY3JvbGxQYWdlOjpkaXNwYXRjaChSZXBsYXlDb250cm9sbGVyJiBjb250cm9sbGVyKQorewor
ICAgIGNvbnRyb2xsZXIucGFnZSgpLnVzZXJJbnB1dEJyaWRnZSgpLnNjcm9sbFJlY3Vyc2l2ZWx5
KGRpcmVjdGlvbigpLCBncmFudWxhcml0eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAppbmRl
eCA1Y2I5ZWYxNmEzZDA2NzM1OTcwYTI5NmFmMzQzY2Y5ZTQ3NDhkZjZmLi40MGU0YTAwM2RkYTA1
NDIzZjIxZGM3MmQwZmIwOWI5NmZiMWEwYjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9TZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJB
bGxSZXBsYXlJbnB1dHMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJSZXBsYXlJbnB1dFR5cGVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJVUkwuaCIKQEAgLTQ0LDMxICs0NSw1NSBAQCB1c2luZyBXZWJD
b3JlOjpNb3VzZUJ1dHRvbjsKIHVzaW5nIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ7CiB1c2luZyBX
ZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybU1v
dXNlRXZlbnQ7Cit1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ7Cit1c2luZyBXZWJD
b3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eTsKIHVzaW5nIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOwogdXNpbmcgV2ViQ29yZTo6VVJMOwogdXNpbmcgV2ViQ29yZTo6aW5wdXRUeXBl
czsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQordXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2U7CisjZW5kaWYKKwogI2RlZmluZSBJTVBPUlRfRlJPTV9XRUJDT1JFX05BTUVTUEFD
RShuYW1lKSBcCiB1c2luZyBXZWJDb3JlOjpuYW1lOyBcCiAKIFdFQl9SRVBMQVlfSU5QVVRfTkFN
RVNfRk9SX0VBQ0goSU1QT1JUX0ZST01fV0VCQ09SRV9OQU1FU1BBQ0UpCiAjdW5kZWYgSU1QT1JU
X0ZST01fV0VCQ09SRV9OQU1FU1BBQ0UKIAotI2RlZmluZSBFTkNPREVfU0NBTEFSX1RZUEVfV0lU
SF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSkgXAorI2RlZmluZSBFTkNP
REVfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKSBcCiAg
ICAgX2VuY29kZWRWYWx1ZS5wdXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF92YWx1ZSkK
IAotI2RlZmluZSBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5
cGUsIF9rZXkpIFwKLSAgICBfdHlwZSBfa2V5OyBcCi0gICAgaWYgKCFfZW5jb2RlZFZhbHVlLmdl
dDxfdHlwZT4oQVNDSUlMaXRlcmFsKCNfa2V5KSwgX2tleSkpIFwKKyNkZWZpbmUgRU5DT0RFX09Q
VElPTkFMX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSwg
Y29uZGl0aW9uKSBcCisgICAgaWYgKGNvbmRpdGlvbikgXAorICAgICAgICBFTkNPREVfVFlQRV9X
SVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKQorCisjZGVmaW5lIERF
Q09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwg
X2x2YWx1ZSkgXAorICAgIGlmICghX2VuY29kZWRWYWx1ZS5nZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJh
bCgjX2tleSksIF9sdmFsdWUpKSBcCiAgICAgICAgIHJldHVybiBmYWxzZQogCi0jZGVmaW5lIEVO
Q09ERV9PUFRJT05BTF9TQ0FMQVJfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwg
X2tleSwgX3ZhbHVlLCBjb25kaXRpb24pIFwKLSAgICBpZiAoY29uZGl0aW9uKSBcCi0gICAgICAg
IF9lbmNvZGVkVmFsdWUucHV0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfdmFsdWUpCisj
ZGVmaW5lIERFQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZh
bHVlLCBfdHlwZSwgX2tleSwgX2x2YWx1ZSkgXAorICAgIGJvb2wgX2tleSAjIyBXYXNEZWNvZGVk
ID0gX2VuY29kZWRWYWx1ZS5nZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9sdmFsdWUp
CisKKyNkZWZpbmUgREVDT0RFX1JFRkNPVU5URURfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVl
LCBfdHlwZSwgX2tleSkgXAorICAgIFJlZlB0cjxfdHlwZT4gX2tleTsgXAorICAgIERFQ09ERV9U
WVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkK
KworI2RlZmluZSBERUNPREVfT1dORURfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlw
ZSwgX2tleSkgXAorICAgIHN0ZDo6dW5pcXVlX3B0cjxfdHlwZT4gX2tleTsgXAorICAgIERFQ09E
RV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tl
eSkKKworI2RlZmluZSBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwg
X3R5cGUsIF9rZXkpIFwKKyAgICBfdHlwZSBfa2V5OyBcCisgICAgREVDT0RFX1RZUEVfV0lUSF9L
RVlfVE9fTFZBTFVFKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5LCBfa2V5KQogCiAjZGVmaW5l
IERFQ09ERV9PUFRJT05BTF9TQ0FMQVJfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlw
ZSwgX2tleSkgXAogICAgIF90eXBlIF9rZXk7IFwKLSAgICBib29sIF9rZXkgIyMgV2FzRGVjb2Rl
ZCA9IF9lbmNvZGVkVmFsdWUuZ2V0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfa2V5KQor
ICAgIERFQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVl
LCBfdHlwZSwgX2tleSwgX2tleSkKKworI2RlZmluZSBERUNPREVfT1BUSU9OQUxfUkVGQ09VTlRF
RF9UWVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5KSBcCisgICAgUmVmUHRy
PF90eXBlPiBfa2V5OyBcCisgICAgREVDT0RFX09QVElPTkFMX1RZUEVfV0lUSF9LRVlfVE9fTFZB
TFVFKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5LCBfa2V5KQogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtNzcsNyArMTAyLDcgQEAgRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPE5vbmRldGVy
bWluaXN0aWNJbnB1dEJhc2U+OjplbmNvZGVWYWx1ZShjb25zdCBOb25kZXQKICAgICBFbmNvZGVk
VmFsdWUgZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUgPSBpbnB1dC50eXBlKCk7CiAKLSAgICBFTkNPREVfU0NB
TEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHR5cGUsIHR5cGUuc3RyaW5n
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0eXBl
LCB0eXBlLnN0cmluZygpKTsKIAogI2RlZmluZSBFTkNPREVfSUZfVFlQRV9UQUdfTUFUQ0hFUyhu
YW1lKSBcCiAgICAgaWYgKHR5cGUgPT0gaW5wdXRUeXBlcygpLm5hbWUpIHsgXApAQCAtMTM0LDgg
KzE1OSw4IEBAIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxLZXlwcmVzc0NvbW1hbmQ+Ojpl
bmNvZGVWYWx1ZShjb25zdCBLZXlwcmVzc0NvbW1hbmQmCiB7CiAgICAgRW5jb2RlZFZhbHVlIGVu
Y29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CiAKLSAgICBFTkNPREVf
U0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIGNvbW1hbmROYW1lLCBj
b21tYW5kLmNvbW1hbmROYW1lKTsKLSAgICBFTkNPREVfT1BUSU9OQUxfU0NBTEFSX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRleHQsIGNvbW1hbmQudGV4dCwgIWNvbW1hbmQu
dGV4dC5pc0VtcHR5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
U3RyaW5nLCBjb21tYW5kTmFtZSwgY29tbWFuZC5jb21tYW5kTmFtZSk7CisgICAgRU5DT0RFX09Q
VElPTkFMX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRleHQsIGNvbW1hbmQu
dGV4dCwgIWNvbW1hbmQudGV4dC5pc0VtcHR5KCkpOwogCiAgICAgcmV0dXJuIGVuY29kZWRWYWx1
ZTsKIH0KQEAgLTE2NCwyMSArMTg5LDIxIEBAIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ+OjplbmNvZGVWYWx1ZShjb25zdCBQbGF0Zm9ybUtlCiB7CiAg
ICAgRW5jb2RlZFZhbHVlIGVuY29kZWRWYWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0
KCk7CiAKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBkb3Vi
bGUsIHRpbWVzdGFtcCwgaW5wdXQudGltZXN0YW1wKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6OlR5cGUsIHR5cGUsIGlucHV0
LnR5cGUoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
UGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzLCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PFBsYXRmb3Jt
RXZlbnQ6Ok1vZGlmaWVycz4oaW5wdXQubW9kaWZpZXJzKCkpKTsKLSAgICBFTkNPREVfU0NBTEFS
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRleHQsIGlucHV0LnRleHQoKSk7
Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB1
bm1vZGlmaWVkVGV4dCwgaW5wdXQudW5tb2RpZmllZFRleHQoKSk7Ci0gICAgRU5DT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCBrZXlJZGVudGlmaWVyLCBpbnB1
dC5rZXlJZGVudGlmaWVyKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkVmFsdWUsIGludCwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnB1dC53aW5kb3dzVmlydHVh
bEtleUNvZGUoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1
ZSwgaW50LCBuYXRpdmVWaXJ0dWFsS2V5Q29kZSwgaW5wdXQubmF0aXZlVmlydHVhbEtleUNvZGUo
KSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBt
YWNDaGFyQ29kZSwgaW5wdXQubWFjQ2hhckNvZGUoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBF
X1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgYXV0b1JlcGVhdCwgaW5wdXQuaXNBdXRvUmVw
ZWF0KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJv
b2wsIGtleXBhZCwgaW5wdXQuaXNLZXlwYWQoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgc3lzdGVtS2V5LCBpbnB1dC5pc1N5c3RlbUtleSgp
KTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGRvdWJsZSwgdGltZXN0
YW1wLCBpbnB1dC50aW1lc3RhbXAoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2Rl
ZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBlKCkpOworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJz
LCBtb2RpZmllcnMsIHN0YXRpY19jYXN0PFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycz4oaW5wdXQu
bW9kaWZpZXJzKCkpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0
cmluZywgdGV4dCwgaW5wdXQudGV4dCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkVmFsdWUsIFN0cmluZywgdW5tb2RpZmllZFRleHQsIGlucHV0LnVubW9kaWZpZWRUZXh0KCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCBrZXlJZGVu
dGlmaWVyLCBpbnB1dC5rZXlJZGVudGlmaWVyKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgaW50LCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGlucHV0LndpbmRvd3NW
aXJ0dWFsS2V5Q29kZSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGludCwgbmF0aXZlVmlydHVhbEtleUNvZGUsIGlucHV0Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBtYWNDaGFyQ29k
ZSwgaW5wdXQubWFjQ2hhckNvZGUoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2Rl
ZFZhbHVlLCBib29sLCBhdXRvUmVwZWF0LCBpbnB1dC5pc0F1dG9SZXBlYXQoKSk7CisgICAgRU5D
T0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBrZXlwYWQsIGlucHV0LmlzS2V5
cGFkKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgc3lz
dGVtS2V5LCBpbnB1dC5pc1N5c3RlbUtleSgpKTsKICNpZiBVU0UoQVBQS0lUKQotICAgIEVOQ09E
RV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGhhbmRsZWRCeUlucHV0
TWV0aG9kLCBpbnB1dC5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKTsKLSAgICBFTkNPREVfU0NBTEFS
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBWZWN0b3I8S2V5cHJlc3NDb21tYW5kPiwgY29t
bWFuZHMsIGlucHV0LmNvbW1hbmRzKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29k
ZWRWYWx1ZSwgYm9vbCwgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIGlucHV0LmhhbmRsZWRCeUlucHV0
TWV0aG9kKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgVmVjdG9y
PEtleXByZXNzQ29tbWFuZD4sIGNvbW1hbmRzLCBpbnB1dC5jb21tYW5kcygpKTsKICNlbmRpZgog
ICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CiB9CkBAIC0yMTUsMTggKzI0MCwxOCBAQCBFbmNvZGVk
VmFsdWUgRW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1Nb3VzZUV2ZW50Pjo6ZW5jb2RlVmFsdWUoY29u
c3QgUGxhdGZvcm1Nb3VzZQogewogICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBFbmNv
ZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgaW50LCBwb3NpdGlvblgsIGlucHV0LnBvc2l0aW9uKCkueCgpKTsK
LSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIHBvc2l0
aW9uWSwgaW5wdXQucG9zaXRpb24oKS55KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRI
X0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFsUG9zaXRpb25YLCBpbnB1dC5nbG9iYWxQb3Np
dGlvbigpLngoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1
ZSwgaW50LCBnbG9iYWxQb3NpdGlvblksIGlucHV0Lmdsb2JhbFBvc2l0aW9uKCkueSgpKTsKLSAg
ICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBNb3VzZUJ1dHRvbiwg
YnV0dG9uLCBpbnB1dC5idXR0b24oKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgUGxhdGZvcm1FdmVudDo6VHlwZSwgdHlwZSwgaW5wdXQudHlwZSgpKTsK
LSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIGNsaWNr
Q291bnQsIGlucHV0LmNsaWNrQ291bnQoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgc2hpZnRLZXksIGlucHV0LnNoaWZ0S2V5KCkpOwotICAg
IEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGN0cmxLZXks
IGlucHV0LmN0cmxLZXkoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29k
ZWRWYWx1ZSwgYm9vbCwgYWx0S2V5LCBpbnB1dC5hbHRLZXkoKSk7Ci0gICAgRU5DT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgbWV0YUtleSwgaW5wdXQubWV0YUtl
eSgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQs
IHRpbWVzdGFtcCwgaW5wdXQudGltZXN0YW1wKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgaW50LCBwb3NpdGlvblgsIGlucHV0LnBvc2l0aW9uKCkueCgpKTsKKyAg
ICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgcG9zaXRpb25ZLCBpbnB1
dC5wb3NpdGlvbigpLnkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVl
LCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54KCkpOworICAg
IEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBnbG9iYWxQb3NpdGlvblks
IGlucHV0Lmdsb2JhbFBvc2l0aW9uKCkueSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShl
bmNvZGVkVmFsdWUsIE1vdXNlQnV0dG9uLCBidXR0b24sIGlucHV0LmJ1dHRvbigpKTsKKyAgICBF
TkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6OlR5cGUsIHR5
cGUsIGlucHV0LnR5cGUoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVl
LCBpbnQsIGNsaWNrQ291bnQsIGlucHV0LmNsaWNrQ291bnQoKSk7CisgICAgRU5DT0RFX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBzaGlmdEtleSwgaW5wdXQuc2hpZnRLZXkoKSk7
CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBjdHJsS2V5LCBp
bnB1dC5jdHJsS2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
Ym9vbCwgYWx0S2V5LCBpbnB1dC5hbHRLZXkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVko
ZW5jb2RlZFZhbHVlLCBib29sLCBtZXRhS2V5LCBpbnB1dC5tZXRhS2V5KCkpOworICAgIEVOQ09E
RV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCB0aW1lc3RhbXAsIGlucHV0LnRpbWVz
dGFtcCgpKTsKIAogICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CiB9CkBAIC0yNTMsNiArMjc4LDEw
MiBAQCBib29sIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmRlY29kZVZhbHVl
KEVuY29kZWRWYWx1ZSYgZW5jb2RlZFZhbHVlLAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYg
UExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgUGxhdGZvcm1XaGVlbEV2ZW50Q29jb2FBcmd1bWVudHMg
eworICAgIGJvb2wgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOworICAgIGJvb2wgaGFzUHJl
Y2lzZVNjcm9sbGluZ0RlbHRhczsKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZTsK
KyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBtb21lbnR1bVBoYXNlOworICAgIGludCBzY3Jv
bGxDb3VudDsKKyAgICBmbG9hdCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYOworICAgIGZs
b2F0IHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVk7Cit9OworCitjbGFzcyBQbGF0Zm9ybVdo
ZWVsRXZlbnRDb2NvYSA6IHB1YmxpYyBQbGF0Zm9ybVdoZWVsRXZlbnQgeworcHVibGljOgorICAg
IFBsYXRmb3JtV2hlZWxFdmVudENvY29hKFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFBsYXRm
b3JtV2hlZWxFdmVudENvY29hQXJndW1lbnRzJiBhcmd1bWVudHMpCisgICAgICAgIDogUGxhdGZv
cm1XaGVlbEV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgbV9kaXJlY3Rpb25JbnZlcnRlZEZy
b21EZXZpY2UgPSBhcmd1bWVudHMuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlOworICAgICAg
ICBtX2hhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSBhcmd1bWVudHMuaGFzUHJlY2lzZVNjcm9s
bGluZ0RlbHRhczsKKyAgICAgICAgbV9waGFzZSA9IGFyZ3VtZW50cy5waGFzZTsKKyAgICAgICAg
bV9tb21lbnR1bVBoYXNlID0gYXJndW1lbnRzLm1vbWVudHVtUGhhc2U7CisgICAgICAgIG1fc2Ny
b2xsQ291bnQgPSBhcmd1bWVudHMuc2Nyb2xsQ291bnQ7CisgICAgICAgIG1fdW5hY2NlbGVyYXRl
ZFNjcm9sbGluZ0RlbHRhWCA9IGFyZ3VtZW50cy51bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFY
OworICAgICAgICBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVkgPSBhcmd1bWVudHMudW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWTsKKyAgICB9Cit9OworI2VuZGlmIC8vIFBMQVRGT1JN
KENPQ09BKQorCitFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1XaGVlbEV2ZW50
Pjo6ZW5jb2RlVmFsdWUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBpbnB1dCkKK3sKKyAgICBF
bmNvZGVkVmFsdWUgZW5jb2RlZERhdGEgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwor
CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGludCwgcG9zaXRpb25YLCBp
bnB1dC5wb3NpdGlvbigpLngoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERh
dGEsIGludCwgcG9zaXRpb25ZLCBpbnB1dC5wb3NpdGlvbigpLnkoKSk7CisgICAgRU5DT0RFX1RZ
UEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGludCwgZ2xvYmFsUG9zaXRpb25YLCBpbnB1dC5nbG9i
YWxQb3NpdGlvbigpLngoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEs
IGludCwgZ2xvYmFsUG9zaXRpb25ZLCBpbnB1dC5nbG9iYWxQb3NpdGlvbigpLnkoKSk7CisgICAg
RU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIHNoaWZ0S2V5LCBpbnB1dC5z
aGlmdEtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgYm9vbCwg
Y3RybEtleSwgaW5wdXQuY3RybEtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkRGF0YSwgYm9vbCwgYWx0S2V5LCBpbnB1dC5hbHRLZXkoKSk7CisgICAgRU5DT0RFX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIG1ldGFLZXksIGlucHV0Lm1ldGFLZXkoKSk7Cisg
ICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVgsIGlucHV0
LmRlbHRhWCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQs
IGRlbHRhWSwgaW5wdXQuZGVsdGFZKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29k
ZWREYXRhLCBmbG9hdCwgd2hlZWxUaWNrc1gsIGlucHV0LndoZWVsVGlja3NYKCkpOworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgd2hlZWxUaWNrc1ksIGlucHV0
LndoZWVsVGlja3NZKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBQ
bGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSwgZ3JhbnVsYXJpdHksIHN0YXRpY19jYXN0PFBs
YXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5PihpbnB1dC5ncmFudWxhcml0eSgpKSk7CisKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwg
Ym9vbCwgZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlLCBpbnB1dC5kaXJlY3Rpb25JbnZlcnRl
ZEZyb21EZXZpY2UoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJv
b2wsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIGlucHV0Lmhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlLCBwaGFzZSwgc3RhdGljX2Nhc3Q8UGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2U+KGlucHV0LnBoYXNlKCkpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0
YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIG1vbWVudHVtUGhhc2UsIHN0YXRpY19jYXN0PFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlPihpbnB1dC5tb21lbnR1bVBoYXNlKCkpKTsKKyAgICBFTkNP
REVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgaW50LCBzY3JvbGxDb3VudCwgaW5wdXQuc2Ny
b2xsQ291bnQoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0
LCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYLCBpbnB1dC51bmFjY2VsZXJhdGVkU2Nyb2xs
aW5nRGVsdGFYKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9h
dCwgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWSwgaW5wdXQudW5hY2NlbGVyYXRlZFNjcm9s
bGluZ0RlbHRhWSgpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVuY29kZWREYXRhOworfQorCiti
b29sIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmRlY29kZVZhbHVlKEVuY29k
ZWRWYWx1ZSYgZW5jb2RlZERhdGEsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVdoZWVsRXZlbnQ+
JiBpbnB1dCkKK3sKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEs
IGludCwgcG9zaXRpb25YKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2Rl
ZERhdGEsIGludCwgcG9zaXRpb25ZKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVko
ZW5jb2RlZERhdGEsIGludCwgZ2xvYmFsUG9zaXRpb25YKTsKKyAgICBERUNPREVfU0NBTEFSX1RZ
UEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGludCwgZ2xvYmFsUG9zaXRpb25ZKTsKKyAgICBERUNP
REVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIHNoaWZ0S2V5KTsKKyAg
ICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGN0cmxLZXkp
OworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgYm9vbCwgYWx0
S2V5KTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2ws
IG1ldGFLZXkpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwg
ZmxvYXQsIGRlbHRhWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRE
YXRhLCBmbG9hdCwgZGVsdGFZKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5j
b2RlZERhdGEsIGZsb2F0LCB3aGVlbFRpY2tzWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgd2hlZWxUaWNrc1kpOworICAgIERFQ09ERV9TQ0FM
QVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJp
dHksIGdyYW51bGFyaXR5KTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBsYXRmb3JtV2hl
ZWxFdmVudENvY29hQXJndW1lbnRzIGFyZ3VtZW50czsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tF
WV9UT19MVkFMVUUoZW5jb2RlZERhdGEsIGJvb2wsIGRpcmVjdGlvbkludmVydGVkRnJvbURldmlj
ZSwgYXJndW1lbnRzLmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZSk7CisgICAgREVDT0RFX1RZ
UEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBib29sLCBoYXNQcmVjaXNlU2Nyb2xs
aW5nRGVsdGFzLCBhcmd1bWVudHMuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyk7CisgICAgREVD
T0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZSwgcGhhc2UsIGFyZ3VtZW50cy5waGFzZSk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9L
RVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSwgbW9tZW50
dW1QaGFzZSwgYXJndW1lbnRzLm1vbWVudHVtUGhhc2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhf
S0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgaW50LCBzY3JvbGxDb3VudCwgYXJndW1lbnRzLnNj
cm9sbENvdW50KTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5jb2RlZERh
dGEsIGZsb2F0LCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFYLCBhcmd1bWVudHMudW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhWCk7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZB
TFVFKGVuY29kZWREYXRhLCBmbG9hdCwgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWSwgYXJn
dW1lbnRzLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVkpOworI2VuZGlmCisKKyAgICBQbGF0
Zm9ybVdoZWVsRXZlbnQgZXZlbnQoSW50UG9pbnQocG9zaXRpb25YLCBwb3NpdGlvblkpLCBJbnRQ
b2ludChnbG9iYWxQb3NpdGlvblgsIGdsb2JhbFBvc2l0aW9uWSksCisgICAgICAgIGRlbHRhWCwg
ZGVsdGFZLCB3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1ksIGdyYW51bGFyaXR5LCBzaGlmdEtleSwg
Y3RybEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlu
cHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdoZWVsRXZlbnRDb2NvYT4oZXZlbnQsIGFy
Z3VtZW50cyk7CisjZWxzZQorICAgIGlucHV0ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdo
ZWVsRXZlbnQ+KGV2ZW50KTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCiBFbmNvZGVk
VmFsdWUgRW5jb2RpbmdUcmFpdHM8U2VjdXJpdHlPcmlnaW4+OjplbmNvZGVWYWx1ZShSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IGlucHV0KQogewogICAgIHJldHVybiBFbmNvZGVkVmFsdWU6OmNyZWF0
ZVN0cmluZyhpbnB1dC0+dG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJp
YWxpemF0aW9uTWV0aG9kcy5oCmluZGV4IDdhZmEyMzJiNjI2ZGEwZGE1MDQ0MTgxYWJmNTJmOTUy
N2Q5NzA1ZWIuLjM3ODk1ZTVhODIzZDQ2ZDg5ZWVhYzg1MzJhYzBkYzIzOTFhNjVmYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5oCkBAIC00MCw2ICs0
MCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKK2NsYXNzIFBsYXRmb3JtV2hlZWxFdmVu
dDsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgVVJMOwogCkBAIC04MSw2ICs4MiwxMyBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybU1vdXNl
RXZlbnQ+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiYgdmFsdWUpOwogfTsKIAor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2
ZW50PiB7CisgICAgdHlwZWRlZiBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQgRGVjb2RlZFR5
cGU7CisKKyAgICBzdGF0aWMgRW5jb2RlZFZhbHVlIGVuY29kZVZhbHVlKGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtV2hlZWxFdmVudCYgdmFsdWUpOworICAgIHN0YXRpYyBib29sIGRlY29kZVZhbHVl
KEVuY29kZWRWYWx1ZSYsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQ+JiB2YWx1ZSk7Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbmNvZGluZ1RyYWl0czxXZWJD
b3JlOjpVUkw+IHsKICAgICB0eXBlZGVmIFdlYkNvcmU6OlVSTCBEZWNvZGVkVHlwZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcAppbmRleCAzODNjMDhjMWNkNjIz
ZDQ4YWI0ZTNlNmFlMTBiYmFiMmRlYTkzNmRiLi5mYzg0NTdhOWY0ODI5NjJkZGVmYWJhMDI1ZjZl
MzRhODk0YWNlNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0
QnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvVXNlcklucHV0QnJpZGdlLmNw
cApAQCAtMTYwLDggKzE2MCwxOSBAQCBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlQWNjZXNz
S2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBrZXlFdmVudAogICAgIHJldHVy
biBtX3BhZ2UuZm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZXZlbnRIYW5k
bGVyKCkuaGFuZGxlQWNjZXNzS2V5KGtleUV2ZW50KTsKIH0KIAotYm9vbCBVc2VySW5wdXRCcmlk
Z2U6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50
LCBJbnB1dFNvdXJjZSkKK2Jvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgSW5wdXRTb3VyY2UgaW5wdXRTb3Vy
Y2UpCiB7CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgRUFSTFlfUkVUVVJOX0lGX1NIT1VM
RF9JR05PUkVfSU5QVVQ7CisKKyAgICBpZiAoYWN0aXZlQ3Vyc29yKCkuaXNDYXB0dXJpbmcoKSkg
eworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiBvd25lZEV2ZW50
ID0gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVdoZWVsRXZlbnQ+KHdoZWVsRXZlbnQpOworICAg
ICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1dDxIYW5kbGVXaGVlbEV2ZW50PihzdGQ6Om1v
dmUob3duZWRFdmVudCkpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291
cmNlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwogfQogCkBAIC0xNzUsMTMgKzE4Niwz
MSBAQCB2b2lkIFVzZXJJbnB1dEJyaWRnZTo6Zm9jdXNTZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCwg
SW5wdXRTb3VyY2UpCiAgICAgbV9wYWdlLmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWQoZm9j
dXNlZCk7CiB9CiAKLWJvb2wgVXNlcklucHV0QnJpZGdlOjpzY3JvbGxSZWN1cnNpdmVseShTY3Jv
bGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgSW5w
dXRTb3VyY2UpCitib29sIFVzZXJJbnB1dEJyaWRnZTo6c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xs
RGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0
U291cmNlIGlucHV0U291cmNlKQogeworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZ
X1JFVFVSTl9JRl9TSE9VTERfSUdOT1JFX0lOUFVUOworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigp
LmlzQ2FwdHVyaW5nKCkpCisgICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVuZElucHV0PFNjcm9s
bFBhZ2U+KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
aW5wdXRTb3VyY2UpOworI2VuZGlmCisKICAgICByZXR1cm4gbV9wYWdlLmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnNjcm9sbFJlY3Vyc2l2ZWx5
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG51bGxwdHIpOwogfQogCi1ib29sIFVzZXJJbnB1dEJy
aWRnZTo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGly
ZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgSW5wdXRTb3VyY2UpCitib29s
IFVzZXJJbnB1dEJyaWRnZTo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxE
aXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgSW5wdXRT
b3VyY2UgaW5wdXRTb3VyY2UpCiB7CisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgRUFSTFlf
UkVUVVJOX0lGX1NIT1VMRF9JR05PUkVfSU5QVVQ7CisKKyAgICBpZiAoYWN0aXZlQ3Vyc29yKCku
aXNDYXB0dXJpbmcoKSkKKyAgICAgICAgYWN0aXZlQ3Vyc29yKCkuYXBwZW5kSW5wdXQ8TG9naWNh
bFNjcm9sbFBhZ2U+KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oaW5wdXRTb3VyY2UpOworI2VuZGlmCisKICAgICByZXR1cm4gbV9wYWdlLmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmxvZ2ljYWxTY3Jv
bGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBudWxscHRyKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1dlYklucHV0cy5qc29uCmluZGV4IGUyNGZkOWJhNDg4MGMwMjM1NjkyZTcz
YTY4NTQxOWE0YzY5YzYxOWUuLjEwZWMwZjI3YWVkNTE5YTJhM2Y0MDY2NWJiZjk4YmM0N2ZkNWJm
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KQEAgLTYzLDYgKzYzLDYwIEBA
CiAgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQu
aCIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAiUGxhdGZvcm1XaGVlbEV2ZW50IiwgIm1vZGUiOiAiT1dORUQiLAorICAgICAgICAgICAgICAg
ICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgiCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXRmb3JtV2hlZWxF
dmVudEdyYW51bGFyaXR5IiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAidWludDhfdCIs
CisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAgICAgICAgICAgInZh
bHVlcyI6IFsiU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCIsICJTY3JvbGxCeVBpeGVsV2hlZWxFdmVu
dCJdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJu
YW1lIjogIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3Jh
Z2UiOiAidWludDhfdCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAg
ICAgICAgICAgICAgImd1YXJkIjogIlBMQVRGT1JNKENPQ09BKSIsCisgICAgICAgICAgICAgICAg
InZhbHVlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
Tm9uZSIsCisgICAgICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2Fu
IiwKKyAgICAgICAgICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFy
eSIsCisgICAgICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQi
LAorICAgICAgICAgICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCIsCisg
ICAgICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCIsCisg
ICAgICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU1heUJlZ2luIgorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiU2Nyb2xsRGlyZWN0aW9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0
b3JhZ2UiOiAidWludDhfdCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisg
ICAgICAgICAgICAgICAgInZhbHVlcyI6IFsiU2Nyb2xsVXAiLCAiU2Nyb2xsRG93biIsICJTY3Jv
bGxMZWZ0IiwgIlNjcm9sbFJpZ2h0Il0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJTY3JvbGxHcmFudWxhcml0eSIsICJtb2RlIjogIlNDQUxBUiIs
ICJzdG9yYWdlIjogInVpbnQ4X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJd
LAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICJTY3Jv
bGxCeUxpbmUiLAorICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsQnlQYWdlIiwKKyAgICAgICAg
ICAgICAgICAgICAgIlNjcm9sbEJ5RG9jdW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAiU2Ny
b2xsQnlQaXhlbCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCeVByZWNpc2VQaXhlbCIK
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0v
U2Nyb2xsVHlwZXMuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiU2Nyb2xsTG9naWNhbERpcmVjdGlvbiIsICJtb2RlIjogIlNDQUxBUiIs
ICJzdG9yYWdlIjogInVpbnQ4X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJd
LAorICAgICAgICAgICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICJTY3Jv
bGxCbG9ja0RpcmVjdGlvbkJhY2t3YXJkIiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJs
b2NrRGlyZWN0aW9uRm9yd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVE
aXJlY3Rpb25CYWNrd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJl
Y3Rpb25Gb3J3YXJkIgorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRl
ciI6ICJwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWN1cml0eU9yaWdpbiIsICJtb2RlIjogIlNI
QVJFRCIsCiAgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwYWdlL1NlY3VyaXR5T3JpZ2luLmgi
CiAgICAgICAgICAgICB9LApAQCAtMTQ2LDYgKzIwMCwxNCBAQAogICAgICAgICAgICAgXQogICAg
ICAgICB9LAogICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJIYW5kbGVXaGVlbEV2ZW50
IiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgc2lnbmFsbGVkIGEg
bW91c2Ugd2hlZWwgZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwK
KyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxh
dGZvcm1FdmVudCIsICJ0eXBlIjogIlBsYXRmb3JtV2hlZWxFdmVudCIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJJbml0aWFsTmF2
aWdhdGlvbiIsCiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5pdGlhdGUgdGhlIGluaXRp
YWwgbWFpbiBmcmFtZSBuYXZpZ2F0aW9uLiIsCiAgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRf
TE9PUCIsCkBAIC0xNTUsNiArMjE3LDI0IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1
cmwiLCAidHlwZSI6ICJVUkwiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWZlcnJl
ciIsICJ0eXBlIjogIlN0cmluZyIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAg
ICB7CisgICAgICAgICAgICAibmFtZSI6ICJMb2dpY2FsU2Nyb2xsUGFnZSIsCisgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBhIGxvZ2ljYWwgc2Nyb2xs
IGV2ZW50LiIsCisgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAg
ICAibWVtYmVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpcmVjdGlvbiIsICJ0
eXBlIjogIlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24iIH0sCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJncmFudWxhcml0eSIsICJ0eXBlIjogIlNjcm9sbEdyYW51bGFyaXR5IiB9CisgICAgICAg
ICAgICBdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjcm9s
bFBhZ2UiLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxs
ZWQgYSBzY3JvbGwgZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwK
KyAgICAgICAgICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGly
ZWN0aW9uIiwgInR5cGUiOiAiU2Nyb2xsRGlyZWN0aW9uIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZ3JhbnVsYXJpdHkiLCAidHlwZSI6ICJTY3JvbGxHcmFudWxhcml0eSIgfQorICAg
ICAgICAgICAgXQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDYwNGY5ZmMzMjdkZTc3MjRjOTNiNmQ4NWI3N2UzYTYwNWIwNjQ0NDQu
LmJhOTRhYjk4MTk3OGY1ZWQ2Y2M2MDYyNDk5OTAxN2E3Y2NkOGJlYmUgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0zMSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIFJlcGxh
eTogY2FwdHVyZSBhbmQgcmVwbGF5IHdoZWVsIGV2ZW50cyBhbmQgc2Nyb2xsIGNvbW1hbmRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1hbnVhbFRl
c3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWw6IEFkZGVkLgorCiAyMDE0LTAz
LTMxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwu
Y29tPgogCiAgICAgICAgIFtDTWFrZV1bR1RLXSBEbyBub3QgZXhwYW5kIHZhcmlhYmxlcyB0d2lj
ZSBpbiBpZigpIGNoZWNrcy4KZGlmZiAtLWdpdCBhL01hbnVhbFRlc3RzL2luc3BlY3Rvci9yZXBs
YXktd2hlZWwtZXZlbnRzLmh0bWwgYi9NYW51YWxUZXN0cy9pbnNwZWN0b3IvcmVwbGF5LXdoZWVs
LWV2ZW50cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzOGRmMGM4Zjk3MWQ3ZDNhMzkzZmZhNjVkMTBjZjlm
ZDI2ZDE2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxUZXN0cy9pbnNwZWN0b3IvcmVwbGF5
LXdoZWVsLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsODYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICAgICAgImh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi9yZXNvdXJjZXMvY3J5cHRvLW1kNS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
KworICAgIGRvY3VtZW50Lm9ubW91c2V3aGVlbCA9IGhhbmRsZUV2ZW50OworICAgIAorICAgIHdp
bmRvdy5kdW1wZWRFdmVudHMgPSBbXTsKKyAgICAKKyAgICBmdW5jdGlvbiBoYW5kbGVFdmVudChl
dmVudCkgeworICAgICAgICB2YXIgcHJvcGVydGllcyA9IFsidHlwZSIsICJldmVudFBoYXNlIiwg
ImJ1YmJsZXMiLCAiY2FuY2VsYWJsZSIsICJzY3JlZW5YIiwgInNjcmVlblkiLCAiY2xpZW50WCIs
ICJjbGllbnRZIiwgImN0cmxLZXkiLCAic2hpZnRLZXkiLCAiYWx0S2V5IiwgIm1ldGFLZXkiLCAi
YnV0dG9uIiwgImRlbHRhWCIsICJkZWx0YVkiLCAiZGVsdGFaIiwgImRlbHRhTW9kZSIsICJ3aGVl
bERlbHRhWCIsICJ3aGVlbERlbHRhWSJdOworICAgICAgICBvYmogPSB7fTsKKyAgICAgICAgZm9y
ICh2YXIga2V5IG9mIHByb3BlcnRpZXMpCisgICAgICAgICAgICBvYmpba2V5XSA9IGV2ZW50W2tl
eV07CisgICAgCisgICAgICAgIGR1bXBlZEV2ZW50cy5wdXNoKG9iaik7CisKKyAgICAgICAgdmFy
IGJsb2NrID0gY3JlYXRlQmxvY2soaGV4X21kNShKU09OLnN0cmluZ2lmeShvYmopKSk7CisgICAg
ICAgIHZhciBibG9ja3NDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYmxvY2tz
Iik7CisgICAgICAgIGJsb2Nrc0NvbnRhaW5lci5hcHBlbmRDaGlsZChibG9jayk7CisgICAgICAg
IAorICAgICAgICB2YXIgaGFzaExhYmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhhc2gi
KTsKKyAgICAgICAgaGFzaC50ZXh0Q29udGVudCA9IGhleF9tZDUoSlNPTi5zdHJpbmdpZnkoZHVt
cGVkRXZlbnRzKSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNyZWF0ZUJsb2NrKGhhc2gp
IHsKKyAgICAgICAgdmFyIGNvbG9yID0gIiMiICsgaGFzaC5zdWJzdHIoMCw2KTsKKyAgICAgICAg
dmFyIGJsb2NrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBibG9j
ay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKKyAgICAgICAgcmV0dXJuIGJsb2NrOwor
ICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBzdGF0ZUhhc2goKSB7CisgICAgICAgIHJldHVybiBo
ZXhfbWQ1KEpTT04uc3RyaW5naWZ5KGR1bXBlZEV2ZW50cykpOworICAgIH0KKyAgICAKKzwvc2Ny
aXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorYm9keSB7CisgICAgbWF4LXdpZHRoOiA4
MDBweDsKK30KKyNibG9ja3MgeworICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICB3aWR0
aDogNjAwcHg7CisgICAgLXdlYmtpdC1mbGV4LWZsb3c6IHJvdyB3cmFwOworfQorICAgIAorI2Js
b2NrcyA+IHNwYW4geworICAgIHdpZHRoOiAxMHB4OworICAgIGhlaWdodDogMTBweDsKKyAgICBi
b3JkZXItcmFkaXVzOiA1cHg7CisgICAgdGV4dC1hbGlnbjogY2VudGVyOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBwYWdlIGlzIGEgbWFudWFsIHRlc3QgZm9yIGNhcHR1
cmUgYW5kIHJlcGxheSBvZiBzY3JvbGwtcmVsYXRlZCBET00gZXZlbnRzLjwvcD4KKzxwPkJlbG93
LCBhIGJsb2NrIGlzIGNyZWF0ZWQgZm9yIGVhY2ggbW91c2V3aGVlbCBldmVudCwgd2hlcmUgdGhl
IGNvbG9yIGlzIGRlcml2ZWQgZnJvbSBhIGhhc2ggb2YgdGhlIGV2ZW50IGRhdGEuIEF0IHRoZSBi
b3R0b20gaXMgYSBjdW11bGF0aXZlIGhhc2ggb2YgYWxsIGV2ZW50IGRhdGEuPC9wPgorPGhyLz4K
Kzx0ZXh0YXJlYSByb3dzPSIzIj4KKworVGhpcyBpcyBhIHNjcm9sbGFibGUgdGV4dGFyZWEuCisK
Ky4KKworLi4KKworLi4uCisKKy4uLi4KKworLi4uLi4KKworPC90ZXh0YXJlYT4KKzxwPgorVG8g
dGVzdCB0aGUgcmVwbGF5IGZ1bmN0aW9uYWxpdHksIG9wZW4gdGhlIFdlYiBJbnNwZWN0b3IsIHN0
YXJ0IGNhcHR1cmluZywgYW5kIHRoZW4gc2Nyb2xsIGVhY2ggb2YgdGhlIGlmcmFtZSwgb3ZlcmZs
b3c6c2Nyb2xsIGVsZW1lbnQsIGFuZCB0aGUgbWFpbiBwYWdlJ3MgZmxvd2VkIHRleHQuIEFmdGVy
IHNvbWUgdGltZSwgc3RvcCBjYXB0dXJpbmcgYW5kIHRoZW4gcmVwbGF5LjwvcD4KKzxwPlRoZSBy
ZXBsYXllZCBleGVjdXRpb24gc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgYmxv
Y2tzLCBhbmQgcGFnZSBjb250ZW50cyBzaG91bGQgc2Nyb2xsIHRoZSBzYW1lIGRpc3RhbmNlIGFu
ZCBzcGVlZC4gTW9yZSBpbXBvcnRhbnRseSwgdGhlIGN1bXVsYXRpdmUgaGFzaCB2YWx1ZSBzaG91
bGQgYmUgdGhlIHNhbWUgYXQgdGhlIGVuZCBvZiBjYXB0dXJpbmcgYW5kIGF0IHRoZSBlbmQgb2Yg
YW55IHN1YnNlcXVlbnQgcmVwbGF5cy48L3A+Cis8L3A+Cis8aHIvPgorPGRpdiBpZD0iaGFzaCI+
PC9kaXY+Cis8ZGl2IGlkPSJibG9ja3MiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228347</attachid>
            <date>2014-04-01 17:38:30 -0700</date>
            <delta_ts>2014-04-02 13:35:55 -0700</delta_ts>
            <desc>the patch.2</desc>
            <filename>bug-129402-20140401173810.patch</filename>
            <type>text/plain</type>
            <size>37183</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFhMTkwYzU0OWU1OTRj
NWU0Nzc5MGQxMzNhZWRhMjk0ZTAzZDY3YS4uOGQ5MjczMDkzNGM3ZjA5ZjIyOWFmNzcwZmRlMTZi
ODM1NmFlZGI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTMxICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBjYXB0dXJlIGFuZCByZXBsYXkgd2hlZWwgZXZlbnRzIGFuZCBzY3JvbGwgY29tbWFuZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGNhcHR1cmUg
YW5kIHJlcGxheSBzY3JvbGxpbmcsIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3Igd2lsbCBmb3Jj
ZSBzeW5jaHJvbm91cyAKKyAgICAgICAgc2Nyb2xsaW5nIGR1cmluZyBjYXB0dXJlIGFuZCByZXBs
YXkuIElmIHRoZSBwYWdlIGlzIGNhcHR1cmluZyBvciByZXBsYXlpbmcsCisgICAgICAgIEZvcmNl
T25NYWluVGhyZWFkIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNvb3JkaW5hdG9yJ3MgU3luY2hyb25v
dXNTY3JvbGxpbmdSZWFzb25zLgorCisgICAgICAgIEEgY2FsbGJhY2sgd2FzIGFkZGVkIHRvIHNp
Z25hbCB0aGF0IHJlcGxheSBzZXNzaW9uIHN0YXRlIGhhdmUgY2hhbmdlZCwKKyAgICAgICAgYW5k
IHRodXMgdGhlIHN5bmNocm9ub3VzIHNjcm9sbGluZyByZWFzb25zIHNob3VsZCBiZSByZWNvbXB1
dGVkLgorCisgICAgICAgIEF1dG9tYXRlZCByZXBsYXkgcmVmdGVzdHMgZm9yIHNjcm9sbGluZyBh
cmUgbm90IGluY2x1ZGVkLCBiZWNhdXNlIHRoZXkgd2lsbCBiZQorICAgICAgICB0b28gZmxha3kg
dW50aWwgbW9yZSBub25kZXRlcm1pbmlzbSBpcyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIHJlc291
cmNlIGxvYWRpbmcsCisgICAgICAgIGluaXRpYWwgZm9jdXMvYWN0aXZlIHN0YXRlLCBhbmQgcGFy
c2luZyBhcmUga25vd24gYmxvY2tpbmcgaXNzdWVzLgorCisgICAgICAgIFRlc3Q6IE1hbnVhbFRl
c3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDogQWRkIGEgbmV3IGNhbGxiYWNrIGZv
ciByZXBsYXkgc3RhdGUKKyAgICAgICAgc2Vzc2lvbiBjaGFuZ2VzLiBBZGQgRm9yY2VPbk1haW5U
aHJlYWQgaWYgdGhlIHBhZ2UncyBhY3RpdmUgaW5wdXQgY3Vyc29yIGlzCisgICAgICAgIGNhcHR1
cmluZyBvciByZXBsYXlpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnJlcGxheVNlc3Npb25TdGF0ZURpZENoYW5nZSk6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxUeXBlcy5oOiBBZGQgZXhwbGljaXQgZW51bSBzdG9yYWdlIHR5cGVzIHNvIHRoZXNlIGVu
dW1zIGNhbgorICAgICAgICBiZSBmb3J3YXJkLWRlY2xhcmVkLiBUaGlzIGlzIG5lY2Vzc2FyeSB0
byBnZW5lcmF0ZSBlbnVtIGVuY29kZS9kZWNvZGUgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAg
ICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5
Q29udHJvbGxlcjo6c2V0Rm9yY2VEZXRlcm1pbmlzdGljU2V0dGluZ3MpOiBJZiBhc3luYyBzY3Jv
bGxpbmcKKyAgICAgICAgc3VwcG9ydCBpcyBhdmFpbGFibGUsIHRlbGwgdGhlIHNjcm9sbGluZyB0
cmVlIHRvIGJlaGF2ZSBkZXRlcm1pbmlzdGljYWxseS4KKworICAgICAgICAqIHJlcGxheS9SZXBs
YXlJbnB1dERpc3BhdGNoTWV0aG9kcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIYW5kbGVXaGVl
bEV2ZW50OjpkaXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TG9naWNhbFNjcm9s
bFBhZ2U6OmRpc3BhdGNoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxQYWdlOjpk
aXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9TZXJpYWxpemF0aW9uTWV0aG9kcy5j
cHA6IEludHJvZHVjZSBtb3JlIHNwZWNpZmljIG1hY3JvcyBmb3IgdmFsdWVzCisgICAgICAgIGRl
c2VyaWFsaXplZCB0byBhcmJpdHJhcmF5IGx2YWx1ZXMsIHNjYWxhcnMsIFJlZlB0ciwgYW5kIHVu
aXF1ZV9wdHIuIEZpeCBleGlzdGluZworICAgICAgICB1c2VzIG9mIGRlY29kZSBtYWNyb3MuCisK
KyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT46
OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJh
aXRzPEtleXByZXNzQ29tbWFuZD46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAg
ICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD46OmVuY29kZVZh
bHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRm
b3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAgIChK
U0M6OlBsYXRmb3JtV2hlZWxFdmVudENvY29hOjpQbGF0Zm9ybVdoZWVsRXZlbnRDb2NvYSk6IEFk
ZGVkLiBFbmNhcHN1bGF0ZQorICAgICAgICBhbmQgaW5pdGlhbGl6ZSBkYXRhIG1lbWJlcnMgc3Bl
Y2lmaWMgdG8gUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRz
PFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29kZVZhbHVlKTogQWRkZWQuCisgICAgICAgIChKU0M6
OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmRlY29kZVZhbHVlKTogQWRkZWQu
CisgICAgICAgICogcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmg6CisgICAgICAgICogcmVw
bGF5L1VzZXJJbnB1dEJyaWRnZS5jcHA6IEZpbGwgaW4gYnJpZGdlIG1ldGhvZHMgdG8gY2FwdHVy
ZSBpbnB1dHMuCisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZVdoZWVs
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdlOjpzY3JvbGxSZWN1cnNp
dmVseSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmxvZ2ljYWxTY3JvbGxS
ZWN1cnNpdmVseSk6CisgICAgICAgICogcmVwbGF5L1dlYklucHV0cy5qc29uOiBBZGQgaW5wdXRz
IGFuZCBuZXcgZW51bSB0eXBlcy4KKwogMjAxNC0wNC0wMSAgVGltb3RoeSBIYXRjaGVyICA8dGlt
b3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEhlYXBQcm9maWxlciBmcm9tIHRoZSBX
ZWIgSW5zcGVjdG9yIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDhkYWQxNjAwNDdmZmE0ZDFh
ZDFhZWUyZmE5MjI2M2IxOWM1ZjI2OTkuLjc3MDFiYzY2MTJmYzY1YjVkNjBhMjQ1Yjk5ZThmNjVj
MDA5N2Q0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5jbHVkZSAiU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIlJlcGxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
IDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCkBAIC0yOTksNiArMzA0LDExIEBAIFN5bmNocm9ub3VzU2Ny
b2xsaW5nUmVhc29ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdS
ZWFzb25zKCkKIAogICAgIGlmIChtX2ZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9u
VXBkYXRlcykKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEZvcmNlZE9u
TWFpblRocmVhZDsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBJbnB1dEN1cnNvciYgY3Vy
c29yID0gbV9wYWdlLT5yZXBsYXlDb250cm9sbGVyKCkuYWN0aXZlSW5wdXRDdXJzb3IoKTsKKyAg
ICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkgfHwgY3Vyc29yLmlzUmVwbGF5aW5nKCkpCisgICAg
ICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBGb3JjZWRPbk1haW5UaHJlYWQ7Cisj
ZW5kaWYKICAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVjdHMoKSkKICAgICAg
ICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEhhc1Nsb3dSZXBhaW50T2JqZWN0czsK
ICAgICBpZiAoIXN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZyYW1lVmlldy0+aGFz
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSkKQEAgLTMyNSw2ICszMzUsMTMgQEAgdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRp
b25VcGRhdGVzKGJvb2wgZm8KICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMo
KTsKIH0KIAorI2lmIEVOQUJMRShXRUJfUkVQTEFZKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6cmVwbGF5U2Vzc2lvblN0YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMoKTsKK30KKyNlbmRpZgorCiBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6OnVuaXF1ZVNjcm9sbExheWVySUQoKQogewogICAgIHN0YXRpYyBTY3Jv
bGxpbmdOb2RlSUQgdW5pcXVlU2Nyb2xsTGF5ZXJJRCA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA5ZGNiOGZi
MDI5NGJlNTBmZGYzNTQ1NmY3YmU2ODM4MDRhY2NiNGM2Li41YzU3N2YxNjhkYzc2MWYwZjg4ZTkz
NjVhZjUwNDZmZDA3NDI0YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE0MCw2ICsxNDAsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNl
KTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIHBhZ2UgdHJhbnNpdGlvbnMgYmV0d2VlbiBleGVjdXRpbmcgbm9ybWFsbHkgYW5kIGRldGVy
bWluaXN0aWNhbGx5LgorICAgIHZvaWQgcmVwbGF5U2Vzc2lvblN0YXRlRGlkQ2hhbmdlKCk7Cisj
ZW5kaWYKKwogICAgIC8vIEZvcmNlIGFsbCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gdXBkYXRlcyB0
byBoYXBwZW4gb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgc2V0Rm9yY2VTeW5jaHJvbm91
c1Njcm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wpOwogCkBAIC0xNzMsNyArMTc4LDggQEAg
cHVibGljOgogICAgICAgICBIYXNTbG93UmVwYWludE9iamVjdHMgPSAxIDw8IDEsCiAgICAgICAg
IEhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVy
cyA9IDEgPDwgMiwKICAgICAgICAgSGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
cyA9IDEgPDwgMywKLSAgICAgICAgSXNJbWFnZURvY3VtZW50ID0gMSA8PCA0CisgICAgICAgIElz
SW1hZ2VEb2N1bWVudCA9IDEgPDwgNCwKKyAgICAgICAgRm9yY2VkRGV0ZXJtaW5pc3RpY1Njcm9s
bGluZyA9IDEgPDwgNQogICAgIH07CiAKICAgICBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGFhMzA4ZjhlZWU4OTI5ZDY4Mjc4NzVm
ODdkNDIxZWI2MjgzMWQ0NTUuLjYyZmRiNjYxYTA2OWZmNjA2MWE2ZTY1OTI3ZTRlMTJjZmYyYzJm
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBA
IC00OCwxMyArNDgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGFuZCBzeW50aGVz
aXplZCBpbiBvdGhlciBjYXNlcyB3aGVyZSBwbGF0Zm9ybXMgZ2VuZXJhdGUgbGluZS1ieS1saW5l
IHNjcm9sbGluZyBldmVudHMuCiAgICAgLy8gVGhlIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgaW5k
aWNhdGVzIHRoYXQgdGhlIHdoZWVsIGV2ZW50IHNob3VsZCBzY3JvbGwgYW4gZW50aXJlIHBhZ2Uu
ICBJbiB0aGlzIGNhc2UgV2ViQ29yZSdzIGJ1aWx0IGluIHBhZ2luZyBiZWhhdmlvciBpcyB1c2Vk
IHRvIHBhZ2UKICAgICAvLyB1cCBhbmQgZG93biAoeW91IGdldCB0aGUgc2FtZSBiZWhhdmlvciBh
cyBpZiB0aGUgdXNlciB3YXMgY2xpY2tpbmcgaW4gYSBzY3JvbGxiYXIgdHJhY2sgdG8gcGFnZSB1
cCBvciBwYWdlIGRvd24pLgotICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkg
eworICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgOiB1aW50NjRfdCB7CiAg
ICAgICAgIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQsCiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVl
bEV2ZW50LAogICAgIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBlbnVtIFBsYXRmb3Jt
V2hlZWxFdmVudFBoYXNlIHsKKyAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIDogdWlu
dDY0X3QgewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwK
ICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMCwKICAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwgMSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IGM5OGQ3Nzg1YjNmMTI2YzA1YTM4MDFj
Y2JmODI5ZjY3NmU4YzU3NjQuLjVmZDM1YzkyMjE2NWNkYTdiZGJmZDczOTk5YTFjMzFiOWY3NDE2
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMzAsMTQgKzMwLDE0
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGVudW0gU2Nyb2xsRGlyZWN0aW9uIHsK
KyAgICBlbnVtIFNjcm9sbERpcmVjdGlvbiA6IHVpbnQ2NF90IHsKICAgICAgICAgU2Nyb2xsVXAs
CiAgICAgICAgIFNjcm9sbERvd24sCiAgICAgICAgIFNjcm9sbExlZnQsCiAgICAgICAgIFNjcm9s
bFJpZ2h0CiAgICAgfTsKIAotICAgIGVudW0gU2Nyb2xsTG9naWNhbERpcmVjdGlvbiB7CisgICAg
ZW51bSBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIDogdWludDY0X3QgewogICAgICAgICBTY3JvbGxC
bG9ja0RpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICBTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndh
cmQsCiAgICAgICAgIFNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkLApAQCAtMTAzLDcgKzEw
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIFNjcm9sbFVwOwogICAg
IH0KIAotICAgIGVudW0gU2Nyb2xsR3JhbnVsYXJpdHkgeworICAgIGVudW0gU2Nyb2xsR3JhbnVs
YXJpdHkgOiB1aW50NjRfdCB7CiAgICAgICAgIFNjcm9sbEJ5TGluZSwKICAgICAgICAgU2Nyb2xs
QnlQYWdlLAogICAgICAgICBTY3JvbGxCeURvY3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGVkZmM5ZWIwYjQ2MzAzZDA2ZTNlOWIyMWI3YTFj
ZDBjMzYxMTM1ZWYuLmM5MDdiYTI2MDBlMTgzNTRjYmNkYzMxOTcyMzdlYmRjMDUxNDQxNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTUwLDYgKzUw
LDEwIEBACiAjaW5jbHVkZSA8cmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2luY2x1
ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBSZXBsYXlDb250cm9sbGVyOjpSZXBsYXlDb250cm9sbGVyKFBhZ2UmIHBhZ2UpCkBAIC02
NiwxNyArNzAsMjAgQEAgUmVwbGF5Q29udHJvbGxlcjo6UmVwbGF5Q29udHJvbGxlcihQYWdlJiBw
YWdlKQogewogfQogCi12b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldEZvcmNlRGV0ZXJtaW5pc3Rp
Y1NldHRpbmdzKGJvb2wgc2hvdWxkRm9yY2UpCit2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldEZv
cmNlRGV0ZXJtaW5pc3RpY1NldHRpbmdzKGJvb2wgc2hvdWxkRm9yY2VEZXRlcm1pbmlzdGljQmVo
YXZpb3IpCiB7Ci0gICAgQVNTRVJUKHNob3VsZEZvcmNlIF4gKG1fc2Vzc2lvblN0YXRlID09IFNl
c3Npb25TdGF0ZTo6SW5hY3RpdmUpKTsKKyAgICBBU1NFUlQoc2hvdWxkRm9yY2VEZXRlcm1pbmlz
dGljQmVoYXZpb3IgXiAobV9zZXNzaW9uU3RhdGUgPT0gU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkp
OwogCi0gICAgaWYgKHNob3VsZEZvcmNlKSB7CisgICAgaWYgKHNob3VsZEZvcmNlRGV0ZXJtaW5p
c3RpY0JlaGF2aW9yKSB7CiAgICAgICAgIG1fc2F2ZWRTZXR0aW5ncy51c2VzUGFnZUNhY2hlID0g
bV9wYWdlLnNldHRpbmdzKCkudXNlc1BhZ2VDYWNoZSgpOwogCiAgICAgICAgIG1fcGFnZS5zZXR0
aW5ncygpLnNldFVzZXNQYWdlQ2FjaGUoZmFsc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
cGFnZS5zZXR0aW5ncygpLnNldFVzZXNQYWdlQ2FjaGUobV9zYXZlZFNldHRpbmdzLnVzZXNQYWdl
Q2FjaGUpOwogICAgIH0KKworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5n
Q29vcmRpbmF0b3IgPSBtX3BhZ2Uuc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnJlcGxheVNlc3Npb25TdGF0ZURpZENoYW5nZSgpOwogfQogCiB2
b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldFNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc3RhdGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1l
dGhvZHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0RGlzcGF0Y2hNZXRo
b2RzLmNwcAppbmRleCAxMDQ1ZTY1YmY4MDZjMmViZGI2ZjBhYzAyOTIzZmE2NjAxN2U2NzNhLi5m
YmE2N2RjYzkxNjIyZDc2ZDc0NzNlMTFhNGQ0ZWE2NGM5NGYzNjU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1ldGhvZHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dERpc3BhdGNoTWV0aG9kcy5jcHAKQEAgLTc3
LDYgKzc3LDIxIEBAIHZvaWQgSGFuZGxlTW91c2VSZWxlYXNlOjpkaXNwYXRjaChSZXBsYXlDb250
cm9sbGVyJiBjb250cm9sbGVyKQogICAgIGNvbnRyb2xsZXIucGFnZSgpLnVzZXJJbnB1dEJyaWRn
ZSgpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtRXZlbnQoKSwgSW5wdXRTb3VyY2U6
OlN5bnRoZXRpYyk7CiB9CiAKK3ZvaWQgSGFuZGxlV2hlZWxFdmVudDo6ZGlzcGF0Y2goUmVwbGF5
Q29udHJvbGxlciYgY29udHJvbGxlcikKK3sKKyAgICBjb250cm9sbGVyLnBhZ2UoKS51c2VySW5w
dXRCcmlkZ2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQoKSwgSW5wdXRTb3VyY2U6
OlN5bnRoZXRpYyk7Cit9CisKK3ZvaWQgTG9naWNhbFNjcm9sbFBhZ2U6OmRpc3BhdGNoKFJlcGxh
eUNvbnRyb2xsZXImIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci5wYWdlKCkudXNlcklu
cHV0QnJpZGdlKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbigpLCBncmFudWxh
cml0eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30KKwordm9pZCBTY3JvbGxQYWdlOjpk
aXNwYXRjaChSZXBsYXlDb250cm9sbGVyJiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xsZXIu
cGFnZSgpLnVzZXJJbnB1dEJyaWRnZSgpLnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbigpLCBn
cmFudWxhcml0eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAppbmRleCA1Y2I5ZWYxNmEzZDA2
NzM1OTcwYTI5NmFmMzQzY2Y5ZTQ3NDhkZjZmLi43MjY0NWIzNTc2MGEzN2U2NjExZWYzNDMxNzk5
MDgwM2M0NTY4MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXph
dGlvbk1ldGhvZHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9u
TWV0aG9kcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBbGxSZXBsYXlJbnB1dHMu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRl
ICJSZXBsYXlJbnB1dFR5cGVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJVUkwuaCIKQEAgLTQ0LDMxICs0NSw1NSBAQCB1c2luZyBXZWJDb3JlOjpNb3VzZUJ1dHRv
bjsKIHVzaW5nIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ7Cit1c2lu
ZyBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ7Cit1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRHcmFudWxhcml0eTsKIHVzaW5nIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOwogdXNp
bmcgV2ViQ29yZTo6VVJMOwogdXNpbmcgV2ViQ29yZTo6aW5wdXRUeXBlczsKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQordXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U7CisjZW5k
aWYKKwogI2RlZmluZSBJTVBPUlRfRlJPTV9XRUJDT1JFX05BTUVTUEFDRShuYW1lKSBcCiB1c2lu
ZyBXZWJDb3JlOjpuYW1lOyBcCiAKIFdFQl9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0goSU1Q
T1JUX0ZST01fV0VCQ09SRV9OQU1FU1BBQ0UpCiAjdW5kZWYgSU1QT1JUX0ZST01fV0VCQ09SRV9O
QU1FU1BBQ0UKIAotI2RlZmluZSBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRW
YWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSkgXAorI2RlZmluZSBFTkNPREVfVFlQRV9XSVRIX0tF
WShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKSBcCiAgICAgX2VuY29kZWRWYWx1
ZS5wdXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF92YWx1ZSkKIAotI2RlZmluZSBERUNP
REVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKLSAg
ICBfdHlwZSBfa2V5OyBcCi0gICAgaWYgKCFfZW5jb2RlZFZhbHVlLmdldDxfdHlwZT4oQVNDSUlM
aXRlcmFsKCNfa2V5KSwgX2tleSkpIFwKKyNkZWZpbmUgRU5DT0RFX09QVElPTkFMX1RZUEVfV0lU
SF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSwgY29uZGl0aW9uKSBcCisg
ICAgaWYgKGNvbmRpdGlvbikgXAorICAgICAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShfZW5jb2Rl
ZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKQorCisjZGVmaW5lIERFQ09ERV9UWVBFX1dJVEhf
S0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2x2YWx1ZSkgXAorICAg
IGlmICghX2VuY29kZWRWYWx1ZS5nZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9sdmFs
dWUpKSBcCiAgICAgICAgIHJldHVybiBmYWxzZQogCi0jZGVmaW5lIEVOQ09ERV9PUFRJT05BTF9T
Q0FMQVJfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlLCBj
b25kaXRpb24pIFwKLSAgICBpZiAoY29uZGl0aW9uKSBcCi0gICAgICAgIF9lbmNvZGVkVmFsdWUu
cHV0PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfdmFsdWUpCisjZGVmaW5lIERFQ09ERV9P
UFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tl
eSwgX2x2YWx1ZSkgXAorICAgIGJvb2wgX2tleSAjIyBXYXNEZWNvZGVkID0gX2VuY29kZWRWYWx1
ZS5nZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9sdmFsdWUpCisKKyNkZWZpbmUgREVD
T0RFX1JFRkNPVU5URURfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSkg
XAorICAgIFJlZlB0cjxfdHlwZT4gX2tleTsgXAorICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RP
X0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKKworI2RlZmluZSBERUNP
REVfVU5JUVVFX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8X3R5cGU+IF9rZXk7IFwKKyAgICBERUNPREVfVFlQRV9XSVRIX0tF
WV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9rZXkpCisKKyNkZWZpbmUg
REVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5KSBc
CisgICAgX3R5cGUgX2tleTsgXAorICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShf
ZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKIAogI2RlZmluZSBERUNPREVfT1BUSU9O
QUxfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKICAg
ICBfdHlwZSBfa2V5OyBcCi0gICAgYm9vbCBfa2V5ICMjIFdhc0RlY29kZWQgPSBfZW5jb2RlZFZh
bHVlLmdldDxfdHlwZT4oQVNDSUlMaXRlcmFsKCNfa2V5KSwgX2tleSkKKyAgICBERUNPREVfT1BU
SU9OQUxfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXks
IF9rZXkpCisKKyNkZWZpbmUgREVDT0RFX09QVElPTkFMX1JFRkNPVU5URURfVFlQRV9XSVRIX0tF
WShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSkgXAorICAgIFJlZlB0cjxfdHlwZT4gX2tleTsg
XAorICAgIERFQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZh
bHVlLCBfdHlwZSwgX2tleSwgX2tleSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc3LDcgKzEw
Miw3IEBAIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRC
YXNlPjo6ZW5jb2RlVmFsdWUoY29uc3QgTm9uZGV0CiAgICAgRW5jb2RlZFZhbHVlIGVuY29kZWRW
YWx1ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlID0gaW5wdXQudHlwZSgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0eXBlLCB0eXBlLnN0cmluZygpKTsKKyAgICBFTkNP
REVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdHlwZSwgdHlwZS5zdHJpbmco
KSk7CiAKICNkZWZpbmUgRU5DT0RFX0lGX1RZUEVfVEFHX01BVENIRVMobmFtZSkgXAogICAgIGlm
ICh0eXBlID09IGlucHV0VHlwZXMoKS5uYW1lKSB7IFwKQEAgLTEzNCw4ICsxNTksOCBAQCBFbmNv
ZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8S2V5cHJlc3NDb21tYW5kPjo6ZW5jb2RlVmFsdWUoY29u
c3QgS2V5cHJlc3NDb21tYW5kJgogewogICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBF
bmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCBjb21tYW5kTmFtZSwgY29tbWFuZC5jb21tYW5k
TmFtZSk7Ci0gICAgRU5DT0RFX09QVElPTkFMX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRW
YWx1ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFjb21tYW5kLnRleHQuaXNFbXB0eSgp
KTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgY29tbWFu
ZE5hbWUsIGNvbW1hbmQuY29tbWFuZE5hbWUpOworICAgIEVOQ09ERV9PUFRJT05BTF9UWVBFX1dJ
VEhfS0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFjb21tYW5k
LnRleHQuaXNFbXB0eSgpKTsKIAogICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CiB9CkBAIC0xNjQs
MjEgKzE4OSwyMSBAQCBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50Pjo6ZW5jb2RlVmFsdWUoY29uc3QgUGxhdGZvcm1LZQogewogICAgIEVuY29kZWRWYWx1
ZSBlbmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5D
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgZG91YmxlLCB0aW1lc3RhbXAs
IGlucHV0LnRpbWVzdGFtcCgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5j
b2RlZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBlKCkpOwotICAg
IEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6
Ok1vZGlmaWVycywgbW9kaWZpZXJzLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmll
cnM+KGlucHV0Lm1vZGlmaWVycygpKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBpbnB1dC50ZXh0KCkpOwotICAgIEVOQ09ERV9T
Q0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdW5tb2RpZmllZFRleHQs
IGlucHV0LnVubW9kaWZpZWRUZXh0KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tF
WShlbmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwgaW5wdXQua2V5SWRlbnRpZmll
cigpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQs
IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW5wdXQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpOwot
ICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbmF0aXZl
VmlydHVhbEtleUNvZGUsIGlucHV0Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkpOwotICAgIEVOQ09E
RV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNvZGUsIGlu
cHV0Lm1hY0NoYXJDb2RlKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNv
ZGVkVmFsdWUsIGJvb2wsIGF1dG9SZXBlYXQsIGlucHV0LmlzQXV0b1JlcGVhdCgpKTsKLSAgICBF
TkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBrZXlwYWQsIGlu
cHV0LmlzS2V5cGFkKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVk
VmFsdWUsIGJvb2wsIHN5c3RlbUtleSwgaW5wdXQuaXNTeXN0ZW1LZXkoKSk7CisgICAgRU5DT0RF
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBkb3VibGUsIHRpbWVzdGFtcCwgaW5wdXQudGlt
ZXN0YW1wKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgUGxhdGZv
cm1FdmVudDo6VHlwZSwgdHlwZSwgaW5wdXQudHlwZSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRI
X0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycywgbW9kaWZpZXJzLCBz
dGF0aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KGlucHV0Lm1vZGlmaWVycygpKSk7
CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRleHQsIGlu
cHV0LnRleHQoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJp
bmcsIHVubW9kaWZpZWRUZXh0LCBpbnB1dC51bm1vZGlmaWVkVGV4dCgpKTsKKyAgICBFTkNPREVf
VFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwgaW5wdXQu
a2V5SWRlbnRpZmllcigpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGludCwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnB1dC53aW5kb3dzVmlydHVhbEtleUNvZGUo
KSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIG5hdGl2ZVZp
cnR1YWxLZXlDb2RlLCBpbnB1dC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpKTsKKyAgICBFTkNPREVf
VFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNvZGUsIGlucHV0Lm1hY0No
YXJDb2RlKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwg
YXV0b1JlcGVhdCwgaW5wdXQuaXNBdXRvUmVwZWF0KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwga2V5cGFkLCBpbnB1dC5pc0tleXBhZCgpKTsKKyAgICBF
TkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIHN5c3RlbUtleSwgaW5wdXQu
aXNTeXN0ZW1LZXkoKSk7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgaW5wdXQu
aGFuZGxlZEJ5SW5wdXRNZXRob2QoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4sIGNvbW1hbmRzLCBpbnB1dC5j
b21tYW5kcygpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2ws
IGhhbmRsZWRCeUlucHV0TWV0aG9kLCBpbnB1dC5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKTsKKyAg
ICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFZlY3RvcjxLZXlwcmVzc0NvbW1h
bmQ+LCBjb21tYW5kcywgaW5wdXQuY29tbWFuZHMoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZW5j
b2RlZFZhbHVlOwogfQpAQCAtMjE1LDE4ICsyNDAsMTggQEAgRW5jb2RlZFZhbHVlIEVuY29kaW5n
VHJhaXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKGNvbnN0IFBsYXRmb3JtTW91
c2UKIHsKICAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVh
dGVPYmplY3QoKTsKIAotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFs
dWUsIGludCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7Ci0gICAgRU5DT0RFX1ND
QUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBwb3NpdGlvblksIGlucHV0LnBv
c2l0aW9uKCkueSgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZh
bHVlLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54KCkpOwot
ICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFs
UG9zaXRpb25ZLCBpbnB1dC5nbG9iYWxQb3NpdGlvbigpLnkoKSk7Ci0gICAgRU5DT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgTW91c2VCdXR0b24sIGJ1dHRvbiwgaW5wdXQu
YnV0dG9uKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IFBsYXRmb3JtRXZlbnQ6OlR5cGUsIHR5cGUsIGlucHV0LnR5cGUoKSk7Ci0gICAgRU5DT0RFX1ND
QUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBjbGlja0NvdW50LCBpbnB1dC5j
bGlja0NvdW50KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFs
dWUsIGJvb2wsIHNoaWZ0S2V5LCBpbnB1dC5zaGlmdEtleSgpKTsKLSAgICBFTkNPREVfU0NBTEFS
X1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBjdHJsS2V5LCBpbnB1dC5jdHJsS2V5
KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2ws
IGFsdEtleSwgaW5wdXQuYWx0S2V5KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tF
WShlbmNvZGVkVmFsdWUsIGJvb2wsIG1ldGFLZXksIGlucHV0Lm1ldGFLZXkoKSk7Ci0gICAgRU5D
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCB0aW1lc3RhbXAsIGlu
cHV0LnRpbWVzdGFtcCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGludCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7CisgICAgRU5DT0RFX1RZUEVf
V0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIHBvc2l0aW9uWSwgaW5wdXQucG9zaXRpb24oKS55
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBnbG9iYWxQ
b3NpdGlvblgsIGlucHV0Lmdsb2JhbFBvc2l0aW9uKCkueCgpKTsKKyAgICBFTkNPREVfVFlQRV9X
SVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFsUG9zaXRpb25ZLCBpbnB1dC5nbG9iYWxQ
b3NpdGlvbigpLnkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBN
b3VzZUJ1dHRvbiwgYnV0dG9uLCBpbnB1dC5idXR0b24oKSk7CisgICAgRU5DT0RFX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBl
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBjbGlja0Nv
dW50LCBpbnB1dC5jbGlja0NvdW50KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29k
ZWRWYWx1ZSwgYm9vbCwgc2hpZnRLZXksIGlucHV0LnNoaWZ0S2V5KCkpOworICAgIEVOQ09ERV9U
WVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgY3RybEtleSwgaW5wdXQuY3RybEtleSgp
KTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGFsdEtleSwg
aW5wdXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwg
Ym9vbCwgbWV0YUtleSwgaW5wdXQubWV0YUtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tF
WShlbmNvZGVkVmFsdWUsIGludCwgdGltZXN0YW1wLCBpbnB1dC50aW1lc3RhbXAoKSk7CiAKICAg
ICByZXR1cm4gZW5jb2RlZFZhbHVlOwogfQpAQCAtMjUzLDYgKzI3OCwxMDIgQEAgYm9vbCBFbmNv
ZGluZ1RyYWl0czxQbGF0Zm9ybU1vdXNlRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUm
IGVuY29kZWRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorc3RydWN0IFBsYXRmb3JtV2hlZWxFdmVudENvY29hQXJndW1lbnRzIHsKKyAgICBib29sIGRp
cmVjdGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXM7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2U7CisgICAgUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZTsKKyAgICBpbnQgc2Nyb2xsQ291bnQ7CisgICAg
ZmxvYXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICBmbG9hdCB1bmFjY2VsZXJh
dGVkU2Nyb2xsaW5nRGVsdGFZOworfTsKKworY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50Q29jb2Eg
OiBwdWJsaWMgUGxhdGZvcm1XaGVlbEV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVdoZWVs
RXZlbnRDb2NvYShQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnRD
b2NvYUFyZ3VtZW50cyYgYXJndW1lbnRzKQorICAgICAgICA6IFBsYXRmb3JtV2hlZWxFdmVudChl
dmVudCkKKyAgICB7CisgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gYXJn
dW1lbnRzLmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICAgICAgbV9oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzID0gYXJndW1lbnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7Cisg
ICAgICAgIG1fcGhhc2UgPSBhcmd1bWVudHMucGhhc2U7CisgICAgICAgIG1fbW9tZW50dW1QaGFz
ZSA9IGFyZ3VtZW50cy5tb21lbnR1bVBoYXNlOworICAgICAgICBtX3Njcm9sbENvdW50ID0gYXJn
dW1lbnRzLnNjcm9sbENvdW50OworICAgICAgICBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0
YVggPSBhcmd1bWVudHMudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICAgICAgbV91
bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZID0gYXJndW1lbnRzLnVuYWNjZWxlcmF0ZWRTY3Jv
bGxpbmdEZWx0YVk7CisgICAgfQorfTsKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworRW5j
b2RlZFZhbHVlIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29kZVZhbHVl
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgaW5wdXQpCit7CisgICAgRW5jb2RlZFZhbHVlIGVu
Y29kZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKKworICAgIEVOQ09ERV9U
WVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9uWCwgaW5wdXQucG9zaXRpb24o
KS54KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0
aW9uWSwgaW5wdXQucG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVu
Y29kZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIGdsb2JhbFBv
c2l0aW9uWSwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJ
VEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSwgaW5wdXQuc2hpZnRLZXkoKSk7Cisg
ICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGN0cmxLZXksIGlucHV0
LmN0cmxLZXkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2ws
IGFsdEtleSwgaW5wdXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29k
ZWREYXRhLCBib29sLCBtZXRhS2V5LCBpbnB1dC5tZXRhS2V5KCkpOworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgZGVsdGFYLCBpbnB1dC5kZWx0YVgoKSk7Cisg
ICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVksIGlucHV0
LmRlbHRhWSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQs
IHdoZWVsVGlja3NYLCBpbnB1dC53aGVlbFRpY2tzWCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRI
X0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHdoZWVsVGlja3NZLCBpbnB1dC53aGVlbFRpY2tzWSgp
KTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2
ZW50R3JhbnVsYXJpdHksIGdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZl
bnRHcmFudWxhcml0eT4oaW5wdXQuZ3JhbnVsYXJpdHkoKSkpOworCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGRpcmVjdGlv
bkludmVydGVkRnJvbURldmljZSwgaW5wdXQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBoYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzLCBpbnB1dC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpOworICAg
IEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZSwgcGhhc2UsIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihpbnB1dC5waGFz
ZSgpKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlLCBtb21lbnR1bVBoYXNlLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZl
bnRQaGFzZT4oaW5wdXQubW9tZW50dW1QaGFzZSgpKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9L
RVkoZW5jb2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGlucHV0LnNjcm9sbENvdW50KCkpOwor
ICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgdW5hY2NlbGVyYXRl
ZFNjcm9sbGluZ0RlbHRhWCwgaW5wdXQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCgpKTsK
KyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHVuYWNjZWxlcmF0
ZWRTY3JvbGxpbmdEZWx0YVksIGlucHV0LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVkoKSk7
CisjZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkRGF0YTsKK30KKworYm9vbCBFbmNvZGluZ1Ry
YWl0czxQbGF0Zm9ybVdoZWVsRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29k
ZWREYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiYgaW5wdXQpCit7Cisg
ICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9u
WCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBv
c2l0aW9uWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBp
bnQsIGdsb2JhbFBvc2l0aW9uWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVu
Y29kZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSk7CisgICAgREVDT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBjdHJsS2V5KTsKKyAgICBERUNPREVf
U0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGFsdEtleSk7CisgICAgREVD
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBtZXRhS2V5KTsKKyAg
ICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVgp
OworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIGRl
bHRhWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9h
dCwgd2hlZWxUaWNrc1gpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVk
RGF0YSwgZmxvYXQsIHdoZWVsVGlja3NZKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9L
RVkoZW5jb2RlZERhdGEsIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5LCBncmFudWxhcml0
eSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRDb2NvYUFy
Z3VtZW50cyBhcmd1bWVudHM7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVu
Y29kZWREYXRhLCBib29sLCBkaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UsIGFyZ3VtZW50cy5k
aXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RP
X0xWQUxVRShlbmNvZGVkRGF0YSwgYm9vbCwgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgYXJn
dW1lbnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpOworICAgIERFQ09ERV9UWVBFX1dJVEhf
S0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIHBoYXNl
LCBhcmd1bWVudHMucGhhc2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShl
bmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIG1vbWVudHVtUGhhc2UsIGFyZ3Vt
ZW50cy5tb21lbnR1bVBoYXNlKTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUo
ZW5jb2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGFyZ3VtZW50cy5zY3JvbGxDb3VudCk7Cisg
ICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBmbG9hdCwgdW5h
Y2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCwgYXJndW1lbnRzLnVuYWNjZWxlcmF0ZWRTY3JvbGxp
bmdEZWx0YVgpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0
YSwgZmxvYXQsIHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVksIGFyZ3VtZW50cy51bmFjY2Vs
ZXJhdGVkU2Nyb2xsaW5nRGVsdGFZKTsKKyNlbmRpZgorCisgICAgUGxhdGZvcm1XaGVlbEV2ZW50
IGV2ZW50KEludFBvaW50KHBvc2l0aW9uWCwgcG9zaXRpb25ZKSwgSW50UG9pbnQoZ2xvYmFsUG9z
aXRpb25YLCBnbG9iYWxQb3NpdGlvblkpLAorICAgICAgICBkZWx0YVgsIGRlbHRhWSwgd2hlZWxU
aWNrc1gsIHdoZWVsVGlja3NZLCBncmFudWxhcml0eSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtl
eSwgbWV0YUtleSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpbnB1dCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Q29jb2E+KGV2ZW50LCBhcmd1bWVudHMpOworI2Vs
c2UKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50PihldmVu
dCk7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRW5jb2RlZFZhbHVlIEVuY29kaW5n
VHJhaXRzPFNlY3VyaXR5T3JpZ2luPjo6ZW5jb2RlVmFsdWUoUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBpbnB1dCkKIHsKICAgICByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmcoaW5wdXQt
PnRvU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6
YXRpb25NZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhv
ZHMuaAppbmRleCA3YWZhMjMyYjYyNmRhMGRhNTA0NDE4MWFiZjUyZjk1MjdkOTcwNWViLi4zNzg5
NWU1YTgyM2Q0NmQ4OWVlYWM4NTMyYWMwZGMyMzkxYTY1ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBG
cmFtZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQ
bGF0Zm9ybU1vdXNlRXZlbnQ7CitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIFVSTDsKIApAQCAtODEsNiArODIsMTMgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiB7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudD4mIHZhbHVlKTsKIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudD4geworICAgIHR5
cGVkZWYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IERlY29kZWRUeXBlOworCisgICAgc3Rh
dGljIEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVs
RXZlbnQmIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUm
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50PiYgdmFsdWUpOwor
fTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6VVJMPiB7CiAg
ICAgdHlwZWRlZiBXZWJDb3JlOjpVUkwgRGVjb2RlZFR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKaW5kZXggMzgzYzA4YzFjZDYyM2Q0OGFiNGUzZTZhZTEw
YmJhYjJkZWE5MzZkYi4uZmM4NDU3YTlmNDgyOTYyZGRlZmFiYTAyNWY2ZTM0YTg5NGFjZTRmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKQEAgLTE2MCw4ICsx
NjAsMTkgQEAgYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUFjY2Vzc0tleUV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5RXZlbnQKICAgICByZXR1cm4gbV9wYWdlLmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZUFj
Y2Vzc0tleShrZXlFdmVudCk7CiB9CiAKLWJvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgSW5wdXRTb3VyY2Up
Citib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIElucHV0U291cmNlIGlucHV0U291cmNlKQogeworI2lmIEVO
QUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERfSUdOT1JFX0lOUFVU
OworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVudD4gb3duZWRFdmVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Pih3aGVlbEV2ZW50KTsKKyAgICAgICAgYWN0aXZlQ3Vy
c29yKCkuYXBwZW5kSW5wdXQ8SGFuZGxlV2hlZWxFdmVudD4oc3RkOjptb3ZlKG93bmVkRXZlbnQp
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7CisjZW5kaWYK
KwogICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hl
ZWxFdmVudCh3aGVlbEV2ZW50KTsKIH0KIApAQCAtMTc1LDEzICsxODYsMzEgQEAgdm9pZCBVc2Vy
SW5wdXRCcmlkZ2U6OmZvY3VzU2V0Rm9jdXNlZChib29sIGZvY3VzZWQsIElucHV0U291cmNlKQog
ICAgIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkKGZvY3VzZWQpOwogfQogCi1i
b29sIFVzZXJJbnB1dEJyaWRnZTo6c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRp
cmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQorYm9v
bCBVc2VySW5wdXRCcmlkZ2U6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiBkaXJl
Y3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBJbnB1dFNvdXJjZSBpbnB1dFNv
dXJjZSkKIHsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBFQVJMWV9SRVRVUk5fSUZfU0hP
VUxEX0lHTk9SRV9JTlBVVDsKKworICAgIGlmIChhY3RpdmVDdXJzb3IoKS5pc0NhcHR1cmluZygp
KQorICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1dDxTY3JvbGxQYWdlPihkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291cmNlKTsK
KyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdy
YW51bGFyaXR5LCBudWxscHRyKTsKIH0KIAotYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmxvZ2ljYWxT
Y3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQorYm9vbCBVc2VySW5wdXRCcmlk
Z2U6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlIGlucHV0U291
cmNlKQogeworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9V
TERfSUdOT1JFX0lOUFVUOworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkp
CisgICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVuZElucHV0PExvZ2ljYWxTY3JvbGxQYWdlPihk
aXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291
cmNlKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHko
ZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9X
ZWJJbnB1dHMuanNvbgppbmRleCBlMjRmZDliYTQ4ODBjMDIzNTY5MmU3M2E2ODU0MTlhNGM2OWM2
MTllLi4zZTZhZWZiMTBmOGVmZDI5MzBmZGMzMmM4ZTU2MDAyNDg1ZGYwOTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1dlYklucHV0cy5qc29uCkBAIC02Myw2ICs2Myw2MCBAQAogICAgICAgICAgICAg
ICAgICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXRmb3JtV2hl
ZWxFdmVudCIsICJtb2RlIjogIk9XTkVEIiwKKyAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0
eSIsICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ2NF90IiwKKyAgICAgICAgICAg
ICAgICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAgICAgICAgICAgICAidmFsdWVzIjogWyJTY3Jv
bGxCeVBhZ2VXaGVlbEV2ZW50IiwgIlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50Il0sCisgICAgICAg
ICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiUGxhdGZv
cm1XaGVlbEV2ZW50UGhhc2UiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50NjRf
dCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAgICAgICAgICAg
Imd1YXJkIjogIlBMQVRGT1JNKENPQ09BKSIsCisgICAgICAgICAgICAgICAgInZhbHVlcyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSIsCisgICAg
ICAgICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuIiwKKyAgICAgICAg
ICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeSIsCisgICAgICAg
ICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQiLAorICAgICAgICAg
ICAgICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCIsCisgICAgICAgICAgICAg
ICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCIsCisgICAgICAgICAgICAg
ICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU1heUJlZ2luIgorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiU2Nyb2xsRGlyZWN0aW9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAidWlu
dDY0X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIlNjcm9sbFVwIiwgIlNjcm9sbERvd24iLCAiU2Nyb2xsTGVmdCIsICJT
Y3JvbGxSaWdodCJdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vU2Nyb2xs
VHlwZXMuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Im5hbWUiOiAiU2Nyb2xsR3JhbnVsYXJpdHkiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6
ICJ1aW50NjRfdCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAg
ICAgICAgICAgInZhbHVlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5TGluZSIs
CisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCeVBhZ2UiLAorICAgICAgICAgICAgICAgICAg
ICAiU2Nyb2xsQnlEb2N1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCeVBpeGVs
IiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5UHJlY2lzZVBpeGVsIgorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2Ui
OiAidWludDY0X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAg
ICAgICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCbG9ja0Rp
cmVjdGlvbkJhY2t3YXJkIiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJsb2NrRGlyZWN0
aW9uRm9yd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJlY3Rpb25C
YWNrd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJlY3Rpb25Gb3J3
YXJkIgorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0
Zm9ybS9TY3JvbGxUeXBlcy5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJTZWN1cml0eU9yaWdpbiIsICJtb2RlIjogIlNIQVJFRCIsCiAg
ICAgICAgICAgICAgICAgImhlYWRlciI6ICJwYWdlL1NlY3VyaXR5T3JpZ2luLmgiCiAgICAgICAg
ICAgICB9LApAQCAtMTQ2LDYgKzIwMCwxNCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAog
ICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJIYW5kbGVXaGVlbEV2ZW50IiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgc2lnbmFsbGVkIGEgbW91c2Ugd2hl
ZWwgZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAg
ICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxhdGZvcm1FdmVu
dCIsICJ0eXBlIjogIlBsYXRmb3JtV2hlZWxFdmVudCIgfQorICAgICAgICAgICAgXQorICAgICAg
ICB9LAorICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJJbml0aWFsTmF2aWdhdGlvbiIs
CiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5pdGlhdGUgdGhlIGluaXRpYWwgbWFpbiBm
cmFtZSBuYXZpZ2F0aW9uLiIsCiAgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCkBA
IC0xNTUsNiArMjE3LDI0IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlw
ZSI6ICJVUkwiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWZlcnJlciIsICJ0eXBl
IjogIlN0cmluZyIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJMb2dpY2FsU2Nyb2xsUGFnZSIsCisgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBhIGxvZ2ljYWwgc2Nyb2xsIGV2ZW50LiIs
CisgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAgICAibWVtYmVy
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpcmVjdGlvbiIsICJ0eXBlIjogIlNj
cm9sbExvZ2ljYWxEaXJlY3Rpb24iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJncmFu
dWxhcml0eSIsICJ0eXBlIjogIlNjcm9sbEdyYW51bGFyaXR5IiB9CisgICAgICAgICAgICBdCisg
ICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjcm9sbFBhZ2UiLAor
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQgYSBzY3Jv
bGwgZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAg
ICAgICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlyZWN0aW9uIiwg
InR5cGUiOiAiU2Nyb2xsRGlyZWN0aW9uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Z3JhbnVsYXJpdHkiLCAidHlwZSI6ICJTY3JvbGxHcmFudWxhcml0eSIgfQorICAgICAgICAgICAg
XQogICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9n
CmluZGV4IGFlMzQ5M2VmYWU5Yzk2MzI3Njc5OTU4N2ZiYTcwNGU1YmMyMGZkY2MuLmMxNjU5ODRh
MThjM2NjNWE3NDViYjczOGUzMjU3ZjM0NzQ0NzFkZjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZwor
KysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0zMSAgQnJpYW4gSi4gQnVy
ZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIFJlcGxheTogY2FwdHVy
ZSBhbmQgcmVwbGF5IHdoZWVsIGV2ZW50cyBhbmQgc2Nyb2xsIGNvbW1hbmRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1hbnVhbFRlc3RzL2luc3Bl
Y3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWw6IEFkZGVkLgorCiAyMDE0LTA0LTAxICBEw6Fu
aWVsIELDoXR5YWkgIDxkYmF0eWFpLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgRml4IHRoZSAhRU5BQkxFKEJBVFRFUllfU1RBVFVTKSBidWlsZApkaWZmIC0tZ2l0IGEv
TWFudWFsVGVzdHMvaW5zcGVjdG9yL3JlcGxheS13aGVlbC1ldmVudHMuaHRtbCBiL01hbnVhbFRl
c3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM4ZGYw
YzhmOTcxZDdkM2EzOTNmZmE2NWQxMGNmOWZkMjZkMTZlZAotLS0gL2Rldi9udWxsCisrKyBiL01h
bnVhbFRlc3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw4
NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIgor
ICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9jcnlwdG8tbWQ1Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorCisgICAgZG9jdW1lbnQub25tb3VzZXdoZWVsID0g
aGFuZGxlRXZlbnQ7CisgICAgCisgICAgd2luZG93LmR1bXBlZEV2ZW50cyA9IFtdOworICAgIAor
ICAgIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7CisgICAgICAgIHZhciBwcm9wZXJ0aWVz
ID0gWyJ0eXBlIiwgImV2ZW50UGhhc2UiLCAiYnViYmxlcyIsICJjYW5jZWxhYmxlIiwgInNjcmVl
blgiLCAic2NyZWVuWSIsICJjbGllbnRYIiwgImNsaWVudFkiLCAiY3RybEtleSIsICJzaGlmdEtl
eSIsICJhbHRLZXkiLCAibWV0YUtleSIsICJidXR0b24iLCAiZGVsdGFYIiwgImRlbHRhWSIsICJk
ZWx0YVoiLCAiZGVsdGFNb2RlIiwgIndoZWVsRGVsdGFYIiwgIndoZWVsRGVsdGFZIl07CisgICAg
ICAgIG9iaiA9IHt9OworICAgICAgICBmb3IgKHZhciBrZXkgb2YgcHJvcGVydGllcykKKyAgICAg
ICAgICAgIG9ialtrZXldID0gZXZlbnRba2V5XTsKKyAgICAKKyAgICAgICAgZHVtcGVkRXZlbnRz
LnB1c2gob2JqKTsKKworICAgICAgICB2YXIgYmxvY2sgPSBjcmVhdGVCbG9jayhoZXhfbWQ1KEpT
T04uc3RyaW5naWZ5KG9iaikpKTsKKyAgICAgICAgdmFyIGJsb2Nrc0NvbnRhaW5lciA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJibG9ja3MiKTsKKyAgICAgICAgYmxvY2tzQ29udGFpbmVyLmFw
cGVuZENoaWxkKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHZhciBoYXNoTGFiZWwgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiaGFzaCIpOworICAgICAgICBoYXNoLnRleHRDb250ZW50ID0g
aGV4X21kNShKU09OLnN0cmluZ2lmeShkdW1wZWRFdmVudHMpKTsKKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gY3JlYXRlQmxvY2soaGFzaCkgeworICAgICAgICB2YXIgY29sb3IgPSAiIyIgKyBo
YXNoLnN1YnN0cigwLDYpOworICAgICAgICB2YXIgYmxvY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CisgICAgICAgIGJsb2NrLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9y
OworICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHN0YXRl
SGFzaCgpIHsKKyAgICAgICAgcmV0dXJuIGhleF9tZDUoSlNPTi5zdHJpbmdpZnkoZHVtcGVkRXZl
bnRzKSk7CisgICAgfQorICAgIAorPC9zY3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
Citib2R5IHsKKyAgICBtYXgtd2lkdGg6IDgwMHB4OworfQorI2Jsb2NrcyB7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1mbGV4OworICAgIHdpZHRoOiA2MDBweDsKKyAgICAtd2Via2l0LWZsZXgtZmxv
dzogcm93IHdyYXA7Cit9CisgICAgCisjYmxvY2tzID4gc3BhbiB7CisgICAgd2lkdGg6IDEwcHg7
CisgICAgaGVpZ2h0OiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICB0ZXh0LWFs
aWduOiBjZW50ZXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHBhZ2Ug
aXMgYSBtYW51YWwgdGVzdCBmb3IgY2FwdHVyZSBhbmQgcmVwbGF5IG9mIHNjcm9sbC1yZWxhdGVk
IERPTSBldmVudHMuPC9wPgorPHA+QmVsb3csIGEgYmxvY2sgaXMgY3JlYXRlZCBmb3IgZWFjaCBt
b3VzZXdoZWVsIGV2ZW50LCB3aGVyZSB0aGUgY29sb3IgaXMgZGVyaXZlZCBmcm9tIGEgaGFzaCBv
ZiB0aGUgZXZlbnQgZGF0YS4gQXQgdGhlIGJvdHRvbSBpcyBhIGN1bXVsYXRpdmUgaGFzaCBvZiBh
bGwgZXZlbnQgZGF0YS48L3A+Cis8aHIvPgorPHRleHRhcmVhIHJvd3M9IjMiPgorCitUaGlzIGlz
IGEgc2Nyb2xsYWJsZSB0ZXh0YXJlYS4KKworLgorCisuLgorCisuLi4KKworLi4uLgorCisuLi4u
LgorCis8L3RleHRhcmVhPgorPHA+CitUbyB0ZXN0IHRoZSByZXBsYXkgZnVuY3Rpb25hbGl0eSwg
b3BlbiB0aGUgV2ViIEluc3BlY3Rvciwgc3RhcnQgY2FwdHVyaW5nLCBhbmQgdGhlbiBzY3JvbGwg
ZWFjaCBvZiB0aGUgaWZyYW1lLCBvdmVyZmxvdzpzY3JvbGwgZWxlbWVudCwgYW5kIHRoZSBtYWlu
IHBhZ2UncyBmbG93ZWQgdGV4dC4gQWZ0ZXIgc29tZSB0aW1lLCBzdG9wIGNhcHR1cmluZyBhbmQg
dGhlbiByZXBsYXkuPC9wPgorPHA+VGhlIHJlcGxheWVkIGV4ZWN1dGlvbiBzaG91bGQgcHJvZHVj
ZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBibG9ja3MsIGFuZCBwYWdlIGNvbnRlbnRzIHNob3VsZCBz
Y3JvbGwgdGhlIHNhbWUgZGlzdGFuY2UgYW5kIHNwZWVkLiBNb3JlIGltcG9ydGFudGx5LCB0aGUg
Y3VtdWxhdGl2ZSBoYXNoIHZhbHVlIHNob3VsZCBiZSB0aGUgc2FtZSBhdCB0aGUgZW5kIG9mIGNh
cHR1cmluZyBhbmQgYXQgdGhlIGVuZCBvZiBhbnkgc3Vic2VxdWVudCByZXBsYXlzLjwvcD4KKzwv
cD4KKzxoci8+Cis8ZGl2IGlkPSJoYXNoIj48L2Rpdj4KKzxkaXYgaWQ9ImJsb2NrcyI+PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228424</attachid>
            <date>2014-04-02 13:36:00 -0700</date>
            <delta_ts>2014-07-23 14:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129402-20140402133539.patch</filename>
            <type>text/plain</type>
            <size>36799</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjMzZGZiZTUzZDQ2NmFi
MGNlMTFjZWRjY2ZkYmQ3ZTA4MTI1NzBlMS4uODU0NmE5MTc5NjhiYWNlNzlhN2E4NGNkMmFmMTkw
NmFlYTUwNTYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTAzLTMxICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBjYXB0dXJlIGFuZCByZXBsYXkgd2hlZWwgZXZlbnRzIGFuZCBzY3JvbGwgY29tbWFuZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTQwMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlciBhbmQgU2ltb24gRnJhc2VyLgorCisg
ICAgICAgIFRvIGNhcHR1cmUgYW5kIHJlcGxheSBzY3JvbGxpbmcsIHRoZSBzY3JvbGxpbmcgY29v
cmRpbmF0b3Igd2lsbCBmb3JjZSBzeW5jaHJvbm91cyAKKyAgICAgICAgc2Nyb2xsaW5nIGR1cmlu
ZyBjYXB0dXJlIGFuZCByZXBsYXkuIElmIHRoZSBwYWdlIGlzIGNhcHR1cmluZyBvciByZXBsYXlp
bmcsCisgICAgICAgIEZvcmNlT25NYWluVGhyZWFkIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNvb3Jk
aW5hdG9yJ3MgU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zLgorCisgICAgICAgIEEgY2FsbGJh
Y2sgd2FzIGFkZGVkIHRvIHNpZ25hbCB0aGF0IHJlcGxheSBzZXNzaW9uIHN0YXRlIGhhdmUgY2hh
bmdlZCwKKyAgICAgICAgYW5kIHRodXMgdGhlIHN5bmNocm9ub3VzIHNjcm9sbGluZyByZWFzb25z
IHNob3VsZCBiZSByZWNvbXB1dGVkLgorCisgICAgICAgIEF1dG9tYXRlZCByZXBsYXkgcmVmdGVz
dHMgZm9yIHNjcm9sbGluZyBhcmUgbm90IGluY2x1ZGVkLCBiZWNhdXNlIHRoZXkgd2lsbCBiZQor
ICAgICAgICB0b28gZmxha3kgdW50aWwgbW9yZSBub25kZXRlcm1pbmlzbSBpcyBoYW5kbGVkLiBT
cGVjaWZpY2FsbHksIHJlc291cmNlIGxvYWRpbmcsCisgICAgICAgIGluaXRpYWwgZm9jdXMvYWN0
aXZlIHN0YXRlLCBhbmQgcGFyc2luZyBhcmUga25vd24gYmxvY2tpbmcgaXNzdWVzLgorCisgICAg
ICAgIFRlc3Q6IE1hbnVhbFRlc3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwK
KworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDogQWRk
IGEgbmV3IGNhbGxiYWNrIGZvciByZXBsYXkgc3RhdGUKKyAgICAgICAgc2Vzc2lvbiBjaGFuZ2Vz
LiBBZGQgRm9yY2VPbk1haW5UaHJlYWQgaWYgdGhlIHBhZ2UncyBhY3RpdmUgaW5wdXQgY3Vyc29y
IGlzCisgICAgICAgIGNhcHR1cmluZyBvciByZXBsYXlpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcGxheVNlc3Npb25TdGF0ZURp
ZENoYW5nZSk6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOiBBZGQgZXhwbGljaXQgZW51bSBzdG9yYWdl
IHR5cGVzIHNvIHRoZXNlIGVudW1zIGNhbgorICAgICAgICBiZSBmb3J3YXJkLWRlY2xhcmVkLiBU
aGlzIGlzIG5lY2Vzc2FyeSB0byBnZW5lcmF0ZSBlbnVtIGVuY29kZS9kZWNvZGUgaW1wbGVtZW50
YXRpb25zLgorCisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c2V0Rm9yY2VEZXRlcm1pbmlzdGljU2V0dGlu
Z3MpOiBJZiBhc3luYyBzY3JvbGxpbmcKKyAgICAgICAgc3VwcG9ydCBpcyBhdmFpbGFibGUsIHRl
bGwgdGhlIHNjcm9sbGluZyB0cmVlIHRvIGJlaGF2ZSBkZXRlcm1pbmlzdGljYWxseS4KKworICAg
ICAgICAqIHJlcGxheS9SZXBsYXlJbnB1dERpc3BhdGNoTWV0aG9kcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIYW5kbGVXaGVlbEV2ZW50OjpkaXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TG9naWNhbFNjcm9sbFBhZ2U6OmRpc3BhdGNoKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxQYWdlOjpkaXNwYXRjaCk6IEFkZGVkLgorICAgICAgICAqIHJlcGxheS9TZXJp
YWxpemF0aW9uTWV0aG9kcy5jcHA6IEludHJvZHVjZSBtb3JlIHNwZWNpZmljIG1hY3JvcyBmb3Ig
dmFsdWVzCisgICAgICAgIGRlc2VyaWFsaXplZCB0byBhcmJpdHJhcmF5IGx2YWx1ZXMsIHNjYWxh
cnMsIFJlZlB0ciwgYW5kIHVuaXF1ZV9wdHIuIEZpeCBleGlzdGluZworICAgICAgICB1c2VzIG9m
IGRlY29kZSBtYWNyb3MuCisKKyAgICAgICAgKEpTQzo6RW5jb2RpbmdUcmFpdHM8Tm9uZGV0ZXJt
aW5pc3RpY0lucHV0QmFzZT46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAg
IChKU0M6OkVuY29kaW5nVHJhaXRzPEtleXByZXNzQ29tbWFuZD46OmVuY29kZVZhbHVlKTogRml4
IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtS2V5Ym9h
cmRFdmVudD46OmVuY29kZVZhbHVlKTogRml4IG1hY3JvIG5hbWUuCisgICAgICAgIChKU0M6OkVu
Y29kaW5nVHJhaXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKTogRml4IG1hY3Jv
IG5hbWUuCisgICAgICAgIChKU0M6OlBsYXRmb3JtV2hlZWxFdmVudENvY29hOjpQbGF0Zm9ybVdo
ZWVsRXZlbnRDb2NvYSk6IEFkZGVkLiBFbmNhcHN1bGF0ZQorICAgICAgICBhbmQgaW5pdGlhbGl6
ZSBkYXRhIG1lbWJlcnMgc3BlY2lmaWMgdG8gUExBVEZPUk0oQ09DT0EpLgorCisgICAgICAgIChK
U0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29kZVZhbHVlKTogQWRk
ZWQuCisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmRl
Y29kZVZhbHVlKTogQWRkZWQuCisgICAgICAgICogcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2Rz
Lmg6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHA6IEZpbGwgaW4gYnJpZGdl
IG1ldGhvZHMgdG8gY2FwdHVyZSBpbnB1dHMuCisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRC
cmlkZ2U6OmhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJp
ZGdlOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlk
Z2U6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6CisgICAgICAgICogcmVwbGF5L1dlYklucHV0
cy5qc29uOiBBZGQgaW5wdXRzIGFuZCBuZXcgZW51bSB0eXBlcy4KKwogMjAxNC0wNC0wMiAgTWFy
dGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93
c2luZyB3aXRoIHNlc3Npb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDhkYWQxNjAwNDdmZmE0ZDFhZDFh
ZWUyZmE5MjI2M2IxOWM1ZjI2OTkuLjc3MDFiYzY2MTJmYzY1YjVkNjBhMjQ1Yjk5ZThmNjVjMDA5
N2Q0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQ2LDYgKzQ2LDExIEBACiAjaW5jbHVkZSAiU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfUkVQTEFZKQorI2luY2x1ZGUgIlJlcGxheUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxy
ZXBsYXkvSW5wdXRDdXJzb3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCkBAIC0yOTksNiArMzA0LDExIEBAIFN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zKCkKIAogICAgIGlmIChtX2ZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9uVXBk
YXRlcykKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEZvcmNlZE9uTWFp
blRocmVhZDsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29y
ID0gbV9wYWdlLT5yZXBsYXlDb250cm9sbGVyKCkuYWN0aXZlSW5wdXRDdXJzb3IoKTsKKyAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkgfHwgY3Vyc29yLmlzUmVwbGF5aW5nKCkpCisgICAgICAg
IHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBGb3JjZWRPbk1haW5UaHJlYWQ7CisjZW5k
aWYKICAgICBpZiAoZnJhbWVWaWV3LT5oYXNTbG93UmVwYWludE9iamVjdHMoKSkKICAgICAgICAg
c3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIHw9IEhhc1Nsb3dSZXBhaW50T2JqZWN0czsKICAg
ICBpZiAoIXN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZyYW1lVmlldy0+aGFzVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSkKQEAgLTMyNSw2ICszMzUsMTMgQEAgdm9pZCBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2V0Rm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25V
cGRhdGVzKGJvb2wgZm8KICAgICB1cGRhdGVTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMoKTsK
IH0KIAorI2lmIEVOQUJMRShXRUJfUkVQTEFZKQordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
cmVwbGF5U2Vzc2lvblN0YXRlRGlkQ2hhbmdlKCkKK3sKKyAgICB1cGRhdGVTeW5jaHJvbm91c1Nj
cm9sbGluZ1JlYXNvbnMoKTsKK30KKyNlbmRpZgorCiBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnVuaXF1ZVNjcm9sbExheWVySUQoKQogewogICAgIHN0YXRpYyBTY3JvbGxp
bmdOb2RlSUQgdW5pcXVlU2Nyb2xsTGF5ZXJJRCA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA5ZGNiOGZiMDI5
NGJlNTBmZGYzNTQ1NmY3YmU2ODM4MDRhY2NiNGM2Li43ODljNTE0NDlkNDljN2Q4Y2Y4NzVmZmU3
ZDc1ODBiNDFiNDU2Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE0MCw2ICsxNDAsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCisgICAgLy8gQ2FsbGVkIHdoZW4gdGhl
IHBhZ2UgdHJhbnNpdGlvbnMgYmV0d2VlbiBleGVjdXRpbmcgbm9ybWFsbHkgYW5kIGRldGVybWlu
aXN0aWNhbGx5LgorICAgIHZvaWQgcmVwbGF5U2Vzc2lvblN0YXRlRGlkQ2hhbmdlKCk7CisjZW5k
aWYKKwogICAgIC8vIEZvcmNlIGFsbCBzY3JvbGwgbGF5ZXIgcG9zaXRpb24gdXBkYXRlcyB0byBo
YXBwZW4gb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgc2V0Rm9yY2VTeW5jaHJvbm91c1Nj
cm9sbExheWVyUG9zaXRpb25VcGRhdGVzKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGFhMzA4ZjhlZWU4OTI5ZDY4Mjc4NzVmODdk
NDIxZWI2MjgzMWQ0NTUuLjYyZmRiNjYxYTA2OWZmNjA2MWE2ZTY1OTI3ZTRlMTJjZmYyYzJmMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC00
OCwxMyArNDgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGFuZCBzeW50aGVzaXpl
ZCBpbiBvdGhlciBjYXNlcyB3aGVyZSBwbGF0Zm9ybXMgZ2VuZXJhdGUgbGluZS1ieS1saW5lIHNj
cm9sbGluZyBldmVudHMuCiAgICAgLy8gVGhlIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgaW5kaWNh
dGVzIHRoYXQgdGhlIHdoZWVsIGV2ZW50IHNob3VsZCBzY3JvbGwgYW4gZW50aXJlIHBhZ2UuICBJ
biB0aGlzIGNhc2UgV2ViQ29yZSdzIGJ1aWx0IGluIHBhZ2luZyBiZWhhdmlvciBpcyB1c2VkIHRv
IHBhZ2UKICAgICAvLyB1cCBhbmQgZG93biAoeW91IGdldCB0aGUgc2FtZSBiZWhhdmlvciBhcyBp
ZiB0aGUgdXNlciB3YXMgY2xpY2tpbmcgaW4gYSBzY3JvbGxiYXIgdHJhY2sgdG8gcGFnZSB1cCBv
ciBwYWdlIGRvd24pLgotICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgewor
ICAgIGVudW0gUGxhdGZvcm1XaGVlbEV2ZW50R3JhbnVsYXJpdHkgOiB1aW50NjRfdCB7CiAgICAg
ICAgIFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQsCiAgICAgICAgIFNjcm9sbEJ5UGl4ZWxXaGVlbEV2
ZW50LAogICAgIH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBlbnVtIFBsYXRmb3JtV2hl
ZWxFdmVudFBoYXNlIHsKKyAgICBlbnVtIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIDogdWludDY0
X3QgewogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU5vbmUgICAgICAgID0gMCwKICAg
ICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VCZWdhbiAgICAgICA9IDEgPDwgMCwKICAgICAg
ICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VTdGF0aW9uYXJ5ICA9IDEgPDwgMSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IGM5OGQ3Nzg1YjNmMTI2YzA1YTM4MDFjY2Jm
ODI5ZjY3NmU4YzU3NjQuLjVmZDM1YzkyMjE2NWNkYTdiZGJmZDczOTk5YTFjMzFiOWY3NDE2YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGVudW0gU2Nyb2xsRGlyZWN0aW9uIHsKKyAg
ICBlbnVtIFNjcm9sbERpcmVjdGlvbiA6IHVpbnQ2NF90IHsKICAgICAgICAgU2Nyb2xsVXAsCiAg
ICAgICAgIFNjcm9sbERvd24sCiAgICAgICAgIFNjcm9sbExlZnQsCiAgICAgICAgIFNjcm9sbFJp
Z2h0CiAgICAgfTsKIAotICAgIGVudW0gU2Nyb2xsTG9naWNhbERpcmVjdGlvbiB7CisgICAgZW51
bSBTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIDogdWludDY0X3QgewogICAgICAgICBTY3JvbGxCbG9j
a0RpcmVjdGlvbkJhY2t3YXJkLAogICAgICAgICBTY3JvbGxCbG9ja0RpcmVjdGlvbkZvcndhcmQs
CiAgICAgICAgIFNjcm9sbElubGluZURpcmVjdGlvbkJhY2t3YXJkLApAQCAtMTAzLDcgKzEwMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIFNjcm9sbFVwOwogICAgIH0K
IAotICAgIGVudW0gU2Nyb2xsR3JhbnVsYXJpdHkgeworICAgIGVudW0gU2Nyb2xsR3JhbnVsYXJp
dHkgOiB1aW50NjRfdCB7CiAgICAgICAgIFNjcm9sbEJ5TGluZSwKICAgICAgICAgU2Nyb2xsQnlQ
YWdlLAogICAgICAgICBTY3JvbGxCeURvY3VtZW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Jl
cGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IGVkZmM5ZWIwYjQ2MzAzZDA2ZTNlOWIyMWI3YTFjZDBj
MzYxMTM1ZWYuLmM5MDdiYTI2MDBlMTgzNTRjYmNkYzMxOTcyMzdlYmRjMDUxNDQxNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTUwLDYgKzUwLDEw
IEBACiAjaW5jbHVkZSA8cmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorI2luY2x1ZGUg
IlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBSZXBsYXlDb250cm9sbGVyOjpSZXBsYXlDb250cm9sbGVyKFBhZ2UmIHBhZ2UpCkBAIC02Niwx
NyArNzAsMjAgQEAgUmVwbGF5Q29udHJvbGxlcjo6UmVwbGF5Q29udHJvbGxlcihQYWdlJiBwYWdl
KQogewogfQogCi12b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldEZvcmNlRGV0ZXJtaW5pc3RpY1Nl
dHRpbmdzKGJvb2wgc2hvdWxkRm9yY2UpCit2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnNldEZvcmNl
RGV0ZXJtaW5pc3RpY1NldHRpbmdzKGJvb2wgc2hvdWxkRm9yY2VEZXRlcm1pbmlzdGljQmVoYXZp
b3IpCiB7Ci0gICAgQVNTRVJUKHNob3VsZEZvcmNlIF4gKG1fc2Vzc2lvblN0YXRlID09IFNlc3Np
b25TdGF0ZTo6SW5hY3RpdmUpKTsKKyAgICBBU1NFUlQoc2hvdWxkRm9yY2VEZXRlcm1pbmlzdGlj
QmVoYXZpb3IgXiAobV9zZXNzaW9uU3RhdGUgPT0gU2Vzc2lvblN0YXRlOjpJbmFjdGl2ZSkpOwog
Ci0gICAgaWYgKHNob3VsZEZvcmNlKSB7CisgICAgaWYgKHNob3VsZEZvcmNlRGV0ZXJtaW5pc3Rp
Y0JlaGF2aW9yKSB7CiAgICAgICAgIG1fc2F2ZWRTZXR0aW5ncy51c2VzUGFnZUNhY2hlID0gbV9w
YWdlLnNldHRpbmdzKCkudXNlc1BhZ2VDYWNoZSgpOwogCiAgICAgICAgIG1fcGFnZS5zZXR0aW5n
cygpLnNldFVzZXNQYWdlQ2FjaGUoZmFsc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcGFn
ZS5zZXR0aW5ncygpLnNldFVzZXNQYWdlQ2FjaGUobV9zYXZlZFNldHRpbmdzLnVzZXNQYWdlQ2Fj
aGUpOwogICAgIH0KKworICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29v
cmRpbmF0b3IgPSBtX3BhZ2Uuc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAgc2Nyb2xs
aW5nQ29vcmRpbmF0b3ItPnJlcGxheVNlc3Npb25TdGF0ZURpZENoYW5nZSgpOwogfQogCiB2b2lk
IFJlcGxheUNvbnRyb2xsZXI6OnNldFNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc3RhdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1ldGhv
ZHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0RGlzcGF0Y2hNZXRob2Rz
LmNwcAppbmRleCAxMDQ1ZTY1YmY4MDZjMmViZGI2ZjBhYzAyOTIzZmE2NjAxN2U2NzNhLi5mYmE2
N2RjYzkxNjIyZDc2ZDc0NzNlMTFhNGQ0ZWE2NGM5NGYzNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXREaXNwYXRjaE1ldGhvZHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dERpc3BhdGNoTWV0aG9kcy5jcHAKQEAgLTc3LDYg
Kzc3LDIxIEBAIHZvaWQgSGFuZGxlTW91c2VSZWxlYXNlOjpkaXNwYXRjaChSZXBsYXlDb250cm9s
bGVyJiBjb250cm9sbGVyKQogICAgIGNvbnRyb2xsZXIucGFnZSgpLnVzZXJJbnB1dEJyaWRnZSgp
LmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KHBsYXRmb3JtRXZlbnQoKSwgSW5wdXRTb3VyY2U6OlN5
bnRoZXRpYyk7CiB9CiAKK3ZvaWQgSGFuZGxlV2hlZWxFdmVudDo6ZGlzcGF0Y2goUmVwbGF5Q29u
dHJvbGxlciYgY29udHJvbGxlcikKK3sKKyAgICBjb250cm9sbGVyLnBhZ2UoKS51c2VySW5wdXRC
cmlkZ2UoKS5oYW5kbGVXaGVlbEV2ZW50KHBsYXRmb3JtRXZlbnQoKSwgSW5wdXRTb3VyY2U6OlN5
bnRoZXRpYyk7Cit9CisKK3ZvaWQgTG9naWNhbFNjcm9sbFBhZ2U6OmRpc3BhdGNoKFJlcGxheUNv
bnRyb2xsZXImIGNvbnRyb2xsZXIpCit7CisgICAgY29udHJvbGxlci5wYWdlKCkudXNlcklucHV0
QnJpZGdlKCkubG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbigpLCBncmFudWxhcml0
eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30KKwordm9pZCBTY3JvbGxQYWdlOjpkaXNw
YXRjaChSZXBsYXlDb250cm9sbGVyJiBjb250cm9sbGVyKQoreworICAgIGNvbnRyb2xsZXIucGFn
ZSgpLnVzZXJJbnB1dEJyaWRnZSgpLnNjcm9sbFJlY3Vyc2l2ZWx5KGRpcmVjdGlvbigpLCBncmFu
dWxhcml0eSgpLCBJbnB1dFNvdXJjZTo6U3ludGhldGljKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcAppbmRleCA1Y2I5ZWYxNmEzZDA2NzM1
OTcwYTI5NmFmMzQzY2Y5ZTQ3NDhkZjZmLi43MjY0NWIzNTc2MGEzN2U2NjExZWYzNDMxNzk5MDgw
M2M0NTY4MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlv
bk1ldGhvZHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZXJpYWxpemF0aW9uTWV0
aG9kcy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBbGxSZXBsYXlJbnB1dHMuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJS
ZXBsYXlJbnB1dFR5cGVzLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVUkwuaCIKQEAgLTQ0LDMxICs0NSw1NSBAQCB1c2luZyBXZWJDb3JlOjpNb3VzZUJ1dHRvbjsK
IHVzaW5nIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ7CiB1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQ7Cit1c2luZyBX
ZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQ7Cit1c2luZyBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVs
RXZlbnRHcmFudWxhcml0eTsKIHVzaW5nIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOwogdXNpbmcg
V2ViQ29yZTo6VVJMOwogdXNpbmcgV2ViQ29yZTo6aW5wdXRUeXBlczsKIAorI2lmIFBMQVRGT1JN
KENPQ09BKQordXNpbmcgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U7CisjZW5kaWYK
KwogI2RlZmluZSBJTVBPUlRfRlJPTV9XRUJDT1JFX05BTUVTUEFDRShuYW1lKSBcCiB1c2luZyBX
ZWJDb3JlOjpuYW1lOyBcCiAKIFdFQl9SRVBMQVlfSU5QVVRfTkFNRVNfRk9SX0VBQ0goSU1QT1JU
X0ZST01fV0VCQ09SRV9OQU1FU1BBQ0UpCiAjdW5kZWYgSU1QT1JUX0ZST01fV0VCQ09SRV9OQU1F
U1BBQ0UKIAotI2RlZmluZSBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1
ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSkgXAorI2RlZmluZSBFTkNPREVfVFlQRV9XSVRIX0tFWShf
ZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKSBcCiAgICAgX2VuY29kZWRWYWx1ZS5w
dXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF92YWx1ZSkKIAotI2RlZmluZSBERUNPREVf
U0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKLSAgICBf
dHlwZSBfa2V5OyBcCi0gICAgaWYgKCFfZW5jb2RlZFZhbHVlLmdldDxfdHlwZT4oQVNDSUlMaXRl
cmFsKCNfa2V5KSwgX2tleSkpIFwKKyNkZWZpbmUgRU5DT0RFX09QVElPTkFMX1RZUEVfV0lUSF9L
RVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF92YWx1ZSwgY29uZGl0aW9uKSBcCisgICAg
aWYgKGNvbmRpdGlvbikgXAorICAgICAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZh
bHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlKQorCisjZGVmaW5lIERFQ09ERV9UWVBFX1dJVEhfS0VZ
X1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2x2YWx1ZSkgXAorICAgIGlm
ICghX2VuY29kZWRWYWx1ZS5nZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9sdmFsdWUp
KSBcCiAgICAgICAgIHJldHVybiBmYWxzZQogCi0jZGVmaW5lIEVOQ09ERV9PUFRJT05BTF9TQ0FM
QVJfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX3ZhbHVlLCBjb25k
aXRpb24pIFwKLSAgICBpZiAoY29uZGl0aW9uKSBcCi0gICAgICAgIF9lbmNvZGVkVmFsdWUucHV0
PF90eXBlPihBU0NJSUxpdGVyYWwoI19rZXkpLCBfdmFsdWUpCisjZGVmaW5lIERFQ09ERV9PUFRJ
T05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwg
X2x2YWx1ZSkgXAorICAgIGJvb2wgX2tleSAjIyBXYXNEZWNvZGVkID0gX2VuY29kZWRWYWx1ZS5n
ZXQ8X3R5cGU+KEFTQ0lJTGl0ZXJhbCgjX2tleSksIF9sdmFsdWUpCisKKyNkZWZpbmUgREVDT0RF
X1JFRkNPVU5URURfVFlQRV9XSVRIX0tFWShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSkgXAor
ICAgIFJlZlB0cjxfdHlwZT4gX2tleTsgXAorICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xW
QUxVRShfZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKKworI2RlZmluZSBERUNPREVf
VU5JUVVFX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8X3R5cGU+IF9rZXk7IFwKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9U
T19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9rZXkpCisKKyNkZWZpbmUgREVD
T0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKF9lbmNvZGVkVmFsdWUsIF90eXBlLCBfa2V5KSBcCisg
ICAgX3R5cGUgX2tleTsgXAorICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5j
b2RlZFZhbHVlLCBfdHlwZSwgX2tleSwgX2tleSkKIAogI2RlZmluZSBERUNPREVfT1BUSU9OQUxf
U0NBTEFSX1RZUEVfV0lUSF9LRVkoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXkpIFwKICAgICBf
dHlwZSBfa2V5OyBcCi0gICAgYm9vbCBfa2V5ICMjIFdhc0RlY29kZWQgPSBfZW5jb2RlZFZhbHVl
LmdldDxfdHlwZT4oQVNDSUlMaXRlcmFsKCNfa2V5KSwgX2tleSkKKyAgICBERUNPREVfT1BUSU9O
QUxfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoX2VuY29kZWRWYWx1ZSwgX3R5cGUsIF9rZXksIF9r
ZXkpCisKKyNkZWZpbmUgREVDT0RFX09QVElPTkFMX1JFRkNPVU5URURfVFlQRV9XSVRIX0tFWShf
ZW5jb2RlZFZhbHVlLCBfdHlwZSwgX2tleSkgXAorICAgIFJlZlB0cjxfdHlwZT4gX2tleTsgXAor
ICAgIERFQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShfZW5jb2RlZFZhbHVl
LCBfdHlwZSwgX2tleSwgX2tleSkKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc3LDcgKzEwMiw3
IEBAIEVuY29kZWRWYWx1ZSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNl
Pjo6ZW5jb2RlVmFsdWUoY29uc3QgTm9uZGV0CiAgICAgRW5jb2RlZFZhbHVlIGVuY29kZWRWYWx1
ZSA9IEVuY29kZWRWYWx1ZTo6Y3JlYXRlT2JqZWN0KCk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlID0gaW5wdXQudHlwZSgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0eXBlLCB0eXBlLnN0cmluZygpKTsKKyAgICBFTkNPREVf
VFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdHlwZSwgdHlwZS5zdHJpbmcoKSk7
CiAKICNkZWZpbmUgRU5DT0RFX0lGX1RZUEVfVEFHX01BVENIRVMobmFtZSkgXAogICAgIGlmICh0
eXBlID09IGlucHV0VHlwZXMoKS5uYW1lKSB7IFwKQEAgLTEzNCw4ICsxNTksOCBAQCBFbmNvZGVk
VmFsdWUgRW5jb2RpbmdUcmFpdHM8S2V5cHJlc3NDb21tYW5kPjo6ZW5jb2RlVmFsdWUoY29uc3Qg
S2V5cHJlc3NDb21tYW5kJgogewogICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkVmFsdWUgPSBFbmNv
ZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCBjb21tYW5kTmFtZSwgY29tbWFuZC5jb21tYW5kTmFt
ZSk7Ci0gICAgRU5DT0RFX09QVElPTkFMX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1
ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFjb21tYW5kLnRleHQuaXNFbXB0eSgpKTsK
KyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgY29tbWFuZE5h
bWUsIGNvbW1hbmQuY29tbWFuZE5hbWUpOworICAgIEVOQ09ERV9PUFRJT05BTF9UWVBFX1dJVEhf
S0VZKGVuY29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBjb21tYW5kLnRleHQsICFjb21tYW5kLnRl
eHQuaXNFbXB0eSgpKTsKIAogICAgIHJldHVybiBlbmNvZGVkVmFsdWU7CiB9CkBAIC0xNjQsMjEg
KzE4OSwyMSBAQCBFbmNvZGVkVmFsdWUgRW5jb2RpbmdUcmFpdHM8UGxhdGZvcm1LZXlib2FyZEV2
ZW50Pjo6ZW5jb2RlVmFsdWUoY29uc3QgUGxhdGZvcm1LZQogewogICAgIEVuY29kZWRWYWx1ZSBl
bmNvZGVkVmFsdWUgPSBFbmNvZGVkVmFsdWU6OmNyZWF0ZU9iamVjdCgpOwogCi0gICAgRU5DT0RF
X1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgZG91YmxlLCB0aW1lc3RhbXAsIGlu
cHV0LnRpbWVzdGFtcCgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2Rl
ZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBlKCkpOwotICAgIEVO
Q09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6Ok1v
ZGlmaWVycywgbW9kaWZpZXJzLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+
KGlucHV0Lm1vZGlmaWVycygpKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVu
Y29kZWRWYWx1ZSwgU3RyaW5nLCB0ZXh0LCBpbnB1dC50ZXh0KCkpOwotICAgIEVOQ09ERV9TQ0FM
QVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywgdW5tb2RpZmllZFRleHQsIGlu
cHV0LnVubW9kaWZpZWRUZXh0KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShl
bmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwgaW5wdXQua2V5SWRlbnRpZmllcigp
KTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIHdp
bmRvd3NWaXJ0dWFsS2V5Q29kZSwgaW5wdXQud2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpOwotICAg
IEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbmF0aXZlVmly
dHVhbEtleUNvZGUsIGlucHV0Lm5hdGl2ZVZpcnR1YWxLZXlDb2RlKCkpOwotICAgIEVOQ09ERV9T
Q0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNvZGUsIGlucHV0
Lm1hY0NoYXJDb2RlKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVk
VmFsdWUsIGJvb2wsIGF1dG9SZXBlYXQsIGlucHV0LmlzQXV0b1JlcGVhdCgpKTsKLSAgICBFTkNP
REVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBrZXlwYWQsIGlucHV0
LmlzS2V5cGFkKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFs
dWUsIGJvb2wsIHN5c3RlbUtleSwgaW5wdXQuaXNTeXN0ZW1LZXkoKSk7CisgICAgRU5DT0RFX1RZ
UEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBkb3VibGUsIHRpbWVzdGFtcCwgaW5wdXQudGltZXN0
YW1wKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgUGxhdGZvcm1F
dmVudDo6VHlwZSwgdHlwZSwgaW5wdXQudHlwZSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tF
WShlbmNvZGVkVmFsdWUsIFBsYXRmb3JtRXZlbnQ6Ok1vZGlmaWVycywgbW9kaWZpZXJzLCBzdGF0
aWNfY2FzdDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnM+KGlucHV0Lm1vZGlmaWVycygpKSk7Cisg
ICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcsIHRleHQsIGlucHV0
LnRleHQoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBTdHJpbmcs
IHVubW9kaWZpZWRUZXh0LCBpbnB1dC51bm1vZGlmaWVkVGV4dCgpKTsKKyAgICBFTkNPREVfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFN0cmluZywga2V5SWRlbnRpZmllciwgaW5wdXQua2V5
SWRlbnRpZmllcigpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGlu
dCwgd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBpbnB1dC53aW5kb3dzVmlydHVhbEtleUNvZGUoKSk7
CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIG5hdGl2ZVZpcnR1
YWxLZXlDb2RlLCBpbnB1dC5uYXRpdmVWaXJ0dWFsS2V5Q29kZSgpKTsKKyAgICBFTkNPREVfVFlQ
RV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgbWFjQ2hhckNvZGUsIGlucHV0Lm1hY0NoYXJD
b2RlKCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgYXV0
b1JlcGVhdCwgaW5wdXQuaXNBdXRvUmVwZWF0KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZ
KGVuY29kZWRWYWx1ZSwgYm9vbCwga2V5cGFkLCBpbnB1dC5pc0tleXBhZCgpKTsKKyAgICBFTkNP
REVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIHN5c3RlbUtleSwgaW5wdXQuaXNT
eXN0ZW1LZXkoKSk7CiAjaWYgVVNFKEFQUEtJVCkKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBoYW5kbGVkQnlJbnB1dE1ldGhvZCwgaW5wdXQuaGFu
ZGxlZEJ5SW5wdXRNZXRob2QoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVu
Y29kZWRWYWx1ZSwgVmVjdG9yPEtleXByZXNzQ29tbWFuZD4sIGNvbW1hbmRzLCBpbnB1dC5jb21t
YW5kcygpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGhh
bmRsZWRCeUlucHV0TWV0aG9kLCBpbnB1dC5oYW5kbGVkQnlJbnB1dE1ldGhvZCgpKTsKKyAgICBF
TkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFZlY3RvcjxLZXlwcmVzc0NvbW1hbmQ+
LCBjb21tYW5kcywgaW5wdXQuY29tbWFuZHMoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gZW5jb2Rl
ZFZhbHVlOwogfQpAQCAtMjE1LDE4ICsyNDAsMTggQEAgRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJh
aXRzPFBsYXRmb3JtTW91c2VFdmVudD46OmVuY29kZVZhbHVlKGNvbnN0IFBsYXRmb3JtTW91c2UK
IHsKICAgICBFbmNvZGVkVmFsdWUgZW5jb2RlZFZhbHVlID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVP
YmplY3QoKTsKIAotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGludCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7Ci0gICAgRU5DT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBwb3NpdGlvblksIGlucHV0LnBvc2l0
aW9uKCkueSgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVl
LCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54KCkpOwotICAg
IEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFsUG9z
aXRpb25ZLCBpbnB1dC5nbG9iYWxQb3NpdGlvbigpLnkoKSk7Ci0gICAgRU5DT0RFX1NDQUxBUl9U
WVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgTW91c2VCdXR0b24sIGJ1dHRvbiwgaW5wdXQuYnV0
dG9uKCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIFBs
YXRmb3JtRXZlbnQ6OlR5cGUsIHR5cGUsIGlucHV0LnR5cGUoKSk7Ci0gICAgRU5DT0RFX1NDQUxB
Ul9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBjbGlja0NvdW50LCBpbnB1dC5jbGlj
a0NvdW50KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUs
IGJvb2wsIHNoaWZ0S2V5LCBpbnB1dC5zaGlmdEtleSgpKTsKLSAgICBFTkNPREVfU0NBTEFSX1RZ
UEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBib29sLCBjdHJsS2V5LCBpbnB1dC5jdHJsS2V5KCkp
OwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGFs
dEtleSwgaW5wdXQuYWx0S2V5KCkpOwotICAgIEVOQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShl
bmNvZGVkVmFsdWUsIGJvb2wsIG1ldGFLZXksIGlucHV0Lm1ldGFLZXkoKSk7Ci0gICAgRU5DT0RF
X1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCB0aW1lc3RhbXAsIGlucHV0
LnRpbWVzdGFtcCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGlu
dCwgcG9zaXRpb25YLCBpbnB1dC5wb3NpdGlvbigpLngoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lU
SF9LRVkoZW5jb2RlZFZhbHVlLCBpbnQsIHBvc2l0aW9uWSwgaW5wdXQucG9zaXRpb24oKS55KCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBnbG9iYWxQb3Np
dGlvblgsIGlucHV0Lmdsb2JhbFBvc2l0aW9uKCkueCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRI
X0tFWShlbmNvZGVkVmFsdWUsIGludCwgZ2xvYmFsUG9zaXRpb25ZLCBpbnB1dC5nbG9iYWxQb3Np
dGlvbigpLnkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZFZhbHVlLCBNb3Vz
ZUJ1dHRvbiwgYnV0dG9uLCBpbnB1dC5idXR0b24oKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9L
RVkoZW5jb2RlZFZhbHVlLCBQbGF0Zm9ybUV2ZW50OjpUeXBlLCB0eXBlLCBpbnB1dC50eXBlKCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgaW50LCBjbGlja0NvdW50
LCBpbnB1dC5jbGlja0NvdW50KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRW
YWx1ZSwgYm9vbCwgc2hpZnRLZXksIGlucHV0LnNoaWZ0S2V5KCkpOworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9vbCwgY3RybEtleSwgaW5wdXQuY3RybEtleSgpKTsK
KyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkVmFsdWUsIGJvb2wsIGFsdEtleSwgaW5w
dXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRWYWx1ZSwgYm9v
bCwgbWV0YUtleSwgaW5wdXQubWV0YUtleSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShl
bmNvZGVkVmFsdWUsIGludCwgdGltZXN0YW1wLCBpbnB1dC50aW1lc3RhbXAoKSk7CiAKICAgICBy
ZXR1cm4gZW5jb2RlZFZhbHVlOwogfQpAQCAtMjUzLDYgKzI3OCwxMDIgQEAgYm9vbCBFbmNvZGlu
Z1RyYWl0czxQbGF0Zm9ybU1vdXNlRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVu
Y29kZWRWYWx1ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
c3RydWN0IFBsYXRmb3JtV2hlZWxFdmVudENvY29hQXJndW1lbnRzIHsKKyAgICBib29sIGRpcmVj
dGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXM7CisgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2U7CisgICAgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UgbW9tZW50dW1QaGFzZTsKKyAgICBpbnQgc2Nyb2xsQ291bnQ7CisgICAgZmxv
YXQgdW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICBmbG9hdCB1bmFjY2VsZXJhdGVk
U2Nyb2xsaW5nRGVsdGFZOworfTsKKworY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50Q29jb2EgOiBw
dWJsaWMgUGxhdGZvcm1XaGVlbEV2ZW50IHsKK3B1YmxpYzoKKyAgICBQbGF0Zm9ybVdoZWVsRXZl
bnRDb2NvYShQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBQbGF0Zm9ybVdoZWVsRXZlbnRDb2Nv
YUFyZ3VtZW50cyYgYXJndW1lbnRzKQorICAgICAgICA6IFBsYXRmb3JtV2hlZWxFdmVudChldmVu
dCkKKyAgICB7CisgICAgICAgIG1fZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlID0gYXJndW1l
bnRzLmRpcmVjdGlvbkludmVydGVkRnJvbURldmljZTsKKyAgICAgICAgbV9oYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzID0gYXJndW1lbnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXM7CisgICAg
ICAgIG1fcGhhc2UgPSBhcmd1bWVudHMucGhhc2U7CisgICAgICAgIG1fbW9tZW50dW1QaGFzZSA9
IGFyZ3VtZW50cy5tb21lbnR1bVBoYXNlOworICAgICAgICBtX3Njcm9sbENvdW50ID0gYXJndW1l
bnRzLnNjcm9sbENvdW50OworICAgICAgICBtX3VuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVgg
PSBhcmd1bWVudHMudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWDsKKyAgICAgICAgbV91bmFj
Y2VsZXJhdGVkU2Nyb2xsaW5nRGVsdGFZID0gYXJndW1lbnRzLnVuYWNjZWxlcmF0ZWRTY3JvbGxp
bmdEZWx0YVk7CisgICAgfQorfTsKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworRW5jb2Rl
ZFZhbHVlIEVuY29kaW5nVHJhaXRzPFBsYXRmb3JtV2hlZWxFdmVudD46OmVuY29kZVZhbHVlKGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgaW5wdXQpCit7CisgICAgRW5jb2RlZFZhbHVlIGVuY29k
ZWREYXRhID0gRW5jb2RlZFZhbHVlOjpjcmVhdGVPYmplY3QoKTsKKworICAgIEVOQ09ERV9UWVBF
X1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9uWCwgaW5wdXQucG9zaXRpb24oKS54
KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9u
WSwgaW5wdXQucG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29k
ZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWCwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS54KCkp
OworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0
aW9uWSwgaW5wdXQuZ2xvYmFsUG9zaXRpb24oKS55KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhf
S0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSwgaW5wdXQuc2hpZnRLZXkoKSk7CisgICAg
RU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGN0cmxLZXksIGlucHV0LmN0
cmxLZXkoKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGFs
dEtleSwgaW5wdXQuYWx0S2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWRE
YXRhLCBib29sLCBtZXRhS2V5LCBpbnB1dC5tZXRhS2V5KCkpOworICAgIEVOQ09ERV9UWVBFX1dJ
VEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgZGVsdGFYLCBpbnB1dC5kZWx0YVgoKSk7CisgICAg
RU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVksIGlucHV0LmRl
bHRhWSgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHdo
ZWVsVGlja3NYLCBpbnB1dC53aGVlbFRpY2tzWCgpKTsKKyAgICBFTkNPREVfVFlQRV9XSVRIX0tF
WShlbmNvZGVkRGF0YSwgZmxvYXQsIHdoZWVsVGlja3NZLCBpbnB1dC53aGVlbFRpY2tzWSgpKTsK
KyAgICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50
R3JhbnVsYXJpdHksIGdyYW51bGFyaXR5LCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRH
cmFudWxhcml0eT4oaW5wdXQuZ3JhbnVsYXJpdHkoKSkpOworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGRpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSwgaW5wdXQuZGlyZWN0aW9uSW52ZXJ0ZWRGcm9tRGV2aWNlKCkpOwor
ICAgIEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBoYXNQcmVjaXNlU2Ny
b2xsaW5nRGVsdGFzLCBpbnB1dC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpOworICAgIEVO
Q09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSwg
cGhhc2UsIHN0YXRpY19jYXN0PFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlPihpbnB1dC5waGFzZSgp
KSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlLCBtb21lbnR1bVBoYXNlLCBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdoZWVsRXZlbnRQ
aGFzZT4oaW5wdXQubW9tZW50dW1QaGFzZSgpKSk7CisgICAgRU5DT0RFX1RZUEVfV0lUSF9LRVko
ZW5jb2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGlucHV0LnNjcm9sbENvdW50KCkpOworICAg
IEVOQ09ERV9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwgdW5hY2NlbGVyYXRlZFNj
cm9sbGluZ0RlbHRhWCwgaW5wdXQudW5hY2NlbGVyYXRlZFNjcm9sbGluZ0RlbHRhWCgpKTsKKyAg
ICBFTkNPREVfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIHVuYWNjZWxlcmF0ZWRT
Y3JvbGxpbmdEZWx0YVksIGlucHV0LnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVkoKSk7Cisj
ZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkRGF0YTsKK30KKworYm9vbCBFbmNvZGluZ1RyYWl0
czxQbGF0Zm9ybVdoZWVsRXZlbnQ+OjpkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmIGVuY29kZWRE
YXRhLCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiYgaW5wdXQpCit7CisgICAg
REVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0aW9uWCk7
CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQsIHBvc2l0
aW9uWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBpbnQs
IGdsb2JhbFBvc2l0aW9uWCk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29k
ZWREYXRhLCBpbnQsIGdsb2JhbFBvc2l0aW9uWSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJ
VEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBzaGlmdEtleSk7CisgICAgREVDT0RFX1NDQUxBUl9U
WVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBjdHJsS2V5KTsKKyAgICBERUNPREVfU0NB
TEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGJvb2wsIGFsdEtleSk7CisgICAgREVDT0RF
X1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBib29sLCBtZXRhS2V5KTsKKyAgICBE
RUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVkoZW5jb2RlZERhdGEsIGZsb2F0LCBkZWx0YVgpOwor
ICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0YSwgZmxvYXQsIGRlbHRh
WSk7CisgICAgREVDT0RFX1NDQUxBUl9UWVBFX1dJVEhfS0VZKGVuY29kZWREYXRhLCBmbG9hdCwg
d2hlZWxUaWNrc1gpOworICAgIERFQ09ERV9TQ0FMQVJfVFlQRV9XSVRIX0tFWShlbmNvZGVkRGF0
YSwgZmxvYXQsIHdoZWVsVGlja3NZKTsKKyAgICBERUNPREVfU0NBTEFSX1RZUEVfV0lUSF9LRVko
ZW5jb2RlZERhdGEsIFBsYXRmb3JtV2hlZWxFdmVudEdyYW51bGFyaXR5LCBncmFudWxhcml0eSk7
CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRDb2NvYUFyZ3Vt
ZW50cyBhcmd1bWVudHM7CisgICAgREVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29k
ZWREYXRhLCBib29sLCBkaXJlY3Rpb25JbnZlcnRlZEZyb21EZXZpY2UsIGFyZ3VtZW50cy5kaXJl
Y3Rpb25JbnZlcnRlZEZyb21EZXZpY2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xW
QUxVRShlbmNvZGVkRGF0YSwgYm9vbCwgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcywgYXJndW1l
bnRzLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZ
X1RPX0xWQUxVRShlbmNvZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIHBoYXNlLCBh
cmd1bWVudHMucGhhc2UpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNv
ZGVkRGF0YSwgUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UsIG1vbWVudHVtUGhhc2UsIGFyZ3VtZW50
cy5tb21lbnR1bVBoYXNlKTsKKyAgICBERUNPREVfVFlQRV9XSVRIX0tFWV9UT19MVkFMVUUoZW5j
b2RlZERhdGEsIGludCwgc2Nyb2xsQ291bnQsIGFyZ3VtZW50cy5zY3JvbGxDb3VudCk7CisgICAg
REVDT0RFX1RZUEVfV0lUSF9LRVlfVE9fTFZBTFVFKGVuY29kZWREYXRhLCBmbG9hdCwgdW5hY2Nl
bGVyYXRlZFNjcm9sbGluZ0RlbHRhWCwgYXJndW1lbnRzLnVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdE
ZWx0YVgpOworICAgIERFQ09ERV9UWVBFX1dJVEhfS0VZX1RPX0xWQUxVRShlbmNvZGVkRGF0YSwg
ZmxvYXQsIHVuYWNjZWxlcmF0ZWRTY3JvbGxpbmdEZWx0YVksIGFyZ3VtZW50cy51bmFjY2VsZXJh
dGVkU2Nyb2xsaW5nRGVsdGFZKTsKKyNlbmRpZgorCisgICAgUGxhdGZvcm1XaGVlbEV2ZW50IGV2
ZW50KEludFBvaW50KHBvc2l0aW9uWCwgcG9zaXRpb25ZKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRp
b25YLCBnbG9iYWxQb3NpdGlvblkpLAorICAgICAgICBkZWx0YVgsIGRlbHRhWSwgd2hlZWxUaWNr
c1gsIHdoZWVsVGlja3NZLCBncmFudWxhcml0eSwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwg
bWV0YUtleSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91
bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Q29jb2E+KGV2ZW50LCBhcmd1bWVudHMpOworI2Vsc2UK
KyAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50PihldmVudCk7
CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRW5jb2RlZFZhbHVlIEVuY29kaW5nVHJh
aXRzPFNlY3VyaXR5T3JpZ2luPjo6ZW5jb2RlVmFsdWUoUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBp
bnB1dCkKIHsKICAgICByZXR1cm4gRW5jb2RlZFZhbHVlOjpjcmVhdGVTdHJpbmcoaW5wdXQtPnRv
U3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRp
b25NZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMu
aAppbmRleCA3YWZhMjMyYjYyNmRhMGRhNTA0NDE4MWFiZjUyZjk1MjdkOTcwNWViLi4zNzg5NWU1
YTgyM2Q0NmQ4OWVlYWM4NTMyYWMwZGMyMzkxYTY1ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQbGF0
Zm9ybU1vdXNlRXZlbnQ7CitjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKIGNsYXNzIFVSTDsKIApAQCAtODEsNiArODIsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50PiB7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlBsYXRmb3JtTW91c2VFdmVudD4mIHZhbHVlKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEVuY29kaW5nVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudD4geworICAgIHR5cGVk
ZWYgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50IERlY29kZWRUeXBlOworCisgICAgc3RhdGlj
IEVuY29kZWRWYWx1ZSBlbmNvZGVWYWx1ZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQmIHZhbHVlKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShFbmNvZGVkVmFsdWUmLCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50PiYgdmFsdWUpOworfTsK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW5jb2RpbmdUcmFpdHM8V2ViQ29yZTo6VVJMPiB7CiAgICAg
dHlwZWRlZiBXZWJDb3JlOjpVUkwgRGVjb2RlZFR5cGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L1VzZXJJbnB1dEJyaWRnZS5jcHAKaW5kZXggMzgzYzA4YzFjZDYyM2Q0OGFiNGUzZTZhZTEwYmJh
YjJkZWE5MzZkYi4uZmM4NDU3YTlmNDgyOTYyZGRlZmFiYTAyNWY2ZTM0YTg5NGFjZTRmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKQEAgLTE2MCw4ICsxNjAs
MTkgQEAgYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUFjY2Vzc0tleUV2ZW50KGNvbnN0IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudCYga2V5RXZlbnQKICAgICByZXR1cm4gbV9wYWdlLmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhhbmRsZUFjY2Vz
c0tleShrZXlFdmVudCk7CiB9CiAKLWJvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgSW5wdXRTb3VyY2UpCiti
b29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIElucHV0U291cmNlIGlucHV0U291cmNlKQogeworI2lmIEVOQUJM
RShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERfSUdOT1JFX0lOUFVUOwor
CisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVudD4gb3duZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlx
dWU8UGxhdGZvcm1XaGVlbEV2ZW50Pih3aGVlbEV2ZW50KTsKKyAgICAgICAgYWN0aXZlQ3Vyc29y
KCkuYXBwZW5kSW5wdXQ8SGFuZGxlV2hlZWxFdmVudD4oc3RkOjptb3ZlKG93bmVkRXZlbnQpKTsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnB1dFNvdXJjZSk7CisjZW5kaWYKKwog
ICAgIHJldHVybiBtX3BhZ2UubWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuaGFuZGxlV2hlZWxF
dmVudCh3aGVlbEV2ZW50KTsKIH0KIApAQCAtMTc1LDEzICsxODYsMzEgQEAgdm9pZCBVc2VySW5w
dXRCcmlkZ2U6OmZvY3VzU2V0Rm9jdXNlZChib29sIGZvY3VzZWQsIElucHV0U291cmNlKQogICAg
IG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkKGZvY3VzZWQpOwogfQogCi1ib29s
IFVzZXJJbnB1dEJyaWRnZTo6c2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQorYm9vbCBV
c2VySW5wdXRCcmlkZ2U6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rp
b24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBJbnB1dFNvdXJjZSBpbnB1dFNvdXJj
ZSkKIHsKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBFQVJMWV9SRVRVUk5fSUZfU0hPVUxE
X0lHTk9SRV9JTlBVVDsKKworICAgIGlmIChhY3RpdmVDdXJzb3IoKS5pc0NhcHR1cmluZygpKQor
ICAgICAgICBhY3RpdmVDdXJzb3IoKS5hcHBlbmRJbnB1dDxTY3JvbGxQYWdlPihkaXJlY3Rpb24s
IGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291cmNlKTsKKyNl
bmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5zY3JvbGxSZWN1cnNpdmVseShkaXJlY3Rpb24sIGdyYW51
bGFyaXR5LCBudWxscHRyKTsKIH0KIAotYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmxvZ2ljYWxTY3Jv
bGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlKQorYm9vbCBVc2VySW5wdXRCcmlkZ2U6
OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIElucHV0U291cmNlIGlucHV0U291cmNl
KQogeworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgIEVBUkxZX1JFVFVSTl9JRl9TSE9VTERf
SUdOT1JFX0lOUFVUOworCisgICAgaWYgKGFjdGl2ZUN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpCisg
ICAgICAgIGFjdGl2ZUN1cnNvcigpLmFwcGVuZElucHV0PExvZ2ljYWxTY3JvbGxQYWdlPihkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGlucHV0U291cmNl
KTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG1fcGFnZS5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5sb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoZGly
ZWN0aW9uLCBncmFudWxhcml0eSwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9XZWJJbnB1dHMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9XZWJJ
bnB1dHMuanNvbgppbmRleCBlMjRmZDliYTQ4ODBjMDIzNTY5MmU3M2E2ODU0MTlhNGM2OWM2MTll
Li4zZTZhZWZiMTBmOGVmZDI5MzBmZGMzMmM4ZTU2MDAyNDg1ZGYwOTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvV2ViSW5wdXRzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1dlYklucHV0cy5qc29uCkBAIC02Myw2ICs2Myw2MCBAQAogICAgICAgICAgICAgICAg
ICJoZWFkZXIiOiAicGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogIlBsYXRmb3JtV2hlZWxF
dmVudCIsICJtb2RlIjogIk9XTkVEIiwKKyAgICAgICAgICAgICAgICAiaGVhZGVyIjogInBsYXRm
b3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJQbGF0Zm9ybVdoZWVsRXZlbnRHcmFudWxhcml0eSIs
ICJtb2RlIjogIlNDQUxBUiIsICJzdG9yYWdlIjogInVpbnQ2NF90IiwKKyAgICAgICAgICAgICAg
ICAiZmxhZ3MiOiBbIkVOVU0iXSwKKyAgICAgICAgICAgICAgICAidmFsdWVzIjogWyJTY3JvbGxC
eVBhZ2VXaGVlbEV2ZW50IiwgIlNjcm9sbEJ5UGl4ZWxXaGVlbEV2ZW50Il0sCisgICAgICAgICAg
ICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiUGxhdGZvcm1X
aGVlbEV2ZW50UGhhc2UiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1aW50NjRfdCIs
CisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAgICAgICAgICAgImd1
YXJkIjogIlBMQVRGT1JNKENPQ09BKSIsCisgICAgICAgICAgICAgICAgInZhbHVlcyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSIsCisgICAgICAg
ICAgICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2FuIiwKKyAgICAgICAgICAg
ICAgICAgICAgIlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlU3RhdGlvbmFyeSIsCisgICAgICAgICAg
ICAgICAgICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNoYW5nZWQiLAorICAgICAgICAgICAg
ICAgICAgICAiUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCIsCisgICAgICAgICAgICAgICAg
ICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUNhbmNlbGxlZCIsCisgICAgICAgICAgICAgICAg
ICAgICJQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZU1heUJlZ2luIgorICAgICAgICAgICAgICAgIF0s
CisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQu
aCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAiU2Nyb2xsRGlyZWN0aW9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAidWludDY0
X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAgICAgICAg
ICJ2YWx1ZXMiOiBbIlNjcm9sbFVwIiwgIlNjcm9sbERvd24iLCAiU2Nyb2xsTGVmdCIsICJTY3Jv
bGxSaWdodCJdLAorICAgICAgICAgICAgICAgICJoZWFkZXIiOiAicGxhdGZvcm0vU2Nyb2xsVHlw
ZXMuaCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5h
bWUiOiAiU2Nyb2xsR3JhbnVsYXJpdHkiLCAibW9kZSI6ICJTQ0FMQVIiLCAic3RvcmFnZSI6ICJ1
aW50NjRfdCIsCisgICAgICAgICAgICAgICAgImZsYWdzIjogWyJFTlVNIl0sCisgICAgICAgICAg
ICAgICAgInZhbHVlcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5TGluZSIsCisg
ICAgICAgICAgICAgICAgICAgICJTY3JvbGxCeVBhZ2UiLAorICAgICAgICAgICAgICAgICAgICAi
U2Nyb2xsQnlEb2N1bWVudCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCeVBpeGVsIiwK
KyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJ5UHJlY2lzZVBpeGVsIgorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9ybS9TY3JvbGxUeXBlcy5o
IgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIiwgIm1vZGUiOiAiU0NBTEFSIiwgInN0b3JhZ2UiOiAi
dWludDY0X3QiLAorICAgICAgICAgICAgICAgICJmbGFncyI6IFsiRU5VTSJdLAorICAgICAgICAg
ICAgICAgICJ2YWx1ZXMiOiBbCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxCbG9ja0RpcmVj
dGlvbkJhY2t3YXJkIiwKKyAgICAgICAgICAgICAgICAgICAgIlNjcm9sbEJsb2NrRGlyZWN0aW9u
Rm9yd2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJlY3Rpb25CYWNr
d2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJTY3JvbGxJbmxpbmVEaXJlY3Rpb25Gb3J3YXJk
IgorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhlYWRlciI6ICJwbGF0Zm9y
bS9TY3JvbGxUeXBlcy5oIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJTZWN1cml0eU9yaWdpbiIsICJtb2RlIjogIlNIQVJFRCIsCiAgICAg
ICAgICAgICAgICAgImhlYWRlciI6ICJwYWdlL1NlY3VyaXR5T3JpZ2luLmgiCiAgICAgICAgICAg
ICB9LApAQCAtMTQ2LDYgKzIwMCwxNCBAQAogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAg
ICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJIYW5kbGVXaGVlbEV2ZW50IiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgZW1iZWRkZXIgc2lnbmFsbGVkIGEgbW91c2Ugd2hlZWwg
ZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAg
ICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxhdGZvcm1FdmVudCIs
ICJ0eXBlIjogIlBsYXRmb3JtV2hlZWxFdmVudCIgfQorICAgICAgICAgICAgXQorICAgICAgICB9
LAorICAgICAgICB7CiAgICAgICAgICAgICAibmFtZSI6ICJJbml0aWFsTmF2aWdhdGlvbiIsCiAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5pdGlhdGUgdGhlIGluaXRpYWwgbWFpbiBmcmFt
ZSBuYXZpZ2F0aW9uLiIsCiAgICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCkBAIC0x
NTUsNiArMjE3LDI0IEBACiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ1cmwiLCAidHlwZSI6
ICJVUkwiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZWZlcnJlciIsICJ0eXBlIjog
IlN0cmluZyIgfQogICAgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg
ICAgICAibmFtZSI6ICJMb2dpY2FsU2Nyb2xsUGFnZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVGhlIGVtYmVkZGVyIHNpZ25hbGxlZCBhIGxvZ2ljYWwgc2Nyb2xsIGV2ZW50LiIsCisg
ICAgICAgICAgICAicXVldWUiOiAiRVZFTlRfTE9PUCIsCisgICAgICAgICAgICAibWVtYmVycyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRpcmVjdGlvbiIsICJ0eXBlIjogIlNjcm9s
bExvZ2ljYWxEaXJlY3Rpb24iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJncmFudWxh
cml0eSIsICJ0eXBlIjogIlNjcm9sbEdyYW51bGFyaXR5IiB9CisgICAgICAgICAgICBdCisgICAg
ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogIlNjcm9sbFBhZ2UiLAorICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZSBlbWJlZGRlciBzaWduYWxsZWQgYSBzY3JvbGwg
ZXZlbnQuIiwKKyAgICAgICAgICAgICJxdWV1ZSI6ICJFVkVOVF9MT09QIiwKKyAgICAgICAgICAg
ICJtZW1iZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGlyZWN0aW9uIiwgInR5
cGUiOiAiU2Nyb2xsRGlyZWN0aW9uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3Jh
bnVsYXJpdHkiLCAidHlwZSI6ICJTY3JvbGxHcmFudWxhcml0eSIgfQorICAgICAgICAgICAgXQog
ICAgICAgICB9CiAgICAgXQogfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IGNmNDY0N2NjMGVkYTI5YjhlMjk5ZTY4MDNlMGE2Y2Y2M2QyNDlmNGQuLmVjNGQxMzc3YjRh
ZjQ0ZDdmNDg2MTUyYzY2MTcxNzhhNDg0MmI5OGIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0wMy0zMSAgQnJpYW4gSi4gQnVyZyAg
PGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIFJlcGxheTogY2FwdHVyZSBh
bmQgcmVwbGF5IHdoZWVsIGV2ZW50cyBhbmQgc2Nyb2xsIGNvbW1hbmRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk0MDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW1vdGh5IEhhdGNoZXIuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9pbnNwZWN0
b3IvcmVwbGF5LXdoZWVsLWV2ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxNC0wNC0wMiAgTWFydGlu
IFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihy
MTY1NzA0KTogW0dUS10gSW5zcGVjdG9yIHJlc291cmNlcyBub3QgY29ycmVjdGx5IGdlbmVyYXRl
ZApkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvaW5zcGVjdG9yL3JlcGxheS13aGVlbC1ldmVudHMu
aHRtbCBiL01hbnVhbFRlc3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjM4ZGYwYzhmOTcxZDdkM2EzOTNmZmE2NWQxMGNmOWZkMjZkMTZlZAotLS0gL2Rl
di9udWxsCisrKyBiL01hbnVhbFRlc3RzL2luc3BlY3Rvci9yZXBsYXktd2hlZWwtZXZlbnRzLmh0
bWwKQEAgLTAsMCArMSw4NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBI
VE1MIDQuMDEvL0VOIgorICAgICAgICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0
LmR0ZCI+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuL3Jlc291cmNl
cy9jcnlwdG8tbWQ1LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorCisgICAgZG9jdW1lbnQu
b25tb3VzZXdoZWVsID0gaGFuZGxlRXZlbnQ7CisgICAgCisgICAgd2luZG93LmR1bXBlZEV2ZW50
cyA9IFtdOworICAgIAorICAgIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7CisgICAgICAg
IHZhciBwcm9wZXJ0aWVzID0gWyJ0eXBlIiwgImV2ZW50UGhhc2UiLCAiYnViYmxlcyIsICJjYW5j
ZWxhYmxlIiwgInNjcmVlblgiLCAic2NyZWVuWSIsICJjbGllbnRYIiwgImNsaWVudFkiLCAiY3Ry
bEtleSIsICJzaGlmdEtleSIsICJhbHRLZXkiLCAibWV0YUtleSIsICJidXR0b24iLCAiZGVsdGFY
IiwgImRlbHRhWSIsICJkZWx0YVoiLCAiZGVsdGFNb2RlIiwgIndoZWVsRGVsdGFYIiwgIndoZWVs
RGVsdGFZIl07CisgICAgICAgIG9iaiA9IHt9OworICAgICAgICBmb3IgKHZhciBrZXkgb2YgcHJv
cGVydGllcykKKyAgICAgICAgICAgIG9ialtrZXldID0gZXZlbnRba2V5XTsKKyAgICAKKyAgICAg
ICAgZHVtcGVkRXZlbnRzLnB1c2gob2JqKTsKKworICAgICAgICB2YXIgYmxvY2sgPSBjcmVhdGVC
bG9jayhoZXhfbWQ1KEpTT04uc3RyaW5naWZ5KG9iaikpKTsKKyAgICAgICAgdmFyIGJsb2Nrc0Nv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJibG9ja3MiKTsKKyAgICAgICAgYmxv
Y2tzQ29udGFpbmVyLmFwcGVuZENoaWxkKGJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIHZhciBo
YXNoTGFiZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFzaCIpOworICAgICAgICBoYXNo
LnRleHRDb250ZW50ID0gaGV4X21kNShKU09OLnN0cmluZ2lmeShkdW1wZWRFdmVudHMpKTsKKyAg
ICB9CisgICAgCisgICAgZnVuY3Rpb24gY3JlYXRlQmxvY2soaGFzaCkgeworICAgICAgICB2YXIg
Y29sb3IgPSAiIyIgKyBoYXNoLnN1YnN0cigwLDYpOworICAgICAgICB2YXIgYmxvY2sgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIGJsb2NrLnN0eWxlLmJhY2tncm91
bmRDb2xvciA9IGNvbG9yOworICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgfQorICAgIAorICAg
IGZ1bmN0aW9uIHN0YXRlSGFzaCgpIHsKKyAgICAgICAgcmV0dXJuIGhleF9tZDUoSlNPTi5zdHJp
bmdpZnkoZHVtcGVkRXZlbnRzKSk7CisgICAgfQorICAgIAorPC9zY3JpcHQ+CisKKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+Citib2R5IHsKKyAgICBtYXgtd2lkdGg6IDgwMHB4OworfQorI2Jsb2Nr
cyB7CisgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OworICAgIHdpZHRoOiA2MDBweDsKKyAgICAt
d2Via2l0LWZsZXgtZmxvdzogcm93IHdyYXA7Cit9CisgICAgCisjYmxvY2tzID4gc3BhbiB7Cisg
ICAgd2lkdGg6IDEwcHg7CisgICAgaGVpZ2h0OiAxMHB4OworICAgIGJvcmRlci1yYWRpdXM6IDVw
eDsKKyAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIHBhZ2UgaXMgYSBtYW51YWwgdGVzdCBmb3IgY2FwdHVyZSBhbmQgcmVwbGF5IG9m
IHNjcm9sbC1yZWxhdGVkIERPTSBldmVudHMuPC9wPgorPHA+QmVsb3csIGEgYmxvY2sgaXMgY3Jl
YXRlZCBmb3IgZWFjaCBtb3VzZXdoZWVsIGV2ZW50LCB3aGVyZSB0aGUgY29sb3IgaXMgZGVyaXZl
ZCBmcm9tIGEgaGFzaCBvZiB0aGUgZXZlbnQgZGF0YS4gQXQgdGhlIGJvdHRvbSBpcyBhIGN1bXVs
YXRpdmUgaGFzaCBvZiBhbGwgZXZlbnQgZGF0YS48L3A+Cis8aHIvPgorPHRleHRhcmVhIHJvd3M9
IjMiPgorCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSB0ZXh0YXJlYS4KKworLgorCisuLgorCisuLi4K
KworLi4uLgorCisuLi4uLgorCis8L3RleHRhcmVhPgorPHA+CitUbyB0ZXN0IHRoZSByZXBsYXkg
ZnVuY3Rpb25hbGl0eSwgb3BlbiB0aGUgV2ViIEluc3BlY3Rvciwgc3RhcnQgY2FwdHVyaW5nLCBh
bmQgdGhlbiBzY3JvbGwgZWFjaCBvZiB0aGUgaWZyYW1lLCBvdmVyZmxvdzpzY3JvbGwgZWxlbWVu
dCwgYW5kIHRoZSBtYWluIHBhZ2UncyBmbG93ZWQgdGV4dC4gQWZ0ZXIgc29tZSB0aW1lLCBzdG9w
IGNhcHR1cmluZyBhbmQgdGhlbiByZXBsYXkuPC9wPgorPHA+VGhlIHJlcGxheWVkIGV4ZWN1dGlv
biBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBibG9ja3MsIGFuZCBwYWdlIGNv
bnRlbnRzIHNob3VsZCBzY3JvbGwgdGhlIHNhbWUgZGlzdGFuY2UgYW5kIHNwZWVkLiBNb3JlIGlt
cG9ydGFudGx5LCB0aGUgY3VtdWxhdGl2ZSBoYXNoIHZhbHVlIHNob3VsZCBiZSB0aGUgc2FtZSBh
dCB0aGUgZW5kIG9mIGNhcHR1cmluZyBhbmQgYXQgdGhlIGVuZCBvZiBhbnkgc3Vic2VxdWVudCBy
ZXBsYXlzLjwvcD4KKzwvcD4KKzxoci8+Cis8ZGl2IGlkPSJoYXNoIj48L2Rpdj4KKzxkaXYgaWQ9
ImJsb2NrcyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>