<?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>130865</bug_id>
          
          <creation_ts>2014-03-27 15:04:42 -0700</creation_ts>
          <short_desc>Web Replay: Move createUniqueIdentifier() from ProgressTracker to DocumentLoader</short_desc>
          <delta_ts>2017-07-10 13:59:34 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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>
          
          <blocked>129391</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>995079</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-27 15:04:42 -0700</bug_when>
    <thetext>That way, it will be possible later to track on a per-frame level the order in which identifiers were handed out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995179</commentid>
    <comment_count>1</comment_count>
      <attachid>228011</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-03-27 17:44:24 -0700</bug_when>
    <thetext>Created attachment 228011
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995232</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-03-27 21:07:43 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; That way, it will be possible later to track on a per-frame level the order in which identifiers were handed out.

How will it be possible?

What will this accomplish?

I&apos;m not sure DocumentLoader is the right place for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995583</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-03-29 10:43:50 -0700</bug_when>
    <thetext>Per discussion with Brady, we concluded that it&apos;s better architecture for the main frame&apos;s document loader to vend unique identifiers. That way there is only one vendor per frame tree, and thus for 129391 we&apos;ll only need to save one identifier order vector.

I&apos;m going to upload another patch with this alternate arrangement, then rebase a patch for 129391 and test that before setting r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995596</commentid>
    <comment_count>4</comment_count>
      <attachid>228115</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-03-29 13:02:21 -0700</bug_when>
    <thetext>Created attachment 228115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995599</commentid>
    <comment_count>5</comment_count>
      <attachid>228115</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-03-29 13:07:43 -0700</bug_when>
    <thetext>Comment on attachment 228115
Patch

Looks fine to me. I&apos;ll let Brady look it over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995600</commentid>
    <comment_count>6</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-03-29 13:09:48 -0700</bug_when>
    <thetext>I haven&apos;t posted a new patch for 129391 yet, that will be up later tonight or tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995766</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-03-30 23:02:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I haven&apos;t posted a new patch for 129391 yet, that will be up later tonight or tomorrow.

Other patch is up, so this thing is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001613</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-17 11:06:27 -0700</bug_when>
    <thetext>Can anyone review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001625</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-17 11:38:20 -0700</bug_when>
    <thetext>This is inelegant.

Going to the main frame’s document loader each time is super-awkward. Adding something to all document loaders that is only used for main frame document loaders is a bad pattern that we should not do more of.

Is there anything we can do to make the idiom clearer and not involve so much reliance on traversing pointers that might be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001755</commentid>
    <comment_count>10</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-17 16:39:51 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; This is inelegant.
&gt; 
&gt; Going to the main frame’s document loader each time is super-awkward. Adding something to all document loaders that is only used for main frame document loaders is a bad pattern that we should not do more of.
&gt; 
&gt; Is there anything we can do to make the idiom clearer and not involve so much reliance on traversing pointers that might be null?

I don&apos;t see a way to make this more elegant without adding a new abstraction.

Last month I heard that some folks had the desire to add an abstraction to represent the &quot;current page&quot;, and that such a class would get new instances on main frame navigations. Every document and frame and loader would have a reference to the &quot;current page&quot;, like MainFrame, but with more integration with navigation somehow. I don&apos;t know enough about the big picture to write a patch for that abstraction.

This hypothetical class is where vending and tracking of per-main frame resource identifiers should go, but I don&apos;t think anyone has had time to work on that refactoring.  I would prefer to add FIXMEs and open a new bug for adding that abstraction and develop that idea separately, rather than gating this smaller refactor (and the remainder of web replay patches that depend on network replay).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001761</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-04-17 16:52:10 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; This is inelegant.
&gt; &gt; 
&gt; &gt; Going to the main frame’s document loader each time is super-awkward. Adding something to all document loaders that is only used for main frame document loaders is a bad pattern that we should not do more of.
&gt; &gt; 
&gt; &gt; Is there anything we can do to make the idiom clearer and not involve so much reliance on traversing pointers that might be null?
&gt; 
&gt; I don&apos;t see a way to make this more elegant without adding a new abstraction.
&gt; 
&gt; Last month I heard that some folks had the desire to add an abstraction to represent the &quot;current page&quot;, and that such a class would get new instances on main frame navigations

It would actually get new instances on any navigation, including subframe navigations.

So you&apos;d always have a non-null MainFrame, and you could always ask it for &quot;current page&quot;.

&gt;  Every document and frame and loader would have a reference to the &quot;current page&quot;, like MainFrame, but with more integration with navigation somehow.

Not really - Every document and frame and loader has a path to their MainFrame, who is the sole keeper of &quot;the current page&quot;

&gt; This hypothetical class is where vending and tracking of per-main frame resource identifiers should go, but I don&apos;t think anyone has had time to work on that refactoring.  I would prefer to add FIXMEs and open a new bug for adding that abstraction and develop that idea separately, rather than gating this smaller refactor (and the remainder of web replay patches that depend on network replay).

Don&apos;t vending of per-MainFrame resource IDs belong on the MainFrame itself?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001768</commentid>
    <comment_count>12</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-04-17 17:24:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; It would actually get new instances on any navigation, including subframe navigations.
&gt; ...
&gt; So you&apos;d always have a non-null MainFrame, and you could always ask it for &quot;current page&quot;.

I suppose it could be per-any-navigation. Though that level of granularity isn&apos;t needed for replay but is compatible.

&gt; Not really - Every document and frame and loader has a path to their MainFrame, who is the sole keeper of &quot;the current page&quot;

Oh, true, we always go through MainFrame in the patch, as written.

&gt; Don&apos;t vending of per-MainFrame resource IDs belong on the MainFrame itself?

Ah, I should have been more specific. For replay purposes, we need to be able to record what resource IDs were handed out on a per-main-frame-*navigation* basis.

