<?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>123016</bug_id>
          
          <creation_ts>2013-10-18 04:06:41 -0700</creation_ts>
          <short_desc>[CSS Regions] Possible performance regression after r157567</short_desc>
          <delta_ts>2013-10-22 07:48:59 -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>WebCore 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>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Andrei Bucur">abucur</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mibalan</cc>
    
    <cc>mihnea</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941144</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-18 04:06:41 -0700</bug_when>
    <thetext>r157567 may have regressed Parser/html5-full-render by ~1.1% and Parser/html-parser by ~2%:

https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mountainlion%22%2C%22Parser%2Fhtml5-full-render%3ATime%22%5D%2C%5B%22mac-mountainlion%22%2C%22Parser%2Fhtml-parser%3ATime%22%5D%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941163</commentid>
    <comment_count>1</comment_count>
      <attachid>214562</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-18 06:01:36 -0700</bug_when>
    <thetext>Created attachment 214562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941192</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-18 07:48:24 -0700</bug_when>
    <thetext>Performance results on Parser/html-parser:

With the patch:
1438.45	± 0.35%	
1439.70	± 0.18%
1434.50	± 0.27%
1432.70	± 0.22%	0.40% Better
1432.05	± 0.27%	0.44% Better

Without the patch:
1449.10	± 0.41%	0.74% Worse
1459.05	± 0.45%	1.43% Worse
1460.35	± 0.42%	1.52% Worse
1450.25	± 0.33%	0.82% Worse
1447.80	± 0.28%	0.65% Worse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941317</commentid>
    <comment_count>3</comment_count>
      <attachid>214562</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-18 13:35:11 -0700</bug_when>
    <thetext>Comment on attachment 214562
Patch

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

Thanks for looking into this! Some ponderings:

&gt; Source/WebCore/rendering/RenderBlockFlow.cpp:-280
&gt; -    if (logicalWidthChangedInRegions(flowThread))
&gt; +    if (logicalWidthChangedInRegions(flowThread) || namedFlowFragmentNeedsUpdate())
&gt;          relayoutChildren = true;
&gt;      if (updateShapesBeforeBlockLayout())
&gt;          relayoutChildren = true;
&gt; -    if (namedFlowFragmentNeedsUpdate())
&gt; -        relayoutChildren = true;

Would it make sense to do the updateShapesBeforeBlockLayout() check first, and then skip the other two checks if relayoutChildren already got set to true?

&gt; Source/WebCore/rendering/RenderObject.cpp:-2567
&gt; -bool RenderObject::isRenderNamedFlowFragmentContainer() const
&gt; -{
&gt; -    if (!isRenderBlockFlow())
&gt; -        return false;
&gt; -
&gt; -    return toRenderBlockFlow(this)-&gt;renderNamedFlowFragment();
&gt; -}

Why not just move this function to RenderElement instead?
Making it virtual seems strictly more expensive, since we never actually call it through a RenderBlockFlow pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941890</commentid>
    <comment_count>4</comment_count>
      <attachid>214747</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-21 10:09:49 -0700</bug_when>
    <thetext>Created attachment 214747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942195</commentid>
    <comment_count>5</comment_count>
      <attachid>214747</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-22 02:11:40 -0700</bug_when>
    <thetext>Comment on attachment 214747
Patch

Looks cool! Thanks for taking the time to tweak these things :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942199</commentid>
    <comment_count>6</comment_count>
      <attachid>214747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 02:30:57 -0700</bug_when>
    <thetext>Comment on attachment 214747
Patch

Rejecting attachment 214747 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 214747, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ILED at 45.
1 out of 2 hunks FAILED -- saving rejects to file Source/WebCore/rendering/RenderNamedFlowFragment.h.rej
patching file Source/WebCore/rendering/RenderObject.cpp
patching file Source/WebCore/rendering/RenderObject.h
patching file Source/WebCore/rendering/RenderTreeAsText.cpp
patching file Source/WebCore/style/StyleResolveTree.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Andreas Kling&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/8868221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942226</commentid>
    <comment_count>7</comment_count>
      <attachid>214835</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-22 04:09:44 -0700</bug_when>
    <thetext>Created attachment 214835
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942234</commentid>
    <comment_count>8</comment_count>
      <attachid>214835</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-10-22 04:47:03 -0700</bug_when>
    <thetext>Comment on attachment 214835
Patch for landing

Attachment 214835 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/8818256</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942285</commentid>
    <comment_count>9</comment_count>
      <attachid>214853</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-10-22 06:58:53 -0700</bug_when>
    <thetext>Created attachment 214853
Patch for landing + Win build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942301</commentid>
    <comment_count>10</comment_count>
      <attachid>214853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 07:48:56 -0700</bug_when>
    <thetext>Comment on attachment 214853
Patch for landing + Win build fix

Clearing flags on attachment: 214853

Committed r157793: &lt;http://trac.webkit.org/changeset/157793&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942302</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-22 07:48:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214562</attachid>
            <date>2013-10-18 06:01:36 -0700</date>
            <delta_ts>2013-10-21 10:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123016-20131018160135.patch</filename>
            <type>text/plain</type>
            <size>10930</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYzNzAwZjc3NmVkZmFk
NjdhN2VhNjAyOGM5NjFkMzVmNjNmMjJkNS4uODBmMWI2ZTU1MDAzOTM1MTBlZjY2NWQzODc4ZWNh
NmI1M2ZjNDgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTEwLTE4ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gUG9z
c2libGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlciByMTU3NTY3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMwMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmV2aXNpb24gMTU3NTY3IGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NzU2NyBtYXkgaGF2ZSByZWdyZXNzZWQK
KyAgICAgICAgUGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyIGJ5IH4xLjElIGFuZCBQYXJzZXIvaHRt
bC1wYXJzZXIgYnkgfjIlLiBUaGVzZSBjaGFuZ2VzCisgICAgICAgIHRyeSB0byBvcHRpbWl6ZSB0
aGUgaW5pdGlhbCBwYXRjaCBiYXNlZCBvbiBBbmRyZWFzIEtsaW5nJ3MgcmV2aWV3LgorCisgICAg
ICAgIFRlc3RzOiBObyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OmNyZWF0ZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50SWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhOjpSZW5kZXJCbG9ja0Zsb3dSYXJl
RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdlbmVyYXRpbmdFbGVtZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250
YWluZXIpOiBNYWtlIGl0IHZpcnR1YWwgYW5kIHJldHVybiBmYWxzZSBieSBkZWZhdWx0LgorCiAy
MDEzLTEwLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBHZW5lcmF0ZSBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgR09iamVjdCBET00g
YmluZGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkYzM0MzA2YzdmYThiYjRiZmMxNmQx
MzM2Njg2NTQ1NmJiYmRjNjllLi42NTY3ZDlkY2Y4NzkyNzkyNTJmNjdhYTQ2YWJiYjdjZjViOTQ1
OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNzYxLDEwICsyNzYxLDEyIEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAKIFZl
Y3RvcjxSZWZQdHI8UmFuZ2U+ID4gRWxlbWVudDo6d2Via2l0R2V0UmVnaW9uRmxvd1Jhbmdlcygp
IGNvbnN0CiB7Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKLQogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4gcmFuZ2VPYmplY3RzOwotICAg
IGlmIChkb2N1bWVudCgpLmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgcmVuZGVyZXIoKSAmJiByZW5k
ZXJlcigpLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpIHsKKyAgICBpZiAo
IWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhbmdlT2Jq
ZWN0czsKKworICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CisgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudENvbnRhaW5lcigpKSB7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KiByZWdpb24gPSB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQoKTsKICAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQogICAgICAgICAgICAg
cmVnaW9uLT5nZXRSYW5nZXMocmFuZ2VPYmplY3RzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZDRmZDlmMWQxNTZhNzEzMjQwYzk1NWZhYzYy
MjQ2NDcwZjc5Y2Q0OC4uZDgxZDQ2YjQxYzAwOTNkNDczMDcwNzhlZmZmMGJkYzJhNTU5MmI1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTI3
MiwxMiArMjcyLDEwIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAKICAgICAvLyBSZWdpb25z
IGNoYW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMgdG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgog
ICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Js
b2NrKCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkp
CisgICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkgfHwgbmFt
ZWRGbG93RnJhZ21lbnROZWVkc1VwZGF0ZSgpKQogICAgICAgICByZWxheW91dENoaWxkcmVuID0g
dHJ1ZTsKICAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkKICAgICAgICAg
cmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKG5hbWVkRmxvd0ZyYWdtZW50TmVlZHNV
cGRhdGUoKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAKICAgICAvLyBXZSB1
c2UgZm91ciB2YWx1ZXMsIG1heFRvcFBvcywgbWF4VG9wTmVnLCBtYXhCb3R0b21Qb3MsIGFuZCBt
YXhCb3R0b21OZWcsIHRvIHRyYWNrCiAgICAgLy8gb3VyIGN1cnJlbnQgbWF4aW1hbCBwb3NpdGl2
ZSBhbmQgbmVnYXRpdmUgbWFyZ2lucy4gVGhlc2UgdmFsdWVzIGFyZSB1c2VkIHdoZW4gd2UKQEAg
LTIzNjUsMTAgKzIzNjMsMTAgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmFkanVzdEZvckJvcmRl
ckZpdChMYXlvdXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQsIExheW91dFUKIAogdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmNyZWF0ZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50SWZOZWVkZWQoKQogewot
ICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIHx8IGlzUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKSkKKyAgICBpZiAoIWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCByZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpIHx8IGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSAm
JiBzdHlsZSgpLT5pc0Rpc3BsYXlSZWdpb25UeXBlKCkgJiYgIXN0eWxlKCktPnJlZ2lvblRocmVh
ZCgpLmlzRW1wdHkoKSkgeworICAgIGlmIChzdHlsZSgpLT5pc0Rpc3BsYXlSZWdpb25UeXBlKCkg
JiYgIXN0eWxlKCktPnJlZ2lvblRocmVhZCgpLmlzRW1wdHkoKSkgewogICAgICAgICBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCogZmxvd0ZyYWdtZW50ID0gbmV3IFJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KGRvY3VtZW50KCkpOwogICAgICAgICBmbG93RnJhZ21lbnQtPnNldFN0eWxlRm9yTmFtZWRG
bG93RnJhZ21lbnQoc3R5bGUoKSk7CiAgICAgICAgIHNldFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KGZsb3dGcmFnbWVudCk7CkBAIC0yNDA0LDExICsyNDAyLDIwIEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsSGVpZ2h0KCkKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBmbG93RnJhZ21l
bnQpCiB7Ci0gICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQ
dHIobmV3IFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhKHRoaXMpKTsKLSAgICBpZiAobV9yYXJlRGF0
YS0+bV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC0+ZGVzdHJveSgpOwotICAgIG1fcmFyZURhdGEtPm1fcmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQgPSBmbG93RnJhZ21lbnQ7CisgICAgUmVuZGVyQmxvY2tGbG93UmFy
ZURhdGEmIHJhcmVEYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKKyAgICBpZiAocmFyZURhdGEubV9y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkKKyAgICAgICAgcmFyZURhdGEubV9yZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC0+ZGVzdHJveSgpOworICAgIHJhcmVEYXRhLm1fcmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQgPSBmbG93RnJhZ21lbnQ7Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhpcyBmdW5jdGlvbiBp
biBtb3JlIHBsYWNlcy4KK1JlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEm
IFJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZURhdGEoKQoreworICAgIGlmIChtX3JhcmVEYXRh
KQorICAgICAgICByZXR1cm4gKm1fcmFyZURhdGE7CisKKyAgICBtX3JhcmVEYXRhID0gYWRvcHRQ
dHIobmV3IFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhKHRoaXMpKTsKKyAgICByZXR1cm4gKm1fcmFy
ZURhdGE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCBiOWZjYzMwYTNiNDI1ZTk1N2JhNTczMTg0N2Fm
MzA4NGUwNGIzNGZhLi40YjhkYTIzOThhNjliOTA1ZmJhODY0OWUxNjJmZGViMjlmMzYxZGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0zOCw2ICsz
OCw4IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgdmlydHVhbCB2b2lkIGxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIE9W
RVJSSURFOwogCisgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250
YWluZXIoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiByZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCgpOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJl
ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBPVkVSUklE
RTsKQEAgLTk0LDggKzk2LDggQEAgcHVibGljOgogICAgICAgICBSZW5kZXJCbG9ja0Zsb3dSYXJl
RGF0YShjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGJsb2NrKQogICAgICAgICAgICAgOiBtX21hcmdp
bnMocG9zaXRpdmVNYXJnaW5CZWZvcmVEZWZhdWx0KGJsb2NrKSwgbmVnYXRpdmVNYXJnaW5CZWZv
cmVEZWZhdWx0KGJsb2NrKSwgcG9zaXRpdmVNYXJnaW5BZnRlckRlZmF1bHQoYmxvY2spLCBuZWdh
dGl2ZU1hcmdpbkFmdGVyRGVmYXVsdChibG9jaykpCiAgICAgICAgICAgICAsIG1fbGluZUJyZWFr
VG9Bdm9pZFdpZG93KC0xKQotICAgICAgICAgICAgLCBtX2xpbmVHcmlkQm94KDApCi0gICAgICAg
ICAgICAsIG1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoMCkKKyAgICAgICAgICAgICwgbV9saW5l
R3JpZEJveChudWxscHRyKQorICAgICAgICAgICAgLCBtX3JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KG51bGxwdHIpCiAgICAgICAgICAgICAsIG1fZGlzY2FyZE1hcmdpbkJlZm9yZShmYWxzZSkKICAg
ICAgICAgICAgICwgbV9kaXNjYXJkTWFyZ2luQWZ0ZXIoZmFsc2UpCiAgICAgICAgICAgICAsIG1f
ZGlkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coZmFsc2UpCkBAIC0zNjcsNiArMzY5LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgT1ZFUlJJREU7CiAg
ICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21GbG9hdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
Rm9yQm9yZGVyRml0KExheW91dFVuaXQgeCwgTGF5b3V0VW5pdCYgbGVmdCwgTGF5b3V0VW5pdCYg
cmlnaHQpIGNvbnN0IE9WRVJSSURFOworICAgIFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBlbnN1
cmVSYXJlRGF0YSgpOwogCiAKIC8vIEZJWE1FLUJMT0NLRkxPVzogVGhlc2UgbWV0aG9kcyBoYXZl
IGltcGxlbWVudGF0aW9ucyBpbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmgKaW5kZXggOGMxZTNkZWIyODhmNDczMGUzMzQ2MzdmMTNjNTVlMGQ4MGMyZWU4ZC4uMjFmZTkx
Zjg1YTBiNGM4YzA0NWRkMWRhNDllZTVlZTBjMTM2NWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0yNjAsNyArMjYwLDcgQEAgaW5saW5lIGNvbnN0IFJl
bmRlckVsZW1lbnQqIHRvUmVuZGVyRWxlbWVudChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkK
IAogaW5saW5lIEVsZW1lbnQqIFJlbmRlckVsZW1lbnQ6OmdlbmVyYXRpbmdFbGVtZW50KCkgY29u
c3QKIHsKLSAgICBpZiAoaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpICYmIHBhcmVudCgpKQor
ICAgIGlmIChwYXJlbnQoKSAmJiBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpCiAgICAgICAg
IHJldHVybiB0b1JlbmRlckVsZW1lbnQocGFyZW50KCkpLT5nZW5lcmF0aW5nRWxlbWVudCgpOwog
ICAgIHJldHVybiB0b0VsZW1lbnQoUmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFn
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmgKaW5kZXggNjM1Mjc1MDJiYTEyYzNkZmUxMjJlMWMzYWQwOGNmMWIyNjQwOGVmZS4uNzEwNTUz
OGEwYTNjYWI5ZGFhYmE2NDdkM2M3Njc2YTc4NmQ5YjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxl
OwogCi1jbGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA6IHB1YmxpYyBSZW5kZXJSZWdpb24g
eworY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgRklOQUwgOiBwdWJsaWMgUmVuZGVyUmVn
aW9uIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1
bWVudCYpOwogICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CkBAIC00NSwx
NyArNDUsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGVGb3JOYW1lZEZsb3dGcmFnbWVu
dChjb25zdCBSZW5kZXJTdHlsZSopOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBMYXlvdXRVbml0IG1heFBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CiAKICAgICBi
b29sIGlzUHNldWRvRWxlbWVudFJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIHBhcmVudCgpICYmIHBh
cmVudCgpLT5pc1BzZXVkb0VsZW1lbnQoKTsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZEhhdmVBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0OwotCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGF2ZUF1dG9Mb2dp
Y2FsSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAiUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQiOyB9CiB9OwogCiBpbmxpbmUgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHRvUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGM4NTdlNDdmNDE0YmIwNDE5YzQxNzE5NWYzNTg5
NTc5ZGNhNmU3MTguLjRlNGRhMTkxNGJmNTJkYzRkNDk1OWNiMmY4NjE1YzAyZGJkYjMzYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTU4LDE0ICsy
NTU4LDYgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4o
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6aXNSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc1JlbmRl
ckJsb2NrRmxvdygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdG9SZW5k
ZXJCbG9ja0Zsb3codGhpcyktPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Ci19Ci0KICNpZiBF
TkFCTEUoU1ZHKQogCiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogUmVuZGVyT2JqZWN0Ojp0
b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAppbmRleCAwODUwYmYzOTFkZjVmOTQ5NjIzM2YzNjgzYmUxNzhkMTA2ZGM2Nzg5
Li5hMmQ2MTQ4ODc5Zjc4NDE2Mjc4YWE5MWU0OWM0Njc4MjdkNzEzMTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0zNjAsOSArMzYwLDkgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudENvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0luRmxv
d1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBpc1JlbmRlckZsb3dUaHJlYWQoKSAm
JiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KICAgICBib29sIGlzT3V0T2ZGbG93UmVuZGVy
Rmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVuZGVyRmxvd1RocmVhZCgpICYmIGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpOyB9Ci0gICAgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
Q29udGFpbmVyKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVt
bkJsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214747</attachid>
            <date>2013-10-21 10:09:49 -0700</date>
            <delta_ts>2013-10-22 04:09:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123016-20131021201018.patch</filename>
            <type>text/plain</type>
            <size>26111</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA5MGI5ZTk0MmVmMjdl
