<?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>112373</bug_id>
          
          <creation_ts>2013-03-14 11:47:16 -0700</creation_ts>
          <short_desc>AX: aria-hidden on container does not hide descendant popup buttons</short_desc>
          <delta_ts>2013-03-16 01:54:14 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>855374</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-14 11:47:16 -0700</bug_when>
    <thetext>There are a number of elements that do not hide themselves when a parent uses aria-hidden=true

These includes

image-map links
media controls
popup menus
list boxes
range elements
date/time elements
progress

They are all subclasses and were only doing accessibilityIsIgnored() == NO, but they need to inherit from a base reference that handles aria-hidden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855378</commentid>
    <comment_count>1</comment_count>
      <attachid>193166</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-14 11:49:48 -0700</bug_when>
    <thetext>Created attachment 193166
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855380</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-14 11:50:25 -0700</bug_when>
    <thetext>Adding Tim to help with review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855429</commentid>
    <comment_count>3</comment_count>
      <attachid>193166</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-14 12:44:08 -0700</bug_when>
    <thetext>Comment on attachment 193166
patch

Attachment 193166 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17008991

New failing tests:
accessibility/aria-hidden-hides-all-elements.html
fast/js/dfg-inline-resolve.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855438</commentid>
    <comment_count>4</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-14 13:03:25 -0700</bug_when>
    <thetext>any idea why this would fail cr-linux but not the other cr bots?
any idea how to get what the diff is for the failing test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855439</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-03-14 13:05:47 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; any idea why this would fail cr-linux but not the other cr bots?

Of the chromium bots, only cr-linux runs tests.

&gt; any idea how to get what the diff is for the failing test?

Politely ask a chromium engineer, or build the chromium port? I don&apos;t think there&apos;s a good way right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856061</commentid>
    <comment_count>6</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2013-03-15 10:04:34 -0700</bug_when>
    <thetext>The reason for the Chromium failure is because accessibilityPlatformIncludesObject returns IncludeObject for a MenuListPopup or MenuListOpen, and AccessibilityMenuList::addChildren only calls accessibilityPlatformIncludesObject to decide whether or not to add the child, rather than calling accessibilityIsIgnored

Have AccessibilityMenuList::addChildren call accessibilityIsIgnored instead, that fixes it. To make that work you&apos;ll have to move the setParent call up before that line, otherwise accessibilityIsIgnored can&apos;t walk up the parent hierarchy.

Otherwise this patch looks great, it&apos;s a good bug fix and a good code cleanup, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856162</commentid>
    <comment_count>7</comment_count>
      <attachid>193345</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-15 11:58:59 -0700</bug_when>
    <thetext>Created attachment 193345
patch

Thanks a lot for helping with this one Dom</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856267</commentid>
    <comment_count>8</comment_count>
      <attachid>193345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 14:04:26 -0700</bug_when>
    <thetext>Comment on attachment 193345
patch

Attachment 193345 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17122574

New failing tests:
accessibility/insert-selected-option-into-select-causes-crash.html
accessibility/canvas-accessibilitynodeobject.html
http/tests/navigation/post-goback2.html
http/tests/cache/subresource-failover-to-network.html
fast/css/font-family-pictograph.html
fast/dom/option-properties.html
http/tests/navigation/success200-loadsame.html
http/tests/navigation/relativeanchor-goback.html
http/tests/navigation/success200-reload.html
http/tests/navigation/timerredirect-goback.html
http/tests/navigation/restore-form-state-https.html
accessibility/duplicate-axrenderobject-crash.html
accessibility/aria-hidden-hides-all-elements.html
http/tests/navigation/metaredirect-goback.html
accessibility/menu-list-sends-change-notification.html
http/tests/navigation/postredirect-frames.html
http/tests/navigation/success200-goback.html
http/tests/navigation/postredirect-goback1.html
http/tests/inspector/console-cd-completions.html
http/tests/navigation/javascriptlink-goback.html
http/tests/navigation/success200-frames-loadsame.html
http/tests/navigation/postredirect-goback2.html
http/tests/navigation/redirect302-goback.html
fast/dom/HTMLSelectElement/selected-false.html
http/tests/inspector/console-cd.html
http/tests/navigation/postredirect-basic.html
fast/dom/HTMLSelectElement/select-selectedIndex-bug-12942.html
http/tests/navigation/anchor-goback.html
fast/dom/HTMLSelectElement/selected-index-preserved-when-option-text-changes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856373</commentid>
    <comment_count>9</comment_count>
      <attachid>193345</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-15 16:04:20 -0700</bug_when>
    <thetext>Comment on attachment 193345
patch

Attachment 193345 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17215271

New failing tests:
accessibility/insert-selected-option-into-select-causes-crash.html
platform/mac/accessibility/popup-button-exposes-axvalue.html
accessibility/aria-hidden-hides-all-elements.html
accessibility/canvas-accessibilitynodeobject.html
platform/mac/accessibility/role-subrole-roledescription.html
accessibility/duplicate-axrenderobject-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856377</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-15 16:09:07 -0700</bug_when>
    <thetext>It seems like a whole bunch of accessibility tests are failing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856428</commentid>
    <comment_count>11</comment_count>
      <attachid>193404</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-15 17:30:07 -0700</bug_when>
    <thetext>Created attachment 193404
patch

forgot to set the parent early like Dominic suggested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856529</commentid>
    <comment_count>12</comment_count>
      <attachid>193404</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-16 00:43:07 -0700</bug_when>
    <thetext>Comment on attachment 193404
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1870
&gt; +bool AccessibilityObject::accessibilityIsIgnoredDefaultForObject() const

I would call this accessibilityIsIgnoredByDefault(). In particular, ForObject doesn&apos;t seem to add any value.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1878
&gt; +    AccessibilityObjectInclusion decision = accessibilityIsIgnoredBase();
&gt; +    if (decision == IncludeObject)
&gt; +        return false;
&gt; +    if (decision == IgnoreObject)
&gt; +        return true;
&gt; +    
&gt; +    return false;

It seems like we can replace all of this by:
return accessibilityIsIgnoredBase() == IgnoreObject.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1886
&gt; +    // aria-hidden hides this object and any children.

I think this comment is more confusing than helpful. Remove?

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1895
&gt; +AccessibilityObjectInclusion AccessibilityObject::accessibilityIsIgnoredBase() const

I don&apos;t think Base is a descriptive adjective here. It&apos;s also misleading to call this function accessibilityIsIgnoredBase given it returns AccessibilityObjectInclusion.
How about something like defaultObjectInclusion() ?

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1897
&gt; +    // Anything marked as aria-hidden or a child of something aria-hidden must be hidden.

This comment repeats the code. Please remove it.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1901
&gt; +    // Anything that is a presentational role must be hidden.

Ditto.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1912
&gt; +    // Allow the platform to make a decision.
&gt; +    AccessibilityObjectInclusion decision = accessibilityPlatformIncludesObject();
&gt; +    if (decision == IncludeObject)
&gt; +        return IncludeObject;
&gt; +    if (decision == IgnoreObject)
&gt; +        return IgnoreObject;
&gt; +    
&gt; +    return DefaultBehavior;   

Why don&apos;t we just do return accessibilityPlatformIncludesObject() instead?

&gt; LayoutTests/accessibility/aria-hidden-hides-all-elements.html:15
&gt; +
&gt; +&lt;div id=&quot;content&quot; role=&quot;group&quot;&gt;
&gt; +
&gt; +&lt;main id=&quot;main&quot; aria-hidden=&quot;true&quot;&gt;
&gt; +
&gt; +&lt;video controls=&quot;controls&quot;&gt;&lt;/video&gt;
&gt; +
&gt; +&lt;select id=&quot;select&quot;&gt;&lt;option&gt;a&lt;/select&gt;
&gt; +

So many blank lines!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856531</commentid>
    <comment_count>13</comment_count>
      <attachid>193425</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-03-16 01:03:54 -0700</bug_when>
    <thetext>Created attachment 193425
patch

patch to address ryosuke&apos;s comments

Thanks for the feedback. All good ideas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856533</commentid>
    <comment_count>14</comment_count>
      <attachid>193425</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-16 01:11:19 -0700</bug_when>
    <thetext>Comment on attachment 193425
patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1898
&gt; +    

OMG, all three functions look so much simpler now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856548</commentid>
    <comment_count>15</comment_count>
      <attachid>193425</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-16 01:54:10 -0700</bug_when>
    <thetext>Comment on attachment 193425
patch

Clearing flags on attachment: 193425

Committed r145988: &lt;http://trac.webkit.org/changeset/145988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856549</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-16 01:54:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193166</attachid>
            <date>2013-03-14 11:49:48 -0700</date>
            <delta_ts>2013-03-15 11:58:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>24714</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTgzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAzLTE0ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGFyaWEtaGlkZGVu
IG9uIGNvbnRhaW5lciBkb2VzIG5vdCBoaWRlIGRlc2NlbmRhbnQgcG9wdXAgYnV0dG9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIGEg
bnVtYmVyIG9mIHN1YmNsYXNzIEFYIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpCisgICAgICAgIHRvIGFsd2F5cyByZXR1cm4gZmFsc2UuIFRoaXMgbWVhbnMg
dGhhdCBldmVuIGlmIHRoZWlyIHBhcmVudCBpcyBhcmlhLWhpZGRlbj10cnVlCisgICAgICAgIHRo
ZXkgc3RpbGwgc2hvdyB1cCBpbiB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHJlLW9yZ2FuaXpl
cyB0aGlzIGJhc2UgY2FzZSBvZiBhcmlhLWhpZGRlbiBpbnRvIEFjY2Vzc2liaWxpdHlPYmplY3Qg
c28gdGhhdAorICAgICAgICBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGVzZSBzcGVjaWFsIHN1YmNs
YXNzZXMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjppc0ltYWdlTWFwTGluayk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eUxpc3RCb3gpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Q29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojpyb2xlVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlTbGlkZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpyb2xlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25Q
YXJ0KToKKwogMjAxMy0wMy0xNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIHNpbXVsYXRlQXVkaW9JbnRlcnJ1cHRp
b24gbmVlZHMgdG8gYmUgZ3VhcmRlZCBieSBFTkFCTEUoVklERU8pIgpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmgJKHJldmlzaW9uIDE0NTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2
IEBACiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4mKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDEzICs1NSw3IEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVz
aW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVj
aXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChk
ZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRG
b3JPYmplY3QoKTsKIH0KICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzVW5vcmRlcmVk
TGlzdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MiwxNyArMTUyLDYgQEAKICAgICByZXR1cm4gbGlzdEJveE9iamVjdDsKIH0K
ICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKLXsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lz
aW9uID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0g
SW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9
PSBJZ25vcmVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVs
ZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
CiAgICAgLy8gdGhlIGludGVybmFsIEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVy
bmluZyBhIGxpc3Rib3ggb3B0aW9uIGF0IGEgcG9pbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHJldmlzaW9uIDE0
NTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RC
b3guaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQAogCiBwcml2YXRlOiAgICAKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChI
VE1MRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxl
bWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiB9OwogICAg
IApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAJKHJldmlzaW9uIDE0NTE4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsOCArMTI0LDggQEAKIHsKICAgICBpZiAoIW1fb3B0aW9uRWxl
bWVudCkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQorCisgICAgaWYgKGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIHJldHVybiBwYXJlbnRPYmplY3QoKS0+YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAJKHJldmlzaW9uIDE0NTE4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICBpZiAoIW1fcmVuZGVy
ZXIgfHwgIW1fcmVuZGVyZXItPnN0eWxlKCkgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUgfHwgY29udHJvbFR5cGUoKSA9PSBNZWRpYVRpbWVsaW5lQ29udGFp
bmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KIAogQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6cm9sZVZhbHVlKCkgY29uc3QK
QEAgLTI1Niw2ICsyNTYsMTAgQEAKICAgICByZXR1cm4gYXVkaW9FbGVtZW50OwogfQogCitib29s
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRE
ZWZhdWx0Rm9yT2JqZWN0KCk7Cit9CiAKIC8vCiAvLyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGlu
ZQpAQCAtMzA1LDcgKzMwOSwxMCBAQAogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJl
ci0+c3R5bGUoKSB8fCBtX3JlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJM
RSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gIW1fcmVuZGVyZXItPnN0eWxl
KCktPndpZHRoKCkudmFsdWUoKTsKKyAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCktPndpZHRo
KCkudmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7CiB9CiAKIFN0cmluZyBBY2Nlc3Np
YmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZWRpYUNvbnRyb2xzLmgJKHJldmlzaW9uIDE0NTE4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAkod29ya2luZyBj
b3B5KQpAQCAtOTAsNyArOTAsNyBAQAogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzQ29udGFpbmVyKFJlbmRlck9iamVjdCopOwogICAgIGJvb2wgY29udHJvbGxpbmdWaWRl
b0VsZW1lbnQoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcgZWxlbWVudFR5cGVOYW1lKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdDsKIH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCShyZXZpc2lvbiAxNDUx
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw2IEBACiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFBvcFVwQnV0dG9uUm9sZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51
TGlzdE9wdGlvbi5jcHAJKHJldmlzaW9uIDE0NTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTgsNyArOTgsNyBAQAogCiBib29sIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewotICAgIHJldHVybiBhY2Nlc3Np
YmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpICE9IEluY2x1ZGVPYmplY3Q7CisgICAgcmV0
dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7CiB9CiAKIExheW91
dFJlY3QgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjplbGVtZW50UmVjdCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBv
cHVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdFBvcHVwLmNwcAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewotICAgIHJldHVy
biBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpICE9IEluY2x1ZGVPYmplY3Q7
CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7CiB9
CiAKIEFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbiogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXA6Om1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwCShyZXZpc2lvbiAxNDUxODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNCArMzcsOSBAQAogewogfQogICAgIAorYm9vbCBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRGVmYXVsdEZvck9iamVjdCgpOwogfQor
ICAgIAorfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TW9ja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBACiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tP
YmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICAvLyBNdXN0IGJlIGNhbGxlZCB3
aGVuIHRoZSBwYXJlbnQgb2JqZWN0IGNsZWFycyBpdHMgY2hpbGRyZW4uCiAgICAgdmlydHVhbCB2
b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IG1fcGFyZW50ID0gMDsgfQogfTsgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDE0NTE4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NjcsNiArMTg2Nyw1MSBA
QAogICAgIHJldHVybiByb2xlID09IEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBQb3BVcEJ1dHRvblJv
bGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xlOwogfQogCitib29sIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCkgY29uc3QKK3sK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0
eUlzSWdub3JlZEJhc2UoKTsKKyAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhSXNIaWRkZW4oKSBjb25zdAoreworICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgLy8gYXJpYS1oaWRkZW4gaGlkZXMgdGhpcyBv
YmplY3QgYW5kIGFueSBjaGlsZHJlbi4KKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
amVjdCA9IHBhcmVudE9iamVjdCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2Jq
ZWN0KCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG9iamVjdC0+Z2V0QXR0cmli
dXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0
SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNl
KCkgY29uc3QKK3sKKyAgICAvLyBBbnl0aGluZyBtYXJrZWQgYXMgYXJpYS1oaWRkZW4gb3IgYSBj
aGlsZCBvZiBzb21ldGhpbmcgYXJpYS1oaWRkZW4gbXVzdCBiZSBoaWRkZW4uCisgICAgaWYgKGFy
aWFJc0hpZGRlbigpKQorICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIAorICAgIC8v
IEFueXRoaW5nIHRoYXQgaXMgYSBwcmVzZW50YXRpb25hbCByb2xlIG11c3QgYmUgaGlkZGVuLgor
ICAgIGlmIChpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkpCisgICAgICAgIHJldHVy
biBJZ25vcmVPYmplY3Q7CisgICAgCisgICAgLy8gQWxsb3cgdGhlIHBsYXRmb3JtIHRvIG1ha2Ug
YSBkZWNpc2lvbi4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0g
YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKKyAgICBpZiAoZGVjaXNpb24g
PT0gSW5jbHVkZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7CisgICAgaWYg
KGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsK
KyAgICAKKyAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOyAgIAorfQorICAgIAogYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKICAgICBB
WENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUqIGF0dHJpYnV0ZUNhY2hlID0gYXhPYmplY3RD
YWNoZSgpLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNp
b24gMTQ1MTgwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw3ICs0ODYsOSBAQAogICAgIHZpcnR1YWwg
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKLQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpIGNvbnN0OworICAgIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKSBjb25zdDsKKyAgICAK
ICAgICBpbnQgYmxvY2txdW90ZUxldmVsKCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgaGVhZGlu
Z0xldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgaW50IHRhYmxlTGV2ZWwo
KSBjb25zdCB7IHJldHVybiAwOyB9CkBAIC04NDksNiArODUxLDcgQEAKICAgICBzdGF0aWMgYm9v
bCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFj
Y2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwogICAgIHN0YXRpYyBib29sIG9iamVjdE1hdGNo
ZXNTZWFyY2hDcml0ZXJpYVdpdGhSZXN1bHRMaW1pdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNj
ZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKiwgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBidXR0b25Sb2xlVHlwZSgpIGNvbnN0Owor
ICAgIGJvb2wgYXJpYUlzSGlkZGVuKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShHVEspIHx8IChQ
TEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkpCiAgICAgYm9vbCBhbGxvd3NUZXh0
UmFuZ2VzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCShyZXZp
c2lvbiAxNDUxODApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZEJhc2UoKSA9PSBJZ25vcmVPYmplY3Q7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWREZWZhdWx0Rm9yT2JqZWN0KCk7CiB9CiAgICAgCiBmbG9hdCBBY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3I6OnZhbHVlRm9yUmFuZ2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxNDUxODApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUxLDIyICsx
MDUxLDYgQEAKICAgICByZXR1cm4gMDsgICAKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YXJpYUlzSGlkZGVuKCkgY29uc3QKLXsKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIAotICAgIC8vIGFyaWEtaGlkZGVuIGhpZGVzIHRoaXMgb2JqZWN0IGFu
ZCBhbnkgY2hpbGRyZW4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBwYXJlbnRP
YmplY3QoKTsKLSAgICB3aGlsZSAob2JqZWN0KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShvYmplY3QtPmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2Jq
ZWN0KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzQWxsb3dlZENoaWxkT2ZUcmVlKCkgY29uc3QKIHsKICAgICAvLyBE
ZXRlcm1pbmUgaWYgdGhpcyBpcyBpbiBhIHRyZWUuIElmIHNvLCB3ZSBhcHBseSBzcGVjaWFsIGJl
aGF2aW9yIHRvIG1ha2UgaXQgd29yayBsaWtlIGFuIEFYT3V0bGluZS4KQEAgLTExMDMsMjQgKzEw
ODcsOSBAQAogICAgICAgICAKICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKICAgICB9Ci0g
ICAgCi0gICAgLy8gQW55dGhpbmcgbWFya2VkIGFzIGFyaWEtaGlkZGVuIG9yIGEgY2hpbGQgb2Yg
c29tZXRoaW5nIGFyaWEtaGlkZGVuIG11c3QgYmUgaGlkZGVuLgotICAgIGlmIChhcmlhSXNIaWRk
ZW4oKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKLSAgICAKLSAgICAvLyBBbnl0aGlu
ZyB0aGF0IGlzIGEgcHJlc2VudGF0aW9uYWwgcm9sZSBtdXN0IGJlIGhpZGRlbi4KLSAgICBpZiAo
aXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpKQotICAgICAgICByZXR1cm4gSWdub3Jl
T2JqZWN0OwogCi0gICAgLy8gQWxsb3cgdGhlIHBsYXRmb3JtIHRvIG1ha2UgYSBkZWNpc2lvbi4K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9i
amVjdCkKLSAgICAgICAgcmV0dXJuIEluY2x1ZGVPYmplY3Q7Ci0gICAgaWYgKGRlY2lzaW9uID09
IElnbm9yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKLSAgICAgICAgCi0g
ICAgcmV0dXJuIERlZmF1bHRCZWhhdmlvcjsKLX0gIAorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpOworfQogCiBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QK
IHsKQEAgLTI3MzMsOCArMjcwMiwxMCBAQAogICAgICAgICAgICAgYXJlYU9iamVjdC0+c2V0SFRN
TEFyZWFFbGVtZW50KHN0YXRpY19jYXN0PEhUTUxBcmVhRWxlbWVudCo+KGN1cnJlbnQpKTsKICAg
ICAgICAgICAgIGFyZWFPYmplY3QtPnNldEhUTUxNYXBFbGVtZW50KG1hcCk7CiAgICAgICAgICAg
ICBhcmVhT2JqZWN0LT5zZXRQYXJlbnQodGhpcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IG1fY2hpbGRyZW4uYXBwZW5kKGFyZWFPYmplY3QpOworICAgICAgICAgICAgaWYgKCFhcmVhT2Jq
ZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAgICAgICAgICAgbV9jaGlsZHJl
bi5hcHBlbmQoYXJlYU9iamVjdCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
YXhPYmplY3RDYWNoZSgpLT5yZW1vdmUoYXJlYU9iamVjdC0+YXhPYmplY3RJRCgpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxNDUxODApCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQAogICAgIHZpcnR1YWwgdm9pZCBzZXRB
Y2Nlc3NpYmxlTmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICAKICAgICAvLyBQcm92aWRl
cyBjb21tb24gbG9naWMgdXNlZCBieSBhbGwgZWxlbWVudHMgd2hlbiBkZXRlcm1pbmluZyBpc0ln
bm9yZWQuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkQmFzZSgpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpIGNvbnN0OwogICAgIAogICAgIHZpcnR1
YWwgaW50IGxheW91dENvdW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgZXN0aW1hdGVk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3Q7CkBAIC0yMjgsNyArMjI4LDYgQEAKIHByaXZhdGU6CiAg
ICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKTsKLSAgICBib29sIGFyaWFJc0hpZGRlbigpIGNvbnN0OwogICAg
IGJvb2wgaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdDsKICAgICBib29sIGhhc1RleHRBbHRl
cm5hdGl2ZSgpIGNvbnN0OwogICAgIFN0cmluZyBwb3NpdGlvbmFsRGVzY3JpcHRpb25Gb3JNU0FB
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTY3JvbGxiYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDcgKzQ0LDYgQEAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0
eVNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDE3
ICsxMTMsNiBAQAogICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKG1fcmVu
ZGVyZXIpOwogfQogCi1ib29sIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKLXsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
IGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNp
b24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNp
c2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJl
dHVybiBmYWxzZTsKLX0KLSAgICAKIGZsb2F0IEFjY2Vzc2liaWxpdHlTbGlkZXI6OnZhbHVlRm9y
UmFuZ2UoKSBjb25zdAogewogICAgIHJldHVybiBlbGVtZW50KCktPnZhbHVlKCkudG9GbG9hdCgp
OwpAQCAtMTgwLDEzICsxNjksNyBAQAogCiBib29sIEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRl
c09iamVjdCgpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNsaWRlci5oCShyZXZpc2lvbiAxNDUxODApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NiBAQAogCiBwcml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlkZXJSb2xlOyB9ICAgIApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaAkocmV2aXNpb24gMTQ1MTgwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw2IEBACiAgICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKTsKIAogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3BpbkJ1dHRvblJvbGU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAg
dmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CkBAIC03Miw3ICs3MSw2IEBA
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVy
biBCdXR0b25Sb2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24qIHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1ODMyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMTQgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogYXJpYS1oaWRkZW4g
b24gY29udGFpbmVyIGRvZXMgbm90IGhpZGUgZGVzY2VuZGFudCBwb3B1cCBidXR0b25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzNzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDMtMTQgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZXhwZWN0YXRpb25zIHVwZGF0ZXMgZm9yIGEgY291cGxl
IG9mIGZhaWxpbmcgdGVzdHMuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEt
aGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgYXJpYS1oaWRkZW4gb24gYSBwYXJlbnQgbm9kZSB3
aWxsIGhpZGUgYWxsIHRoZXNlIHNwZWNpYWwgc3ViY2xhc3Mgb2JqZWN0cy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5jaGlsZHJlbkNvdW50IGlzIDAKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4t
aGlkZXMtYWxsLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHki
PgorCis8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CisKKzxtYWluIGlkPSJtYWluIiBh
cmlhLWhpZGRlbj0idHJ1ZSI+CisKKzx2aWRlbyBjb250cm9scz0iY29udHJvbHMiPjwvdmlkZW8+
CisKKzxzZWxlY3QgaWQ9InNlbGVjdCI+PG9wdGlvbj5hPC9zZWxlY3Q+CisKKzxpbnB1dCB0eXBl
PSJyYW5nZSI+CisKKzxpbnB1dCB0eXBlPSJkYXRhIj4KKworPHByb2dyZXNzPjwvcHJvZ3Jlc3M+
CisKKzx1bD48bGk+aXRlbTwvbGk+PC91bD4KKworPHNlbGVjdCBzaXplPSIxMCI+PG9wdGlvbj5h
PC9zZWxlY3Q+CisKKzxpbWcgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIHdpZHRoPSIxNDUiIGhl
aWdodD0iMTI2IiB1c2VtYXA9IiNtYXAiPgorCis8bWFwIG5hbWU9Im1hcCI+CisgIDxhcmVhIHNo
YXBlPSJyZWN0IiBjb29yZHM9IjAsMCwxMDAsMTAwIiBocmVmPSIjIiBhbHQ9ImNha2UiPgorPC9t
YXA+CisKKzwvbWFpbj4KKworPC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyBhcmlhLWhpZGRlbiBvbiBhIHBhcmVudCBub2RlIHdpbGwgaGlkZSBhbGwgdGhl
c2Ugc3BlY2lhbCBzdWJjbGFzcyBvYmplY3RzLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikgeworICAgICAgCisgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAg
ICAgIHNob3VsZEJlKCJjb250ZW50LmNoaWxkcmVuQ291bnQiLCAiMCIpOworCisgICAgICAgIC8v
IENsZWFyIHRoZSBIVE1MIGZvciBiZXR0ZXIgcmVzdWx0cy4KKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwgPSAiIjsgIAorICAgIH0KKworCis8L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="commit-queue"
          id="214616"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193345</attachid>
            <date>2013-03-15 11:58:59 -0700</date>
            <delta_ts>2013-03-15 17:30:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25262</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAzLTE1ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGFyaWEtaGlkZGVu
IG9uIGNvbnRhaW5lciBkb2VzIG5vdCBoaWRlIGRlc2NlbmRhbnQgcG9wdXAgYnV0dG9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIGEg
bnVtYmVyIG9mIHN1YmNsYXNzIEFYIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpCisgICAgICAgIHRvIGFsd2F5cyByZXR1cm4gZmFsc2UuIFRoaXMgbWVhbnMg
dGhhdCBldmVuIGlmIHRoZWlyIHBhcmVudCBpcyBhcmlhLWhpZGRlbj10cnVlCisgICAgICAgIHRo
ZXkgc3RpbGwgc2hvdyB1cCBpbiB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHJlLW9yZ2FuaXpl
cyB0aGlzIGJhc2UgY2FzZSBvZiBhcmlhLWhpZGRlbiBpbnRvIEFjY2Vzc2liaWxpdHlPYmplY3Qg
c28gdGhhdAorICAgICAgICBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGVzZSBzcGVjaWFsIHN1YmNs
YXNzZXMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjppc0ltYWdlTWFwTGluayk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eUxpc3RCb3gpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Q29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojpyb2xlVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlTbGlkZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpyb2xlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25Q
YXJ0KToKKwogMjAxMy0wMy0xNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTmV0d29ya10gUmVmaW5lIEpTRG9jcyBp
biBOZXR3b3JrUmVxdWVzdC5qcwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHJldmlzaW9uIDE0NTky
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBACiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNw
cAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSw3IEBACiAKIGJv
b2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNz
aWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzVW5vcmRlcmVkTGlzdCgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxNyArMTUy
LDYgQEAKICAgICByZXR1cm4gbGlzdEJveE9iamVjdDsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKLXsKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eUlz
SWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGludGVybmFs
IEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3ggb3B0aW9u
IGF0IGEgcG9pbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsNiBAQAogCiBwcml2YXRlOiAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbi5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
OCArMTI0LDggQEAKIHsKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlh
X2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQorCisgICAgaWYgKGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRE
ZWZhdWx0Rm9yT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVy
biBwYXJlbnRPYmplY3QoKS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVk
aWFDb250cm9scy5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsNyArMTc4LDcgQEAKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPnN0
eWxlKCkgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwg
Y29udHJvbFR5cGUoKSA9PSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbDo6cm9sZVZhbHVlKCkgY29uc3QKQEAgLTI1Niw2ICsyNTYsMTAgQEAK
ICAgICByZXR1cm4gYXVkaW9FbGVtZW50OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzQ29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7Cit9
CiAKIC8vCiAvLyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZQpAQCAtMzA1LDcgKzMwOSwxMCBA
QAogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+c3R5bGUoKSB8fCBtX3JlbmRl
cmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gIW1fcmVuZGVyZXItPnN0eWxlKCktPndpZHRoKCkudmFsdWUoKTsK
KyAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCktPndpZHRoKCkudmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZh
dWx0Rm9yT2JqZWN0KCk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxh
eTo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBA
QAogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKFJlbmRl
ck9iamVjdCopOwogICAgIGJvb2wgY29udHJvbGxpbmdWaWRlb0VsZW1lbnQoKSBjb25zdDsKICAg
ICBjb25zdCBTdHJpbmcgZWxlbWVudFR5cGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsK
IH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Miw3ICs2Miw3IEBACiAgICAgaWYgKCFsaXN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKSA9PSBJ
Z25vcmVPYmplY3QpIHsKKyAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKSB7
CiAgICAgICAgIGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNiBAQAogCiAgICAgdmlydHVhbCBib29sIGlzTWVudUxpc3QoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBQb3BVcEJ1dHRvblJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0OwogCiAgICAgdmly
dHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCShy
ZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdE9wdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPYmplY3QoKSAhPSBJbmNsdWRlT2JqZWN0OworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkRGVmYXVsdEZvck9iamVjdCgpOwogfQogCiBMYXlvdXRSZWN0IEFjY2Vzc2liaWxp
dHlNZW51TGlzdE9wdGlvbjo6ZWxlbWVudFJlY3QoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQ
b3B1cC5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3
ICs2NCw3IEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA6OmNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWNjZXNzaWJpbGl0eVBs
YXRmb3JtSW5jbHVkZXNPYmplY3QoKSAhPSBJbmNsdWRlT2JqZWN0OworICAgIHJldHVybiBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkRGVmYXVsdEZvck9iamVjdCgpOwogfQogCiBBY2Nlc3NpYmlsaXR5
TWVudUxpc3RPcHRpb24qIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlv
bkFjY2Vzc2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDQgKzM3LDkgQEAKIHsKIH0KICAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWNjZXNz
aWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KKyAgICAKK30KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
NyBAQAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2NrT2JqZWN0KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3Q7CiAgICAgLy8gTXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgcGFyZW50IG9i
amVjdCBjbGVhcnMgaXRzIGNoaWxkcmVuLgogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tUGFy
ZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KIH07IApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAxNDU5
MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODY3LDYgKzE4NjcsNTEgQEAKICAgICByZXR1cm4gcm9s
ZSA9PSBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gUG9wVXBCdXR0b25Sb2xlIHx8IHJvbGUgPT0gVG9n
Z2xlQnV0dG9uUm9sZTsKIH0KIAorYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmls
aXR5SXNJZ25vcmVkRGVmYXVsdEZvck9iamVjdCgpIGNvbnN0Cit7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7
CisgICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVj
dDo6YXJpYUlzSGlkZGVuKCkgY29uc3QKK3sKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0
QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAorICAgIC8vIGFyaWEtaGlkZGVuIGhpZGVzIHRoaXMgb2JqZWN0IGFuZCBhbnkgY2hp
bGRyZW4uCisgICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBwYXJlbnRPYmpl
Y3QoKTsgb2JqZWN0OyBvYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShvYmplY3QtPmdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0
dHIpLCAidHJ1ZSIpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAg
IHJldHVybiBmYWxzZTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpIGNvbnN0Cit7CisgICAg
Ly8gQW55dGhpbmcgbWFya2VkIGFzIGFyaWEtaGlkZGVuIG9yIGEgY2hpbGQgb2Ygc29tZXRoaW5n
IGFyaWEtaGlkZGVuIG11c3QgYmUgaGlkZGVuLgorICAgIGlmIChhcmlhSXNIaWRkZW4oKSkKKyAg
ICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAKKyAgICAvLyBBbnl0aGluZyB0aGF0IGlz
IGEgcHJlc2VudGF0aW9uYWwgcm9sZSBtdXN0IGJlIGhpZGRlbi4KKyAgICBpZiAoaXNQcmVzZW50
YXRpb25hbENoaWxkT2ZBcmlhUm9sZSgpKQorICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0Owor
ICAgIAorICAgIC8vIEFsbG93IHRoZSBwbGF0Zm9ybSB0byBtYWtlIGEgZGVjaXNpb24uCisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlQbGF0
Zm9ybUluY2x1ZGVzT2JqZWN0KCk7CisgICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3Qp
CisgICAgICAgIHJldHVybiBJbmNsdWRlT2JqZWN0OworICAgIGlmIChkZWNpc2lvbiA9PSBJZ25v
cmVPYmplY3QpCisgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgCisgICAgcmV0dXJu
IERlZmF1bHRCZWhhdmlvcjsgICAKK30KKyAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7CiAgICAgQVhDb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlKiBhdHRyaWJ1dGVDYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKS0+Y29tcHV0ZWRP
YmplY3RBdHRyaWJ1dGVDYWNoZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00ODYsNyArNDg2LDkgQEAKICAgICB2aXJ0dWFsIE5vZGUqIG5vZGUoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29u
c3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
KCkgY29uc3Q7Ci0KKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKSBjb25zdDsKKyAgICBib29sIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCkgY29uc3Q7CisgICAgCiAgICAgaW50IGJsb2NrcXVv
dGVMZXZlbCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgpIGNvbnN0IHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3QgeyByZXR1cm4g
MDsgfQpAQCAtODQ5LDYgKzg1MSw3IEBACiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5
VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNo
Q3JpdGVyaWEqKTsKICAgICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNoQ3JpdGVyaWFX
aXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hD
cml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVJvbGUgYnV0dG9uUm9sZVR5cGUoKSBjb25zdDsKKyAgICBib29sIGFyaWFJc0hp
ZGRlbigpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBI
QVZFKEFDQ0VTU0lCSUxJVFkpKQogICAgIGJvb2wgYWxsb3dzVGV4dFJhbmdlcygpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIGJvb2wgQWNjZXNzaWJp
bGl0eVByb2dyZXNzSW5kaWNhdG9yOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkgPT0gSWdub3Jl
T2JqZWN0OworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRGVmYXVsdEZvck9iamVj
dCgpOwogfQogICAgIAogZmxvYXQgQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yOjp2YWx1
ZUZvclJhbmdlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1
OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1MSwyMiArMTA1MSw2IEBACiAgICAgcmV0
dXJuIDA7ICAgCiB9CiAgICAgCi1ib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFJ
c0hpZGRlbigpIGNvbnN0Ci17Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0
ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAK
LSAgICAvLyBhcmlhLWhpZGRlbiBoaWRlcyB0aGlzIG9iamVjdCBhbmQgYW55IGNoaWxkcmVuCi0g
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gcGFyZW50T2JqZWN0KCk7Ci0gICAgd2hp
bGUgKG9iamVjdCkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uob2JqZWN0LT5nZXRB
dHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudE9iamVjdCgpOwotICAgIH0KLQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0CiB7CiAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMg
aXMgaW4gYSB0cmVlLiBJZiBzbywgd2UgYXBwbHkgc3BlY2lhbCBiZWhhdmlvciB0byBtYWtlIGl0
IHdvcmsgbGlrZSBhbiBBWE91dGxpbmUuCkBAIC0xMTAzLDI0ICsxMDg3LDkgQEAKICAgICAgICAg
CiAgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CiAgICAgfQotICAgIAotICAgIC8vIEFueXRo
aW5nIG1hcmtlZCBhcyBhcmlhLWhpZGRlbiBvciBhIGNoaWxkIG9mIHNvbWV0aGluZyBhcmlhLWhp
ZGRlbiBtdXN0IGJlIGhpZGRlbi4KLSAgICBpZiAoYXJpYUlzSGlkZGVuKCkpCi0gICAgICAgIHJl
dHVybiBJZ25vcmVPYmplY3Q7Ci0gICAgCi0gICAgLy8gQW55dGhpbmcgdGhhdCBpcyBhIHByZXNl
bnRhdGlvbmFsIHJvbGUgbXVzdCBiZSBoaWRkZW4uCi0gICAgaWYgKGlzUHJlc2VudGF0aW9uYWxD
aGlsZE9mQXJpYVJvbGUoKSkKLSAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKIAotICAgIC8v
IEFsbG93IHRoZSBwbGF0Zm9ybSB0byBtYWtlIGEgZGVjaXNpb24uCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVz
T2JqZWN0KCk7Ci0gICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCi0gICAgICAgIHJl
dHVybiBJbmNsdWRlT2JqZWN0OwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0g
ICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7Ci0gICAgICAgIAotICAgIHJldHVybiBEZWZhdWx0
QmVoYXZpb3I7Ci19ICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJhc2UoKTsKK30KIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7CkBAIC0yNzMzLDggKzI3
MDIsMTAgQEAKICAgICAgICAgICAgIGFyZWFPYmplY3QtPnNldEhUTUxBcmVhRWxlbWVudChzdGF0
aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihjdXJyZW50KSk7CiAgICAgICAgICAgICBhcmVhT2Jq
ZWN0LT5zZXRIVE1MTWFwRWxlbWVudChtYXApOwogICAgICAgICAgICAgYXJlYU9iamVjdC0+c2V0
UGFyZW50KHRoaXMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChhcmVhT2JqZWN0KTsKKyAgICAgICAgICAgIGlmICghYXJlYU9iamVjdC0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQorICAgICAgICAgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKGFyZWFPYmpl
Y3QpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+
cmVtb3ZlKGFyZWFPYmplY3QtPmF4T2JqZWN0SUQoKSk7CiAgICAgICAgIH0KICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDcgKzkzLDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAgICAgCiAgICAgLy8gUHJvdmlkZXMgY29tbW9uIGxvZ2ljIHVz
ZWQgYnkgYWxsIGVsZW1lbnRzIHdoZW4gZGV0ZXJtaW5pbmcgaXNJZ25vcmVkLgotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJhc2UoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gYWNjZXNzaWJpbGl0
eUlzSWdub3JlZEJhc2UoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGludCBsYXlvdXRDb3Vu
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0OwpAQCAtMjI4LDcgKzIyOCw2IEBACiBwcml2YXRlOgogICAgIHZvaWQgYXJpYUxpc3Ri
b3hTZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZv
aWQgYXJpYUxpc3Rib3hWaXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7Ci0gICAgYm9vbCBhcmlhSXNIaWRkZW4oKSBjb25zdDsKICAgICBib29sIGlzQWxsb3dlZENo
aWxkT2ZUcmVlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNUZXh0QWx0ZXJuYXRpdmUoKSBjb25zdDsK
ICAgICBTdHJpbmcgcG9zaXRpb25hbERlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Ny
b2xsYmFyLmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2
IEBACiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIoU2Nyb2xs
YmFyKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHJl
dmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNsaWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNyArMTEzLDYgQEAKICAgICBy
ZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX3JlbmRlcmVyKTsKIH0KIAotYm9v
bCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0Ci17Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7Ci0gICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0g
ICAgCiBmbG9hdCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjp2YWx1ZUZvclJhbmdlKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZWxlbWVudCgpLT52YWx1ZSgpLnRvRmxvYXQoKTsKQEAgLTE4MCwxMyArMTY5
LDcgQEAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9u
IGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QoKTsKLSAgICBp
ZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRGVmYXVs
dEZvck9iamVjdCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkocmV2
aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDYgQEAKIAogcHJpdmF0ZToK
ICAgICBIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gU2xpZGVyUm9sZTsgfSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgJKHJldmlz
aW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNwaW5CdXR0b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQAogICAgIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uKCk7CiAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJv
bGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNwaW5CdXR0b25Sb2xlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0OwpAQCAtNzIsNyArNzEsNiBAQAogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gQnV0dG9uUm9sZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b25QYXJ0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwogICAgIAogaW5saW5lIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKiB0b0FjY2Vz
c2liaWxpdHlTcGluQnV0dG9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE0NTkyNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTE1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGFyaWEtaGlkZGVuIG9uIGNvbnRhaW5lciBkb2Vz
IG5vdCBoaWRlIGRlc2NlbmRhbnQgcG9wdXAgYnV0dG9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhp
ZGVzLWFsbC1lbGVtZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAzLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1hcmtpbmcgc3B1dG5pay9Db25mb3JtYW5jZS8xMF9FeGVjdXRpb25fQ29udGV4dHMvMTAuMV9E
ZWZpbml0aW9ucy8xMC4xLjhfQXJndW1lbnRzX09iamVjdC9TMTAuMS44X0EzX1QyLmh0bWwKSW5k
ZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVt
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorVGhpcyB0
ZXN0cyBhcmlhLWhpZGRlbiBvbiBhIHBhcmVudCBub2RlIHdpbGwgaGlkZSBhbGwgdGhlc2Ugc3Bl
Y2lhbCBzdWJjbGFzcyBvYmplY3RzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBjb250ZW50LmNoaWxkcmVuQ291bnQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4t
aGlkZXMtYWxsLWVsZW1lbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRlbnQi
IHJvbGU9Imdyb3VwIj4KKworPG1haW4gaWQ9Im1haW4iIGFyaWEtaGlkZGVuPSJ0cnVlIj4KKwor
PHZpZGVvIGNvbnRyb2xzPSJjb250cm9scyI+PC92aWRlbz4KKworPHNlbGVjdCBpZD0ic2VsZWN0
Ij48b3B0aW9uPmE8L3NlbGVjdD4KKworPGlucHV0IHR5cGU9InJhbmdlIj4KKworPGlucHV0IHR5
cGU9ImRhdGEiPgorCis8cHJvZ3Jlc3M+PC9wcm9ncmVzcz4KKworPHVsPjxsaT5pdGVtPC9saT48
L3VsPgorCis8c2VsZWN0IHNpemU9IjEwIj48b3B0aW9uPmE8L3NlbGVjdD4KKworPGltZyBzcmM9
InJlc291cmNlcy9jYWtlLnBuZyIgd2lkdGg9IjE0NSIgaGVpZ2h0PSIxMjYiIHVzZW1hcD0iI21h
cCI+CisKKzxtYXAgbmFtZT0ibWFwIj4KKyAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCww
LDEwMCwxMDAiIGhyZWY9IiMiIGFsdD0iY2FrZSI+Cis8L21hcD4KKworPC9tYWluPgorCis8L2Rp
dj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGFyaWEtaGlkZGVu
IG9uIGEgcGFyZW50IG5vZGUgd2lsbCBoaWRlIGFsbCB0aGVzZSBzcGVjaWFsIHN1YmNsYXNzIG9i
amVjdHMuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgc2hvdWxkQmUoImNvbnRlbnQu
Y2hpbGRyZW5Db3VudCIsICIwIik7CisKKyAgICAgICAgLy8gQ2xlYXIgdGhlIEhUTUwgZm9yIGJl
dHRlciByZXN1bHRzLgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
LmlubmVySFRNTCA9ICIiOyAgCisgICAgfQorCisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0i
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwo=
</data>
<flag name="commit-queue"
          id="214885"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193404</attachid>
            <date>2013-03-15 17:30:07 -0700</date>
            <delta_ts>2013-03-16 01:03:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25458</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAzLTE1ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGFyaWEtaGlkZGVu
IG9uIGNvbnRhaW5lciBkb2VzIG5vdCBoaWRlIGRlc2NlbmRhbnQgcG9wdXAgYnV0dG9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIGEg
bnVtYmVyIG9mIHN1YmNsYXNzIEFYIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpCisgICAgICAgIHRvIGFsd2F5cyByZXR1cm4gZmFsc2UuIFRoaXMgbWVhbnMg
dGhhdCBldmVuIGlmIHRoZWlyIHBhcmVudCBpcyBhcmlhLWhpZGRlbj10cnVlCisgICAgICAgIHRo
ZXkgc3RpbGwgc2hvdyB1cCBpbiB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHJlLW9yZ2FuaXpl
cyB0aGlzIGJhc2UgY2FzZSBvZiBhcmlhLWhpZGRlbiBpbnRvIEFjY2Vzc2liaWxpdHlPYmplY3Qg
c28gdGhhdAorICAgICAgICBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGVzZSBzcGVjaWFsIHN1YmNs
YXNzZXMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjppc0ltYWdlTWFwTGluayk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eUxpc3RCb3gpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Q29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojpyb2xlVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlTbGlkZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpyb2xlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25Q
YXJ0KToKKwogMjAxMy0wMy0xNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTmV0d29ya10gUmVmaW5lIEpTRG9jcyBp
biBOZXR3b3JrUmVxdWVzdC5qcwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHJldmlzaW9uIDE0NTky
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBACiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNw
cAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSw3IEBACiAKIGJv
b2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNz
aWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KICAgICAK
IGJvb2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmlzVW5vcmRlcmVkTGlzdCgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxNyArMTUy
LDYgQEAKICAgICByZXR1cm4gbGlzdEJveE9iamVjdDsKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJp
bGl0eUxpc3RCb3g6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKLXsKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eUlz
SWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQogQWNjZXNzaWJp
bGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eUxpc3RCb3g6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0
VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gdGhlIGludGVybmFs
IEhUTUxTZWxlY3RFbGVtZW50IG1ldGhvZHMgZm9yIHJldHVybmluZyBhIGxpc3Rib3ggb3B0aW9u
IGF0IGEgcG9pbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUxpc3RCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsNiBAQAogCiBwcml2YXRlOiAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBsaXN0Qm94T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbi5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQs
OCArMTI0LDggQEAKIHsKICAgICBpZiAoIW1fb3B0aW9uRWxlbWVudCkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlh
X2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQorCisgICAgaWYgKGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRE
ZWZhdWx0Rm9yT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIHJldHVy
biBwYXJlbnRPYmplY3QoKS0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVk
aWFDb250cm9scy5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsNyArMTc4LDcgQEAKICAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPnN0
eWxlKCkgfHwgbV9yZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwg
Y29udHJvbFR5cGUoKSA9PSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdu
b3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbDo6cm9sZVZhbHVlKCkgY29uc3QKQEAgLTI1Niw2ICsyNTYsMTAgQEAK
ICAgICByZXR1cm4gYXVkaW9FbGVtZW50OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzQ29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0KCk7Cit9
CiAKIC8vCiAvLyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZQpAQCAtMzA1LDcgKzMwOSwxMCBA
QAogICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+c3R5bGUoKSB8fCBtX3JlbmRl
cmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gIW1fcmVuZGVyZXItPnN0eWxlKCktPndpZHRoKCkudmFsdWUoKTsK
KyAgICBpZiAoIW1fcmVuZGVyZXItPnN0eWxlKCktPndpZHRoKCkudmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZh
dWx0Rm9yT2JqZWN0KCk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxh
eTo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
LmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBA
QAogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKFJlbmRl
ck9iamVjdCopOwogICAgIGJvb2wgY29udHJvbGxpbmdWaWRlb0VsZW1lbnQoKSBjb25zdDsKICAg
ICBjb25zdCBTdHJpbmcgZWxlbWVudFR5cGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsK
IH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TWVudUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MiwxMiArNjIsMTIgQEAKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChsaXN0LT5hY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpID09
IElnbm9yZU9iamVjdCkgeworICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
Kj4obGlzdCktPnNldFBhcmVudCh0aGlzKTsKKyAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eUlz
SWdub3JlZCgpKSB7CiAgICAgICAgIGNhY2hlLT5yZW1vdmUobGlzdC0+YXhPYmplY3RJRCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0Kj4obGlzdCktPnNldFBhcmVudCh0aGlzKTsKICAgICBtX2NoaWxkcmVuLmFwcGVu
ZChsaXN0KTsKIAogICAgIGxpc3QtPmFkZENoaWxkcmVuKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgJKHJldmlz
aW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1lbnVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDYgQEAKIAogICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVMaXN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gUG9wVXBCdXR0b25S
b2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRy
aWJ1dGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uLmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw3ICs5OCw3IEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgIT0gSW5jbHVkZU9iamVjdDsK
KyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0K
IAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246OmVsZW1lbnRSZWN0KCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCShyZXZpc2lvbiAxNDU5MjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAogCiBib29sIEFjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2JqZWN0KCkgIT0gSW5jbHVk
ZU9iamVjdDsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmpl
Y3QoKTsKIH0KIAogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uKiBBY2Nlc3NpYmlsaXR5TWVu
dUxpc3RQb3B1cDo6bWVudUxpc3RPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50
KiBlbGVtZW50KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHAJKHJldmlzaW9uIDE0NTkyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0ICszNyw5IEBACiB7CiB9CiAgICAgCitib29sIEFj
Y2Vzc2liaWxpdHlNb2NrT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2JqZWN0
KCk7CiB9CisgICAgCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29s
IGlzTW9ja09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwogICAgIC8vIE11c3QgYmUg
Y2FsbGVkIHdoZW4gdGhlIHBhcmVudCBvYmplY3QgY2xlYXJzIGl0cyBjaGlsZHJlbi4KICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIHsgbV9wYXJlbnQgPSAwOyB9CiB9OyAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2Nyw2ICsx
ODY3LDUxIEBACiAgICAgcmV0dXJuIHJvbGUgPT0gQnV0dG9uUm9sZSB8fCByb2xlID09IFBvcFVw
QnV0dG9uUm9sZSB8fCByb2xlID09IFRvZ2dsZUJ1dHRvblJvbGU7CiB9CiAKK2Jvb2wgQWNjZXNz
aWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKSBj
b25zdAoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpOworICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2Jq
ZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9i
amVjdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFJc0hpZGRlbigpIGNvbnN0Cit7CisgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1
ZSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICAvLyBhcmlhLWhpZGRlbiBoaWRl
cyB0aGlzIG9iamVjdCBhbmQgYW55IGNoaWxkcmVuLgorICAgIGZvciAoQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqZWN0ID0gcGFyZW50T2JqZWN0KCk7IG9iamVjdDsgb2JqZWN0ID0gb2JqZWN0LT5w
YXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uob2JqZWN0LT5n
ZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FjY2Vzc2liaWxp
dHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdu
b3JlZEJhc2UoKSBjb25zdAoreworICAgIC8vIEFueXRoaW5nIG1hcmtlZCBhcyBhcmlhLWhpZGRl
biBvciBhIGNoaWxkIG9mIHNvbWV0aGluZyBhcmlhLWhpZGRlbiBtdXN0IGJlIGhpZGRlbi4KKyAg
ICBpZiAoYXJpYUlzSGlkZGVuKCkpCisgICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAg
CisgICAgLy8gQW55dGhpbmcgdGhhdCBpcyBhIHByZXNlbnRhdGlvbmFsIHJvbGUgbXVzdCBiZSBo
aWRkZW4uCisgICAgaWYgKGlzUHJlc2VudGF0aW9uYWxDaGlsZE9mQXJpYVJvbGUoKSkKKyAgICAg
ICAgcmV0dXJuIElnbm9yZU9iamVjdDsKKyAgICAKKyAgICAvLyBBbGxvdyB0aGUgcGxhdGZvcm0g
dG8gbWFrZSBhIGRlY2lzaW9uLgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVj
aXNpb24gPSBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpOworICAgIGlmIChk
ZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQorICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsK
KyAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQorICAgICAgICByZXR1cm4gSWdub3Jl
T2JqZWN0OworICAgIAorICAgIHJldHVybiBEZWZhdWx0QmVoYXZpb3I7ICAgCit9CisgICAgCiBi
b29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAog
ewogICAgIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSogYXR0cmlidXRlQ2FjaGUgPSBh
eE9iamVjdENhY2hlKCktPmNvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDg2LDcgKzQ4Niw5IEBACiAgICAg
dmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJv
b2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0OwotCisgICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkgY29uc3Q7
CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkRGVmYXVsdEZvck9iamVjdCgpIGNvbnN0
OworICAgIAogICAgIGludCBibG9ja3F1b3RlTGV2ZWwoKSBjb25zdDsKICAgICB2aXJ0dWFsIGlu
dCBoZWFkaW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBpbnQgdGFi
bGVMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KQEAgLTg0OSw2ICs4NTEsNyBAQAogICAgIHN0
YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhKik7CiAgICAgc3RhdGljIGJvb2wgb2Jq
ZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KEFjY2Vzc2liaWxpdHlPYmpl
Y3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqLCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKTsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGJ1dHRvblJvbGVUeXBlKCkg
Y29uc3Q7CisgICAgYm9vbCBhcmlhSXNIaWRkZW4oKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKEdU
SykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkKICAgICBib29sIGFs
bG93c1RleHRSYW5nZXMoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5j
cHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNyBAQAogCiBib29sIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6Y29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewotICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkQmFzZSgpID09IElnbm9yZU9iamVjdDsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0
eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KICAgICAKIGZsb2F0IEFjY2Vzc2liaWxp
dHlQcm9ncmVzc0luZGljYXRvcjo6dmFsdWVGb3JSYW5nZSgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NTEsMjIgKzEwNTEsNiBAQAogICAgIHJldHVybiAwOyAgIAogfQogICAgIAotYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhSXNIaWRkZW4oKSBjb25zdAotewotICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJpYV9oaWRkZW5BdHRyKSwgInRydWUiKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gYXJpYS1oaWRkZW4gaGlkZXMgdGhpcyBv
YmplY3QgYW5kIGFueSBjaGlsZHJlbgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9
IHBhcmVudE9iamVjdCgpOwotICAgIHdoaWxlIChvYmplY3QpIHsKLSAgICAgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKG9iamVjdC0+Z2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVl
IikpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5w
YXJlbnRPYmplY3QoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdAogewog
ICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGluIGEgdHJlZS4gSWYgc28sIHdlIGFwcGx5IHNw
ZWNpYWwgYmVoYXZpb3IgdG8gbWFrZSBpdCB3b3JrIGxpa2UgYW4gQVhPdXRsaW5lLgpAQCAtMTEw
MywyNCArMTA4Nyw5IEBACiAgICAgICAgIAogICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0Owog
ICAgIH0KLSAgICAKLSAgICAvLyBBbnl0aGluZyBtYXJrZWQgYXMgYXJpYS1oaWRkZW4gb3IgYSBj
aGlsZCBvZiBzb21ldGhpbmcgYXJpYS1oaWRkZW4gbXVzdCBiZSBoaWRkZW4uCi0gICAgaWYgKGFy
aWFJc0hpZGRlbigpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OwotICAgIAotICAgIC8v
IEFueXRoaW5nIHRoYXQgaXMgYSBwcmVzZW50YXRpb25hbCByb2xlIG11c3QgYmUgaGlkZGVuLgot
ICAgIGlmIChpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkpCi0gICAgICAgIHJldHVy
biBJZ25vcmVPYmplY3Q7CiAKLSAgICAvLyBBbGxvdyB0aGUgcGxhdGZvcm0gdG8gbWFrZSBhIGRl
Y2lzaW9uLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nl
c3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJ
bmNsdWRlT2JqZWN0KQotICAgICAgICByZXR1cm4gSW5jbHVkZU9iamVjdDsKLSAgICBpZiAoZGVj
aXNpb24gPT0gSWdub3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OwotICAg
ICAgICAKLSAgICByZXR1cm4gRGVmYXVsdEJlaGF2aW9yOwotfSAgCisgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7Cit9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdAogewpAQCAtMjczMyw4ICsyNzAyLDEwIEBACiAgICAgICAgICAgICBhcmVhT2JqZWN0
LT5zZXRIVE1MQXJlYUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oY3VycmVu
dCkpOwogICAgICAgICAgICAgYXJlYU9iamVjdC0+c2V0SFRNTE1hcEVsZW1lbnQobWFwKTsKICAg
ICAgICAgICAgIGFyZWFPYmplY3QtPnNldFBhcmVudCh0aGlzKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoYXJlYU9iamVjdCk7CisgICAgICAgICAgICBpZiAo
IWFyZWFPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAgICBt
X2NoaWxkcmVuLmFwcGVuZChhcmVhT2JqZWN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBheE9iamVjdENhY2hlKCktPnJlbW92ZShhcmVhT2JqZWN0LT5heE9iamVjdElEKCkp
OwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDE0
NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIAogICAgIC8v
IFByb3ZpZGVzIGNvbW1vbiBsb2dpYyB1c2VkIGJ5IGFsbCBlbGVtZW50cyB3aGVuIGRldGVybWlu
aW5nIGlzSWdub3JlZC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRCYXNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkgY29uc3Q7CiAgICAgCiAg
ICAgdmlydHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBl
c3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKQEAgLTIyOCw3ICsyMjgsNiBAQAogcHJp
dmF0ZToKICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIGJvb2wgYXJpYUlzSGlkZGVuKCkgY29u
c3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRDaGlsZE9mVHJlZSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
VGV4dEFsdGVybmF0aXZlKCkgY29uc3Q7CiAgICAgU3RyaW5nIHBvc2l0aW9uYWxEZXNjcmlwdGlv
bkZvck1TQUEoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5U2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCi0gICAgdmlydHVhbCBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2xpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwCShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsMTcgKzExMyw2IEBACiAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVh
dGUobV9yZW5kZXJlcik7CiB9CiAKLWJvb2wgQWNjZXNzaWJpbGl0eVNsaWRlcjo6Y29tcHV0ZUFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAotewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJ
bmNsdXNpb24gZGVjaXNpb24gPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQmFzZSgpOwotICAgIGlm
IChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotICAgIAogZmxvYXQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6
dmFsdWVGb3JSYW5nZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKS50
b0Zsb2F0KCk7CkBAIC0xODAsMTMgKzE2OSw3IEBACiAKIGJvb2wgQWNjZXNzaWJpbGl0eVNsaWRl
clRodW1iOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlQbGF0Zm9y
bUluY2x1ZGVzT2JqZWN0KCk7Ci0gICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmplY3QpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2JqZWN0KQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gYWNj
ZXNzaWJpbGl0eUlzSWdub3JlZERlZmF1bHRGb3JPYmplY3QoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw2IEBACiAKIHByaXZhdGU6CiAgICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2li
aWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNsaWRlclJvbGU7IH0gICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0
dG9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDYgQEAKICAgICBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOwogCiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBTcGluQnV0
dG9uUm9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4o
KTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdDsKQEAgLTcyLDcg
KzcxLDYgQEAKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIEJ1dHRvblJvbGU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFy
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVu
dFJlY3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKICAgICAKIGlubGluZSBBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbiogdG9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbihBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDU5MjcpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0xNSAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBhcmlh
LWhpZGRlbiBvbiBjb250YWluZXIgZG9lcyBub3QgaGlkZSBkZXNjZW5kYW50IHBvcHVwIGJ1dHRv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjM3
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVt
ZW50cy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJraW5nIHNwdXRuaWsvQ29uZm9ybWFuY2UvMTBf
RXhlY3V0aW9uX0NvbnRleHRzLzEwLjFfRGVmaW5pdGlvbnMvMTAuMS44X0FyZ3VtZW50c19PYmpl
Y3QvUzEwLjEuOF9BM19UMi5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Fy
aWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgdGVzdHMgYXJpYS1oaWRkZW4gb24gYSBwYXJlbnQgbm9k
ZSB3aWxsIGhpZGUgYWxsIHRoZXNlIHNwZWNpYWwgc3ViY2xhc3Mgb2JqZWN0cy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29udGVudC5jaGlsZHJlbkNvdW50IGlzIDAK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRk
ZW4taGlkZXMtYWxsLWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLWhpZGVzLWFsbC1lbGVtZW50cy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJv
ZHkiPgorCis8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CisKKzxtYWluIGlkPSJtYWlu
IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CisKKzx2aWRlbyBjb250cm9scz0iY29udHJvbHMiPjwvdmlk
ZW8+CisKKzxzZWxlY3QgaWQ9InNlbGVjdCI+PG9wdGlvbj5hPC9zZWxlY3Q+CisKKzxpbnB1dCB0
eXBlPSJyYW5nZSI+CisKKzxpbnB1dCB0eXBlPSJkYXRhIj4KKworPHByb2dyZXNzPjwvcHJvZ3Jl
c3M+CisKKzx1bD48bGk+aXRlbTwvbGk+PC91bD4KKworPHNlbGVjdCBzaXplPSIxMCI+PG9wdGlv
bj5hPC9zZWxlY3Q+CisKKzxpbWcgc3JjPSJyZXNvdXJjZXMvY2FrZS5wbmciIHdpZHRoPSIxNDUi
IGhlaWdodD0iMTI2IiB1c2VtYXA9IiNtYXAiPgorCis8bWFwIG5hbWU9Im1hcCI+CisgIDxhcmVh
IHNoYXBlPSJyZWN0IiBjb29yZHM9IjAsMCwxMDAsMTAwIiBocmVmPSIjIiBhbHQ9ImNha2UiPgor
PC9tYXA+CisKKzwvbWFpbj4KKworPC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyBhcmlhLWhpZGRlbiBvbiBhIHBhcmVudCBub2RlIHdpbGwgaGlkZSBhbGwg
dGhlc2Ugc3BlY2lhbCBzdWJjbGFzcyBvYmplY3RzLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgCisgICAgICAgIHZhciBjb250ZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7Cisg
ICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoaWxkcmVuQ291bnQiLCAiMCIpOworCisgICAgICAg
IC8vIENsZWFyIHRoZSBIVE1MIGZvciBiZXR0ZXIgcmVzdWx0cy4KKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhUTUwgPSAiIjsgIAorICAgIH0KKworCis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193425</attachid>
            <date>2013-03-16 01:03:54 -0700</date>
            <delta_ts>2013-03-16 01:54:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27420</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEzLTAzLTE1ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGFyaWEtaGlkZGVu
IG9uIGNvbnRhaW5lciBkb2VzIG5vdCBoaWRlIGRlc2NlbmRhbnQgcG9wdXAgYnV0dG9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMzczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlcmUgYXJlIGEg
bnVtYmVyIG9mIHN1YmNsYXNzIEFYIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgYWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpCisgICAgICAgIHRvIGFsd2F5cyByZXR1cm4gZmFsc2UuIFRoaXMgbWVhbnMg
dGhhdCBldmVuIGlmIHRoZWlyIHBhcmVudCBpcyBhcmlhLWhpZGRlbj10cnVlCisgICAgICAgIHRo
ZXkgc3RpbGwgc2hvdyB1cCBpbiB0aGUgdHJlZS4KKworICAgICAgICBUaGlzIHJlLW9yZ2FuaXpl
cyB0aGlzIGJhc2UgY2FzZSBvZiBhcmlhLWhpZGRlbiBpbnRvIEFjY2Vzc2liaWxpdHlPYmplY3Qg
c28gdGhhdAorICAgICAgICBpdCBjYW4gYmUgcmUtdXNlZCBieSB0aGVzZSBzcGVjaWFsIHN1YmNs
YXNzZXMgd2hlcmUgYXBwcm9wcmlhdGUuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9h
cmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjppc0ltYWdlTWFwTGluayk6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5TGlzdDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eUxpc3RCb3gpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb246OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Q29udGFpbmVyOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29u
dHJvbHMuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0Ojpyb2xlVmFsdWUpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0UG9wdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXA6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlNb2NrT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2Nr
T2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWREZWZhdWx0Rm9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eU9iamVjdDo6YXJpYUlzSGlkZGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlPYmplY3Qp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcjo6
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmFkZEltYWdlTWFwQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmg6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlTbGlkZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uOjpyb2xlVmFsdWUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25Q
YXJ0KToKKwogMjAxMy0wMy0xNSAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTmV0d29ya10gUmVmaW5lIEpTRG9jcyBp
biBOZXR3b3JrUmVxdWVzdC5qcwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgJKHJldmlzaW9uIDE0NTky
NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluay5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBACiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNw
cAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSw3IEBACiAKIGJv
b2wgQWNjZXNzaWJpbGl0eUxpc3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29u
c3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNz
aWJpbGl0eUlzSWdub3JlZEJhc2UoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVj
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIAotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOwogfQogICAgIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5TGlzdDo6aXNVbm9yZGVyZWRMaXN0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3Bw
CShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDE3ICsxNTIsNiBAQAog
ICAgIHJldHVybiBsaXN0Qm94T2JqZWN0OwogfQogICAgIAotYm9vbCBBY2Nlc3NpYmlsaXR5TGlz
dEJveDo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAotewotICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
QmFzZSgpOwotICAgIGlmIChkZWNpc2lvbiA9PSBJbmNsdWRlT2JqZWN0KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNv
bnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICAvLyB0aGUgaW50ZXJuYWwgSFRNTFNl
bGVjdEVsZW1lbnQgbWV0aG9kcyBmb3IgcmV0dXJuaW5nIGEgbGlzdGJveCBvcHRpb24gYXQgYSBw
b2ludApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlz
dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUxpc3RCb3guaAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3
ICs1NCw2IEBACiAKIHByaXZhdGU6ICAgIAogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxpc3RC
b3hPcHRpb25BY2Nlc3NpYmlsaXR5T2JqZWN0KEhUTUxFbGVtZW50KikgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Q7CiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNw
cAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw4ICsxMjQs
OCBAQAogewogICAgIGlmICghbV9vcHRpb25FbGVtZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRlKGFyaWFfaGlkZGVu
QXR0ciksICJ0cnVlIikpCisKKyAgICBpZiAoYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVs
dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICByZXR1cm4gcGFyZW50T2JqZWN0
KCktPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3Bw
CShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3
IEBACiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5zdHlsZSgpIHx8IG1fcmVu
ZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IGNvbnRyb2xUeXBlKCkg
PT0gTWVkaWFUaW1lbGluZUNvbnRhaW5lcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQo
KTsKIH0KIAogQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbDo6cm9s
ZVZhbHVlKCkgY29uc3QKQEAgLTI1Niw2ICsyNTYsMTAgQEAKICAgICByZXR1cm4gYXVkaW9FbGVt
ZW50OwogfQogCitib29sIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFpbmVyOjpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFjY2Vzc2li
aWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKTsKK30KIAogLy8KIC8vIEFjY2Vzc2liaWxpdHlNZWRp
YVRpbWVsaW5lCkBAIC0zMDUsNyArMzA5LDEwIEBACiAgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFt
X3JlbmRlcmVyLT5zdHlsZSgpIHx8IG1fcmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAh
PSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiAhbV9yZW5kZXJl
ci0+c3R5bGUoKS0+d2lkdGgoKS52YWx1ZSgpOworICAgIGlmICghbV9yZW5kZXJlci0+c3R5bGUo
KS0+d2lkdGgoKS52YWx1ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOwogfQogCiBTdHJpbmcgQWNjZXNz
aWJpbGl0eU1lZGlhVGltZURpc3BsYXk6OmFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVkaWFDb250cm9scy5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkwLDcgKzkwLDcgQEAKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFD
b250cm9sc0NvbnRhaW5lcihSZW5kZXJPYmplY3QqKTsKICAgICBib29sIGNvbnRyb2xsaW5nVmlk
ZW9FbGVtZW50KCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5nIGVsZW1lbnRUeXBlTmFtZSgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3Q7CiB9OwogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAJKHJldmlzaW9u
IDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDEyIEBACiAgICAgaWYgKCFs
aXN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobGlzdC0+YWNjZXNzaWJpbGl0eVBsYXRm
b3JtSW5jbHVkZXNPYmplY3QoKSA9PSBJZ25vcmVPYmplY3QpIHsKKyAgICBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5TW9ja09iamVjdCo+KGxpc3QpLT5zZXRQYXJlbnQodGhpcyk7CisgICAgaWYg
KGxpc3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewogICAgICAgICBjYWNoZS0+cmVtb3Zl
KGxpc3QtPmF4T2JqZWN0SUQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TW9ja09iamVjdCo+KGxpc3QpLT5zZXRQYXJlbnQodGhpcyk7
CiAgICAgbV9jaGlsZHJlbi5hcHBlbmQobGlzdCk7CiAKICAgICBsaXN0LT5hZGRDaGlsZHJlbigp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNZW51TGlzdC5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3
ICs0OSw2IEBACiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIFBvcFVwQnV0dG9uUm9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2hpbGRyZW4oKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbi5jcHAJKHJldmlzaW9uIDE0
NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQAogCiBib29sIEFj
Y2Vzc2liaWxpdHlNZW51TGlzdE9wdGlvbjo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSBjb25zdAogewotICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVj
dCgpICE9IEluY2x1ZGVPYmplY3Q7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRC
eURlZmF1bHQoKTsKIH0KIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb246
OmVsZW1lbnRSZWN0KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuY3BwCShyZXZpc2lv
biAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlN
ZW51TGlzdFBvcHVwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQAogCiBib29s
IEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlQbGF0Zm9ybUluY2x1ZGVzT2Jq
ZWN0KCkgIT0gSW5jbHVkZU9iamVjdDsKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZEJ5RGVmYXVsdCgpOwogfQogCiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24qIEFjY2Vzc2li
aWxpdHlNZW51TGlzdFBvcHVwOjptZW51TGlzdE9wdGlvbkFjY2Vzc2liaWxpdHlPYmplY3QoSFRN
TEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAkocmV2aXNpb24g
MTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDQgKzM3LDkgQEAKIHsKIH0KICAgICAK
K2Jvb2wgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVs
dCgpOwogfQorICAgIAorfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaAkocmV2aXNpb24gMTQ1OTI3KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBACiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc01vY2tPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIGJv
b2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICAvLyBNdXN0IGJl
IGNhbGxlZCB3aGVuIHRoZSBwYXJlbnQgb2JqZWN0IGNsZWFycyBpdHMgY2hpbGRyZW4uCiAgICAg
dmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSB7IG1fcGFyZW50ID0gMDsgfQogfTsgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NjcsNiAr
MTg2NywzNSBAQAogICAgIHJldHVybiByb2xlID09IEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBQb3BV
cEJ1dHRvblJvbGUgfHwgcm9sZSA9PSBUb2dnbGVCdXR0b25Sb2xlOwogfQogCitib29sIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKSBjb25zdAor
eworICAgIHJldHVybiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgPT0gSWdub3JlT2JqZWN0Owor
fQorCitib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFJc0hpZGRlbigpIGNvbnN0Cit7Cisg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAi
dHJ1ZSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIG9iamVjdCA9IHBhcmVudE9iamVjdCgpOyBvYmplY3Q7IG9iamVjdCA9IG9iamVj
dC0+cGFyZW50T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG9iamVj
dC0+Z2V0QXR0cmlidXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGZhbHNlOworfQorCitBY2Nlc3Np
YmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRlZmF1bHRPYmplY3RJ
bmNsdXNpb24oKSBjb25zdAoreworICAgIGlmIChhcmlhSXNIaWRkZW4oKSkKKyAgICAgICAgcmV0
dXJuIElnbm9yZU9iamVjdDsKKyAgICAKKyAgICBpZiAoaXNQcmVzZW50YXRpb25hbENoaWxkT2ZB
cmlhUm9sZSgpKQorICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OworICAgIAorICAgIHJldHVy
biBhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09iamVjdCgpOworfQorICAgIAogYm9vbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKICAg
ICBBWENvbXB1dGVkT2JqZWN0QXR0cmlidXRlQ2FjaGUqIGF0dHJpYnV0ZUNhY2hlID0gYXhPYmpl
Y3RDYWNoZSgpLT5jb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2
aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4Niw3ICs0ODYsOSBAQAogICAgIHZpcnR1
YWwgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKLQorICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Q7CisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZhdWx0KCkgY29uc3Q7CisgICAgCiAgICAgaW50
IGJsb2NrcXVvdGVMZXZlbCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3Qg
eyByZXR1cm4gMDsgfQpAQCAtODQ5LDYgKzg1MSw3IEBACiAgICAgc3RhdGljIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmls
aXR5U2VhcmNoQ3JpdGVyaWEqKTsKICAgICBzdGF0aWMgYm9vbCBvYmplY3RNYXRjaGVzU2VhcmNo
Q3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxp
dHlTZWFyY2hDcml0ZXJpYSosIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgYnV0dG9uUm9sZVR5cGUoKSBjb25zdDsKKyAgICBib29s
IGFyaWFJc0hpZGRlbigpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0o
RUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkpKQogICAgIGJvb2wgYWxsb3dzVGV4dFJhbmdlcygp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gMTQ1
OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBACiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkg
PT0gSWdub3JlT2JqZWN0OworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZh
dWx0KCk7CiB9CiAgICAgCiBmbG9hdCBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OnZh
bHVlRm9yUmFuZ2UoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAx
NDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUxLDIyICsxMDUxLDYgQEAKICAgICBy
ZXR1cm4gMDsgICAKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJp
YUlzSGlkZGVuKCkgY29uc3QKLXsKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmli
dXRlKGFyaWFfaGlkZGVuQXR0ciksICJ0cnVlIikpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IAotICAgIC8vIGFyaWEtaGlkZGVuIGhpZGVzIHRoaXMgb2JqZWN0IGFuZCBhbnkgY2hpbGRyZW4K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBwYXJlbnRPYmplY3QoKTsKLSAgICB3
aGlsZSAob2JqZWN0KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShvYmplY3QtPmdl
dEF0dHJpYnV0ZShhcmlhX2hpZGRlbkF0dHIpLCAidHJ1ZSIpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50T2JqZWN0KCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzQWxsb3dlZENoaWxkT2ZUcmVlKCkgY29uc3QKIHsKICAgICAvLyBEZXRlcm1pbmUgaWYgdGhp
cyBpcyBpbiBhIHRyZWUuIElmIHNvLCB3ZSBhcHBseSBzcGVjaWFsIGJlaGF2aW9yIHRvIG1ha2Ug
aXQgd29yayBsaWtlIGFuIEFYT3V0bGluZS4KQEAgLTEwODksNyArMTA3Myw3IEBACiAgICAgcmV0
dXJuIHRydWU7CiB9CiAgICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCkgY29uc3QKK0Fj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGVm
YXVsdE9iamVjdEluY2x1c2lvbigpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGZvbGxvd2luZyBjYXNl
cyBjYW4gYXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCdzIGEgc3ViY2xhc3Mgb2YgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC4KICAgICAKQEAgLTExMDMsMjQgKzEwODcsOSBAQAogICAgICAgICAK
ICAgICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKICAgICB9Ci0gICAgCi0gICAgLy8gQW55dGhp
bmcgbWFya2VkIGFzIGFyaWEtaGlkZGVuIG9yIGEgY2hpbGQgb2Ygc29tZXRoaW5nIGFyaWEtaGlk
ZGVuIG11c3QgYmUgaGlkZGVuLgotICAgIGlmIChhcmlhSXNIaWRkZW4oKSkKLSAgICAgICAgcmV0
dXJuIElnbm9yZU9iamVjdDsKLSAgICAKLSAgICAvLyBBbnl0aGluZyB0aGF0IGlzIGEgcHJlc2Vu
dGF0aW9uYWwgcm9sZSBtdXN0IGJlIGhpZGRlbi4KLSAgICBpZiAoaXNQcmVzZW50YXRpb25hbENo
aWxkT2ZBcmlhUm9sZSgpKQotICAgICAgICByZXR1cm4gSWdub3JlT2JqZWN0OwogCi0gICAgLy8g
QWxsb3cgdGhlIHBsYXRmb3JtIHRvIG1ha2UgYSBkZWNpc2lvbi4KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNP
YmplY3QoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0
dXJuIEluY2x1ZGVPYmplY3Q7Ci0gICAgaWYgKGRlY2lzaW9uID09IElnbm9yZU9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIElnbm9yZU9iamVjdDsKLSAgICAgICAgCi0gICAgcmV0dXJuIERlZmF1bHRC
ZWhhdmlvcjsKLX0gIAorICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZWZhdWx0T2Jq
ZWN0SW5jbHVzaW9uKCk7Cit9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdAogewpAQCAtMTEzMSw3ICsxMTAwLDcg
QEAKICAgICAvLyBDaGVjayBmaXJzdCBpZiBhbnkgb2YgdGhlIGNvbW1vbiByZWFzb25zIGNhdXNl
IHRoaXMgZWxlbWVudCB0byBiZSBpZ25vcmVkLgogICAgIC8vIFRoZW4gcHJvY2VzcyBvdGhlciB1
c2UgY2FzZXMgdGhhdCBuZWVkIHRvIGJlIGFwcGxpZWQgdG8gYWxsIHRoZSB2YXJpb3VzIHJvbGVz
CiAgICAgLy8gdGhhdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0cyB0YWtlIG9uLgotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkQmFzZSgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBk
ZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7CiAgICAgaWYgKGRlY2lzaW9uID09IEluY2x1ZGVPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGVjaXNpb24gPT0gSWdub3JlT2Jq
ZWN0KQpAQCAtMjczMyw4ICsyNzAyLDEwIEBACiAgICAgICAgICAgICBhcmVhT2JqZWN0LT5zZXRI
VE1MQXJlYUVsZW1lbnQoc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oY3VycmVudCkpOwog
ICAgICAgICAgICAgYXJlYU9iamVjdC0+c2V0SFRNTE1hcEVsZW1lbnQobWFwKTsKICAgICAgICAg
ICAgIGFyZWFPYmplY3QtPnNldFBhcmVudCh0aGlzKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoYXJlYU9iamVjdCk7CisgICAgICAgICAgICBpZiAoIWFyZWFP
YmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgICAgICAgICBtX2NoaWxk
cmVuLmFwcGVuZChhcmVhT2JqZWN0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBheE9iamVjdENhY2hlKCktPnJlbW92ZShhcmVhT2JqZWN0LT5heE9iamVjdElEKCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDE0NTkyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgdmlydHVhbCB2b2lkIHNl
dEFjY2Vzc2libGVOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIAogICAgIC8vIFByb3Zp
ZGVzIGNvbW1vbiBsb2dpYyB1c2VkIGJ5IGFsbCBlbGVtZW50cyB3aGVuIGRldGVybWluaW5nIGlz
SWdub3JlZC4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5jbHVzaW9uIGFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWRCYXNlKCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0SW5j
bHVzaW9uIGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFs
IGludCBsYXlvdXRDb3VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIGVzdGltYXRlZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0OwpAQCAtMjI4LDcgKzIyOCw2IEBACiBwcml2YXRlOgogICAg
IHZvaWQgYXJpYUxpc3Rib3hTZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpOwogICAgIHZvaWQgYXJpYUxpc3Rib3hWaXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgYm9vbCBhcmlhSXNIaWRkZW4oKSBjb25zdDsKICAgICBi
b29sIGlzQWxsb3dlZENoaWxkT2ZUcmVlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNUZXh0QWx0ZXJu
YXRpdmUoKSBjb25zdDsKICAgICBTdHJpbmcgcG9zaXRpb25hbERlc2NyaXB0aW9uRm9yTVNBQSgp
IGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
U2Nyb2xsYmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmgJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw2IEBACiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxiYXIoU2Nyb2xsYmFyKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2li
aWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY2FuU2V0TnVtZXJpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAJKHJldmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxNyAr
MTEzLDYgQEAKICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShtX3JlbmRl
cmVyKTsKIH0KIAotYm9vbCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0Ci17Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBk
ZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7Ci0gICAgaWYgKGRlY2lzaW9u
ID09IEluY2x1ZGVPYmplY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZGVjaXNp
b24gPT0gSWdub3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0gICAgCiBmbG9hdCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjp2YWx1ZUZvclJh
bmdlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZWxlbWVudCgpLT52YWx1ZSgpLnRvRmxvYXQoKTsK
QEAgLTE4MCwxMyArMTY5LDcgQEAKIAogYm9vbCBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OmNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0SW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5jbHVkZXNP
YmplY3QoKTsKLSAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkQnlEZWZhdWx0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRl
ci5oCShyZXZpc2lvbiAxNDU5MjcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAogCiBw
cml2YXRlOgogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25z
dCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
VmFsdWUoKSBjb25zdCB7IHJldHVybiBTbGlkZXJSb2xlOyB9ICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
aAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBACiAg
ICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKTsKIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eVJvbGUgcm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU3BpbkJ1dHRvblJvbGU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NwaW5CdXR0b24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7CkBAIC03Miw3ICs3MSw2IEBACiAgICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBCdXR0b25S
b2xlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiBpbmxpbmUgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24q
IHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmNwcAkocmV2aXNpb24gMTQ1OTI3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsNyArNTQx
LDcgQEAKICAgICAKIGJvb2wgQWNjZXNzaWJpbGl0eVRhYmxlOjpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBk
ZWNpc2lvbiA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKICAg
ICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmIChkZWNpc2lvbiA9PSBJZ25vcmVPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAJKHJl
dmlzaW9uIDE0NTkyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRhYmxlQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAKIAogYm9v
bCBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0CiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWNpc2lvbiA9IGFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWRCYXNlKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1
c2lvbiBkZWNpc2lvbiA9IGRlZmF1bHRPYmplY3RJbmNsdXNpb24oKTsKICAgICBpZiAoZGVjaXNp
b24gPT0gSW5jbHVkZU9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChkZWNp
c2lvbiA9PSBJZ25vcmVPYmplY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCShyZXZpc2lvbiAxNDU5Mjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAKICAgICAKIGJvb2wgQWNjZXNzaWJp
bGl0eVRhYmxlUm93Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7ICAg
IAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVjaXNpb24gPSBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkQmFzZSgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RJbmNsdXNpb24gZGVj
aXNpb24gPSBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCk7CiAgICAgaWYgKGRlY2lzaW9uID09IElu
Y2x1ZGVPYmplY3QpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZGVjaXNpb24gPT0g
SWdub3JlT2JqZWN0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ1OTI3KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMTUgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogYXJpYS1o
aWRkZW4gb24gY29udGFpbmVyIGRvZXMgbm90IGhpZGUgZGVzY2VuZGFudCBwb3B1cCBidXR0b25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTIzNzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVu
dHMuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMTUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2luZyBzcHV0bmlrL0NvbmZvcm1hbmNlLzEwX0V4
ZWN1dGlvbl9Db250ZXh0cy8xMC4xX0RlZmluaXRpb25zLzEwLjEuOF9Bcmd1bWVudHNfT2JqZWN0
L1MxMC4xLjhfQTNfVDIuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1oaWRkZW4taGlkZXMtYWxsLWVsZW1lbnRzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitUaGlzIHRlc3RzIGFyaWEtaGlkZGVuIG9uIGEgcGFyZW50IG5vZGUg
d2lsbCBoaWRlIGFsbCB0aGVzZSBzcGVjaWFsIHN1YmNsYXNzIG9iamVjdHMuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNvbnRlbnQuY2hpbGRyZW5Db3VudCBpcyAwCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVu
LWhpZGVzLWFsbC1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi1oaWRlcy1hbGwtZWxlbWVudHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5
Ij4KKworPGRpdiBpZD0iY29udGVudCIgcm9sZT0iZ3JvdXAiPgorCis8bWFpbiBpZD0ibWFpbiIg
YXJpYS1oaWRkZW49InRydWUiPgorICAgIDx2aWRlbyBjb250cm9scz0iY29udHJvbHMiPjwvdmlk
ZW8+CisgICAgPHNlbGVjdCBpZD0ic2VsZWN0Ij48b3B0aW9uPmE8L3NlbGVjdD4KKyAgICA8aW5w
dXQgdHlwZT0icmFuZ2UiPgorICAgIDxpbnB1dCB0eXBlPSJkYXRhIj4KKyAgICA8cHJvZ3Jlc3M+
PC9wcm9ncmVzcz4KKyAgICA8dWw+PGxpPml0ZW08L2xpPjwvdWw+CisgICAgPHNlbGVjdCBzaXpl
PSIxMCI+PG9wdGlvbj5hPC9zZWxlY3Q+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9jYWtlLnBu
ZyIgd2lkdGg9IjE0NSIgaGVpZ2h0PSIxMjYiIHVzZW1hcD0iI21hcCI+CisgICAgPG1hcCBuYW1l
PSJtYXAiPgorICAgICAgICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsMTAwLDEwMCIg
aHJlZj0iIyIgYWx0PSJjYWtlIj4KKyAgICA8L21hcD4KKzwvbWFpbj4KKworPC9kaXY+CisKKzxz
Y3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBhcmlhLWhpZGRlbiBvbiBhIHBh
cmVudCBub2RlIHdpbGwgaGlkZSBhbGwgdGhlc2Ugc3BlY2lhbCBzdWJjbGFzcyBvYmplY3RzLiIp
OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgCisg
ICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIHNob3VsZEJlKCJjb250ZW50LmNoaWxkcmVu
Q291bnQiLCAiMCIpOworCisgICAgICAgIC8vIENsZWFyIHRoZSBIVE1MIGZvciBiZXR0ZXIgcmVz
dWx0cy4KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5pbm5lckhU
TUwgPSAiIjsgIAorICAgIH0KKworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CisK
</data>

          </attachment>
      

    </bug>

</bugzilla>