The main benefit of using the main frame&apos;s document loader is that its lifetime is obvious and corresponds exactly to the &quot;main frame navigation&quot; boundary used to segment executions into independent replayable pieces when capturing.

Vending and recording IDs from MainFrame itself is more complicated.

1. MainFrame will stick around across multiple navigations, so we&apos;d have to reach into it to clear out the recorded vended IDs when the main frame navigates.

2. It also will interleave IDs vended to requests from the main frame&apos;s provisional and active document loaders, but the two loaders are not necessarily both being captured or replayed. If we start capturing the next main frame navigation and a resource request is created when the old main frame is unloaded, then the vended ID for the request will be mistakenly captured. 

3. Disambiguation is hard without the natural segmenting provided by the lifetime of the main frame document loader. To disambiguate whether the ID should be captured or not, we need to look at a flag on the associated document&apos;s input cursor. AFAIK, we don&apos;t always have a document around when requesting a resource ID (e.g., on initial document resource request), so not sure how we could always disambiguate correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1115071</commentid>
    <comment_count>13</comment_count>
      <attachid>228115</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-08-05 11:30:06 -0700</bug_when>
    <thetext>Comment on attachment 228115
Patch

Clearing r? flag as this patch is bit-rotted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327153</commentid>
    <comment_count>14</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-07-10 13:59:34 -0700</bug_when>
    <thetext>Closing web replay-related bugs until we resume working on the feature again.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228011</attachid>
            <date>2014-03-27 17:44:24 -0700</date>
            <delta_ts>2014-03-29 13:02:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-130865-20140327174356.patch</filename>
            <type>text/plain</type>
            <size>15321</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2MzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg2ZTk0ZTVmZmYzOWJh