ZmExZGMyYjc0ZjgzZmNhODUzNzA0NGFjYS4uYjgzN2QwNDYzYzZhYzM2YTM3NzZlNzhhYWM3Yzkz
NTA3NDljYmE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTEwLTIxICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gUG9z
c2libGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlciByMTU3NTY3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMwMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcmV2aXNpb24gMTU3NTY3IGh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NzU2NyBtYXkgaGF2ZSByZWdyZXNzZWQK
KyAgICAgICAgUGFyc2VyL2h0bWw1LWZ1bGwtcmVuZGVyIGJ5IH4xLjElIGFuZCBQYXJzZXIvaHRt
bC1wYXJzZXIgYnkgfjIlLiBUaGVzZSBjaGFuZ2VzCisgICAgICAgIHRyeSB0byBvcHRpbWl6ZSB0
aGUgaW5pdGlhbCBwYXRjaCwgYmFzZWQgb24gQW5kcmVhcyBLbGluZydzIHJldmlldy4KKworICAg
ICAgICBUaGUgcGF0Y2ggYWxzbyBhZGRzIGEgY291cGxlIG9mIHJlZmFjdG9yaW5ncyB0aGF0IHNo
b3VsZCBtYWtlIHRoZSBjb2RlIGVhc2llciB0byByZWFkOgorICAgICAgICAtIHRoZSBDU1MgU2hh
cGVzIGZ1bmN0aW9ucyBhcmUgbm93IHdyYXBwZWQgaW4gYSBzaW5nbGUgI2lmIGNsYXVzZQorICAg
ICAgICAtIHRoZSBDU1MgU2hhcGVzIGFuZCBDU1MgUmVnaW9ucyBwcmUtbGF5b3V0IHByZXBhcmF0
aW9ucyBhcmUgd3JhcHBlZCBpbiBhIGhlbHBlciBmdW5jdGlvbgorCisgICAgICAgIFRoZSBSZW5k
ZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2sgZnVuY3Rp
b24gaXMgb3B0aW1pemVkIGJ5IHBhc3NpbmcKKyAgICAgICAgaXQgaW5mb3JtYXRpb24gYWJvdXQg
dGhlIHN0YXRlIG9mIHRoZSByZWxheW91dCBjaGlsZHJlbiBmbGFnLiBJZiB0aGUgZmxhZyBpcyB0
cnVlIGFscmVhZHksCisgICAgICAgIHNvbWUgb2YgdGhlIHN0ZXBzIGFyZSBza2lwcGVkLgorCisg
ICAgICAgIFRlc3RzOiBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpidWlsZE9iamVjdEZvckVsZW1lbnRJbmZvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hhcGVJbmZvUmVxdWlyZXNSZWxheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQmVmb3JlQmxv
Y2tMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmNvbXB1dGVTaGFwZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnByZXBhcmVTaGFwZXNBbmRQYWdp
bmF0aW9uQmVmb3JlQmxvY2tMYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpzZXRSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJhcmVE
YXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhOjpSZW5kZXJC
bG9ja0Zsb3dSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojppc1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRl
cHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpnZW5lcmF0
aW5nRWxlbWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmxheW91
dEJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVz
b2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OmVsZW1lbnRJbnNpZGVSZWdp
b25OZWVkc1JlbmRlcmVyKToKKwogMjAxMy0xMC0yMSAgTWloYWkgTWFlcmVhbiAgPG1tYWVyZWFu
QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFJlZ2lvbnNdIEZpeCBXSElURVNQQUNFIGlzc3Vl
cyBpbiB0aGUgQ1NTIGdyYW1tYXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNjYxZmQzOTQ1
OWJjOWQxZDQwYzQ3YjNiMWUxZWY2YjNlMzllM2JmOC4uMDY3MzcwYzI0ODFkOTJhZDNjMTk3OWY2
YzBlODNiNjY0YTY3MjBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjc2MSwxMCArMjc2
MSwxMiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQo
KSBjb25zdAogCiBWZWN0b3I8UmVmUHRyPFJhbmdlPj4gRWxlbWVudDo6d2Via2l0R2V0UmVnaW9u
Rmxvd1JhbmdlcygpIGNvbnN0CiB7Ci0gICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKLQogICAgIFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiByYW5nZU9i
amVjdHM7Ci0gICAgaWYgKGRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSAmJiByZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkg
eworICAgIGlmICghZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm4gcmFuZ2VPYmplY3RzOworCisgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5k
aW5nU3R5bGVzaGVldHMoKTsKKyAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1Jl
bmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpIHsKICAgICAgICAgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqIHJlZ2lvbiA9IHRvUmVuZGVyQmxvY2tGbG93KHJlbmRlcmVyKCkpLT5yZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpOwogICAgICAgICBpZiAocmVnaW9uLT5pc1ZhbGlkKCkpCiAg
ICAgICAgICAgICByZWdpb24tPmdldFJhbmdlcyhyYW5nZU9iamVjdHMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDdjNzQ2YjFlMmUwNTQz
YTMzMDMyOTg0OTYwOWFjYTUwNzc4Njk2YWYuLjc3YmU4NWY5YmY1Y2U5NjJlYWE5MmVlYzQzZjY1
NjVhODIyOThiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKQEAgLTU1NCw3ICs1NTQsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8oTm9kZSogbm9kZSkKICAgICAgICAgZWxl
bWVudEluZm8tPnNldFN0cmluZygiY2xhc3NOYW1lIiwgY2xhc3NOYW1lcy50b1N0cmluZygpKTsK
ICAgICB9CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAg
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBG
cmFtZVZpZXcqIGNvbnRhaW5pbmdWaWV3ID0gY29udGFpbmluZ0ZyYW1lLT52aWV3KCk7CiAgICAg
SW50UmVjdCBib3VuZGluZ0JveCA9IHBpeGVsU25hcHBlZEludFJlY3QoY29udGFpbmluZ1ZpZXct
PmNvbnRlbnRzVG9Sb290VmlldyhyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggYjUzNTAzNmI0
M2MyN2I0NDk2ZTkzMGZlZTEzMjgzMmJiOTQxNTZmYy4uOWEwMGZkNTA4NmJmOGEwZDMxNWQxN2Vk
Zjc1M2MzOTAyNGQ0YzU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0xNDA1LDExICsxNDA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNoYXBlSW5mb1Jl
cXVpcmVzUmVsYXlvdXQoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogICAgICAgICBpbmZvID0g
YmxvY2stPmxheW91dFNoYXBlSW5zaWRlSW5mbygpOwogICAgIHJldHVybiBpbmZvICYmIGluZm8t
Pm5lZWRzTGF5b3V0KCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlU2hh
cGVzQmVmb3JlQmxvY2tMYXlvdXQoKQogewotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIGlm
ICghZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmICFzaGFwZUluc2lkZUluZm8oKSkKICAg
ICAgICAgcmV0dXJuIHNoYXBlSW5mb1JlcXVpcmVzUmVsYXlvdXQodGhpcyk7CiAKQEAgLTE0Mjcs
MTQgKzE0MjUsMTIgQEAgYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tM
YXlvdXQoKQogICAgIHNldExvZ2ljYWxUb3Aob2xkVG9wKTsKIAogICAgIHJldHVybiBzaGFwZUlu
Zm9SZXF1aXJlc1JlbGF5b3V0KHRoaXMpOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYKIH0KKyNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCiB2b2lkIFJlbmRlckJsb2Nr
Ojpjb21wdXRlU2hhcGVTaXplKCkKIHsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBTaGFw
ZUluc2lkZUluZm8qIHNoYXBlSW5zaWRlSW5mbyA9IHRoaXMtPnNoYXBlSW5zaWRlSW5mbygpOwog
ICAgIGlmICghc2hhcGVJbnNpZGVJbmZvKQogICAgICAgICByZXR1cm47CkBAIC0xNDQ3LDggKzE0
NDMsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlU2hhcGVTaXplKCkKICAgICAgICAgYm9v
bCBwZXJjZW50YWdlTG9naWNhbEhlaWdodFJlc29sdmFibGUgPSBwZXJjZW50YWdlTG9naWNhbEhl
aWdodElzUmVzb2x2YWJsZUZyb21CbG9jayh0aGlzLCBmYWxzZSk7CiAgICAgICAgIHNoYXBlSW5z
aWRlSW5mby0+c2V0U2hhcGVTaXplKGxvZ2ljYWxXaWR0aCgpLCBwZXJjZW50YWdlTG9naWNhbEhl
aWdodFJlc29sdmFibGUgPyBsb2dpY2FsSGVpZ2h0KCkgOiBMYXlvdXRVbml0KCkpOwogICAgIH0K
LX0KICNlbmRpZgorfQogCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNBZnRlckJsb2Nr
TGF5b3V0KGJvb2wgaGVpZ2h0Q2hhbmdlZCkKIHsKQEAgLTE0NjIsNiArMTQ1OCwxNiBAQCB2b2lk
IFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNBZnRlckJsb2NrTGF5b3V0KGJvb2wgaGVpZ2h0Q2hh
bmdlZCkKICNlbmRpZgogfQogCit2b2lkIFJlbmRlckJsb2NrOjpwcmVwYXJlU2hhcGVzQW5kUGFn
aW5hdGlvbkJlZm9yZUJsb2NrTGF5b3V0KGJvb2wmIHJlbGF5b3V0Q2hpbGRyZW4pCit7CisgICAg
Ly8gUmVnaW9ucyBjaGFuZ2luZyB3aWR0aHMgY2FuIGZvcmNlIHVzIHRvIHJlbGF5b3V0IG91ciBj
aGlsZHJlbi4KKyAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENv
bnRhaW5pbmdCbG9jaygpOworICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgp
KQorICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICBpZiAoZmxvd1RocmVhZCkK
KyAgICAgICAgZmxvd1RocmVhZC0+bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2Nr
KHRoaXMsIHJlbGF5b3V0Q2hpbGRyZW4pOworfQorCiBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVM
b2dpY2FsV2lkdGhBbmRDb2x1bW5XaWR0aCgpCiB7CiAgICAgTGF5b3V0VW5pdCBvbGRXaWR0aCA9
IGxvZ2ljYWxXaWR0aCgpOwpAQCAtNTI3MiwxNCArNTI3OCw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6
OnNldFN0YXRpY0lubGluZVBvc2l0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0
VW5pdCBiCiAgICAgY2hpbGQtPmxheWVyKCktPnNldFN0YXRpY0lubGluZVBvc2l0aW9uKGlubGlu
ZVBvc2l0aW9uKTsKIH0KIAotYm9vbCBSZW5kZXJCbG9jazo6bG9naWNhbFdpZHRoQ2hhbmdlZElu
UmVnaW9ucyhSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkKSBjb25zdAotewotICAgIGlmICgh
Zmxvd1RocmVhZCB8fCAhZmxvd1RocmVhZC0+aGFzVmFsaWRSZWdpb25JbmZvKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gZmxvd1RocmVhZC0+bG9naWNhbFdpZHRo
Q2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKHRoaXMpOwotfQotCiB2b2lkIFJlbmRlckJsb2NrOjpj
b21wdXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gqIGJveCkgY29uc3QK
IHsKICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5p
bmdCbG9jaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBhN2I2
NmE4MGUxOTU1NTI1ZjJkMWI2MTI4YzE0ZDU0M2Q5ZDJlZDhhLi4zODU0YzI0YjRlMGM2YjNlMzVh
OTAxNGVlNjQ1MzlhY2VmZGI0ZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaApAQCAtNTA2LDYgKzUwNiw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZUJsb2Nr
Q2hpbGREaXJ0eUJpdHNCZWZvcmVMYXlvdXQoYm9vbCByZWxheW91dENoaWxkcmVuLCBSZW5kZXJC
b3gqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjaGVja0ZvclBhZ2luYXRpb25Mb2dpY2FsSGVpZ2h0
Q2hhbmdlKExheW91dFVuaXQmIHBhZ2VMb2dpY2FsSGVpZ2h0LCBib29sJiBwYWdlTG9naWNhbEhl
aWdodENoYW5nZWQsIGJvb2wmIGhhc1NwZWNpZmllZFBhZ2VMb2dpY2FsSGVpZ2h0KTsKKyAgICB2
b2lkIHByZXBhcmVTaGFwZXNBbmRQYWdpbmF0aW9uQmVmb3JlQmxvY2tMYXlvdXQoYm9vbCYpOwog
CiBwcml2YXRlOgogICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24g
d2hlbiBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwpAQCAtNzE1LDgg
KzcxNiw2IEBAIHByb3RlY3RlZDoKICAgICAvLyBsaW5lLCBpLmUuLCB0aGF0IGl0IGNhbid0IGJl
IHJlLXVzZWQuCiAgICAgYm9vbCBsaW5lV2lkdGhGb3JQYWdpbmF0ZWRMaW5lQ2hhbmdlZChSb290
SW5saW5lQm94KiwgTGF5b3V0VW5pdCBsaW5lRGVsdGEsIFJlbmRlckZsb3dUaHJlYWQqKSBjb25z
dDsKIAotICAgIGJvb2wgbG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhSZW5kZXJGbG93VGhy
ZWFkKikgY29uc3Q7Ci0KICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNDb2x1bW5zKGludCBkZXNp
cmVkQ29sdW1uQ291bnQpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUxvZ2ljYWxX
aWR0aEFuZENvbHVtbldpZHRoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCmluZGV4IGZhOGVkZTg1MjA3YTgwOTRlZTkxODQzYmYwNTM3MmM1NmIzZTI4
MjkuLmRhYmQ1ZDAzY2E0ZTM3YzllNmJkM2U4YmZjZGVkY2U2OGI4MmUyYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zMjYsMTQgKzMyNiw5
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxICiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2Ug
PSBzdHlsZSgpOwogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigmdmlldygp
LCB0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNDb2x1bW5zKCkgfHwgaGFzVHJhbnNmb3JtKCkg
fHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlVG9Vc2UtPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKCksIHBhZ2VMb2dpY2FsSGVpZ2h0LCBwYWdlTG9naWNhbEhlaWdodENoYW5nZWQsIGNvbHVt
bkluZm8oKSk7CiAKLSAgICAvLyBSZWdpb25zIGNoYW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMg
dG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aENo
YW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0
cnVlOwotICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpKQotICAgICAgICBy
ZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAobmFtZWRGbG93RnJhZ21lbnROZWVkc1Vw
ZGF0ZSgpKQotICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICBwcmVwYXJlU2hh
cGVzQW5kUGFnaW5hdGlvbkJlZm9yZUJsb2NrTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4pOworICAg
IGlmICghcmVsYXlvdXRDaGlsZHJlbikKKyAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IG5hbWVk
Rmxvd0ZyYWdtZW50TmVlZHNVcGRhdGUoKTsKIAogICAgIC8vIFdlIHVzZSBmb3VyIHZhbHVlcywg
bWF4VG9wUG9zLCBtYXhUb3BOZWcsIG1heEJvdHRvbVBvcywgYW5kIG1heEJvdHRvbU5lZywgdG8g
dHJhY2sKICAgICAvLyBvdXIgY3VycmVudCBtYXhpbWFsIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBt
YXJnaW5zLiBUaGVzZSB2YWx1ZXMgYXJlIHVzZWQgd2hlbiB3ZQpAQCAtMjU4NiwxMCArMjU4MSwx
MCBAQCBHYXBSZWN0cyBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZVNlbGVjdGlvbkdhcHMoUmVuZGVy
QmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5bwogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y3Jl
YXRlUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRJZk5lZWRlZCgpCiB7Ci0gICAgaWYgKHJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KCkgfHwgaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKQorICAgIGlm
ICghZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpIHx8IHJlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50KCkgfHwgaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpICYmIHN0eWxlKCktPmlzRGlz
cGxheVJlZ2lvblR5cGUoKSAmJiAhc3R5bGUoKS0+cmVnaW9uVGhyZWFkKCkuaXNFbXB0eSgpKSB7
CisgICAgaWYgKHN0eWxlKCktPmlzRGlzcGxheVJlZ2lvblR5cGUoKSAmJiAhc3R5bGUoKS0+cmVn
aW9uVGhyZWFkKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KiBmbG93RnJhZ21lbnQgPSBuZXcgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoZG9jdW1lbnQoKSk7
CiAgICAgICAgIGZsb3dGcmFnbWVudC0+c2V0U3R5bGVGb3JOYW1lZEZsb3dGcmFnbWVudChzdHls
ZSgpKTsKICAgICAgICAgc2V0UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoZmxvd0ZyYWdtZW50KTsK
QEAgLTI2MjUsMTEgKzI2MjAsMjAgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUxvZ2lj
YWxIZWlnaHQoKQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0UmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGZsb3dGcmFnbWVudCkKIHsKLSAgICBpZiAo
IW1fcmFyZURhdGEpCi0gICAgICAgIG1fcmFyZURhdGEgPSBhZG9wdFB0cihuZXcgUmVuZGVyQmxv
Y2tGbG93UmFyZURhdGEodGhpcykpOwotICAgIGlmIChtX3JhcmVEYXRhLT5tX3JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50KQotICAgICAgICBtX3JhcmVEYXRhLT5tX3JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50LT5kZXN0cm95KCk7Ci0gICAgbV9yYXJlRGF0YS0+bV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCA9IGZsb3dGcmFnbWVudDsKKyAgICBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSYgcmFyZURhdGEg
PSBlbnN1cmVSYXJlRGF0YSgpOworICAgIGlmIChyYXJlRGF0YS5tX3JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KQorICAgICAgICByYXJlRGF0YS5tX3JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LT5kZXN0
cm95KCk7CisgICAgcmFyZURhdGEubV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA9IGZsb3dGcmFn
bWVudDsKK30KKworLy8gRklYTUU6IFVzZSB0aGlzIGZ1bmN0aW9uIGluIG1vcmUgcGxhY2VzLgor
UmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSYgUmVuZGVyQmxvY2tGbG93
OjplbnN1cmVSYXJlRGF0YSgpCit7CisgICAgaWYgKG1fcmFyZURhdGEpCisgICAgICAgIHJldHVy
biAqbV9yYXJlRGF0YTsKKworICAgIG1fcmFyZURhdGEgPSBhZG9wdFB0cihuZXcgUmVuZGVyQmxv
Y2tGbG93UmFyZURhdGEodGhpcykpOworICAgIHJldHVybiAqbV9yYXJlRGF0YTsKIH0KIAogc3Rh
dGljIGJvb2wgc2hvdWxkQ2hlY2tMaW5lcyhSZW5kZXJPYmplY3QmIG9iaikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCAxOWIxNzg3MWRiNjczYWMwNDI1
ODQ0ZWQ5NzE2ODVjY2UyZTFmYzM4Li5hYzU2ZGFhNzA3MjBiNzRlN2YwYjA5MDEwZjVmMDNmZDlj
ZTRmNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBA
IC05Niw4ICs5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgUmVuZGVyQmxvY2tGbG93UmFyZURhdGEo
Y29uc3QgUmVuZGVyQmxvY2tGbG93KiBibG9jaykKICAgICAgICAgICAgIDogbV9tYXJnaW5zKHBv
c2l0aXZlTWFyZ2luQmVmb3JlRGVmYXVsdChibG9jayksIG5lZ2F0aXZlTWFyZ2luQmVmb3JlRGVm
YXVsdChibG9jayksIHBvc2l0aXZlTWFyZ2luQWZ0ZXJEZWZhdWx0KGJsb2NrKSwgbmVnYXRpdmVN
YXJnaW5BZnRlckRlZmF1bHQoYmxvY2spKQogICAgICAgICAgICAgLCBtX2xpbmVCcmVha1RvQXZv
aWRXaWRvdygtMSkKLSAgICAgICAgICAgICwgbV9saW5lR3JpZEJveCgwKQotICAgICAgICAgICAg
LCBtX3JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KDApCisgICAgICAgICAgICAsIG1fbGluZUdyaWRC
b3gobnVsbHB0cikKKyAgICAgICAgICAgICwgbV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVudChudWxs
cHRyKQogICAgICAgICAgICAgLCBtX2Rpc2NhcmRNYXJnaW5CZWZvcmUoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fZGlzY2FyZE1hcmdpbkFmdGVyKGZhbHNlKQogICAgICAgICAgICAgLCBtX2RpZEJy
ZWFrQXRMaW5lVG9Bdm9pZFdpZG93KGZhbHNlKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgUG9zaXRpb24gcG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiwgYm9vbCBzdGFy
dCA9IHRydWUpIGNvbnN0OwogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Mb2dpY2Fs
Q29udGVudHMpIE9WRVJSSURFOwotCisgICAgUmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIGVuc3Vy
ZVJhcmVEYXRhKCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5l
Q2hpbGRyZW4oVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0
aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBPVkVSUklERTsKIAog
Ly8gRklYTUUtQkxPQ0tGTE9XOiBUaGVzZSBtZXRob2RzIGhhdmUgaW1wbGVtZW50YXRpb25zIGlu
CkBAIC01MDYsNiArNTA2LDExIEBAIGlubGluZSBjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIHRvUmVu
ZGVyQmxvY2tGbG93KGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPihvYmplY3QpOwogfQogCitpbmxpbmUgYm9v
bCBSZW5kZXJFbGVtZW50Ojppc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaXNSZW5kZXJCbG9ja0Zsb3coKSAmJiB0b1JlbmRlckJsb2NrRmxv
dyh0aGlzKS0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKK30KKwogLy8gVGhpcyB3aWxsIGNh
dGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRlckJsb2Nr
Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cqKTsKIHZvaWQgdG9SZW5kZXJCbG9ja0Zsb3coY29u
c3QgUmVuZGVyQmxvY2tGbG93Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCmluZGV4IGU3Y2QwMmI2Y2M3NWIy
MGQ4Mjc0YTdlOGY5NGJkZDU2NTlkNTY4ZTMuLmQ2YjIwNTZmNGRlM2I5NzVlOGNjNmMyMGI1YWIx
NzlmY2JhMTg5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
ZXByZWNhdGVkRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCkBAIC0yODcsMTIgKzI4Nyw3IEBAIHZvaWQg
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQpCiAgICAgTGF5b3V0UmVwYWludGVyIHJlcGFpbnRlcigqdGhpcywg
Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkpOwogICAgIExheW91dFN0YXRlTWFpbnRhaW5l
ciBzdGF0ZVB1c2hlcigmdmlldygpLCB0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zv
cm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGlu
Z01vZGUoKSk7CiAKLSAgICAvLyBSZWdpb25zIGNoYW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMg
dG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aENo
YW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0
cnVlOwotICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpKQotICAgICAgICBy
ZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICBwcmVwYXJlU2hhcGVzQW5kUGFnaW5hdGlvbkJl
Zm9yZUJsb2NrTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAgICAgTGF5b3V0U2l6ZSBwcmV2
aW91c1NpemUgPSBzaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oCmluZGV4IGE0ZDJiZTY3MGNiNDQwODM5ZWY0YjA0YzkwMjM4MmFlOTM1ZWQzZDUuLjU3ZjM1
YWNmZjkyMTY0NGM1MjAxYjI2ZmI2YWQyZDBjNzBiZmQ2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1JlbmRlckJsb2NrRmxvdygpIGNvbnN0OwogICAgIGJvb2wgaXNSZW5kZXJSZXBsYWNlZCgp
IGNvbnN0OwogICAgIGJvb2wgaXNSZW5kZXJJbmxpbmUoKSBjb25zdDsKKyAgICBib29sIGlzUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVy
T2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpAQCAtMjYw
LDcgKzI2MSw3IEBAIGlubGluZSBjb25zdCBSZW5kZXJFbGVtZW50KiB0b1JlbmRlckVsZW1lbnQo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAKIGlubGluZSBFbGVtZW50KiBSZW5kZXJFbGVt
ZW50OjpnZW5lcmF0aW5nRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoKSAmJiBwYXJlbnQoKSkKKyAgICBpZiAocGFyZW50KCkgJiYgaXNSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCgpKQogICAgICAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KHBhcmVu
dCgpKS0+Z2VuZXJhdGluZ0VsZW1lbnQoKTsKICAgICByZXR1cm4gdG9FbGVtZW50KFJlbmRlck9i
amVjdDo6Z2VuZXJhdGluZ05vZGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA5ZTgyZDJkMjA3MjA1YWViOWMwNTQ3YWJkZDVl
YzNiZjFiNGZmOTBhLi5lOWE2YjMyMGExZWI1NjU3OWE1MWI0N2YwYWM0YWVlYWVkM2NlNTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAg
LTMzOSwxMiArMzM5LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogCiAgICAgTGF5b3V0U3RhdGVNYWludGFp
bmVyIHN0YXRlUHVzaGVyKCZ2aWV3KCksIHRoaXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5z
Zm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0
aW5nTW9kZSgpKTsKIAotICAgIC8vIFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1
cyB0byByZWxheW91dCBvdXIgY2hpbGRyZW4uCi0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAobG9naWNhbFdpZHRo
Q2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFkKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9
IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCi0gICAgICAg
IHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOworICAgIHByZXBhcmVTaGFwZXNBbmRQYWdpbmF0aW9u
QmVmb3JlQmxvY2tMYXlvdXQocmVsYXlvdXRDaGlsZHJlbik7CiAKICAgICBtX251bWJlck9mSW5G
bG93Q2hpbGRyZW5PbkZpcnN0TGluZSA9IC0xOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKaW5kZXggZGI1MzllOTU3OTQ2MmU4NmQ5MDZiZjFkYWY5
MWYyZjY1OGI4YjEzNS4uYmZlMTRmMzZkNTVjNGIzMTEyNWRhZjYyZGIyMjQ5OWNmNDliMGNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcApAQCAt
Njg4LDI3ICs2ODgsMzQgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1vdmVSZW5kZXJCb3hS
ZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogICAgIG1fcmVnaW9uUmFuZ2VNYXAucmVtb3ZlKGJv
eCk7CiB9CiAKLWJvb2wgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVn
aW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaykKK3ZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJs
b2NrKiBibG9jaywgYm9vbCYgcmVsYXlvdXRDaGlsZHJlbikKIHsKLSAgICBpZiAoIWhhc1JlZ2lv
bnMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghaGFzVmFsaWRSZWdpb25JbmZv
KCkpCisgICAgICAgIHJldHVybjsKIAogICAgIFJlbmRlclJlZ2lvblJhbmdlTWFwOjppdGVyYXRv
ciBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmluZChibG9jayk7CiAgICAgaWYgKGl0ID09IG1fcmVn
aW9uUmFuZ2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVuZGVyUmVnaW9uUmFuZ2UmIHJhbmdlID0gaXQtPnZhbHVlOwogICAgIGJvb2wg
cmFuZ2VJbnZhbGlkYXRlZCA9IHJhbmdlLnJhbmdlSW52YWxpZGF0ZWQoKTsKICAgICByYW5nZS5j
bGVhclJhbmdlSW52YWxpZGF0ZWQoKTsKIAorICAgIC8vIElmIHRoZXJlIHdpbGwgYmUgYSByZWxh
eW91dCBhbnl3YXkgc2tpcCB0aGUgbmV4dCBzdGVwcyBiZWNhdXNlIHRoZXkgb25seSB2ZXJpZnkK
KyAgICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJhbmdlcy4KKyAgICBpZiAocmVsYXlvdXRDaGlsZHJl
bikKKyAgICAgICAgcmV0dXJuOworCiAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsKICAg
ICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKICAgICBnZXRSZWdpb25SYW5nZUZvckJveChibG9j
aywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CiAKICAgICAvLyBOb3QgbmVjZXNzYXJ5IGZvciB0
aGUgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNvcnJlY3QgaW5m
byBmb3IgaXQuCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBjaGFuZ2VkIGludmFsaWRhdGUg
dGhlIGNoaWxkcmVuLgotICAgIGlmIChibG9jayA9PSB0aGlzKQotICAgICAgICByZXR1cm4gbV9w
YWdlTG9naWNhbFNpemVDaGFuZ2VkOworICAgIGlmIChibG9jayA9PSB0aGlzKSB7CisgICAgICAg
IHJlbGF5b3V0Q2hpbGRyZW4gPSBtX3BhZ2VMb2dpY2FsU2l6ZUNoYW5nZWQ7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbik7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKQEAg
LTcxNiwxOSArNzIzLDIxIEBAIGJvb2wgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hh
bmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBiCiAKICAgICAgICAgLy8g
V2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBjb21wdXRlZCBmb3IgdGhpcyByZWdpb24gc28gd2UgbmVl
ZCB0byBkbyBpdC4KICAgICAgICAgT3duUHRyPFJlbmRlckJveFJlZ2lvbkluZm8+IG9sZEluZm8g
PSByZWdpb24tPnRha2VSZW5kZXJCb3hSZWdpb25JbmZvKGJsb2NrKTsKLSAgICAgICAgaWYgKCFv
bGRJbmZvKQotICAgICAgICAgICAgcmV0dXJuIHJhbmdlSW52YWxpZGF0ZWQ7CisgICAgICAgIGlm
ICghb2xkSW5mbykgeworICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHJhbmdlSW52YWxp
ZGF0ZWQ7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBMYXlvdXRV
bml0IG9sZExvZ2ljYWxXaWR0aCA9IG9sZEluZm8tPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBS
ZW5kZXJCb3hSZWdpb25JbmZvKiBuZXdJbmZvID0gYmxvY2stPnJlbmRlckJveFJlZ2lvbkluZm8o
cmVnaW9uKTsKLSAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG5ld0luZm8tPmxvZ2ljYWxXaWR0aCgp
ICE9IG9sZExvZ2ljYWxXaWR0aCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBp
ZiAoIW5ld0luZm8gfHwgbmV3SW5mby0+bG9naWNhbFdpZHRoKCkgIT0gb2xkTG9naWNhbFdpZHRo
KSB7CisgICAgICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlckZsb3dUaHJlYWQ6OmNvbnRlbnRMb2dpY2FsV2lkdGhPZkZpcnN0UmVnaW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCmluZGV4
IDdiZWM0YTY1Nzc5ZWRjYWZmNTM0YjFmMGYwNzNjZTNiYTZjOGM1NTEuLjY1MGI4ZWI4NDEwYTBi
ZTg4ZTM4M2I3MGI2YjFhMzUxNjUyYjUyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuaApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBSZW5k
ZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24oVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVtb3ZlUmVuZGVyQm94UmVnaW9uSW5mbyhSZW5kZXJCb3gqKTsKLSAgICBib29s
IGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayop
OworICAgIHZvaWQgbG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0IFJl
bmRlckJsb2NrKiwgYm9vbCYpOwogCiAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRo
T2ZGaXJzdFJlZ2lvbigpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29udGVudExvZ2ljYWxIZWln
aHRPZkZpcnN0UmVnaW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKaW5kZXggZTVlMDY4NmUyODk4ODQ2YmYwZDNlOGQ1NmY1ODViMjBjNzZlNzVmYi4uYWNi
NjMxM2Y4ZDE0MmY4Njk0ZTRjOTdjNDA5YmZlNmM3ZDE2NmNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTY0LDEyICsxNjQsNyBAQCB2b2lkIFJlbmRlckdy
aWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBM
YXlvdXRSZXBhaW50ZXIgcmVwYWludGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlv
dXQoKSk7CiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCZ2aWV3KCksIHRo
aXMsIGxvY2F0aW9uT2Zmc2V0KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8
fCBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKIAotICAgIC8vIFJlZ2lv
bnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1cyB0byByZWxheW91dCBvdXIgY2hpbGRyZW4u
Ci0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5n
QmxvY2soKTsKLSAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFk
KSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVNoYXBl
c0JlZm9yZUJsb2NrTGF5b3V0KCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwor
ICAgIHByZXBhcmVTaGFwZXNBbmRQYWdpbmF0aW9uQmVmb3JlQmxvY2tMYXlvdXQocmVsYXlvdXRD
aGlsZHJlbik7CiAKICAgICBMYXlvdXRTaXplIHByZXZpb3VzU2l6ZSA9IHNpemUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaApp
bmRleCA2MzUyNzUwMmJhMTJjM2RmZTEyMmUxYzNhZDA4Y2YxYjI2NDA4ZWZlLi43MTA1NTM4YTBh
M2NhYjlkYWFiYTY0N2QzYzc2NzZhNzg2ZDliNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAK
LWNsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IDogcHVibGljIFJlbmRlclJlZ2lvbiB7Citj
bGFzcyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCBGSU5BTCA6IHB1YmxpYyBSZW5kZXJSZWdpb24g
ewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKQEAgLTQ1LDE3ICs0
NSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHlsZUZvck5hbWVkRmxvd0ZyYWdtZW50KGNv
bnN0IFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIExheW91dFVuaXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKIAogICAgIGJvb2wg
aXNQc2V1ZG9FbGVtZW50UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50
KCktPmlzUHNldWRvRWxlbWVudCgpOyB9CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkSGF2ZUF1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3Q7Ci0KIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50IjsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYXZlQXV0b0xvZ2ljYWxI
ZWlnaHQoKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCI7
IH0KIH07CiAKIGlubGluZSBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogdG9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudChSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggYzg1N2U0N2Y0MTRiYjA0MTljNDE3MTk1ZjM1ODk1Nzlk
Y2E2ZTcxOC4uNGU0ZGExOTE0YmY1MmRjNGQ0OTU5Y2IyZjg2MTVjMDJkYmRiMzNhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTI1NTgsMTQgKzI1NTgs
NiBAQCBib29sIFJlbmRlck9iamVjdDo6Y2FuQmVSZXBsYWNlZFdpdGhJbmxpbmVSdW5JbigpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyT2JqZWN0Ojppc1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkgY29uc3QKLXsKLSAgICBpZiAoIWlzUmVuZGVyQmxv
Y2tGbG93KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0b1JlbmRlckJs
b2NrRmxvdyh0aGlzKS0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKTsKLX0KLQogI2lmIEVOQUJM
RShTVkcpCiAKIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBSZW5kZXJPYmplY3Q6OnRvUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCmluZGV4IGJmNjI0Mjc5NDY4MjYyNzkzYzYwMWQ1ZGFjY2ZhZGI2ZjMwMGE4YjguLjY1
MjU4OWU4NzMyMDY1NzU1M2JhYjlhOGJkYzZmZDNkZGZiMWQxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTM2Myw3ICszNjMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICBib29sIGlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJu
IGlzUmVuZGVyRmxvd1RocmVhZCgpICYmICFpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogICAg
IGJvb2wgaXNPdXRPZkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gaXNSZW5k
ZXJGbG93VGhyZWFkKCkgJiYgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KLSAgICBib29sIGlz
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlck11bHRpQ29sdW1uQmxvY2soKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU2V0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cAppbmRleCAyYjZmMDkzYThmM2RkZjVlOGI5ZWFlZjk2N2U5Zjk1NDk4YTgxYzNjLi4xNzAyOTQ5
OTU5YzA4OTQ5OTI2ZTM5MDhiMDdmNjk2NWNmMTRmM2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC01NzUsNyArNTc1LDcgQEAgdm9pZCB3
cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBpbnQgaW5kZW50LCBS
ZW5kZXJBc1RleHRCZWhhdmkKICAgICAgICAgICAgIHdyaXRlVGV4dFJ1bih0cywgdGV4dCwgKmJv
eCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW8uaXNSZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CisgICAgICAgIGlmICghdG9SZW5kZXJFbGVtZW50
KG8pLmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKSkgewogICAgICAgICAgICAg
Zm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gdG9SZW5kZXJFbGVtZW50KG8pLmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQtPmhhc0xheWVyKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcAppbmRleCBmNWQ4YzgyN2Y4
NWRjMzUxMDk5YzBjZWY0ZjgyYWZiMTJkZjlmMGJjLi5jM2IxYzZjOTIxZDUyNGRhZTc4Y2YwMTVk
MzRkZmMzOWJlOTZmMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVl
LmNwcApAQCAtMTY0LDcgKzE2NCw4IEBAIHN0YXRpYyBib29sIHNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IENvbnRhaW5lck5vZGUqIHJlCiBzdGF0aWMg
Ym9vbCBlbGVtZW50SW5zaWRlUmVnaW9uTmVlZHNSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBDb250YWluZXJOb2RlKiByZW5kZXJpbmdQYXJlbnROb2RlLCBSZWZQdHI8UmVuZGVyU3R5
bGU+JiBzdHlsZSkKIHsKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgY29uc3QgUmVuZGVy
T2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudE5vZGUgPyByZW5kZXJpbmdQ
YXJlbnROb2RlLT5yZW5kZXJlcigpIDogMDsKKyAgICAvLyBUaGUgcGFyZW50IG9mIGEgcmVnaW9u
IHNob3VsZCBhbHdheXMgYmUgYW4gZWxlbWVudC4KKyAgICBjb25zdCBSZW5kZXJFbGVtZW50KiBw
YXJlbnRSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudE5vZGUgPyByZW5kZXJpbmdQYXJlbnROb2Rl
LT5yZW5kZXJlcigpIDogMDsKIAogICAgIGJvb2wgcGFyZW50SXNSZWdpb24gPSBwYXJlbnRSZW5k
ZXJlciAmJiAhcGFyZW50UmVuZGVyZXItPmNhbkhhdmVDaGlsZHJlbigpICYmIHBhcmVudFJlbmRl
cmVyLT5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCk7CiAgICAgYm9vbCBwYXJl
bnRJc05vblJlbmRlcmVkSW5zaWRlUmVnaW9uID0gIXBhcmVudFJlbmRlcmVyICYmIGVsZW1lbnQu
cGFyZW50RWxlbWVudCgpICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCgpLT5pc0luc2lkZVJlZ2lv
bigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214835</attachid>
            <date>2013-10-22 04:09:44 -0700</date>
            <delta_ts>2013-10-22 06:58:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123016-20131022141013.patch</filename>
            <type>text/plain</type>
            <size>26164</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2OTM1OGQxNzIwNzcy