Y2M1YTVhNGQ4MmMyNDA4NjlmNmJkYWM2Ni4uOTI5OTgwODA3OTVhOGY0YzRmNzEyYWVlNDAzNTUz
ZmYzMjJlNmFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTAzLTI3ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpIGZyb20gUHJvZ3Jlc3NUcmFja2VyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA4NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5v
IGJlaGF2aW9yIHdhcyBjaGFuZ2VkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
V2ViU29ja2V0Q2hhbm5lbCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y3JlYXRlVW5pcXVlSWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVs
ZWdhdGUpOgorICAgICAgICAqIGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBpbmdMb2FkZXI6OlBpbmdMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1Ry
YWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNyZWF0ZVJlc291cmNlSGFuZGxlKToKKwogMjAxNC0wMy0yNyAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWNlc3Nhcnkg
YnJhbmNoZXMgZnJvbSBMaXZlTm9kZUxpc3QgdHJhdmVyc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggOTNl
MDc1YTY4N2EwYmNjMGE5NDRjMjFiYzA1ODk2ZjFmOTNjYTFmMy4uNWU5YjYyYTFkZTgwZDJlYmRh
NGU3ODk5YjYzNjczOTk0NTRmMTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzcsMTQgKzM3LDEzIEBA
CiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJG
aWxlUmVhZGVyTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGFn
ZS5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVx
dWVzdC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgpAQCAtODUsOCArODQsOCBAQCBXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRD
aGFubmVsKERvY3VtZW50KiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogYwogICAg
ICwgbV9ibG9iTG9hZGVyU3RhdHVzKEJsb2JMb2FkZXJOb3RTdGFydGVkKQogI2VuZGlmCiB7Ci0g
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCkpCi0gICAgICAgIG1faWRlbnRp
ZmllciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgIGlm
IChEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9kb2N1bWVudC0+bG9hZGVyKCkpCisgICAgICAg
IG1faWRlbnRpZmllciA9IGxvYWRlci0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogfQogCiBX
ZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjNmIwYjFjM2FjZTY1NzFjMjBiYTZkYzlmYzNmYTgw
NGE0ODU0YWQzLi5kYWIxNzY0YTI1YmNjMjc1NTIwYWI2NTJlYTU1NjRlNGE0MzcxMTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTY1LDcgKzY1LDYgQEAK
ICNpbmNsdWRlICJQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlbi5oIgogI2luY2x1ZGUgIlBhZ2VH
cm91cC5oIgogI2luY2x1ZGUgIlBhZ2VUaHJvdHRsZXIuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWRlby5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTU4NDAsNyArNTgzOSw3
IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9u
c2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
bV9jdXJyZW50U3JjKTsKICAgICBSZXNvdXJjZUxvYWROb3RpZmllciYgbm90aWZpZXIgPSBmcmFt
ZS0+bG9hZGVyKCkubm90aWZpZXIoKTsKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2Fk
ZXIgPSBkb2N1bWVudCgpLmxvYWRlcigpOwotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9
IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciA9IGRvY3VtZW50TG9hZGVyLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCk7CiAKICAgICBub3RpZmllci5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVu
dGlmaWVyLCBkb2N1bWVudExvYWRlciwgcmVxdWVzdCk7CiAgICAgbm90aWZpZXIuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGlkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLCBjaGFs
bGVuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCmluZGV4IGE1MjkxNjI3OGZjZGUyYTkwNWM0MDI0YmE3YmQwZWE5YjQxMzk5
YjEuLjdlMjcwZTQ2MjAwMTk3YWZkNTM1YWRhZDcxZGVjMDcxNDIwZDliODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAg
LTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZXNEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlByb2dyZXNz
VHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCkBAIC00NDgsNyArNDQ3LDcg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKIHsKICAgICBTdHJpbmcgbG9hZGVySWQgPSBtX3Bh
Z2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKTsKICAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFn
ZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyID0gbG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpOworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IGxvYWRlci0+Y3JlYXRl
VW5pcXVlSWRlbnRpZmllcigpOwogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291
cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIGxvYWRlcklkKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPmFk
ZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgcmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOWUwMGU4MWNiMDdjOTk5MDY0MDliMmY5ZDJjNjQ2
MzgyZjhhNjZhMi4uYjFiM2M3NDk1OWM0NmI5ZmMxOTQzMjZlYjQwY2Y2M2I0OWVhN2EzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01NCw3ICs1NCw2IEBA
CiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UG9saWN5Q2hlY2tlci5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgpAQCAtMTE3LDYgKzExNiw4IEBAIHN0YXRpYyBib29sIGFyZUFs
bExvYWRlcnNQYWdlQ2FjaGVBY2NlcHRhYmxlKGNvbnN0IFJlc291cmNlTG9hZGVyTWFwJiBsb2Fk
ZXJzKQogICAgIHJldHVybiB0cnVlOwogfQogCit1bnNpZ25lZCBsb25nIERvY3VtZW50TG9hZGVy
OjpzX3VuaXF1ZUlkZW50aWZpZXIgPSAwOworCiBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQogICAg
ICwgbV9mcmFtZSgwKQpAQCAtMTMzMCw2ICsxMzMxLDExIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OnN0b3BMb2FkaW5nU3VicmVzb3VyY2VzKCkKICAgICBjYW5jZWxBbGwobV9zdWJyZXNvdXJjZUxv
YWRlcnMpOwogfQogCit1bnNpZ25lZCBsb25nIERvY3VtZW50TG9hZGVyOjpjcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4gKytzX3VuaXF1ZUlkZW50aWZpZXI7Cit9CisKIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmFkZFN1YnJlc291cmNlTG9hZGVyKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIpCiB7CiAgICAgLy8gVGhlIG1haW4gcmVzb3VyY2UncyB1bmRlcmx5aW5nIFJlc291cmNl
TG9hZGVyIHdpbGwgYXNrIHRvIGJlIGFkZGVkIGhlcmUuCkBAIC0xNDIyLDcgKzE0MjgsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZE1haW5SZXNvdXJjZShtX3JlcXVlc3QsIG1fc3Vi
c3RpdHV0ZURhdGEpOwogCiAgICAgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgPSBtX2ZyYW1l
LT5wYWdlKCktPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBt
X2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmFzc2lnbklkZW50
aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIsIHRoaXMsIG1fcmVxdWVzdCk7CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVy
KCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlciwgbV9yZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogICAgICAg
ICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWRTb29uKCk7CkBAIC0xNDQ5LDcgKzE0NTUsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIH0KIAog
ICAgIGlmICghbWFpblJlc291cmNlTG9hZGVyKCkpIHsKLSAgICAgICAgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5j
cmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIgPSBjcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3Qo
bV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgdGhpcywgcmVxdWVzdCk7
CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgcmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGIyM2NhMDg2ZTI4OWE4OTg0OWRkMDFlMzcxNmZkN2FmMTMyOTlmZjgu
LmFlYTI4ZDhlY2RkMDEyZmZlM2M1MmRkMDc4MTY1NTZmNThkZjk3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yMjcsNiArMjI3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIHN0b3BMb2FkaW5nUGx1Z0lucygpOwogICAgICAgICB2b2lk
IHN0b3BMb2FkaW5nU3VicmVzb3VyY2VzKCk7CiAKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxv
bmcgY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworCiAgICAgICAgIHZvaWQgYWRkU3VicmVzb3Vy
Y2VMb2FkZXIoUmVzb3VyY2VMb2FkZXIqKTsKICAgICAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJj
ZUxvYWRlcihSZXNvdXJjZUxvYWRlciopOwogICAgICAgICB2b2lkIGFkZFBsdWdJblN0cmVhbUxv
YWRlcihSZXNvdXJjZUxvYWRlciopOwpAQCAtMzI3LDYgKzMyOSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2b2lkIGNsZWFyTWFpblJlc291cmNlKCk7CiAKKyAgICAgICAgc3Rh
dGljIHVuc2lnbmVkIGxvbmcgc191bmlxdWVJZGVudGlmaWVyOworCiAgICAgICAgIEZyYW1lKiBt
X2ZyYW1lOwogICAgICAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDQ5OTI1
NmFhYWRmN2Q2NmQwMjg4NmZlMDdhNTA0OWM3ZGJlMGM1ZDguLjVkN2Q2OTk0ZDZiOWQ1OGUzM2Ni
MmMyNzU2NmU5NmJiZmQ2OWMyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMjk3NiwxMSArMjk3Niw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVs
ZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1bnNpZ25lZCBsb25nJiBpCiB7CiAgICAg
QVNTRVJUKCFyZXF1ZXN0LmlzTnVsbCgpKTsKIAotICAgIGlkZW50aWZpZXIgPSAwOwotICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgaWRlbnRpZmllciA9IHBh
Z2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwotICAgICAgICBub3RpZmll
cigpLmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIG1fZG9jdW1l
bnRMb2FkZXIuZ2V0KCksIHJlcXVlc3QpOwotICAgIH0KKyAgICBpZGVudGlmaWVyID0gbV9kb2N1
bWVudExvYWRlci0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgIG5vdGlmaWVyKCkuYXNz
aWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgbV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgcmVxdWVzdCk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChyZXF1
ZXN0KTsKICAgICBub3RpZmllcigpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KG1fZG9jdW1lbnRM
b2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAKaW5kZXggZDUxY2Q1MjJiMmI4NDE0MmY0
YTdiNmI0OTk0YWZhYjBmNmJkM2Y5NS4uZTNjMDZiMDU1M2I5NTdhYjRlMTI4Y2NiZjg1NWJkNzU2
NmJiYTlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcApAQCAtMzMsMTMgKzMz
LDEyIEBACiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0j
aW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTE2LDcgKzExNSw3IEBAIHZvaWQgUGluZ0xvYWRl
cjo6Y3JlYXRlUGluZ0xvYWRlcihGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIFBpbmdMb2FkZXI6OlBpbmdMb2FkZXIoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgOiBtX3RpbWVvdXQodGhpcywgJlBpbmdMb2FkZXI6OnRpbWVvdXRUaW1l
ckZpcmVkKQogewotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IGZyYW1lLnBhZ2UoKS0+
cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyID0gZnJhbWUuZG9jdW1lbnQoKS0+bG9hZGVyKCktPmNyZWF0ZVVuaXF1ZUlkZW50
aWZpZXIoKTsKICAgICAvLyBGSVhNRTogV2h5IGFjdGl2ZURvY3VtZW50TG9hZGVyPyBJIHdvdWxk
IGhhdmUgZXhwZWN0ZWQgZG9jdW1lbnRMb2FkZXIoKS4KICAgICAvLyBJdHNlZW1zIGxpa2UgdGhl
IFBpbmdMb2FkZXIgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudAogICAgIC8v
IERvY3VtZW50IGluIHRoZSBGcmFtZSwgYnV0IHRoZSBhY3RpdmVEb2N1bWVudExvYWRlciB3aWxs
IGJlIGFzc29jaWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVz
c1RyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
aW5kZXggMzMzODUwNjZiZTZjMzQzM2Q1NmU0YzkwNTIxMWY4NmFhY2E0M2Y1Zi4uZTQyMTNjNmI3
ZTdiY2JiNjFkYTZmYmVkYTNjNzkyNTlhMDMyNzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKQEAgLTczLDggKzczLDYgQEAgcHVibGljOgogICAgIGxvbmcg
bG9uZyBlc3RpbWF0ZWRMZW5ndGg7CiB9OwogCi11bnNpZ25lZCBsb25nIFByb2dyZXNzVHJhY2tl
cjo6c191bmlxdWVJZGVudGlmaWVyID0gMDsKLQogUHJvZ3Jlc3NUcmFja2VyOjpQcm9ncmVzc1Ry
YWNrZXIoUHJvZ3Jlc3NUcmFja2VyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgLCBtX3RvdGFsUGFnZUFuZFJlc291cmNlQnl0ZXNUb0xvYWQoMCkKQEAgLTI5Miwx
MSArMjkwLDYgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmNvbXBsZXRlUHJvZ3Jlc3ModW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKQogICAgIG1fcHJvZ3Jlc3NJdGVtcy5yZW1vdmUoaXQpOwogfQog
Ci11bnNpZ25lZCBsb25nIFByb2dyZXNzVHJhY2tlcjo6Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigp
Ci17Ci0gICAgcmV0dXJuICsrc191bmlxdWVJZGVudGlmaWVyOwotfQotCiBib29sIFByb2dyZXNz
VHJhY2tlcjo6aXNNYWluTG9hZFByb2dyZXNzaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1fb3Jp
Z2luYXRpbmdQcm9ncmVzc0ZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tl
ci5oCmluZGV4IDRkODJmMzA5YWNiNTJmNGNjYTgwNjZmN2I5NjAzMjUzYTNiMTQ4MGIuLjc1MTYx
ZTI5Nzc0NGY5YWJjZGYzODc2ZjFlMjUwNmY0MTZmOTUxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJvZ3Jlc3NUcmFja2VyLmgKQEAgLTQ2LDggKzQ2LDYgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFByb2dyZXNzVHJhY2tlcihQcm9ncmVzc1RyYWNrZXJDbGllbnQmKTsKICAgICB+UHJvZ3Jl
c3NUcmFja2VyKCk7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZGVu
dGlmaWVyKCk7Ci0KICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAogICAg
IHZvaWQgcHJvZ3Jlc3NTdGFydGVkKEZyYW1lJik7CkBAIC02OCw4ICs2Niw2IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHByb2dyZXNzSGVhcnRiZWF0VGltZXJGaXJlZChUaW1lcjxQcm9ncmVzc1Ry
YWNrZXI+Jik7CiAgICAgCi0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc191bmlxdWVJZGVudGlm
aWVyOwotICAgIAogICAgIFByb2dyZXNzVHJhY2tlckNsaWVudCYgbV9jbGllbnQ7CiAgICAgbG9u
ZyBsb25nIG1fdG90YWxQYWdlQW5kUmVzb3VyY2VCeXRlc1RvTG9hZDsKICAgICBsb25nIGxvbmcg
bV90b3RhbEJ5dGVzUmVjZWl2ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAppbmRleCAyNzRmZjE2ZjZlY2Y5NmVmOGZhYzRlMDUwYWI3NDIyY2Q1YjBiZDJhLi5mNDA1
NjZjOGVlYTgzYjUxMWViNTE0OTIxZGNmOGMwNTU0NzFkNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJMb2Fk
ZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZS5oIgpAQCAtMjUwLDcgKzI0OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzExMDU5Nzk0PiBBU1NFUlRJT04gRkFJTEVEOiAhSGFzaFRy
YW5zbGF0b3I6OmVxdWFsKEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBrZXkpIGluIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGxvYWRp
bmcgdGhlIGF0dGFjaGVkIHdlYiBhcmNoaXZlCiAgICAgLy8gVGhpcyBpcyBub3QgbmVlZGVkIGlu
IFdlYktpdDIsIGFzIGl0IGRvZXNuJ3QgdXNlIG1faWRlbnRpZmllciBpbiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZQogICAgIGlmICgh
bV9pZGVudGlmaWVyKSB7Ci0gICAgICAgIG1faWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+
cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgICAgIG1faWRlbnRpZmll
ciA9IGRvY3VtZW50TG9hZGVyKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dChtX2lkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOwogCiAgICAgICAgIC8v
IElmIHRoaXMgUmVzb3VyY2VMb2FkZXIgd2FzIHN0b3BwZWQgYXMgYSByZXN1bHQgb2YgYXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QsIGJhaWwgb3V0CkBAIC0yNjIsNyArMjYxLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAvLyBXZSBuZWVkIGEgcmVzb3VyY2UgaWRlbnRp
ZmllciBmb3IgYWxsIHJlcXVlc3RzLCBldmVuIGlmIEZyYW1lTG9hZGVyIGlzIG5ldmVyIGdvaW5n
IHRvIHNlZSBpdCAoc3VjaCBhcyB3aXRoIENPUlMgcHJlZmxpZ2h0IHJlcXVlc3RzKS4KICAgICBi
b29sIGNyZWF0ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBmYWxzZTsKICAgICBpZiAoIW1faWRlbnRp
ZmllcikgewotICAgICAgICBtX2lkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNz
KCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBtX2lkZW50aWZpZXIgPSBkb2N1
bWVudExvYWRlcigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgICAgIGNyZWF0ZWRS
ZXNvdXJjZUlkZW50aWZpZXIgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA3
OWZiZTRmZTU3NTUyY2M5YjkwMTczN2NmOGJjOGE5Y2E2Y2I3NDViLi5kOTMyNzE3ZjlhZDNhMWRl
MzVhZTZiYjQzYWJhYzc0NzJmNmUwM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDgsMTAgKzQ4
LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5o
IgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0Nv
cHkpCkBAIC00OTgsNyArNDk0LDcgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQogICAgIC8vIEJlY2F1c2Ugd2lsbFNlbmRSZXF1ZXN0IG9ubHkgZ2V0cyBj
YWxsZWQgZHVyaW5nIHJlZGlyZWN0cywgd2UgaW5pdGlhbGl6ZQogICAgIC8vIHRoZSBpZGVudGlm
aWVyIGFuZCB0aGUgZmlyc3Qgd2lsbFNlbmRSZXF1ZXN0IGhlcmUuCi0gICAgbV9jdXJyZW50UmVz
b3VyY2VJZGVudGlmaWVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1
ZUlkZW50aWZpZXIoKTsKKyAgICBtX2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAg
ICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgp
OwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUs
IG1fY3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228115</attachid>
            <date>2014-03-29 13:02:21 -0700</date>
            <delta_ts>2015-08-05 11:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130865-20140329130155.patch</filename>
            <type>text/plain</type>
            <size>16572</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY1ZTMzZGYyNDM2NjUz