OTM2ZWE4YjFlNTJkOGEyZTIyMmM2ZjEwNi4uYzA1ZGVmOGY1YTY3YTMxMjZjZGUxMjg3YzZiYWVm
ZTExZjlkNWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTEwLTIxICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gUG9z
c2libGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlciByMTU3NTY3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMwMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRoZSByZXZpc2lvbiAxNTc1NjcgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTU3NTY3IG1heSBoYXZlIHJlZ3Jlc3NlZAor
ICAgICAgICBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIgYnkgfjEuMSUgYW5kIFBhcnNlci9odG1s
LXBhcnNlciBieSB+MiUuIFRoZXNlIGNoYW5nZXMKKyAgICAgICAgdHJ5IHRvIG9wdGltaXplIHRo
ZSBpbml0aWFsIHBhdGNoLCBiYXNlZCBvbiBBbmRyZWFzIEtsaW5nJ3MgcmV2aWV3LgorCisgICAg
ICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgcmVmYWN0b3JpbmdzIHRoYXQgc2hv
dWxkIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIHJlYWQ6CisgICAgICAgIC0gdGhlIENTUyBTaGFw
ZXMgZnVuY3Rpb25zIGFyZSBub3cgd3JhcHBlZCBpbiBhIHNpbmdsZSAjaWYgY2xhdXNlCisgICAg
ICAgIC0gdGhlIENTUyBTaGFwZXMgYW5kIENTUyBSZWdpb25zIHByZS1sYXlvdXQgcHJlcGFyYXRp
b25zIGFyZSB3cmFwcGVkIGluIGEgaGVscGVyIGZ1bmN0aW9uCisKKyAgICAgICAgVGhlIFJlbmRl
ckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayBmdW5jdGlv
biBpcyBvcHRpbWl6ZWQgYnkgcGFzc2luZworICAgICAgICBpdCBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3RhdGUgb2YgdGhlIHJlbGF5b3V0IGNoaWxkcmVuIGZsYWcuIElmIHRoZSBmbGFnIGlzIHRy
dWUgYWxyZWFkeSwKKyAgICAgICAgc29tZSBvZiB0aGUgc3RlcHMgYXJlIHNraXBwZWQuCisKKyAg
ICAgICAgVGVzdHM6IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZUluZm9SZXF1aXJlc1JlbGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNCZWZvcmVCbG9j
a0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZVNoYXBlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cHJlcGFyZVNoYXBlc0FuZFBhZ2lu
YXRpb25CZWZvcmVCbG9ja0xheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnNldFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZURh
dGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE6OlJlbmRlckJs
b2NrRmxvd1JhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdlbmVyYXRp
bmdFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0
QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNv
bHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZWxlbWVudEluc2lkZVJlZ2lv
bk5lZWRzUmVuZGVyZXIpOgorCiAyMDEzLTEwLTIyICBCcmlhbiBIb2x0ICA8YnJpYW4uaG9sdEBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgV2ViS2l0MiBBUEkgZm9yIFRMUyBlcnJv
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2NjFmZDM5NDU5YmM5ZDFkNDBjNDdiM2IxZTFl
ZjZiM2UzOWUzYmY4Li4wNjczNzBjMjQ4MWQ5MmFkM2MxOTc5ZjZjMGU4M2I2NjRhNjcyMGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNzYxLDEwICsyNzYxLDEyIEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAKIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QK
IHsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwotCiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlT2JqZWN0czsKLSAgICBpZiAoZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CisgICAgaWYgKCFkb2N1bWVu
dCgpLmNzc1JlZ2lvbnNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiByYW5nZU9iamVjdHM7CisK
KyAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwor
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnRDb250YWluZXIoKSkgewogICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9u
ID0gdG9SZW5kZXJCbG9ja0Zsb3cocmVuZGVyZXIoKSktPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCk7CiAgICAgICAgIGlmIChyZWdpb24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJlZ2lvbi0+
Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggN2M3NDZiMWUyZTA1NDNhMzMwMzI5ODQ5NjA5YWNhNTA3
Nzg2OTZhZi4uNzdiZTg1ZjliZjVjZTk2MmVhYTkyZWVjNDNmNjU2NWE4MjI5OGIzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTU0LDcg
KzU1NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQogICAgICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJjbGFzc05hbWUiLCBjbGFzc05hbWVzLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0Zy
YW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIEZyYW1lVmlldyogY29udGFpbmlu
Z1ZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKICAgICBJbnRSZWN0IGJvdW5kaW5nQm94
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjMzA2NTdlMGYyMDRkMGU1MzUwM2VlMDc5Njg4
MTIzYTExMzMxOTA5Li4yODE4MTIzN2EzNTFlZWM0Yjg2OTYxZGMzNDk1OWY2MTQ2OTlkZGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MDUsMTEgKzE0
MDUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dChjb25z
dCBSZW5kZXJCbG9jayogYmxvY2spCiAgICAgICAgIGluZm8gPSBibG9jay0+bGF5b3V0U2hhcGVJ
bnNpZGVJbmZvKCk7CiAgICAgcmV0dXJuIGluZm8gJiYgaW5mby0+bmVlZHNMYXlvdXQoKTsKIH0K
LSNlbmRpZgogCiBib29sIFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91
dCgpCiB7Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgaWYgKCFmbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKCkgJiYgIXNoYXBlSW5zaWRlSW5mbygpKQogICAgICAgICByZXR1cm4gc2hhcGVJ
bmZvUmVxdWlyZXNSZWxheW91dCh0aGlzKTsKIApAQCAtMTQyNywxNCArMTQyNSwxMiBAQCBib29s
IFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpCiAgICAgc2V0TG9n
aWNhbFRvcChvbGRUb3ApOwogCiAgICAgcmV0dXJuIHNoYXBlSW5mb1JlcXVpcmVzUmVsYXlvdXQo
dGhpcyk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQorI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoQ1NTX1NIQVBFUykKIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVTaGFwZVNpemUo
KQogeworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJ
bnNpZGVJbmZvID0gdGhpcy0+c2hhcGVJbnNpZGVJbmZvKCk7CiAgICAgaWYgKCFzaGFwZUluc2lk
ZUluZm8pCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDcsOCArMTQ0Myw4IEBAIHZvaWQgUmVuZGVy
QmxvY2s6OmNvbXB1dGVTaGFwZVNpemUoKQogICAgICAgICBib29sIHBlcmNlbnRhZ2VMb2dpY2Fs
SGVpZ2h0UmVzb2x2YWJsZSA9IHBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0SXNSZXNvbHZhYmxlRnJv
bUJsb2NrKHRoaXMsIGZhbHNlKTsKICAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5zZXRTaGFwZVNp
emUobG9naWNhbFdpZHRoKCksIHBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0UmVzb2x2YWJsZSA/IGxv
Z2ljYWxIZWlnaHQoKSA6IExheW91dFVuaXQoKSk7CiAgICAgfQotfQogI2VuZGlmCit9CiAKIHZv
aWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoYm9vbCBoZWlnaHRD
aGFuZ2VkKQogewpAQCAtMTQ2Miw2ICsxNDU4LDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0
ZVNoYXBlc0FmdGVyQmxvY2tMYXlvdXQoYm9vbCBoZWlnaHRDaGFuZ2VkKQogI2VuZGlmCiB9CiAK
K3ZvaWQgUmVuZGVyQmxvY2s6OnByZXBhcmVTaGFwZXNBbmRQYWdpbmF0aW9uQmVmb3JlQmxvY2tM
YXlvdXQoYm9vbCYgcmVsYXlvdXRDaGlsZHJlbikKK3sKKyAgICAvLyBSZWdpb25zIGNoYW5naW5n
IHdpZHRocyBjYW4gZm9yY2UgdXMgdG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgorICAgIFJlbmRl
ckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Cisg
ICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCisgICAgICAgIHJlbGF5b3V0
Q2hpbGRyZW4gPSB0cnVlOworICAgIGlmIChmbG93VGhyZWFkKQorICAgICAgICBmbG93VGhyZWFk
LT5sb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2sodGhpcywgcmVsYXlvdXRDaGls
ZHJlbik7Cit9CisKIGJvb2wgUmVuZGVyQmxvY2s6OnVwZGF0ZUxvZ2ljYWxXaWR0aEFuZENvbHVt
bldpZHRoKCkKIHsKICAgICBMYXlvdXRVbml0IG9sZFdpZHRoID0gbG9naWNhbFdpZHRoKCk7CkBA
IC01Mjc1LDE0ICs1MjgxLDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6c2V0U3RhdGljSW5saW5lUG9z
aXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGIKICAgICBjaGlsZC0+
bGF5ZXIoKS0+c2V0U3RhdGljSW5saW5lUG9zaXRpb24oaW5saW5lUG9zaXRpb24pOwogfQogCi1i
b29sIFJlbmRlckJsb2NrOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQpIGNvbnN0Ci17Ci0gICAgaWYgKCFmbG93VGhyZWFkIHx8ICFmbG93
VGhyZWFkLT5oYXNWYWxpZFJlZ2lvbkluZm8oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAotICAgIHJldHVybiBmbG93VGhyZWFkLT5sb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9y
QmxvY2sodGhpcyk7Ci19Ci0KIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVSZWdpb25SYW5nZUZv
ckJveENoaWxkKGNvbnN0IFJlbmRlckJveCogYm94KSBjb25zdAogewogICAgIFJlbmRlckZsb3dU
aHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGE3YjY2YTgwZTE5NTU1MjVmMmQxYjYx
MjhjMTRkNTQzZDlkMmVkOGEuLjM4NTRjMjRiNGUwYzZiM2UzNWE5MDE0ZWU2NDUzOWFjZWZkYjRk
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC01MDYsNiArNTA2
LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgdXBkYXRlQmxvY2tDaGlsZERpcnR5Qml0c0JlZm9y
ZUxheW91dChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIFJlbmRlckJveCopOwogCiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrRm9yUGFnaW5hdGlvbkxvZ2ljYWxIZWlnaHRDaGFuZ2UoTGF5b3V0VW5pdCYg
cGFnZUxvZ2ljYWxIZWlnaHQsIGJvb2wmIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCwgYm9vbCYg
aGFzU3BlY2lmaWVkUGFnZUxvZ2ljYWxIZWlnaHQpOworICAgIHZvaWQgcHJlcGFyZVNoYXBlc0Fu
ZFBhZ2luYXRpb25CZWZvcmVCbG9ja0xheW91dChib29sJik7CiAKIHByaXZhdGU6CiAgICAgLy8g
RklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3aGVuIGFsbCBjYWxsZXJzIGhh
dmUgbW92ZWQgdG8gUmVuZGVyQmxvY2tGbG93CkBAIC03MTUsOCArNzE2LDYgQEAgcHJvdGVjdGVk
OgogICAgIC8vIGxpbmUsIGkuZS4sIHRoYXQgaXQgY2FuJ3QgYmUgcmUtdXNlZC4KICAgICBib29s
IGxpbmVXaWR0aEZvclBhZ2luYXRlZExpbmVDaGFuZ2VkKFJvb3RJbmxpbmVCb3gqLCBMYXlvdXRV
bml0IGxpbmVEZWx0YSwgUmVuZGVyRmxvd1RocmVhZCopIGNvbnN0OwogCi0gICAgYm9vbCBsb2dp
Y2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKFJlbmRlckZsb3dUaHJlYWQqKSBjb25zdDsKLQogICAg
IHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXgg
YjczZWMyNWQ0YjY4NmFmMWYyZDlkODg5YzM2NmRjNDE3MzUwMjJmOS4uYjM5MzIxMzM0YmExNWUz
NDA4MDdkYzA3YWNlNDAxYTI4NDM3ZjkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMyNiwxNCArMzI2LDkgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEgKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CiAgICAgTGF5
b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCZ2aWV3KCksIHRoaXMsIGxvY2F0aW9uT2Zm
c2V0KCksIGhhc0NvbHVtbnMoKSB8fCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkg
fHwgc3R5bGVUb1VzZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSwgcGFnZUxvZ2ljYWxI
ZWlnaHQsIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCwgY29sdW1uSW5mbygpKTsKIAotICAgIC8v
IFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1cyB0byByZWxheW91dCBvdXIgY2hp
bGRyZW4uCi0gICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKTsKLSAgICBpZiAobG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93
VGhyZWFkKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0
ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0KCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0
cnVlOwotICAgIGlmIChuYW1lZEZsb3dGcmFnbWVudE5lZWRzVXBkYXRlKCkpCi0gICAgICAgIHJl
bGF5b3V0Q2hpbGRyZW4gPSB0cnVlOworICAgIHByZXBhcmVTaGFwZXNBbmRQYWdpbmF0aW9uQmVm
b3JlQmxvY2tMYXlvdXQocmVsYXlvdXRDaGlsZHJlbik7CisgICAgaWYgKCFyZWxheW91dENoaWxk
cmVuKQorICAgICAgICByZWxheW91dENoaWxkcmVuID0gbmFtZWRGbG93RnJhZ21lbnROZWVkc1Vw
ZGF0ZSgpOwogCiAgICAgLy8gV2UgdXNlIGZvdXIgdmFsdWVzLCBtYXhUb3BQb3MsIG1heFRvcE5l
ZywgbWF4Qm90dG9tUG9zLCBhbmQgbWF4Qm90dG9tTmVnLCB0byB0cmFjawogICAgIC8vIG91ciBj
dXJyZW50IG1heGltYWwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbnMuIFRoZXNlIHZhbHVl
cyBhcmUgdXNlZCB3aGVuIHdlCkBAIC0yNTg2LDEwICsyNTgxLDEwIEBAIEdhcFJlY3RzIFJlbmRl
ckJsb2NrRmxvdzo6aW5saW5lU2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBj
b25zdCBMYXlvCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudElmTmVlZGVkKCkKIHsKLSAgICBpZiAocmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSB8
fCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpCisgICAgaWYgKCFkb2N1bWVudCgpLmNzc1Jl
Z2lvbnNFbmFibGVkKCkgfHwgcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSB8fCBpc1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkb2N1bWVudCgp
LmNzc1JlZ2lvbnNFbmFibGVkKCkgJiYgc3R5bGUoKS0+aXNEaXNwbGF5UmVnaW9uVHlwZSgpICYm
IHN0eWxlKCktPmhhc0Zsb3dGcm9tKCkpIHsKKyAgICBpZiAoc3R5bGUoKS0+aXNEaXNwbGF5UmVn
aW9uVHlwZSgpICYmIHN0eWxlKCktPmhhc0Zsb3dGcm9tKCkpIHsKICAgICAgICAgUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQqIGZsb3dGcmFnbWVudCA9IG5ldyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dChkb2N1bWVudCgpKTsKICAgICAgICAgZmxvd0ZyYWdtZW50LT5zZXRTdHlsZUZvck5hbWVkRmxv
d0ZyYWdtZW50KHN0eWxlKCkpOwogICAgICAgICBzZXRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChm
bG93RnJhZ21lbnQpOwpAQCAtMjYyNSwxMSArMjYyMCwyMCBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6dXBkYXRlTG9naWNhbEhlaWdodCgpCiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudChSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogZmxvd0ZyYWdtZW50
KQogewotICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgbV9yYXJlRGF0YSA9IGFkb3B0UHRy
KG5ldyBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSh0aGlzKSk7Ci0gICAgaWYgKG1fcmFyZURhdGEt
Pm1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpCi0gICAgICAgIG1fcmFyZURhdGEtPm1fcmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQtPmRlc3Ryb3koKTsKLSAgICBtX3JhcmVEYXRhLT5tX3JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50ID0gZmxvd0ZyYWdtZW50OworICAgIFJlbmRlckJsb2NrRmxvd1JhcmVE
YXRhJiByYXJlRGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7CisgICAgaWYgKHJhcmVEYXRhLm1fcmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnQpCisgICAgICAgIHJhcmVEYXRhLm1fcmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQtPmRlc3Ryb3koKTsKKyAgICByYXJlRGF0YS5tX3JlbmRlck5hbWVkRmxvd0ZyYWdt
ZW50ID0gZmxvd0ZyYWdtZW50OworfQorCisvLyBGSVhNRTogVXNlIHRoaXMgZnVuY3Rpb24gaW4g
bW9yZSBwbGFjZXMuCitSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBS
ZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZVJhcmVEYXRhKCkKK3sKKyAgICBpZiAobV9yYXJlRGF0YSkK
KyAgICAgICAgcmV0dXJuICptX3JhcmVEYXRhOworCisgICAgbV9yYXJlRGF0YSA9IGFkb3B0UHRy
KG5ldyBSZW5kZXJCbG9ja0Zsb3dSYXJlRGF0YSh0aGlzKSk7CisgICAgcmV0dXJuICptX3JhcmVE
YXRhOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRDaGVja0xpbmVzKFJlbmRlck9iamVjdCYgb2Jq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDE5YjE3
ODcxZGI2NzNhYzA0MjU4NDRlZDk3MTY4NWNjZTJlMWZjMzguLmFjNTZkYWE3MDcyMGI3NGU3ZjBi
MDkwMTBmNWYwM2ZkOWNlNGY3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmgKQEAgLTk2LDggKzk2LDggQEAgcHVibGljOgogICAgICAgICBSZW5kZXJCbG9j
a0Zsb3dSYXJlRGF0YShjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGJsb2NrKQogICAgICAgICAgICAg
OiBtX21hcmdpbnMocG9zaXRpdmVNYXJnaW5CZWZvcmVEZWZhdWx0KGJsb2NrKSwgbmVnYXRpdmVN
YXJnaW5CZWZvcmVEZWZhdWx0KGJsb2NrKSwgcG9zaXRpdmVNYXJnaW5BZnRlckRlZmF1bHQoYmxv
Y2spLCBuZWdhdGl2ZU1hcmdpbkFmdGVyRGVmYXVsdChibG9jaykpCiAgICAgICAgICAgICAsIG1f
bGluZUJyZWFrVG9Bdm9pZFdpZG93KC0xKQotICAgICAgICAgICAgLCBtX2xpbmVHcmlkQm94KDAp
Ci0gICAgICAgICAgICAsIG1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoMCkKKyAgICAgICAgICAg
ICwgbV9saW5lR3JpZEJveChudWxscHRyKQorICAgICAgICAgICAgLCBtX3JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KG51bGxwdHIpCiAgICAgICAgICAgICAsIG1fZGlzY2FyZE1hcmdpbkJlZm9yZShm
YWxzZSkKICAgICAgICAgICAgICwgbV9kaXNjYXJkTWFyZ2luQWZ0ZXIoZmFsc2UpCiAgICAgICAg
ICAgICAsIG1fZGlkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coZmFsc2UpCkBAIC00MTMsNyArNDEz
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBQb3NpdGlvbiBwb3NpdGlvbkZvckJveChJbmxpbmVC
b3gqLCBib29sIHN0YXJ0ID0gdHJ1ZSkgY29uc3Q7CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnRJbkxvZ2ljYWxDb250ZW50cykgT1ZFUlJJREU7Ci0KKyAgICBSZW5kZXJCbG9ja0Zsb3dS
YXJlRGF0YSYgZW5zdXJlUmFyZURhdGEoKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5n
UmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCop
IE9WRVJSSURFOwogCiAvLyBGSVhNRS1CTE9DS0ZMT1c6IFRoZXNlIG1ldGhvZHMgaGF2ZSBpbXBs
ZW1lbnRhdGlvbnMgaW4KQEAgLTUwNiw2ICs1MDYsMTEgQEAgaW5saW5lIGNvbnN0IFJlbmRlckJs
b2NrRmxvdyogdG9SZW5kZXJCbG9ja0Zsb3coY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+KG9iamVjdCk7CiB9
CiAKK2lubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRD
b250YWluZXIoKSBjb25zdAoreworICAgIHJldHVybiBpc1JlbmRlckJsb2NrRmxvdygpICYmIHRv
UmVuZGVyQmxvY2tGbG93KHRoaXMpLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOworfQorCiAv
LyBUaGlzIHdpbGwgY2F0Y2ggYW55b25lIGRvaW5nIGFuIHVubmVjZXNzYXJ5IGNhc3QuCiB2b2lk
IHRvUmVuZGVyQmxvY2tGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyopOwogdm9pZCB0b1JlbmRl
ckJsb2NrRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKaW5kZXgg
ZTdjZDAyYjZjYzc1YjIwZDgyNzRhN2U4Zjk0YmRkNTY1OWQ1NjhlMy4uZDZiMjA1NmY0ZGUzYjk3
NWU4Y2M2YzIwYjVhYjE3OWZjYmExODlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAKQEAgLTI4NywxMiAr
Mjg3LDcgQEAgdm9pZCBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBMYXlvdXRSZXBhaW50ZXIgcmVw
YWludGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSk7CiAgICAgTGF5b3V0
U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCZ2aWV3KCksIHRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLT5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKIAotICAgIC8vIFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhz
IGNhbiBmb3JjZSB1cyB0byByZWxheW91dCBvdXIgY2hpbGRyZW4uCi0gICAgUmVuZGVyRmxvd1Ro
cmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKLSAgICBpZiAo
bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9ucyhmbG93VGhyZWFkKSkKLSAgICAgICAgcmVsYXlv
dXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKHVwZGF0ZVNoYXBlc0JlZm9yZUJsb2NrTGF5b3V0
KCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOworICAgIHByZXBhcmVTaGFwZXNB
bmRQYWdpbmF0aW9uQmVmb3JlQmxvY2tMYXlvdXQocmVsYXlvdXRDaGlsZHJlbik7CiAKICAgICBM
YXlvdXRTaXplIHByZXZpb3VzU2l6ZSA9IHNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKaW5kZXggYTRkMmJlNjcwY2I0NDA4MzllZjRiMDRjOTAyMzgyYWU5
MzVlZDNkNS4uNTdmMzVhY2ZmOTIxNjQ0YzUyMDFiMjZmYjZhZDJkMGM3MGJmZDY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC01NSw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzUmVuZGVyQmxvY2tGbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc1Jl
bmRlclJlcGxhY2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlbmRlcklubGluZSgpIGNvbnN0Owor
ICAgIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
ID0gMCk7CkBAIC0yNjAsNyArMjYxLDcgQEAgaW5saW5lIGNvbnN0IFJlbmRlckVsZW1lbnQqIHRv
UmVuZGVyRWxlbWVudChjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIAogaW5saW5lIEVsZW1l
bnQqIFJlbmRlckVsZW1lbnQ6OmdlbmVyYXRpbmdFbGVtZW50KCkgY29uc3QKIHsKLSAgICBpZiAo
aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpICYmIHBhcmVudCgpKQorICAgIGlmIChwYXJlbnQo
KSAmJiBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpCiAgICAgICAgIHJldHVybiB0b1JlbmRl
ckVsZW1lbnQocGFyZW50KCkpLT5nZW5lcmF0aW5nRWxlbWVudCgpOwogICAgIHJldHVybiB0b0Vs
ZW1lbnQoUmVuZGVyT2JqZWN0OjpnZW5lcmF0aW5nTm9kZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDllODJkMmQyMDcyMDVh
ZWI5YzA1NDdhYmRkNWVjM2JmMWI0ZmY5MGEuLmU5YTZiMzIwYTFlYjU2NTc5YTUxYjQ3ZjBhYzRh
ZWVhZWQzY2U1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcApAQCAtMzM5LDEyICszMzksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAKICAgICBMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoJnZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZz
ZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOwogCi0gICAgLy8gUmVnaW9ucyBjaGFuZ2luZyB3aWR0
aHMgY2FuIGZvcmNlIHVzIHRvIHJlbGF5b3V0IG91ciBjaGlsZHJlbi4KLSAgICBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlm
IChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKGZsb3dUaHJlYWQpKQotICAgICAgICByZWxh
eW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlv
dXQoKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CisgICAgcHJlcGFyZVNoYXBl
c0FuZFBhZ2luYXRpb25CZWZvcmVCbG9ja0xheW91dChyZWxheW91dENoaWxkcmVuKTsKIAogICAg
IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lID0gLTE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCAxNWE0ZDFlZDM4NmVm
ZGViNTIzOWI2YjA4ODlmY2FhMzgyYTdkNWU4Li5hOThkYzkzZWY0YjZjMThmMzY3MDJkNzkxMTRl
OTQ3NmY1NGMxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwCkBAIC03MjcsMjcgKzcyNywzNCBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJl
bW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94KiBib3gpCiAgICAgbV9yZWdpb25SYW5n
ZU1hcC5yZW1vdmUoYm94KTsKIH0KIAotYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lk
dGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQordm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2so
Y29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrLCBib29sJiByZWxheW91dENoaWxkcmVuKQogewotICAg
IGlmICghaGFzUmVnaW9ucygpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFoYXNW
YWxpZFJlZ2lvbkluZm8oKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyUmVnaW9uUmFu
Z2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpb25SYW5nZU1hcC5maW5kKGJsb2NrKTsKICAgICBp
ZiAoaXQgPT0gbV9yZWdpb25SYW5nZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJSZWdpb25SYW5nZSYgcmFuZ2UgPSBpdC0+dmFs
dWU7CiAgICAgYm9vbCByYW5nZUludmFsaWRhdGVkID0gcmFuZ2UucmFuZ2VJbnZhbGlkYXRlZCgp
OwogICAgIHJhbmdlLmNsZWFyUmFuZ2VJbnZhbGlkYXRlZCgpOwogCisgICAgLy8gSWYgdGhlcmUg
d2lsbCBiZSBhIHJlbGF5b3V0IGFueXdheSBza2lwIHRoZSBuZXh0IHN0ZXBzIGJlY2F1c2UgdGhl
eSBvbmx5IHZlcmlmeQorICAgIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmFuZ2VzLgorICAgIGlmIChy
ZWxheW91dENoaWxkcmVuKQorICAgICAgICByZXR1cm47CisKICAgICBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uOwogICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOwogICAgIGdldFJlZ2lvblJh
bmdlRm9yQm94KGJsb2NrLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKIAogICAgIC8vIE5vdCBu
ZWNlc3NhcnkgZm9yIHRoZSBmbG93IHRocmVhZCwgc2luY2Ugd2UgYWxyZWFkeSBjb21wdXRlZCB0
aGUgY29ycmVjdCBpbmZvIGZvciBpdC4KICAgICAvLyBJZiB0aGUgcmVnaW9ucyBoYXZlIGNoYW5n
ZWQgaW52YWxpZGF0ZSB0aGUgY2hpbGRyZW4uCi0gICAgaWYgKGJsb2NrID09IHRoaXMpCi0gICAg
ICAgIHJldHVybiBtX3BhZ2VMb2dpY2FsU2l6ZUNoYW5nZWQ7CisgICAgaWYgKGJsb2NrID09IHRo
aXMpIHsKKyAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IG1fcGFnZUxvZ2ljYWxTaXplQ2hhbmdl
ZDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6
aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAhPSBt
X3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lv
biA9ICppdGVyOwpAQCAtNzU1LDE5ICs3NjIsMjEgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjps
b2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqIGIK
IAogICAgICAgICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0aW9uIGNvbXB1dGVkIGZvciB0aGlzIHJl
Z2lvbiBzbyB3ZSBuZWVkIHRvIGRvIGl0LgogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9u
SW5mbz4gb2xkSW5mbyA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwot
ICAgICAgICBpZiAoIW9sZEluZm8pCi0gICAgICAgICAgICByZXR1cm4gcmFuZ2VJbnZhbGlkYXRl
ZDsKKyAgICAgICAgaWYgKCFvbGRJbmZvKSB7CisgICAgICAgICAgICByZWxheW91dENoaWxkcmVu
ID0gcmFuZ2VJbnZhbGlkYXRlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAg
ICAgICAgIExheW91dFVuaXQgb2xkTG9naWNhbFdpZHRoID0gb2xkSW5mby0+bG9naWNhbFdpZHRo
KCk7CiAgICAgICAgIFJlbmRlckJveFJlZ2lvbkluZm8qIG5ld0luZm8gPSBibG9jay0+cmVuZGVy
Qm94UmVnaW9uSW5mbyhyZWdpb24pOwotICAgICAgICBpZiAoIW5ld0luZm8gfHwgbmV3SW5mby0+
bG9naWNhbFdpZHRoKCkgIT0gb2xkTG9naWNhbFdpZHRoKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmICghbmV3SW5mbyB8fCBuZXdJbmZvLT5sb2dpY2FsV2lkdGgoKSAhPSBv
bGRMb2dpY2FsV2lkdGgpIHsKKyAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlZ2lvbiA9PSBl
bmRSZWdpb24pCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIExheW91dFVuaXQgUmVuZGVyRmxvd1RocmVhZDo6Y29udGVudExvZ2ljYWxXaWR0aE9m
Rmlyc3RSZWdpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmgKaW5kZXggODViMGQ5ZTcyZGY2NTA0MWU1ODU2NDNkYTdjYmI0NjA2Y2Y1NTBiMi4u
NzFkOTE3ODRhNWFiN2RlMzRlZTc5NWUyZGE1YmZlNjkxNzVjYzkwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVi
bGljOgogICAgIFJlbmRlclJlZ2lvbiogbWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJv
eCopOwotICAgIGJvb2wgbG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9uc0ZvckJsb2NrKGNvbnN0
IFJlbmRlckJsb2NrKik7CisgICAgdm9pZCBsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9y
QmxvY2soY29uc3QgUmVuZGVyQmxvY2sqLCBib29sJik7CiAKICAgICBMYXlvdXRVbml0IGNvbnRl
bnRMb2dpY2FsV2lkdGhPZkZpcnN0UmVnaW9uKCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb250
ZW50TG9naWNhbEhlaWdodE9mRmlyc3RSZWdpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCBlNWUwNjg2ZTI4OTg4NDZiZjBkM2U4ZDU2ZjU4NWIy
MGM3NmU3NWZiLi5hY2I2MzEzZjhkMTQyZjg2OTRlNGM5N2M0MDliZmU2YzdkMTY2Y2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC0xNjQsMTIgKzE2NCw3IEBA
IHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlv
dXRVbml0KQogICAgIExheW91dFJlcGFpbnRlciByZXBhaW50ZXIoKnRoaXMsIGNoZWNrRm9yUmVw
YWludER1cmluZ0xheW91dCgpKTsKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNo
ZXIoJnZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkgfHwgaGFz
UmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOwog
Ci0gICAgLy8gUmVnaW9ucyBjaGFuZ2luZyB3aWR0aHMgY2FuIGZvcmNlIHVzIHRvIHJlbGF5b3V0
IG91ciBjaGlsZHJlbi4KLSAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1Ro
cmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKGZsb3dUaHJlYWQpKQotICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBp
ZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkKLSAgICAgICAgcmVsYXlvdXRDaGls
ZHJlbiA9IHRydWU7CisgICAgcHJlcGFyZVNoYXBlc0FuZFBhZ2luYXRpb25CZWZvcmVCbG9ja0xh
eW91dChyZWxheW91dENoaWxkcmVuKTsKIAogICAgIExheW91dFNpemUgcHJldmlvdXNTaXplID0g
c2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5oCmluZGV4IDE3YWQ2ODU2OTY0MzQyZTJiNWZiMjg5Y2ZlMTNkMGY5NDVjMzVk
NmYuLjM0NTYyMDUxZjY3OTk2MzYxNjgwNGZjZGMyOTQwYWJlOWI2YjdiNmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBS
ZW5kZXJTdHlsZTsKIAotY2xhc3MgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgOiBwdWJsaWMgUmVu
ZGVyUmVnaW9uIHsKK2NsYXNzIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IEZJTkFMIDogcHVibGlj
IFJlbmRlclJlZ2lvbiB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgp
OwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHlsZUZvck5hbWVkRmxv
d0ZyYWdtZW50KGNvbnN0IFJlbmRlclN0eWxlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgT1ZFUlJJREU7
CiAKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsK
IApAQCAtNTgsMTEgKzU4LDkgQEAgcHVibGljOgogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IGxheWVyT3duZXIoKSBjb25zdCB7IHJldHVybiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KCkgPwogICAgICAgICB0b1JlbmRlckxheWVyTW9kZWxPYmplY3Qo
cGFyZW50KCkpIDogbnVsbHB0cjsgfQogCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEhhdmVBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0OwotCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJOYW1lZEZs
b3dGcmFnbWVudCI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGF2ZUF1dG9Mb2dpY2FsSGVp
Z2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IjsgfQog
fTsKIAogaW5saW5lIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiB0b1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCBjODU3ZTQ3ZjQxNGJiMDQxOWM0MTcxOTVmMzU4OTU3OWRjYTZl
NzE4Li40ZTRkYTE5MTRiZjUyZGM0ZDQ5NTljYjJmODYxNWMwMmRiZGIzM2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjU1OCwxNCArMjU1OCw2IEBA
IGJvb2wgUmVuZGVyT2JqZWN0OjpjYW5CZVJlcGxhY2VkV2l0aElubGluZVJ1bkluKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5kZXJPYmplY3Q6OmlzUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnRDb250YWluZXIoKSBjb25zdAotewotICAgIGlmICghaXNSZW5kZXJCbG9ja0Zs
b3coKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRvUmVuZGVyQmxvY2tG
bG93KHRoaXMpLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOwotfQotCiAjaWYgRU5BQkxFKFNW
RykKIAogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqIFJlbmRlck9iamVjdDo6dG9SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKaW5kZXggYmY2MjQyNzk0NjgyNjI3OTNjNjAxZDVkYWNjZmFkYjZmMzAwYThiOC4uNjUyNTg5
ZTg3MzIwNjU3NTUzYmFiOWE4YmRjNmZkM2RkZmIxZDFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtMzYzLDcgKzM2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGJvb2wgaXNJbkZsb3dSZW5kZXJGbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gaXNS
ZW5kZXJGbG93VGhyZWFkKCkgJiYgIWlzT3V0T2ZGbG93UG9zaXRpb25lZCgpOyB9CiAgICAgYm9v
bCBpc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBpc1JlbmRlckZs
b3dUaHJlYWQoKSAmJiBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQotICAgIGJvb2wgaXNSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTXVsdGlDb2x1bW5CbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmlu
ZGV4IGFjMzQxOTU0NTZlZDljMjU4Nzk4ZTkxNWZmYTNmYTEyOWRjYjZhMjIuLjdkZmFmNGJhMGU0
ZDY4NWFjZDQ5YTcxYTEyNmYyMzNkMGE5NDBiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIHdyaXRl
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIGludCBpbmRlbnQsIFJlbmRl
ckFzVGV4dEJlaGF2aQogICAgICAgICAgICAgd3JpdGVUZXh0UnVuKHRzLCB0ZXh0LCAqYm94KTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghby5pc1JlbmRlck5hbWVkRmxv
d0ZyYWdtZW50Q29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYgKCF0b1JlbmRlckVsZW1lbnQobyku
aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogY2hpbGQgPSB0b1JlbmRlckVsZW1lbnQobykuZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgICAgIGlm
IChjaGlsZC0+aGFzTGF5ZXIoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCmluZGV4IGY1ZDhjODI3Zjg1ZGMz
NTEwOTljMGNlZjRmODJhZmIxMmRmOWYwYmMuLmMzYjFjNmM5MjFkNTI0ZGFlNzhjZjAxNWQzNGRm
YzM5YmU5NmYyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3Bw
CkBAIC0xNjQsNyArMTY0LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ29udGFpbmVyTm9kZSogcmUKIHN0YXRpYyBib29s
IGVsZW1lbnRJbnNpZGVSZWdpb25OZWVkc1JlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IENvbnRhaW5lck5vZGUqIHJlbmRlcmluZ1BhcmVudE5vZGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4m
IHN0eWxlKQogewogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBjb25zdCBSZW5kZXJPYmpl
Y3QqIHBhcmVudFJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50Tm9kZSA/IHJlbmRlcmluZ1BhcmVu
dE5vZGUtPnJlbmRlcmVyKCkgOiAwOworICAgIC8vIFRoZSBwYXJlbnQgb2YgYSByZWdpb24gc2hv
dWxkIGFsd2F5cyBiZSBhbiBlbGVtZW50LgorICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIHBhcmVu
dFJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50Tm9kZSA/IHJlbmRlcmluZ1BhcmVudE5vZGUtPnJl
bmRlcmVyKCkgOiAwOwogCiAgICAgYm9vbCBwYXJlbnRJc1JlZ2lvbiA9IHBhcmVudFJlbmRlcmVy
ICYmICFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkgJiYgcGFyZW50UmVuZGVyZXIt
PmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIoKTsKICAgICBib29sIHBhcmVudElz
Tm9uUmVuZGVyZWRJbnNpZGVSZWdpb24gPSAhcGFyZW50UmVuZGVyZXIgJiYgZWxlbWVudC5wYXJl
bnRFbGVtZW50KCkgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmlzSW5zaWRlUmVnaW9uKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214853</attachid>
            <date>2013-10-22 06:58:53 -0700</date>
            <delta_ts>2013-10-22 07:48:56 -0700</delta_ts>
            <desc>Patch for landing + Win build fix</desc>
            <filename>bug-123016-20131022165921.patch</filename>
            <type>text/plain</type>
            <size>26886</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI2OTM1OGQxNzIwNzcy