YWFmOWU1NTc5MzNmZmVhMDhiOTExM2NhYi4uNTRjN2EzODYzMzU2ZWIxM2ZiY2I1MDU5YTk2OGZi
NDY0YjFiYmY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTAzLTI4ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpIGZyb20gUHJvZ3Jlc3NUcmFja2VyIHRvIERvY3VtZW50TG9hZGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA4NjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBwcmVwYXJhdGlvbiBm
b3Igc3VwcG9ydGluZyByZXBsYXkgb2YgcmVzb3VyY2UgbG9hZGVyIGNhbGxiYWNrcywgdGhpcyBw
YXRjaAorICAgICAgICBtb3ZlcyB2ZW5kaW5nIG9mIHJlc291cmNlIGxvYWQgaWRlbnRpZmllcnMg
dG8gdGhlIG1haW4gZnJhbWUncyBkb2N1bWVudCBsb2FkZXIuCisgICAgICAgIFRoaXMgd2lsbCBl
bmFibGUgdHJhY2tpbmcgb2YgdmVuZGVkIGlkZW50aWZpZXJzIG9uIGEgcGVyLW1haW4gZnJhbWUg
YmFzaXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlvciB3YXMgY2hhbmdlZC4K
KworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJvbURlbGVnYXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvUGluZ0xvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpQaW5nTG9h
ZGVyKToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcDoKKyAgICAgICAgKiBs
b2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVhdGVSZXNvdXJjZUhh
bmRsZSk6CisKIDIwMTQtMDMtMjggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWFsbHkgZHJvcCBhbGwgbG9ja3MgaW4gbmVz
dGVkIHJ1biBsb29wIG9uIGlPUyBpZiBXZWJUaHJlYWQgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmlu
ZGV4IDkzZTA3NWE2ODdhMGJjYzBhOTQ0YzIxYmMwNTg5NmYxZjkzY2ExZjMuLjFiMzFkMzgzMjc0
ZDNkNjJhZmE1ODAyNTU2MDhkOTk5YTQ4NTQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM3LDE0ICsz
NywxNCBAQAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5j
bHVkZSAiRmlsZVJlYWRlckxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1
ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKKyNpbmNsdWRlICJNYWlu
RnJhbWUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTg1LDggKzg1LDgg
QEAgV2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCogZG9jdW1lbnQs
IFdlYlNvY2tldENoYW5uZWxDbGllbnQqIGMKICAgICAsIG1fYmxvYkxvYWRlclN0YXR1cyhCbG9i
TG9hZGVyTm90U3RhcnRlZCkKICNlbmRpZgogewotICAgIGlmIChQYWdlKiBwYWdlID0gbV9kb2N1
bWVudC0+cGFnZSgpKQotICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLmNy
ZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbV9kb2N1bWVu
dC0+ZnJhbWUoKSkKKyAgICAgICAgbV9pZGVudGlmaWVyID0gZnJhbWUtPm1haW5GcmFtZSgpLmxv
YWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsK
IH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYzZiMGIxYzNhY2U2NTcxYzIwYmE2ZGM5
ZmMzZmE4MDRhNDg1NGFkMy4uMTYzOTUwNjMxMGNjNzY0MDZiMmM3YWFhNWRjZmFlNDlhZTE1Mjcw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02NSw3ICs2
NSw2IEBACiAjaW5jbHVkZSAiUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4uaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQYWdlVGhyb3R0bGVyLmgiCi0jaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCkBAIC01ODQwLDcg
KzU4MzksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2hvdWxkV2FpdEZv
clJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZQogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KG1fY3VycmVudFNyYyk7CiAgICAgUmVzb3VyY2VMb2FkTm90aWZpZXImIG5vdGlmaWVy
ID0gZnJhbWUtPmxvYWRlcigpLm5vdGlmaWVyKCk7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3Vt
ZW50TG9hZGVyID0gZG9jdW1lbnQoKS5sb2FkZXIoKTsKLSAgICB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIgPSBwYWdlLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuYWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogCiAgICAgbm90
aWZpZXIuYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoaWRlbnRpZmllciwgZG9jdW1l
bnRMb2FkZXIsIHJlcXVlc3QpOwogICAgIG5vdGlmaWVyLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShpZGVudGlmaWVyLCBkb2N1bWVudExvYWRlciwgY2hhbGxlbmdlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApp
bmRleCBhNTI5MTYyNzhmY2RlMmE5MDVjNDAyNGJhN2JkMGVhOWI0MTM5OWIxLi5mNTA0ZjA2NTJh
NGEzMDA5NmNiMjE0N2Y4ZmFkMzJjN2Q1MWMyYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC00OSwxMCArNDksMTAg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0
ZS5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlc0RhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKQEAg
LTQ0OCw3ICs0NDgsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogewogICAgIFN0cmluZyBs
b2FkZXJJZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpOwogICAgIFN0cmluZyBmcmFt
ZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKTsKLSAgICB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIgPSBsb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5j
cmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0g
bG9hZGVyLT5mcmFtZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogICAgIG1fcmVzb3VyY2Vz
RGF0YS0+cmVzb3VyY2VDcmVhdGVkKHJlcXVlc3RJZCwgbG9hZGVySWQpOwogICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVxdWVzdElkLCByZXNvdXJjZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5ZTAwZTgxY2IwN2M5OTkwNjQw
OWIyZjlkMmM2NDYzODJmOGE2NmEyLi5lOGVjOTY0MjI1NmM0OGFhYjU3ODNhMDcwNTBhZjBiZGQ4
NTM2NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTU0
LDcgKzU0LDYgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5o
IgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCkBAIC0xMTcsNiArMTE2LDggQEAgc3RhdGlj
IGJvb2wgYXJlQWxsTG9hZGVyc1BhZ2VDYWNoZUFjY2VwdGFibGUoY29uc3QgUmVzb3VyY2VMb2Fk
ZXJNYXAmIGxvYWRlcnMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Vuc2lnbmVkIGxvbmcgRG9j
dW1lbnRMb2FkZXI6OnNfdW5pcXVlSWRlbnRpZmllciA9IDA7CisKIERvY3VtZW50TG9hZGVyOjpE
b2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogICAgIDogbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
KHRydWUpCiAgICAgLCBtX2ZyYW1lKDApCkBAIC0xMzMwLDYgKzEzMzEsMTIgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6c3RvcExvYWRpbmdTdWJyZXNvdXJjZXMoKQogICAgIGNhbmNlbEFsbChtX3N1
YnJlc291cmNlTG9hZGVycyk7CiB9CiAKK3Vuc2lnbmVkIGxvbmcgRG9jdW1lbnRMb2FkZXI6OmNy
ZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKQoreworICAgIEFTU0VSVChmcmFtZSgpICYmIGZyYW1lKCkt
Pm1haW5GcmFtZSgpLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkgPT0gdGhpcyk7Cisg
ICAgcmV0dXJuICsrc191bmlxdWVJZGVudGlmaWVyOworfQorCiB2b2lkIERvY3VtZW50TG9hZGVy
OjphZGRTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxvYWRlciogbG9hZGVyKQogewogICAgIC8v
IFRoZSBtYWluIHJlc291cmNlJ3MgdW5kZXJseWluZyBSZXNvdXJjZUxvYWRlciB3aWxsIGFzayB0
byBiZSBhZGRlZCBoZXJlLgpAQCAtMTQyMiw3ICsxNDI5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0
LT5tYXliZUxvYWRNYWluUmVzb3VyY2UobV9yZXF1ZXN0LCBtX3N1YnN0aXR1dGVEYXRhKTsKIAog
ICAgIGlmIChtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewotICAgICAgICBtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0gbV9mcmFtZS0+cGFnZSgpLT5wcm9ncmVz
cygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgbV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlciA9IG1fZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAg
ZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVz
dChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCB0aGlzLCBtX3JlcXVl
c3QpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIG1f
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURh
dGFMb2FkU29vbigpOwpAQCAtMTQ0OSw3ICsxNDU2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICB9CiAKICAgICBpZiAoIW1haW5SZXNvdXJj
ZUxvYWRlcigpKSB7Ci0gICAgICAgIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VM
b2FkZXIgPSBtX2ZyYW1lLT5wYWdlKCktPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmll
cigpOworICAgICAgICBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyID0g
bV9mcmFtZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y3Jl
YXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigp
LmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KG1faWRlbnRpZmllckZvckxvYWRXaXRo
b3V0UmVzb3VyY2VMb2FkZXIsIHRoaXMsIHJlcXVlc3QpOwogICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KHRoaXMsIG1faWRlbnRpZmllckZv
ckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCBiMjNjYTA4
NmUyODlhODk4NDlkZDAxZTM3MTZmZDdhZjEzMjk5ZmY4Li4wYjE5YWRiMzQ1NWEwNDdmYTY1YTk4
MGExYzNkY2RmZjdjYzI3ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aApAQCAtMjI3LDYgKzIyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBz
dG9wTG9hZGluZ1BsdWdJbnMoKTsKICAgICAgICAgdm9pZCBzdG9wTG9hZGluZ1N1YnJlc291cmNl
cygpOwogCisgICAgICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwor
CiAgICAgICAgIHZvaWQgYWRkU3VicmVzb3VyY2VMb2FkZXIoUmVzb3VyY2VMb2FkZXIqKTsKICAg
ICAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxvYWRlciopOwogICAg
ICAgICB2b2lkIGFkZFBsdWdJblN0cmVhbUxvYWRlcihSZXNvdXJjZUxvYWRlciopOwpAQCAtMzI3
LDYgKzMyOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNsZWFyTWFp
blJlc291cmNlKCk7CiAKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc191bmlxdWVJZGVu
dGlmaWVyOworCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBSZWY8Q2FjaGVkUmVz
b3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IDQ5OTI1NmFhYWRmN2Q2NmQwMjg4NmZlMDdhNTA0OWM3ZGJl
MGM1ZDguLjEyMzU3NmQ5YzlkYzc3YWJmODM4NWJhNGFjNmRhZDkyYjE5OWVjYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMjk3NiwxMSArMjk3Niw4IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCB1bnNpZ25lZCBsb25nJiBpCiB7CiAgICAgQVNTRVJUKCFyZXF1ZXN0LmlzTnVsbCgpKTsKIAot
ICAgIGlkZW50aWZpZXIgPSAwOwotICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkp
IHsKLSAgICAgICAgaWRlbnRpZmllciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRl
bnRpZmllcigpOwotICAgICAgICBub3RpZmllcigpLmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxS
ZXF1ZXN0KGlkZW50aWZpZXIsIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIHJlcXVlc3QpOwotICAg
IH0KKyAgICBpZGVudGlmaWVyID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CisgICAgbm90aWZpZXIo
KS5hc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdChpZGVudGlmaWVyLCBtX2RvY3VtZW50
TG9hZGVyLmdldCgpLCByZXF1ZXN0KTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0
KHJlcXVlc3QpOwogICAgIG5vdGlmaWVyKCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25z
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCBkNTFjZDUyMmIyYjg0
MTQyZjRhN2I2YjQ5OTRhZmFiMGY2YmQzZjk1Li5kNGMwOWU1ZWViNTU0ZjQ1YTA0MDhlNzYxNTA1
ZTFlMzI1YTc2YTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC0zMywx
MyArMzMsMTMgQEAKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGEuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCisjaW5j
bHVkZSAiTWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0x
MTYsNyArMTE2LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpjcmVhdGVQaW5nTG9hZGVyKEZyYW1lJiBm
cmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogUGluZ0xvYWRlcjo6UGluZ0xvYWRlcihG
cmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1fdGltZW91dCh0
aGlzLCAmUGluZ0xvYWRlcjo6dGltZW91dFRpbWVyRmlyZWQpCiB7Ci0gICAgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyID0gZnJhbWUucGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50
aWZpZXIoKTsKKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIgPSBmcmFtZS5tYWluRnJhbWUo
KS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVy
KCk7CiAgICAgLy8gRklYTUU6IFdoeSBhY3RpdmVEb2N1bWVudExvYWRlcj8gSSB3b3VsZCBoYXZl
IGV4cGVjdGVkIGRvY3VtZW50TG9hZGVyKCkuCiAgICAgLy8gSXRzZWVtcyBsaWtlIHRoZSBQaW5n
TG9hZGVyIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAvLyBEb2N1
bWVudCBpbiB0aGUgRnJhbWUsIGJ1dCB0aGUgYWN0aXZlRG9jdW1lbnRMb2FkZXIgd2lsbCBiZSBh
c3NvY2lhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCmluZGV4
IDMzMzg1MDY2YmU2YzM0MzNkNTZlNGM5MDUyMTFmODZhYWNhNDNmNWYuLmU0MjEzYzZiN2U3YmNi
YjYxZGE2ZmJlZGEzYzc5MjU5YTAzMjc4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcm9ncmVzc1RyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuY3BwCkBAIC03Myw4ICs3Myw2IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcg
ZXN0aW1hdGVkTGVuZ3RoOwogfTsKIAotdW5zaWduZWQgbG9uZyBQcm9ncmVzc1RyYWNrZXI6OnNf
dW5pcXVlSWRlbnRpZmllciA9IDA7Ci0KIFByb2dyZXNzVHJhY2tlcjo6UHJvZ3Jlc3NUcmFja2Vy
KFByb2dyZXNzVHJhY2tlckNsaWVudCYgY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQog
ICAgICwgbV90b3RhbFBhZ2VBbmRSZXNvdXJjZUJ5dGVzVG9Mb2FkKDApCkBAIC0yOTIsMTEgKzI5
MCw2IEBAIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjpjb21wbGV0ZVByb2dyZXNzKHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllcikKICAgICBtX3Byb2dyZXNzSXRlbXMucmVtb3ZlKGl0KTsKIH0KIAotdW5z
aWduZWQgbG9uZyBQcm9ncmVzc1RyYWNrZXI6OmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKQotewot
ICAgIHJldHVybiArK3NfdW5pcXVlSWRlbnRpZmllcjsKLX0KLQogYm9vbCBQcm9ncmVzc1RyYWNr
ZXI6OmlzTWFpbkxvYWRQcm9ncmVzc2luZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX29yaWdpbmF0
aW5nUHJvZ3Jlc3NGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9n
cmVzc1RyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaApp
bmRleCA0ZDgyZjMwOWFjYjUyZjRjY2E4MDY2ZjdiOTYwMzI1M2EzYjE0ODBiLi43NTE2MWUyOTc3
NDRmOWFiY2RmMzg3NmYxZTI1MDZmNDE2Zjk1MWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1By
b2dyZXNzVHJhY2tlci5oCkBAIC00Niw4ICs0Niw2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBQ
cm9ncmVzc1RyYWNrZXIoUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Jik7CiAgICAgflByb2dyZXNzVHJh
Y2tlcigpOwogCi0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWRlbnRpZmll
cigpOwotCiAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lk
IHByb2dyZXNzU3RhcnRlZChGcmFtZSYpOwpAQCAtNjgsOCArNjYsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwcm9ncmVzc0hlYXJ0YmVhdFRpbWVyRmlyZWQoVGltZXI8UHJvZ3Jlc3NUcmFja2Vy
PiYpOwogICAgIAotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHNfdW5pcXVlSWRlbnRpZmllcjsK
LSAgICAKICAgICBQcm9ncmVzc1RyYWNrZXJDbGllbnQmIG1fY2xpZW50OwogICAgIGxvbmcgbG9u
ZyBtX3RvdGFsUGFnZUFuZFJlc291cmNlQnl0ZXNUb0xvYWQ7CiAgICAgbG9uZyBsb25nIG1fdG90
YWxCeXRlc1JlY2VpdmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggMjc0ZmYxNmY2ZWNmOTZlZjhmYWM0ZTA1MGFiNzQyMmNkNWIwYmQyYS4uNzBhMGE5YzEy
MjA2MTkwZWZkMWZmMTNiYjJiZDNjZGY4MDA2NTVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKLSNpbmNsdWRlICJQcm9n
cmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlJl
c291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtMjUwLDcgKzI1
MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEx
MDU5Nzk0PiBBU1NFUlRJT04gRkFJTEVEOiAhSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEtleVRyYWl0
czo6ZW1wdHlWYWx1ZSgpLCBrZXkpIGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGxvYWRpbmcgdGhlIGF0dGFjaGVkIHdlYiBhcmNo
aXZlCiAgICAgLy8gVGhpcyBpcyBub3QgbmVlZGVkIGluIFdlYktpdDIsIGFzIGl0IGRvZXNuJ3Qg
dXNlIG1faWRlbnRpZmllciBpbiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZQogICAgIGlmICghbV9pZGVudGlmaWVyKSB7Ci0gICAgICAg
IG1faWRlbnRpZmllciA9IG1fZnJhbWUtPnBhZ2UoKS0+cHJvZ3Jlc3MoKS5jcmVhdGVVbmlxdWVJ
ZGVudGlmaWVyKCk7CisgICAgICAgIG1faWRlbnRpZmllciA9IG1fZnJhbWUtPm1haW5GcmFtZSgp
LmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIo
KTsKICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5hc3NpZ25JZGVudGlmaWVyVG9J
bml0aWFsUmVxdWVzdChtX2lkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyKCksIHJlcXVlc3QpOwog
CiAgICAgICAgIC8vIElmIHRoaXMgUmVzb3VyY2VMb2FkZXIgd2FzIHN0b3BwZWQgYXMgYSByZXN1
bHQgb2YgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QsIGJhaWwgb3V0CkBAIC0yNjIs
NyArMjYyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAvLyBXZSBuZWVkIGEgcmVz
b3VyY2UgaWRlbnRpZmllciBmb3IgYWxsIHJlcXVlc3RzLCBldmVuIGlmIEZyYW1lTG9hZGVyIGlz
IG5ldmVyIGdvaW5nIHRvIHNlZSBpdCAoc3VjaCBhcyB3aXRoIENPUlMgcHJlZmxpZ2h0IHJlcXVl
c3RzKS4KICAgICBib29sIGNyZWF0ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBmYWxzZTsKICAgICBp
ZiAoIW1faWRlbnRpZmllcikgewotICAgICAgICBtX2lkZW50aWZpZXIgPSBtX2ZyYW1lLT5wYWdl
KCktPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBtX2lkZW50
aWZpZXIgPSBtX2ZyYW1lLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAgICAgIGNyZWF0ZWRSZXNvdXJjZUlk
ZW50aWZpZXIgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCA3OWZiZTRmZTU3
NTUyY2M5YjkwMTczN2NmOGJjOGE5Y2E2Y2I3NDViLi42ZGIwNjUyY2U4ZDEwOGRmMDY1ZTU2NTZh
NWFmZjFmMzliNTIwZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJNYWluRnJhbWUu
aCIKICNpbmNsdWRlICJNYW5pZmVzdFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgpAQCAtNDgsMTAgKzQ5LDYgQEAKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCkBAIC00OTgsNyArNDk1LDcg
QEAgUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjcmVh
dGVSZXNvdXJjZUhhbmRsZShjb25zdCBVUkwKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIC8v
IEJlY2F1c2Ugd2lsbFNlbmRSZXF1ZXN0IG9ubHkgZ2V0cyBjYWxsZWQgZHVyaW5nIHJlZGlyZWN0
cywgd2UgaW5pdGlhbGl6ZQogICAgIC8vIHRoZSBpZGVudGlmaWVyIGFuZCB0aGUgZmlyc3Qgd2ls
bFNlbmRSZXF1ZXN0IGhlcmUuCi0gICAgbV9jdXJyZW50UmVzb3VyY2VJZGVudGlmaWVyID0gbV9m
cmFtZS0+cGFnZSgpLT5wcm9ncmVzcygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICBt
X2N1cnJlbnRSZXNvdXJjZUlkZW50aWZpZXIgPSBtX2ZyYW1lLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAgICAg
UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZnJhbWUsIG1f
Y3VycmVudFJlc291cmNlSWRlbnRpZmllciwgbV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2Fk
ZXIoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>