OTM2ZWE4YjFlNTJkOGEyZTIyMmM2ZjEwNi4uYzA1ZGVmOGY1YTY3YTMxMjZjZGUxMjg3YzZiYWVm
ZTExZjlkNWEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTEwLTIxICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gUG9z
c2libGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlciByMTU3NTY3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMwMTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFRoZSByZXZpc2lvbiAxNTc1NjcgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTU3NTY3IG1heSBoYXZlIHJlZ3Jlc3NlZAor
ICAgICAgICBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIgYnkgfjEuMSUgYW5kIFBhcnNlci9odG1s
LXBhcnNlciBieSB+MiUuIFRoZXNlIGNoYW5nZXMKKyAgICAgICAgdHJ5IHRvIG9wdGltaXplIHRo
ZSBpbml0aWFsIHBhdGNoLCBiYXNlZCBvbiBBbmRyZWFzIEtsaW5nJ3MgcmV2aWV3LgorCisgICAg
ICAgIFRoZSBwYXRjaCBhbHNvIGFkZHMgYSBjb3VwbGUgb2YgcmVmYWN0b3JpbmdzIHRoYXQgc2hv
dWxkIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIHJlYWQ6CisgICAgICAgIC0gdGhlIENTUyBTaGFw
ZXMgZnVuY3Rpb25zIGFyZSBub3cgd3JhcHBlZCBpbiBhIHNpbmdsZSAjaWYgY2xhdXNlCisgICAg
ICAgIC0gdGhlIENTUyBTaGFwZXMgYW5kIENTUyBSZWdpb25zIHByZS1sYXlvdXQgcHJlcGFyYXRp
b25zIGFyZSB3cmFwcGVkIGluIGEgaGVscGVyIGZ1bmN0aW9uCisKKyAgICAgICAgVGhlIFJlbmRl
ckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayBmdW5jdGlv
biBpcyBvcHRpbWl6ZWQgYnkgcGFzc2luZworICAgICAgICBpdCBpbmZvcm1hdGlvbiBhYm91dCB0
aGUgc3RhdGUgb2YgdGhlIHJlbGF5b3V0IGNoaWxkcmVuIGZsYWcuIElmIHRoZSBmbGFnIGlzIHRy
dWUgYWxyZWFkeSwKKyAgICAgICAgc29tZSBvZiB0aGUgc3RlcHMgYXJlIHNraXBwZWQuCisKKyAg
ICAgICAgVGVzdHM6IG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudEluZm8pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFwZUluZm9SZXF1aXJlc1JlbGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZXNCZWZvcmVCbG9j
a0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZVNoYXBlU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cHJlcGFyZVNoYXBlc0FuZFBhZ2lu
YXRpb25CZWZvcmVCbG9ja0xheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrRmxvdzo6Y3JlYXRlUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnNldFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6ZW5zdXJlUmFyZURh
dGEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGE6OlJlbmRlckJs
b2NrRmxvd1JhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmlzUmVu
ZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmdlbmVyYXRp
bmdFbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2spOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0
QmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZSk6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNv
bHZlVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6ZWxlbWVudEluc2lkZVJlZ2lv
bk5lZWRzUmVuZGVyZXIpOgorCiAyMDEzLTEwLTIyICBCcmlhbiBIb2x0ICA8YnJpYW4uaG9sdEBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgV2ViS2l0MiBBUEkgZm9yIFRMUyBlcnJv
cnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA2NjFmZDM5NDU5YmM5ZDFkNDBjNDdiM2IxZTFl
ZjZiM2UzOWUzYmY4Li4wNjczNzBjMjQ4MWQ5MmFkM2MxOTc5ZjZjMGU4M2I2NjRhNjcyMGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNzYxLDEwICsyNzYxLDEyIEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgRWxlbWVudDo6d2Via2l0UmVnaW9uT3ZlcnNldCgpIGNvbnN0CiAKIFZlY3RvcjxS
ZWZQdHI8UmFuZ2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QK
IHsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwotCiAgICAgVmVjdG9yPFJlZlB0cjxSYW5nZT4+IHJhbmdlT2JqZWN0czsKLSAgICBpZiAoZG9j
dW1lbnQoKS5jc3NSZWdpb25zRW5hYmxlZCgpICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+
aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKSB7CisgICAgaWYgKCFkb2N1bWVu
dCgpLmNzc1JlZ2lvbnNFbmFibGVkKCkpCisgICAgICAgIHJldHVybiByYW5nZU9iamVjdHM7CisK
KyAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwor
ICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnRDb250YWluZXIoKSkgewogICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9u
ID0gdG9SZW5kZXJCbG9ja0Zsb3cocmVuZGVyZXIoKSktPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCk7CiAgICAgICAgIGlmIChyZWdpb24tPmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJlZ2lvbi0+
Z2V0UmFuZ2VzKHJhbmdlT2JqZWN0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggN2M3NDZiMWUyZTA1NDNhMzMwMzI5ODQ5NjA5YWNhNTA3
Nzg2OTZhZi4uNzdiZTg1ZjliZjVjZTk2MmVhYTkyZWVjNDNmNjU2NWE4MjI5OGIzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNTU0LDcg
KzU1NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JFbGVtZW50SW5mbyhOb2RlKiBub2RlKQogICAgICAgICBlbGVtZW50SW5mby0+c2V0U3RyaW5n
KCJjbGFzc05hbWUiLCBjbGFzc05hbWVzLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0Zy
YW1lID0gbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIEZyYW1lVmlldyogY29udGFpbmlu
Z1ZpZXcgPSBjb250YWluaW5nRnJhbWUtPnZpZXcoKTsKICAgICBJbnRSZWN0IGJvdW5kaW5nQm94
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChjb250YWluaW5nVmlldy0+Y29udGVudHNUb1Jvb3RWaWV3
KHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjMzA2NTdlMGYyMDRkMGU1MzUwM2VlMDc5Njg4
MTIzYTExMzMxOTA5Li45YmM0ZGEwNmU1MDEzMWVkODIyMzgzZmY0YTUxN2JiMzk1NjI2YmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MDUsNiArMTQw
NSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hhcGVJbmZvUmVxdWlyZXNSZWxheW91dChjb25z
dCBSZW5kZXJCbG9jayogYmxvY2spCiAgICAgICAgIGluZm8gPSBibG9jay0+bGF5b3V0U2hhcGVJ
bnNpZGVJbmZvKCk7CiAgICAgcmV0dXJuIGluZm8gJiYgaW5mby0+bmVlZHNMYXlvdXQoKTsKIH0K
Kwordm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVNoYXBlU2l6ZSgpCit7CisgICAgU2hhcGVJbnNp
ZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSB0aGlzLT5zaGFwZUluc2lkZUluZm8oKTsKKyAgICBp
ZiAoIXNoYXBlSW5zaWRlSW5mbykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKSkgeworICAgICAgICBTaGFwZUluc2lkZUluZm8qIHBhcmVudFNo
YXBlSW5zaWRlSW5mbyA9IHRvUmVuZGVyQmxvY2socGFyZW50KCkpLT5zaGFwZUluc2lkZUluZm8o
KTsKKyAgICAgICAgQVNTRVJUKHBhcmVudFNoYXBlSW5zaWRlSW5mbyk7CisgICAgICAgIHNoYXBl
SW5zaWRlSW5mby0+c2V0U2hhcGVTaXplKHBhcmVudFNoYXBlSW5zaWRlSW5mby0+c2hhcGVTaXpl
KCkud2lkdGgoKSwgcGFyZW50U2hhcGVJbnNpZGVJbmZvLT5zaGFwZVNpemUoKS5oZWlnaHQoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBwZXJjZW50YWdlTG9naWNhbEhlaWdodFJlc29s
dmFibGUgPSBwZXJjZW50YWdlTG9naWNhbEhlaWdodElzUmVzb2x2YWJsZUZyb21CbG9jayh0aGlz
LCBmYWxzZSk7CisgICAgICAgIHNoYXBlSW5zaWRlSW5mby0+c2V0U2hhcGVTaXplKGxvZ2ljYWxX
aWR0aCgpLCBwZXJjZW50YWdlTG9naWNhbEhlaWdodFJlc29sdmFibGUgPyBsb2dpY2FsSGVpZ2h0
KCkgOiBMYXlvdXRVbml0KCkpOworICAgIH0KK30KICNlbmRpZgogCiBib29sIFJlbmRlckJsb2Nr
Ojp1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpCkBAIC0xNDMyLDI0ICsxNDQ4LDYgQEAg
Ym9vbCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKQogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLXZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVT
aGFwZVNpemUoKQotewotICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gdGhp
cy0+c2hhcGVJbnNpZGVJbmZvKCk7Ci0gICAgaWYgKCFzaGFwZUluc2lkZUluZm8pCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpIHsKLSAgICAg
ICAgU2hhcGVJbnNpZGVJbmZvKiBwYXJlbnRTaGFwZUluc2lkZUluZm8gPSB0b1JlbmRlckJsb2Nr
KHBhcmVudCgpKS0+c2hhcGVJbnNpZGVJbmZvKCk7Ci0gICAgICAgIEFTU0VSVChwYXJlbnRTaGFw
ZUluc2lkZUluZm8pOwotICAgICAgICBzaGFwZUluc2lkZUluZm8tPnNldFNoYXBlU2l6ZShwYXJl
bnRTaGFwZUluc2lkZUluZm8tPnNoYXBlU2l6ZSgpLndpZHRoKCksIHBhcmVudFNoYXBlSW5zaWRl
SW5mby0+c2hhcGVTaXplKCkuaGVpZ2h0KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJvb2wg
cGVyY2VudGFnZUxvZ2ljYWxIZWlnaHRSZXNvbHZhYmxlID0gcGVyY2VudGFnZUxvZ2ljYWxIZWln
aHRJc1Jlc29sdmFibGVGcm9tQmxvY2sodGhpcywgZmFsc2UpOwotICAgICAgICBzaGFwZUluc2lk
ZUluZm8tPnNldFNoYXBlU2l6ZShsb2dpY2FsV2lkdGgoKSwgcGVyY2VudGFnZUxvZ2ljYWxIZWln
aHRSZXNvbHZhYmxlID8gbG9naWNhbEhlaWdodCgpIDogTGF5b3V0VW5pdCgpKTsKLSAgICB9Ci19
Ci0jZW5kaWYKLQogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQWZ0ZXJCbG9ja0xheW91
dChib29sIGhlaWdodENoYW5nZWQpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCkBAIC0xNDYy
LDYgKzE0NjAsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVzQWZ0ZXJCbG9ja0xh
eW91dChib29sIGhlaWdodENoYW5nZWQpCiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJCbG9jazo6
cHJlcGFyZVNoYXBlc0FuZFBhZ2luYXRpb25CZWZvcmVCbG9ja0xheW91dChib29sJiByZWxheW91
dENoaWxkcmVuKQoreworICAgIC8vIFJlZ2lvbnMgY2hhbmdpbmcgd2lkdGhzIGNhbiBmb3JjZSB1
cyB0byByZWxheW91dCBvdXIgY2hpbGRyZW4uCisgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1Ro
cmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICBpZiAodXBkYXRlU2hhcGVz
QmVmb3JlQmxvY2tMYXlvdXQoKSkKKyAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Cisg
ICAgaWYgKGZsb3dUaHJlYWQpCisgICAgICAgIGZsb3dUaHJlYWQtPmxvZ2ljYWxXaWR0aENoYW5n
ZWRJblJlZ2lvbnNGb3JCbG9jayh0aGlzLCByZWxheW91dENoaWxkcmVuKTsKK30KKwogYm9vbCBS
ZW5kZXJCbG9jazo6dXBkYXRlTG9naWNhbFdpZHRoQW5kQ29sdW1uV2lkdGgoKQogewogICAgIExh
eW91dFVuaXQgb2xkV2lkdGggPSBsb2dpY2FsV2lkdGgoKTsKQEAgLTUyNzUsMTQgKzUyODMsNiBA
QCB2b2lkIFJlbmRlckJsb2NrOjpzZXRTdGF0aWNJbmxpbmVQb3NpdGlvbkZvckNoaWxkKFJlbmRl
ckJveCogY2hpbGQsIExheW91dFVuaXQgYgogICAgIGNoaWxkLT5sYXllcigpLT5zZXRTdGF0aWNJ
bmxpbmVQb3NpdGlvbihpbmxpbmVQb3NpdGlvbik7CiB9CiAKLWJvb2wgUmVuZGVyQmxvY2s6Omxv
Z2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCkg
Y29uc3QKLXsKLSAgICBpZiAoIWZsb3dUaHJlYWQgfHwgIWZsb3dUaHJlYWQtPmhhc1ZhbGlkUmVn
aW9uSW5mbygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIGZsb3dU
aHJlYWQtPmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayh0aGlzKTsKLX0KLQog
dm9pZCBSZW5kZXJCbG9jazo6Y29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVu
ZGVyQm94KiBib3gpIGNvbnN0CiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9
IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKaW5kZXggYTdiNjZhODBlMTk1NTUyNWYyZDFiNjEyOGMxNGQ1NDNkOWQyZWQ4YS4u
Mzg1NGMyNGI0ZTBjNmIzZTM1YTkwMTRlZTY0NTM5YWNlZmRiNGRhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTUwNiw2ICs1MDYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCB1cGRhdGVCbG9ja0NoaWxkRGlydHlCaXRzQmVmb3JlTGF5b3V0KGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgUmVuZGVyQm94Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tGb3JQYWdp
bmF0aW9uTG9naWNhbEhlaWdodENoYW5nZShMYXlvdXRVbml0JiBwYWdlTG9naWNhbEhlaWdodCwg
Ym9vbCYgcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkLCBib29sJiBoYXNTcGVjaWZpZWRQYWdlTG9n
aWNhbEhlaWdodCk7CisgICAgdm9pZCBwcmVwYXJlU2hhcGVzQW5kUGFnaW5hdGlvbkJlZm9yZUJs
b2NrTGF5b3V0KGJvb2wmKTsKIAogcHJpdmF0ZToKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJl
bW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJC
bG9ja0Zsb3cKQEAgLTcxNSw4ICs3MTYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gbGluZSwgaS5l
LiwgdGhhdCBpdCBjYW4ndCBiZSByZS11c2VkLgogICAgIGJvb2wgbGluZVdpZHRoRm9yUGFnaW5h
dGVkTGluZUNoYW5nZWQoUm9vdElubGluZUJveCosIExheW91dFVuaXQgbGluZURlbHRhLCBSZW5k
ZXJGbG93VGhyZWFkKikgY29uc3Q7CiAKLSAgICBib29sIGxvZ2ljYWxXaWR0aENoYW5nZWRJblJl
Z2lvbnMoUmVuZGVyRmxvd1RocmVhZCopIGNvbnN0OwotCiAgICAgdmlydHVhbCBib29sIHJlcXVp
cmVzQ29sdW1ucyhpbnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdDsKIAogICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVMb2dpY2FsV2lkdGhBbmRDb2x1bW5XaWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBiNzNlYzI1ZDRiNjg2YWYxZjJk
OWQ4ODljMzY2ZGM0MTczNTAyMmY5Li5iMzkzMjEzMzRiYTE1ZTM0MDgwN2RjMDdhY2U0MDFhMjg0
MzdmOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cApAQCAtMzI2LDE0ICszMjYsOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSAogICAgIFJlbmRl
clN0eWxlKiBzdHlsZVRvVXNlID0gc3R5bGUoKTsKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIg
c3RhdGVQdXNoZXIoJnZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzQ29sdW1ucygp
IHx8IGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZVRvVXNlLT5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpLCBwYWdlTG9naWNhbEhlaWdodCwgcGFnZUxvZ2ljYWxI
ZWlnaHRDaGFuZ2VkLCBjb2x1bW5JbmZvKCkpOwogCi0gICAgLy8gUmVnaW9ucyBjaGFuZ2luZyB3
aWR0aHMgY2FuIGZvcmNlIHVzIHRvIHJlbGF5b3V0IG91ciBjaGlsZHJlbi4KLSAgICBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAg
IGlmIChsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKGZsb3dUaHJlYWQpKQotICAgICAgICBy
ZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tM
YXlvdXQoKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKG5hbWVk
Rmxvd0ZyYWdtZW50TmVlZHNVcGRhdGUoKSkKLSAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRy
dWU7CisgICAgcHJlcGFyZVNoYXBlc0FuZFBhZ2luYXRpb25CZWZvcmVCbG9ja0xheW91dChyZWxh
eW91dENoaWxkcmVuKTsKKyAgICBpZiAoIXJlbGF5b3V0Q2hpbGRyZW4pCisgICAgICAgIHJlbGF5
b3V0Q2hpbGRyZW4gPSBuYW1lZEZsb3dGcmFnbWVudE5lZWRzVXBkYXRlKCk7CiAKICAgICAvLyBX
ZSB1c2UgZm91ciB2YWx1ZXMsIG1heFRvcFBvcywgbWF4VG9wTmVnLCBtYXhCb3R0b21Qb3MsIGFu
ZCBtYXhCb3R0b21OZWcsIHRvIHRyYWNrCiAgICAgLy8gb3VyIGN1cnJlbnQgbWF4aW1hbCBwb3Np
dGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2lucy4gVGhlc2UgdmFsdWVzIGFyZSB1c2VkIHdoZW4gd2UK
QEAgLTI1ODYsMTAgKzI1ODEsMTAgQEAgR2FwUmVjdHMgUmVuZGVyQmxvY2tGbG93OjppbmxpbmVT
ZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrKiByb290QmxvY2ssIGNvbnN0IExheW8KIAogdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OmNyZWF0ZVJlbmRlck5hbWVkRmxvd0ZyYWdtZW50SWZOZWVkZWQoKQog
ewotICAgIGlmIChyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIHx8IGlzUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQoKSkKKyAgICBpZiAoIWRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQoKSB8fCBy
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIHx8IGlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRvY3VtZW50KCkuY3NzUmVnaW9uc0VuYWJsZWQo
KSAmJiBzdHlsZSgpLT5pc0Rpc3BsYXlSZWdpb25UeXBlKCkgJiYgc3R5bGUoKS0+aGFzRmxvd0Zy
b20oKSkgeworICAgIGlmIChzdHlsZSgpLT5pc0Rpc3BsYXlSZWdpb25UeXBlKCkgJiYgc3R5bGUo
KS0+aGFzRmxvd0Zyb20oKSkgewogICAgICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogZmxv
d0ZyYWdtZW50ID0gbmV3IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KGRvY3VtZW50KCkpOwogICAg
ICAgICBmbG93RnJhZ21lbnQtPnNldFN0eWxlRm9yTmFtZWRGbG93RnJhZ21lbnQoc3R5bGUoKSk7
CiAgICAgICAgIHNldFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KGZsb3dGcmFnbWVudCk7CkBAIC0y
NjI1LDExICsyNjIwLDIwIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsSGVp
Z2h0KCkKIAogdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnNldFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiBmbG93RnJhZ21lbnQpCiB7Ci0gICAgaWYgKCFtX3Jh
cmVEYXRhKQotICAgICAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJlbmRlckJsb2NrRmxv
d1JhcmVEYXRhKHRoaXMpKTsKLSAgICBpZiAobV9yYXJlRGF0YS0+bV9yZW5kZXJOYW1lZEZsb3dG
cmFnbWVudCkKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+
ZGVzdHJveSgpOwotICAgIG1fcmFyZURhdGEtPm1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSBm
bG93RnJhZ21lbnQ7CisgICAgUmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIHJhcmVEYXRhID0gZW5z
dXJlUmFyZURhdGEoKTsKKyAgICBpZiAocmFyZURhdGEubV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCkKKyAgICAgICAgcmFyZURhdGEubV9yZW5kZXJOYW1lZEZsb3dGcmFnbWVudC0+ZGVzdHJveSgp
OworICAgIHJhcmVEYXRhLm1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgPSBmbG93RnJhZ21lbnQ7
Cit9CisKKy8vIEZJWE1FOiBVc2UgdGhpcyBmdW5jdGlvbiBpbiBtb3JlIHBsYWNlcy4KK1JlbmRl
ckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93UmFyZURhdGEmIFJlbmRlckJsb2NrRmxvdzo6ZW5z
dXJlUmFyZURhdGEoKQoreworICAgIGlmIChtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gKm1f
cmFyZURhdGE7CisKKyAgICBtX3JhcmVEYXRhID0gYWRvcHRQdHIobmV3IFJlbmRlckJsb2NrRmxv
d1JhcmVEYXRhKHRoaXMpKTsKKyAgICByZXR1cm4gKm1fcmFyZURhdGE7CiB9CiAKIHN0YXRpYyBi
b29sIHNob3VsZENoZWNrTGluZXMoUmVuZGVyT2JqZWN0JiBvYmopCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggMTliMTc4NzFkYjY3M2FjMDQyNTg0NGVk
OTcxNjg1Y2NlMmUxZmMzOC4uYWM1NmRhYTcwNzIwYjc0ZTdmMGIwOTAxMGY1ZjAzZmQ5Y2U0Zjc0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtOTYs
OCArOTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhKGNvbnN0
IFJlbmRlckJsb2NrRmxvdyogYmxvY2spCiAgICAgICAgICAgICA6IG1fbWFyZ2lucyhwb3NpdGl2
ZU1hcmdpbkJlZm9yZURlZmF1bHQoYmxvY2spLCBuZWdhdGl2ZU1hcmdpbkJlZm9yZURlZmF1bHQo
YmxvY2spLCBwb3NpdGl2ZU1hcmdpbkFmdGVyRGVmYXVsdChibG9jayksIG5lZ2F0aXZlTWFyZ2lu
QWZ0ZXJEZWZhdWx0KGJsb2NrKSkKICAgICAgICAgICAgICwgbV9saW5lQnJlYWtUb0F2b2lkV2lk
b3coLTEpCi0gICAgICAgICAgICAsIG1fbGluZUdyaWRCb3goMCkKLSAgICAgICAgICAgICwgbV9y
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgwKQorICAgICAgICAgICAgLCBtX2xpbmVHcmlkQm94KG51
bGxwdHIpCisgICAgICAgICAgICAsIG1fcmVuZGVyTmFtZWRGbG93RnJhZ21lbnQobnVsbHB0cikK
ICAgICAgICAgICAgICwgbV9kaXNjYXJkTWFyZ2luQmVmb3JlKGZhbHNlKQogICAgICAgICAgICAg
LCBtX2Rpc2NhcmRNYXJnaW5BZnRlcihmYWxzZSkKICAgICAgICAgICAgICwgbV9kaWRCcmVha0F0
TGluZVRvQXZvaWRXaWRvdyhmYWxzZSkKQEAgLTQxMyw3ICs0MTMsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yQm94KElubGluZUJveCosIGJvb2wgc3RhcnQgPSB0
cnVlKSBjb25zdDsKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50
V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTG9naWNhbENvbnRl
bnRzKSBPVkVSUklERTsKLQorICAgIFJlbmRlckJsb2NrRmxvd1JhcmVEYXRhJiBlbnN1cmVSYXJl
RGF0YSgpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxk
cmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFs
T2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikgT1ZFUlJJREU7CiAKIC8vIEZJ
WE1FLUJMT0NLRkxPVzogVGhlc2UgbWV0aG9kcyBoYXZlIGltcGxlbWVudGF0aW9ucyBpbgpAQCAt
NTA2LDYgKzUwNiwxMSBAQCBpbmxpbmUgY29uc3QgUmVuZGVyQmxvY2tGbG93KiB0b1JlbmRlckJs
b2NrRmxvdyhjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4ob2JqZWN0KTsKIH0KIAoraW5saW5lIGJvb2wgUmVu
ZGVyRWxlbWVudDo6aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGlzUmVuZGVyQmxvY2tGbG93KCkgJiYgdG9SZW5kZXJCbG9ja0Zsb3codGhp
cyktPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7Cit9CisKIC8vIFRoaXMgd2lsbCBjYXRjaCBh
bnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9SZW5kZXJCbG9ja0Zsb3co
Y29uc3QgUmVuZGVyQmxvY2tGbG93Kik7CiB2b2lkIHRvUmVuZGVyQmxvY2tGbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCBlN2NkMDJiNmNjNzViMjBkODI3
NGE3ZThmOTRiZGQ1NjU5ZDU2OGUzLi5kNmIyMDU2ZjRkZTNiOTc1ZThjYzZjMjBiNWFiMTc5ZmNi
YTE4OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMjg3LDEyICsyODcsNyBAQCB2b2lkIFJlbmRl
ckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0KQogICAgIExheW91dFJlcGFpbnRlciByZXBhaW50ZXIoKnRoaXMsIGNoZWNr
Rm9yUmVwYWludER1cmluZ0xheW91dCgpKTsKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3Rh
dGVQdXNoZXIoJnZpZXcoKSwgdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgaGFzVHJhbnNmb3JtKCkg
fHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2Rl
KCkpOwogCi0gICAgLy8gUmVnaW9ucyBjaGFuZ2luZyB3aWR0aHMgY2FuIGZvcmNlIHVzIHRvIHJl
bGF5b3V0IG91ciBjaGlsZHJlbi4KLSAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwotICAgIGlmIChsb2dpY2FsV2lkdGhDaGFuZ2Vk
SW5SZWdpb25zKGZsb3dUaHJlYWQpKQotICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsK
LSAgICBpZiAodXBkYXRlU2hhcGVzQmVmb3JlQmxvY2tMYXlvdXQoKSkKLSAgICAgICAgcmVsYXlv
dXRDaGlsZHJlbiA9IHRydWU7CisgICAgcHJlcGFyZVNoYXBlc0FuZFBhZ2luYXRpb25CZWZvcmVC
bG9ja0xheW91dChyZWxheW91dENoaWxkcmVuKTsKIAogICAgIExheW91dFNpemUgcHJldmlvdXNT
aXplID0gc2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApp
bmRleCBhNGQyYmU2NzBjYjQ0MDgzOWVmNGIwNGM5MDIzODJhZTkzNWVkM2Q1Li41N2YzNWFjZmY5
MjE2NDRjNTIwMWIyNmZiNmFkMmQwYzcwYmZkNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNS
ZW5kZXJCbG9ja0Zsb3coKSBjb25zdDsKICAgICBib29sIGlzUmVuZGVyUmVwbGFjZWQoKSBjb25z
dDsKICAgICBib29sIGlzUmVuZGVySW5saW5lKCkgY29uc3Q7CisgICAgYm9vbCBpc1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXND
aGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKTsKQEAgLTI2MCw3ICsy
NjEsNyBAQCBpbmxpbmUgY29uc3QgUmVuZGVyRWxlbWVudCogdG9SZW5kZXJFbGVtZW50KGNvbnN0
IFJlbmRlck9iamVjdCogb2JqZWN0KQogCiBpbmxpbmUgRWxlbWVudCogUmVuZGVyRWxlbWVudDo6
Z2VuZXJhdGluZ0VsZW1lbnQoKSBjb25zdAogewotICAgIGlmIChpc1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KCkgJiYgcGFyZW50KCkpCisgICAgaWYgKHBhcmVudCgpICYmIGlzUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoKSkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVyRWxlbWVudChwYXJlbnQoKSkt
PmdlbmVyYXRpbmdFbGVtZW50KCk7CiAgICAgcmV0dXJuIHRvRWxlbWVudChSZW5kZXJPYmplY3Q6
OmdlbmVyYXRpbmdOb2RlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggOWU4MmQyZDIwNzIwNWFlYjljMDU0N2FiZGQ1ZWMzYmYx
YjRmZjkwYS4uZTlhNmIzMjBhMWViNTY1NzlhNTFiNDdmMGFjNGFlZWFlZDNjZTUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0zMzks
MTIgKzMzOSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKIAogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBz
dGF0ZVB1c2hlcigmdmlldygpLCB0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0o
KSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUoKSk7CiAKLSAgICAvLyBSZWdpb25zIGNoYW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMgdG8g
cmVsYXlvdXQgb3VyIGNoaWxkcmVuLgotICAgIFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5n
ZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCi0gICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVl
OwotICAgIGlmICh1cGRhdGVTaGFwZXNCZWZvcmVCbG9ja0xheW91dCgpKQotICAgICAgICByZWxh
eW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICBwcmVwYXJlU2hhcGVzQW5kUGFnaW5hdGlvbkJlZm9y
ZUJsb2NrTGF5b3V0KHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAgICAgbV9udW1iZXJPZkluRmxvd0No
aWxkcmVuT25GaXJzdExpbmUgPSAtMTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDE1YTRkMWVkMzg2ZWZkZWI1MjM5YjZiMDg4OWZjYWEz
ODJhN2Q1ZTguLmE5OGRjOTNlZjRiNmMxOGYzNjcwMmQ3OTExNGU5NDc2ZjU0YzFhYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTcyNywy
NyArNzI3LDM0IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6cmVtb3ZlUmVuZGVyQm94UmVnaW9u
SW5mbyhSZW5kZXJCb3gqIGJveCkKICAgICBtX3JlZ2lvblJhbmdlTWFwLnJlbW92ZShib3gpOwog
fQogCi1ib29sIFJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNG
b3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayogYmxvY2spCit2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OmxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayog
YmxvY2ssIGJvb2wmIHJlbGF5b3V0Q2hpbGRyZW4pCiB7Ci0gICAgaWYgKCFoYXNSZWdpb25zKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWhhc1ZhbGlkUmVnaW9uSW5mbygpKQor
ICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJSZWdpb25SYW5nZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX3JlZ2lvblJhbmdlTWFwLmZpbmQoYmxvY2spOwogICAgIGlmIChpdCA9PSBtX3JlZ2lvblJh
bmdlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybjsKIAog
ICAgIFJlbmRlclJlZ2lvblJhbmdlJiByYW5nZSA9IGl0LT52YWx1ZTsKICAgICBib29sIHJhbmdl
SW52YWxpZGF0ZWQgPSByYW5nZS5yYW5nZUludmFsaWRhdGVkKCk7CiAgICAgcmFuZ2UuY2xlYXJS
YW5nZUludmFsaWRhdGVkKCk7CiAKKyAgICAvLyBJZiB0aGVyZSB3aWxsIGJlIGEgcmVsYXlvdXQg
YW55d2F5IHNraXAgdGhlIG5leHQgc3RlcHMgYmVjYXVzZSB0aGV5IG9ubHkgdmVyaWZ5CisgICAg
Ly8gdGhlIHN0YXRlIG9mIHRoZSByYW5nZXMuCisgICAgaWYgKHJlbGF5b3V0Q2hpbGRyZW4pCisg
ICAgICAgIHJldHVybjsKKwogICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb247CiAgICAgUmVu
ZGVyUmVnaW9uKiBlbmRSZWdpb247CiAgICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYmxvY2ssIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pOwogCiAgICAgLy8gTm90IG5lY2Vzc2FyeSBmb3IgdGhlIGZs
b3cgdGhyZWFkLCBzaW5jZSB3ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSBjb3JyZWN0IGluZm8gZm9y
IGl0LgogICAgIC8vIElmIHRoZSByZWdpb25zIGhhdmUgY2hhbmdlZCBpbnZhbGlkYXRlIHRoZSBj
aGlsZHJlbi4KLSAgICBpZiAoYmxvY2sgPT0gdGhpcykKLSAgICAgICAgcmV0dXJuIG1fcGFnZUxv
Z2ljYWxTaXplQ2hhbmdlZDsKKyAgICBpZiAoYmxvY2sgPT0gdGhpcykgeworICAgICAgICByZWxh
eW91dENoaWxkcmVuID0gbV9wYWdlTG9naWNhbFNpemVDaGFuZ2VkOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9y
ZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsg
KytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CkBAIC03NTUs
MTkgKzc2MiwyMSBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6OmxvZ2ljYWxXaWR0aENoYW5nZWRJ
blJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJCbG9jayogYgogCiAgICAgICAgIC8vIFdlIGhh
dmUgbm8gaW5mb3JtYXRpb24gY29tcHV0ZWQgZm9yIHRoaXMgcmVnaW9uIHNvIHdlIG5lZWQgdG8g
ZG8gaXQuCiAgICAgICAgIE93blB0cjxSZW5kZXJCb3hSZWdpb25JbmZvPiBvbGRJbmZvID0gcmVn
aW9uLT50YWtlUmVuZGVyQm94UmVnaW9uSW5mbyhibG9jayk7Ci0gICAgICAgIGlmICghb2xkSW5m
bykKLSAgICAgICAgICAgIHJldHVybiByYW5nZUludmFsaWRhdGVkOworICAgICAgICBpZiAoIW9s
ZEluZm8pIHsKKyAgICAgICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSByYW5nZUludmFsaWRhdGVk
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgTGF5b3V0VW5pdCBv
bGRMb2dpY2FsV2lkdGggPSBvbGRJbmZvLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgUmVuZGVy
Qm94UmVnaW9uSW5mbyogbmV3SW5mbyA9IGJsb2NrLT5yZW5kZXJCb3hSZWdpb25JbmZvKHJlZ2lv
bik7Ci0gICAgICAgIGlmICghbmV3SW5mbyB8fCBuZXdJbmZvLT5sb2dpY2FsV2lkdGgoKSAhPSBv
bGRMb2dpY2FsV2lkdGgpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCFu
ZXdJbmZvIHx8IG5ld0luZm8tPmxvZ2ljYWxXaWR0aCgpICE9IG9sZExvZ2ljYWxXaWR0aCkgewor
ICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KIAogICAgICAgICBpZiAocmVnaW9uID09IGVuZFJlZ2lvbikKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogTGF5b3V0VW5pdCBS
ZW5kZXJGbG93VGhyZWFkOjpjb250ZW50TG9naWNhbFdpZHRoT2ZGaXJzdFJlZ2lvbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCA4NWIw
ZDllNzJkZjY1MDQxZTU4NTY0M2RhN2NiYjQ2MDZjZjU1MGIyLi43MWQ5MTc4NGE1YWI3ZGUzNGVl
Nzk1ZTJkYTViZmU2OTE3NWNjOTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUmVn
aW9uKiBtYXBGcm9tRmxvd1RvUmVnaW9uKFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICB2
b2lkIHJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94Kik7Ci0gICAgYm9vbCBsb2dp
Y2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqKTsKKyAg
ICB2b2lkIGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnNGb3JCbG9jayhjb25zdCBSZW5kZXJC
bG9jayosIGJvb2wmKTsKIAogICAgIExheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aE9mRmly
c3RSZWdpb24oKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0T2ZG
aXJzdFJlZ2lvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CmluZGV4IGU1ZTA2ODZlMjg5ODg0NmJmMGQzZThkNTZmNTg1YjIwYzc2ZTc1ZmIuLmFjYjYzMTNm
OGQxNDJmODY5NGU0Yzk3YzQwOWJmZTZjN2QxNjZjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAKQEAgLTE2NCwxMiArMTY0LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjps
YXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgTGF5b3V0
UmVwYWludGVyIHJlcGFpbnRlcigqdGhpcywgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkp
OwogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigmdmlldygpLCB0aGlzLCBs
b2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNSZWZsZWN0aW9uKCkgfHwgc3R5
bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSk7CiAKLSAgICAvLyBSZWdpb25zIGNo
YW5naW5nIHdpZHRocyBjYW4gZm9yY2UgdXMgdG8gcmVsYXlvdXQgb3VyIGNoaWxkcmVuLgotICAg
IFJlbmRlckZsb3dUaHJlYWQqIGZsb3dUaHJlYWQgPSBmbG93VGhyZWFkQ29udGFpbmluZ0Jsb2Nr
KCk7Ci0gICAgaWYgKGxvZ2ljYWxXaWR0aENoYW5nZWRJblJlZ2lvbnMoZmxvd1RocmVhZCkpCi0g
ICAgICAgIHJlbGF5b3V0Q2hpbGRyZW4gPSB0cnVlOwotICAgIGlmICh1cGRhdGVTaGFwZXNCZWZv
cmVCbG9ja0xheW91dCgpKQotICAgICAgICByZWxheW91dENoaWxkcmVuID0gdHJ1ZTsKKyAgICBw
cmVwYXJlU2hhcGVzQW5kUGFnaW5hdGlvbkJlZm9yZUJsb2NrTGF5b3V0KHJlbGF5b3V0Q2hpbGRy
ZW4pOwogCiAgICAgTGF5b3V0U2l6ZSBwcmV2aW91c1NpemUgPSBzaXplKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKaW5kZXgg
MTdhZDY4NTY5NjQzNDJlMmI1ZmIyODljZmUxM2QwZjk0NWMzNWQ2Zi4uMzQ1NjIwNTFmNjc5OTYz
NjE2ODA0ZmNkYzI5NDBhYmU5YjZiN2I2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1jbGFz
cyBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCA6IHB1YmxpYyBSZW5kZXJSZWdpb24geworY2xhc3Mg
UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQgRklOQUwgOiBwdWJsaWMgUmVuZGVyUmVnaW9uIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYpOwog
ICAgIHZpcnR1YWwgflJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCk7CkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0eWxlRm9yTmFtZWRGbG93RnJhZ21lbnQoY29uc3QgUmVu
ZGVyU3R5bGUqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSk7CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtYXhQYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0OwogCkBAIC01OCwxMSArNTgsOSBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbGF5ZXJPd25lcigpIGNvbnN0
IHsgcmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc1JlbmRlckxheWVyTW9kZWxPYmplY3Qo
KSA/CiAgICAgICAgIHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChwYXJlbnQoKSkgOiBudWxscHRy
OyB9CiAKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSGF2ZUF1dG9Mb2dpY2Fs
SGVpZ2h0KCkgY29uc3Q7Ci0KIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50IjsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRIYXZlQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQiOyB9CiB9OwogCiBpbmxpbmUgUmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQqIHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoUmVuZGVyT2JqZWN0
KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4
IGM4NTdlNDdmNDE0YmIwNDE5YzQxNzE5NWYzNTg5NTc5ZGNhNmU3MTguLjRlNGRhMTkxNGJmNTJk
YzRkNDk1OWNiMmY4NjE1YzAyZGJkYjMzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yNTU4LDE0ICsyNTU4LDYgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OmNhbkJlUmVwbGFjZWRXaXRoSW5saW5lUnVuSW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFJlbmRlck9iamVjdDo6aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5l
cigpIGNvbnN0Ci17Ci0gICAgaWYgKCFpc1JlbmRlckJsb2NrRmxvdygpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdG9SZW5kZXJCbG9ja0Zsb3codGhpcyktPnJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KCk7Ci19Ci0KICNpZiBFTkFCTEUoU1ZHKQogCiBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciogUmVuZGVyT2JqZWN0Ojp0b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBiZjYyNDI3OTQ2
ODI2Mjc5M2M2MDFkNWRhY2NmYWRiNmYzMDBhOGI4Li42NTI1ODllODczMjA2NTc1NTNiYWI5YThi
ZGM2ZmQzZGRmYjFkMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CkBAIC0zNjMsNyArMzYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck5h
bWVkRmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpc0luRmxv
d1JlbmRlckZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBpc1JlbmRlckZsb3dUaHJlYWQoKSAm
JiAhaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCk7IH0KICAgICBib29sIGlzT3V0T2ZGbG93UmVuZGVy
Rmxvd1RocmVhZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVuZGVyRmxvd1RocmVhZCgpICYmIGlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpOyB9Ci0gICAgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50
Q29udGFpbmVyKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVt
bkJsb2NrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYWMzNDE5NTQ1NmVkOWMy
NTg3OThlOTE1ZmZhM2ZhMTI5ZGNiNmEyMi4uN2RmYWY0YmEwZTRkNjg1YWNkNDlhNzFhMTI2ZjIz
M2QwYTk0MGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcApAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFJlbmRlck9iamVjdCYgbywgaW50IGluZGVudCwgUmVuZGVyQXNUZXh0QmVoYXZpCiAgICAg
ICAgICAgICB3cml0ZVRleHRSdW4odHMsIHRleHQsICpib3gpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKCFvLmlzUmVuZGVyTmFtZWRGbG93RnJhZ21lbnRDb250YWluZXIo
KSkgeworICAgICAgICBpZiAoIXRvUmVuZGVyRWxlbWVudChvKS5pc1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50Q29udGFpbmVyKCkpIHsKICAgICAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHRvUmVuZGVyRWxlbWVudChvKS5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNMYXllcigp
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggZjVkOGM4MjdmODVkYzM1MTA5OWMwY2VmNGY4MmFmYjEy
ZGY5ZjBiYy4uYzNiMWM2YzkyMWQ1MjRkYWU3OGNmMDE1ZDM0ZGZjMzliZTk2ZjJlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKQEAgLTE2NCw3ICsxNjQsOCBA
QCBzdGF0aWMgYm9vbCBzaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBDb250YWluZXJOb2RlKiByZQogc3RhdGljIGJvb2wgZWxlbWVudEluc2lkZVJlZ2lv
bk5lZWRzUmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgQ29udGFpbmVyTm9kZSogcmVu
ZGVyaW5nUGFyZW50Tm9kZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgc3R5bGUpCiB7CiAjaWYgRU5B
QkxFKENTU19SRUdJT05TKQotICAgIGNvbnN0IFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSByZW5kZXJpbmdQYXJlbnROb2RlID8gcmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKSA6
IDA7CisgICAgLy8gVGhlIHBhcmVudCBvZiBhIHJlZ2lvbiBzaG91bGQgYWx3YXlzIGJlIGFuIGVs
ZW1lbnQuCisgICAgY29uc3QgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSByZW5kZXJp
bmdQYXJlbnROb2RlID8gcmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKSA6IDA7CiAKICAg
ICBib29sIHBhcmVudElzUmVnaW9uID0gcGFyZW50UmVuZGVyZXIgJiYgIXBhcmVudFJlbmRlcmVy
LT5jYW5IYXZlQ2hpbGRyZW4oKSAmJiBwYXJlbnRSZW5kZXJlci0+aXNSZW5kZXJOYW1lZEZsb3dG
cmFnbWVudENvbnRhaW5lcigpOwogICAgIGJvb2wgcGFyZW50SXNOb25SZW5kZXJlZEluc2lkZVJl
Z2lvbiA9ICFwYXJlbnRSZW5kZXJlciAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVt
ZW50LnBhcmVudEVsZW1lbnQoKS0+aXNJbnNpZGVSZWdpb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>