<?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>70241</bug_id>
          
          <creation_ts>2011-10-17 08:19:26 -0700</creation_ts>
          <short_desc>AX: buttons of number type &lt;input&gt; controls are not fully accessible</short_desc>
          <delta_ts>2011-10-19 07:01:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>70243</dependson>
    
    <dependson>70305</dependson>
    
    <dependson>70308</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>arko</cc>
    
    <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>485160</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 08:19:26 -0700</bug_when>
    <thetext>The arrow buttons on the number-type input control are not visible to Accessibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485416</commentid>
    <comment_count>1</comment_count>
      <attachid>111305</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 13:01:50 -0700</bug_when>
    <thetext>Created attachment 111305
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485422</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 13:03:41 -0700</bug_when>
    <thetext>Attachment 111305 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
	M	Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.h
	M	Source/WebKit2/WebProcess/WebCoreSupport/WebGraphicsLayer.cpp
	M	Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h
	M	Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.cpp
	A	Source/WebKit2/WebProcess/WebPage/qt/LayerTreeHostQt.h
	M	Source/WebKit2/WebProcess/WebPage/TiledDrawingArea.cpp
	M	Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp
	M	Source/WebKit2/WebProcess/WebPage/WebPage.cpp
	A	Source/WebKit2/WebProcess/WebPage/LayerTreeHost.messages.in
	M	Source/WebKit2/WebProcess/WebPage/LayerTreeHost.cpp
	M	Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.h
	M	Source/WebKit2/WebProcess/WebPage/TiledDrawingArea.h
	M	Source/WebKit2/WebProcess/WebPage/DrawingArea.h
	A	Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp
	M	Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h
	A	Source/WebKit2/UIProcess/LayerTreeHostProxy.h
	M	Source/WebKit2/UIProcess/DrawingAreaProxyImpl.cpp
	M	Source/WebKit2/UIProcess/WebPageProxy.cpp
	M	Source/WebKit2/UIProcess/DrawingAreaProxy.cpp
	A	Source/WebKit2/UIProcess/LayerTreeHostProxy.messages.in
	M	Source/WebKit2/UIProcess/DrawingAreaProxy.h
	M	Source/WebKit2/Platform/CoreIPC/MessageID.h
	M	Source/WebKit2/DerivedSources.pro
	M	Source/WebKit2/Scripts/webkit2/messages.py
	M	Source/WebKit2/ChangeLog
	M	Source/WebKit2/Shared/qt/LayerTreeContextQt.cpp
	M	Source/WebKit2/Shared/WebLayerTreeInfo.cpp
	M	Source/WebKit2/Shared/LayerTreeContext.h
	M	Source/WebKit2/Shared/WebLayerTreeInfo.h
	M	Source/WebKit2/WebKit2.pro
r97639 = 6a21199564eb7173886ffb3ae167adbf7188a1d2 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485423</commentid>
    <comment_count>3</comment_count>
      <attachid>111305</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 13:04:05 -0700</bug_when>
    <thetext>Comment on attachment 111305
patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:897
&gt;          actions = actionElementActions;

all buttons should expose the press action, not only if they have an actionElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485435</commentid>
    <comment_count>4</comment_count>
      <attachid>111305</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-17 13:16:30 -0700</bug_when>
    <thetext>Comment on attachment 111305
patch

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

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:36
&gt; +    return adoptRef(new AccessibilitySpinButton());

Extra unneeded () in there.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:40
&gt; +    : AccessibilityMockObject()

You should be able to omit this initializer.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:77
&gt; +        m_spinButtonElement-&gt;renderer()-&gt;absoluteFocusRingQuads(quads);

Incorrect indentation.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:109
&gt; +    : AccessibilityMockObject()

You should be able to omit this line.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:115
&gt; +    return adoptRef(new AccessibilitySpinButtonPart());

Extra unneeded () in there.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:126
&gt; +    LayoutRect parentRect = parentObject()-&gt;elementRect();
&gt; +    if (m_isIncrementor)
&gt; +        parentRect.setHeight(parentRect.height()/2);
&gt; +    else {
&gt; +        parentRect.setY(parentRect.y() + parentRect.height()/2);        
&gt; +        parentRect.setHeight(parentRect.height()/2);        
&gt; +    }

We normally put spaces around operators like &quot;/&quot;.

This geometry code doesn’t belong here in the accessibility object. The knowledge of what part of the button is what should be in the renderer, not here.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1140
&gt; +        tempArray = [[NSMutableArray alloc] initWithArray:attributes];
&gt; +        [tempArray addObject:NSAccessibilityIncrementButtonAttribute];
&gt; +        [tempArray addObject:NSAccessibilityDecrementButtonAttribute];
&gt; +        incrementorAttrs = [[NSArray alloc] initWithArray:tempArray];
&gt; +        [tempArray release];

This could be done by using initWithObjects: in 1 line of code instead of 5.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1573
&gt; +        if (toAccessibilitySpinButtonPart(m_object)-&gt;isIncrementor())
&gt; +            return NSAccessibilityIncrementArrowSubrole;
&gt; +        else
&gt; +            return NSAccessibilityDecrementArrowSubrole;

In WebKit coding style we avoid else after return.

&gt; Source/WebCore/accessibility/AccessibilityObject.h:517
&gt; +    static LayoutRect boundingBoxForQuads(RenderObject*, Vector&lt;FloatQuad&gt;&amp;);

Should be const Vector&lt;FloatQuad&gt;&amp;.

&gt; Source/WebCore/accessibility/AccessibilityMockObject.h:40
&gt; +    virtual bool isMockObject() const { return true; }

Should be private.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:411
&gt; +    const size_t n = quads.size();

No need for the const here. Normally we’d use the name “size” or “count” for this.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.h:36
&gt; +    

Normally we don’t have this blank line.

&gt; Source/WebCore/accessibility/AccessibilitySpinButton.h:49
&gt; +    AccessibilitySpinButton();

Can this be private?

&gt; Source/WebCore/accessibility/AccessibilityMockObject.cpp:33
&gt;  AccessibilityMockObject::AccessibilityMockObject()
&gt; -    : m_parent(0)
&gt; +    : AccessibilityObject()
&gt; +    , m_parent(0)

This change should not be necessary.

&gt; Source/WebCore/html/shadow/TextControlInnerElements.cpp:346
&gt; +    

Extra whitespace added. Should get rid of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485592</commentid>
    <comment_count>5</comment_count>
      <attachid>111305</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 16:05:10 -0700</bug_when>
    <thetext>Comment on attachment 111305
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilitySpinButton.cpp:126
&gt;&gt; +    }
&gt; 
&gt; We normally put spaces around operators like &quot;/&quot;.
&gt; 
&gt; This geometry code doesn’t belong here in the accessibility object. The knowledge of what part of the button is what should be in the renderer, not here.

Unfortunately there&apos;s no distinguishable renderer for these inner control objects. In the hit testing for this it checks if the point is below or above the midpoint. I can&apos;t find any another reference to these specific controls.
I&apos;ll add a FIXME to take care of this when it&apos;s more clear how to accomplish this

&gt;&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:1140
&gt;&gt; +        [tempArray release];
&gt; 
&gt; This could be done by using initWithObjects: in 1 line of code instead of 5.

We have to start with the &quot;attributes&quot; array, so we can&apos;t directly call initWithObjects unfortunately and get the behavior we want</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485620</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 16:38:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/97669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485639</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 16:56:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; http://trac.webkit.org/changeset/97669

Fixed chromium failure in

http://trac.webkit.org/changeset/97677</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485804</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 22:07:14 -0700</bug_when>
    <thetext>It appears that this patch caused 20+ tests to crash on Windows bots:
http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r97675%20(17199)/results.html
http://build.webkit.org/builders/Windows%20XP%20Debug%20%28Tests%29/builds/33254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485814</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 22:44:55 -0700</bug_when>
    <thetext>I&apos;m sorry but I&apos;m going to roll out the change for now since we&apos;re losing a significant test due to nrwt exiting early of these crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485819</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-17 22:50:27 -0700</bug_when>
    <thetext>Reopen the bug because the patch was rolled out in http://trac.webkit.org/changeset/97721.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485840</commentid>
    <comment_count>11</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-17 23:30:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Reopen the bug because the patch was rolled out in http://trac.webkit.org/changeset/97721.

Very strange. Not clear why this change is crashing every AX test on windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486064</commentid>
    <comment_count>12</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-18 08:22:49 -0700</bug_when>
    <thetext>I will roll in this piece by piece since I don&apos;t see why the original patch would only cause crashes on windows

Part 1
http://trac.webkit.org/changeset/97753</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486122</commentid>
    <comment_count>13</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-18 10:02:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I will roll in this piece by piece since I don&apos;t see why the original patch would only cause crashes on windows
&gt; 
&gt; Part 1
&gt; http://trac.webkit.org/changeset/97753

Part 2
http://trac.webkit.org/changeset/97755

part 3
http://trac.webkit.org/changeset/97756

Part 4
http://trac.webkit.org/changeset/97757

part 5
http://trac.webkit.org/changeset/97759

So far so good it appears</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486238</commentid>
    <comment_count>14</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-18 12:43:01 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)

Part 6

http://trac.webkit.org/changeset/97769

I do not see any Windows related crashes this time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486635</commentid>
    <comment_count>15</comment_count>
    <who name="Arko Saha">arko</who>
    <bug_when>2011-10-19 02:18:19 -0700</bug_when>
    <thetext>Modifying/Adding new files in WebCore.vcproj and running webkit check style on it results in 
&quot;Source/WebCore/WebCore.vcproj/WebCore.vcproj:25583:  mismatched tag  [xml/syntax] [5]&quot; while adding new files in WebCore.vcporj.

Here is my observation :

In http://trac.webkit.org/changeset/97756

Index: Source/WebCore/WebCore.vcproj/WebCore.vcproj
===================================================================
--- Source/WebCore/WebCore.vcproj/WebCore.vcproj	(revision 97638)
+++ Source/WebCore/WebCore.vcproj/WebCore.vcproj	(working copy)
@@ -25221,6 +25221,13 @@
 				RelativePath=&quot;..\accessibility\AccessibilitySlider.h&quot;
 				&gt;
 			&lt;/File&gt;
+                        &lt;File
+                                RelativePath=&quot;..\accessibility\AccessibilitySpinButton.cpp&quot;
+                                &gt;
+                        &lt;/File&gt;
+                        &lt;File
+                                RelativePath=&quot;..\accessibility\AccessibilitySpinButton.h&quot;
+                                &gt;
 			&lt;File
 				RelativePath=&quot;..\accessibility\AccessibilityTable.cpp&quot;
 				&gt;

Here closing &lt;/File&gt; tag is missing for AccessibilitySpinButton.h.
Hence the style checker complains about everything that we add/modify in WebCore.vcproj.

Adding the required closing &lt;/File&gt; tag resolves the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486747</commentid>
    <comment_count>16</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2011-10-19 07:01:56 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Modifying/Adding new files in WebCore.vcproj and running webkit check style on it results in 
&gt; &quot;Source/WebCore/WebCore.vcproj/WebCore.vcproj:25583:  mismatched tag  [xml/syntax] [5]&quot; while adding new files in WebCore.vcporj.
&gt; 
&gt; Here is my observation :

&gt; Here closing &lt;/File&gt; tag is missing for AccessibilitySpinButton.h.
&gt; Hence the style checker complains about everything that we add/modify in WebCore.vcproj.
&gt; 
&gt; Adding the required closing &lt;/File&gt; tag resolves the issue.

Thanks for catching that. Fixed with

http://trac.webkit.org/changeset/97857</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111305</attachid>
            <date>2011-10-17 13:01:50 -0700</date>
            <delta_ts>2011-10-17 16:05:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>41989</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTc2MzgpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC02MzUs
NiArNjM1LDggQEAKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3LmggXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
cGluQnV0dG9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZUNlbGwuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5
NzYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBACiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmNw
cCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAgXAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgXCAgICAKKyAgICBhY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBcICAgIAogICAgIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcCBcICAgIAogICAgIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgXCAgICAKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZFJvdy5jcHAgXCAgICAKQEAgLTEyNjEsNiArMTI2Miw3IEBACiAgICAg
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggXAogICAgIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmggXAorICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24uaCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmggXAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmggXAogICAgIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc2
MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw3NyBAQAorMjAxMS0xMC0xNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgorCisgICAgICAgIEFYOiBidXR0b25zIG9mIG51bWJlciB0eXBlIDxpbnB1dD4gY29udHJvbHMg
YXJlIG5vdCBmdWxseSBhY2Nlc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MDI0MQorCisgICAgICAgIEV4cG9zZSB0aGUgc3BpbiBidXR0b24g
b2JqZWN0IHRvIHRoZSBBWCBoaWVyYXJjaHkuIFNpbmNlIHRoZXJlIGlzIG5vIGRpc3RpbmN0Cisg
ICAgICAgIHJlbmRlciBvYmplY3QgdGhhdCBiYWNrcyB0aGlzIG9iamVjdCwgYSBtb2NrIG9iamVj
dCBuZWVkcyB0byBiZSBjcmVhdGVkIGZvciB0aGUgZW50aXJlCisgICAgICAgIHNwaW4gYnV0dG9u
IGFuZCB0aGUgYWN0dWFsIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW5zaWRlLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHBs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWw1LWlucHV0LW51bWJlci5odG1sCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0OjpBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5o
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OmlzTW9ja09iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmJvdW5kaW5nQm94Rm9yUXVhZHMp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2li
aWxpdHlIaXRUZXN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzU3BpbkJ1dHRv
bik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc1NwaW5CdXR0b25Q
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzTW9ja09iamVj
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmJvdW5kaW5n
Qm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojph
ZGRJbWFnZU1hcENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmFkZFRleHRGaWVsZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmRlY3Jl
bWVudEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6
ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b246
OmFkZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydDo6
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uUGFydDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uUGFydDo6ZWxlbWVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpwcmVzcyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uOjpzZXRTcGluQnV0dG9uRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6cm9sZVZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppc1NwaW5CdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0Ojp+QWNjZXNz
aWJpbGl0eVNwaW5CdXR0b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
cGluQnV0dG9uUGFydDo6aXNJbmNyZW1lbnRvcik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvblBhcnQ6OnNldElzSW5jcmVtZW50b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0Ojpyb2xlVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0Ojppc1NwaW5CdXR0b25QYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydDo6YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0FjY2Vzc2liaWxpdHlTcGluQnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OnRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KToKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0
eUFjdGlvbk5hbWVzXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBzdWJyb2xlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3BpbkJ1dHRvbkVsZW1lbnQ6OnN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U3BpbkJ1dHRv
bkVsZW1lbnQ6OnJlcGVhdGluZ1RpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Rl
eHRDb250cm9sSW5uZXJFbGVtZW50cy5oOgorCiAyMDExLTEwLTE3ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Njk5NjYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA5NzYzOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIyMSw2ICsyNTIy
MSwxMyBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5
U2xpZGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPEZp
bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxhY2Nl
c3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVsYXRpdmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KIAkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZS5jcHAiCiAJCQkJPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5U3BpbkJ1dHRvbi5oIgorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24+IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjpjcmVhdGUo
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24oKSk7
Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6QWNjZXNzaWJpbGl0eVNwaW5CdXR0
b24oKQorICAgIDogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKQorICAgICwgbV9zcGluQnV0dG9u
RWxlbWVudCgwKQoreworfQorCitBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6fkFjY2Vzc2liaWxp
dHlTcGluQnV0dG9uKCkKK3sKK30KKyAgICAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2li
aWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQoreworICAgIGlmICghbV9oYXZlQ2hp
bGRyZW4pCisgICAgICAgIGFkZENoaWxkcmVuKCk7CisKKyAgICBBU1NFUlQobV9jaGlsZHJlbi5z
aXplKCkgPT0gMik7CisKKyAgICByZXR1cm4gbV9jaGlsZHJlblswXS5nZXQoKTsKK30KKyAgIAor
QWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmRlY3JlbWVudEJ1
dHRvbigpCit7CisgICAgaWYgKCFtX2hhdmVDaGlsZHJlbikKKyAgICAgICAgYWRkQ2hpbGRyZW4o
KTsKKyAgICAKKyAgICBBU1NFUlQobV9jaGlsZHJlbi5zaXplKCkgPT0gMik7CisgICAgCisgICAg
cmV0dXJuIG1fY2hpbGRyZW5bMV0uZ2V0KCk7ICAgIAorfQorICAgIAorTGF5b3V0UmVjdCBBY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbjo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIEFTU0VSVCht
X3NwaW5CdXR0b25FbGVtZW50KTsKKyAgICAKKyAgICBpZiAoIW1fc3BpbkJ1dHRvbkVsZW1lbnQg
fHwgIW1fc3BpbkJ1dHRvbkVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CisgICAgCisgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CisgICAgICAgIG1f
c3BpbkJ1dHRvbkVsZW1lbnQtPnJlbmRlcmVyKCktPmFic29sdXRlRm9jdXNSaW5nUXVhZHMocXVh
ZHMpOworCisgICAgcmV0dXJuIGJvdW5kaW5nQm94Rm9yUXVhZHMobV9zcGluQnV0dG9uRWxlbWVu
dC0+cmVuZGVyZXIoKSwgcXVhZHMpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
OjphZGRDaGlsZHJlbigpCit7CisgICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOworICAgIAorICAg
IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCogaW5jcmVtZW50b3IgPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQqPihheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRl
KFNwaW5CdXR0b25QYXJ0Um9sZSkpOworICAgIGluY3JlbWVudG9yLT5zZXRJc0luY3JlbWVudG9y
KHRydWUpOworICAgIGluY3JlbWVudG9yLT5zZXRQYXJlbnQodGhpcyk7CisgICAgbV9jaGlsZHJl
bi5hcHBlbmQoaW5jcmVtZW50b3IpOworCisgICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0
KiBkZWNyZW1lbnRvciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCo+
KGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoU3BpbkJ1dHRvblBhcnRSb2xlKSk7CisgICAg
ZGVjcmVtZW50b3ItPnNldElzSW5jcmVtZW50b3IoZmFsc2UpOworICAgIGRlY3JlbWVudG9yLT5z
ZXRQYXJlbnQodGhpcyk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoZGVjcmVtZW50b3IpOworfQor
ICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6c3RlcChpbnQgYW1vdW50KQorewor
ICAgIEFTU0VSVChtX3NwaW5CdXR0b25FbGVtZW50KTsKKyAgICBpZiAoIW1fc3BpbkJ1dHRvbkVs
ZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3NwaW5CdXR0b25FbGVtZW50LT5z
dGVwKGFtb3VudCk7Cit9CisKKy8vIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCAKKworQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQoKQor
ICAgIDogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QoKQoreworfQorICAgIAorUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydDo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uUGFydCgpKTsKK30KKworTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ6
OmVsZW1lbnRSZWN0KCkgY29uc3QKK3sKKyAgICBMYXlvdXRSZWN0IHBhcmVudFJlY3QgPSBwYXJl
bnRPYmplY3QoKS0+ZWxlbWVudFJlY3QoKTsKKyAgICBpZiAobV9pc0luY3JlbWVudG9yKQorICAg
ICAgICBwYXJlbnRSZWN0LnNldEhlaWdodChwYXJlbnRSZWN0LmhlaWdodCgpLzIpOworICAgIGVs
c2UgeworICAgICAgICBwYXJlbnRSZWN0LnNldFkocGFyZW50UmVjdC55KCkgKyBwYXJlbnRSZWN0
LmhlaWdodCgpLzIpOyAgICAgICAgCisgICAgICAgIHBhcmVudFJlY3Quc2V0SGVpZ2h0KHBhcmVu
dFJlY3QuaGVpZ2h0KCkvMik7ICAgICAgICAKKyAgICB9CisgICAgICAgIAorICAgIHJldHVybiBw
YXJlbnRSZWN0OworfQorCitib29sIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydDo6cHJlc3Mo
KSBjb25zdAoreworICAgIGlmICghbV9wYXJlbnQgfHwgIW1fcGFyZW50LT5pc1NwaW5CdXR0b24o
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0
dG9uKiBzcGluQnV0dG9uID0gdG9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbihwYXJlbnRPYmplY3Qo
KSk7CisgICAgaWYgKG1faXNJbmNyZW1lbnRvcikKKyAgICAgICAgc3BpbkJ1dHRvbi0+c3RlcCgx
KTsKKyAgICBlbHNlCisgICAgICAgIHNwaW5CdXR0b24tPnN0ZXAoLTEpOworICAgIAorICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbQkocmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3RC
b3guaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5VGFibGVDZWxsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAg
LTg5Miw3ICs4OTMsNyBAQAogICAgIHN0YXRpYyBOU0FycmF5KiBzbGlkZXJBY3Rpb25zID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFj
dGlvbiwgTlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uLCBuaWxdOwogCiAgICAgTlNBcnJh
eSAqYWN0aW9uczsKLSAgICBpZiAobV9vYmplY3QtPmFjdGlvbkVsZW1lbnQoKSkgCisgICAgaWYg
KG1fb2JqZWN0LT5hY3Rpb25FbGVtZW50KCkgfHwgbV9vYmplY3QtPmlzQnV0dG9uKCkpIAogICAg
ICAgICBhY3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlvbnM7CiAgICAgZWxzZSBpZiAobV9vYmpl
Y3QtPmlzTWVudVJlbGF0ZWQoKSkKICAgICAgICAgYWN0aW9ucyA9IG1lbnVFbGVtZW50QWN0aW9u
czsKQEAgLTk4NCw2ICs5ODUsNyBAQAogICAgIHN0YXRpYyBOU0FycmF5KiBvdXRsaW5lUm93QXR0
cnMgPSBuaWw7CiAgICAgc3RhdGljIE5TQXJyYXkqIGJ1dHRvbkF0dHJzID0gbmlsOwogICAgIHN0
YXRpYyBOU0FycmF5KiBzY3JvbGxWaWV3QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkq
IGluY3JlbWVudG9yQXR0cnMgPSBuaWw7CiAgICAgTlNNdXRhYmxlQXJyYXkqIHRlbXBBcnJheTsK
ICAgICBpZiAoYXR0cmlidXRlcyA9PSBuaWwpIHsKICAgICAgICAgYXR0cmlidXRlcyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRl
LApAQCAtMTEzMCw2ICsxMTMyLDEzIEBACiAgICAgICAgIGNvbnRyb2xBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwogICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOwogICAgIH0KKyAgICBpZiAoaW5jcmVtZW50b3JBdHRycyA9PSBuaWwpIHsKKyAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5j
cmVtZW50QnV0dG9uQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXTsKKyAgICAgICAgaW5jcmVtZW50
b3JBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAg
ICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KICAgICBpZiAoYnV0dG9uQXR0cnMgPT0g
bmlsKSB7CiAgICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc107CiAgICAgICAgIC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBv
c2UgQVhWYWx1ZS4KQEAgLTEyOTIsNiArMTMwMSw4IEBACiAgICAgICAgIG9iamVjdEF0dHJpYnV0
ZXMgPSB0YWJMaXN0QXR0cnM7CiAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzU2Nyb2xsVmlldygp
KQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gc2Nyb2xsVmlld0F0dHJzOworICAgIGVsc2Ug
aWYgKG1fb2JqZWN0LT5pc1NwaW5CdXR0b24oKSkKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IGluY3JlbWVudG9yQXR0cnM7CiAgICAgCiAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudSgp
KQogICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUF0dHJzOwpAQCAtMTUxNSw3ICsxNTI2
LDggQEAKICAgICAgICAgeyBQYXJhZ3JhcGhSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKICAgICAgICAgeyBMYWJlbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAogICAg
ICAgICB7IERpdlJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEZv
cm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQorICAgICAgICB7IEZvcm1Sb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBTcGluQnV0dG9uUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JSb2xlIH0KICAgICB9OwogICAgIEFjY2Vzc2liaWxpdHlS
b2xlTWFwJiByb2xlTWFwID0gKm5ldyBBY2Nlc3NpYmlsaXR5Um9sZU1hcDsKICAgICAKQEAgLTE1
NTQsNiArMTU2NiwxMyBAQAogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGlmIChtX29iamVj
dC0+aXNTcGluQnV0dG9uUGFydCgpKSB7CisgICAgICAgIGlmICh0b0FjY2Vzc2liaWxpdHlTcGlu
QnV0dG9uUGFydChtX29iamVjdCktPmlzSW5jcmVtZW50b3IoKSkKKyAgICAgICAgICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBcnJvd1N1YnJvbGU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBcnJvd1N1YnJvbGU7Cisg
ICAgfQorICAgIAogICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKQogICAgICAgICByZXR1
cm4gTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvd1N1YnJvbGU7CiAgICAgCkBAIC0xODgxLDYgKzE5
MDAsMTMgQEAKICAgICAgICAgcmV0dXJuIChOU1VSTCopdXJsOwogICAgIH0KIAorICAgIGlmICht
X29iamVjdC0+aXNTcGluQnV0dG9uKCkpIHsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRCdXR0b25BdHRyaWJ1dGVdKQor
ICAgICAgICAgICAgcmV0dXJuIHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24obV9vYmplY3QpLT5p
bmNyZW1lbnRCdXR0b24oKS0+d3JhcHBlcigpOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV0p
CisgICAgICAgICAgICByZXR1cm4gdG9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbihtX29iamVjdCkt
PmRlY3JlbWVudEJ1dHRvbigpLT53cmFwcGVyKCk7CisgICAgfQorICAgIAogICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhWaXNpdGVkIl0pCiAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IG1fb2JqZWN0LT5pc1Zpc2l0ZWQoKV07CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuaAkocmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2lmbmRlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0X2gKICNkZWZpbmUgQWNjZXNzaWJpbGl0eU9i
amVjdF9oCiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJMYXlvdXRUeXBlcy5o
IgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rp
b24uaCIKQEAgLTE3OCw2ICsxNzksOCBAQAogICAgIFNoZWV0Um9sZSwKICAgICBTbGlkZXJSb2xl
LAogICAgIFNsaWRlclRodW1iUm9sZSwKKyAgICBTcGluQnV0dG9uUm9sZSwKKyAgICBTcGluQnV0
dG9uUGFydFJvbGUsCiAgICAgU3BsaXRHcm91cFJvbGUsCiAgICAgU3BsaXR0ZXJSb2xlLAogICAg
IFN0YXRpY1RleHRSb2xlLApAQCAtMzY5LDYgKzM3Miw5IEBACiAgICAgdmlydHVhbCBib29sIGlz
TWVudUxpc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc01l
bnVMaXN0UG9wdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c01lbnVMaXN0T3B0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGluQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBp
c1RleHRDb250cm9sKCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVlKCkgPT0gVGV4dEFyZWFSb2xl
IHx8IHJvbGVWYWx1ZSgpID09IFRleHRGaWVsZFJvbGU7IH0KICAgICBib29sIGlzQVJJQVRleHRD
b250cm9sKCkgY29uc3Q7CiAgICAgYm9vbCBpc1RhYkxpc3QoKSBjb25zdCB7IHJldHVybiByb2xl
VmFsdWUoKSA9PSBUYWJMaXN0Um9sZTsgfQpAQCAtNTA4LDcgKzUxNCw4IEBACiAgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gZWxlbWVudFJlY3QoKS5zaXplKCk7IH0KICAgICB2
aXJ0dWFsIExheW91dFBvaW50IGNsaWNrUG9pbnQoKTsKLQorICAgIHN0YXRpYyBMYXlvdXRSZWN0
IGJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiwgVmVjdG9yPEZsb2F0UXVhZD4mKTsK
KyAgICAKICAgICB2aXJ0dWFsIFBsYWluVGV4dFJhbmdlIHNlbGVjdGVkVGV4dFJhbmdlKCkgY29u
c3QgeyByZXR1cm4gUGxhaW5UZXh0UmFuZ2UoKTsgfQogICAgIHVuc2lnbmVkIHNlbGVjdGlvblN0
YXJ0KCkgY29uc3QgeyByZXR1cm4gc2VsZWN0ZWRUZXh0UmFuZ2UoKS5zdGFydDsgfQogICAgIHVu
c2lnbmVkIHNlbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIHNlbGVjdGVkVGV4dFJhbmdlKCku
bGVuZ3RoOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gOTc2MzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw5IEBACiAgICAgYm9vbCByZW5kZXJPYmplY3RJc09i
c2VydmFibGUoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJQ
YXJlbnRPYmplY3QoKSBjb25zdDsKICAgICBib29sIGlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSkgY29uc3Q7CisKKyAgICB2b2lkIGFkZFRleHRG
aWVsZENoaWxkcmVuKCk7CisgICAgdm9pZCBhZGRJbWFnZU1hcENoaWxkcmVuKCk7CiAgICAgCiAg
ICAgdm9pZCBhcmlhU2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuaAkocmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5TW9j
a09iamVjdCgpOwogICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc01vY2tPYmplY3QoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRQ
YXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9
OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5NzYzOCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24u
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKQEAgLTY5LDEyICs3MCwxNCBAQAogI2luY2x1ZGUgIlJlbmRlck1lbnVM
aXN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250
cm9sLmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyZWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIlRleHQuaCIKKyNpbmNsdWRlICJUZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTE0NDAsMjAg
KzE0NDMsOSBAQAogICAgICAgICBvYmotPmFic29sdXRlUXVhZHMocXVhZHMpOwogICAgIGVsc2UK
ICAgICAgICAgb2JqLT5hYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKHF1YWRzKTsKLSAgICBjb25zdCBz
aXplX3QgbiA9IHF1YWRzLnNpemUoKTsKLSAgICBpZiAoIW4pCi0gICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7CisgICAgCisgICAgTGF5b3V0UmVjdCByZXN1bHQgPSBib3VuZGluZ0JveEZvclF1
YWRzKG9iaiwgcXVhZHMpOwogCi0gICAgTGF5b3V0UmVjdCByZXN1bHQ7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgTGF5b3V0UmVjdCByID0gcXVhZHNbaV0u
ZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLSAgICAgICAgaWYgKCFyLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgaWYgKG9iai0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQotICAgICAgICAgICAg
ICAgIG9iai0+dGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3Qob2JqLCByKTsKLSAgICAgICAgICAg
IHJlc3VsdC51bml0ZShyKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFRoZSBzaXplIG9m
IHRoZSB3ZWIgYXJlYSBzaG91bGQgYmUgdGhlIGNvbnRlbnQgc2l6ZSwgbm90IHRoZSBjbGlwcGVk
IHNpemUuCiAgICAgaWYgKGlzV2ViQXJlYSgpICYmIG9iai0+ZnJhbWUoKS0+dmlldygpKQogICAg
ICAgICByZXN1bHQuc2V0U2l6ZShvYmotPmZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNTaXplKCkp
OwpAQCAtMzQ2NSw3ICszNDU3LDMxIEBACiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xlYXJD
aGlsZHJlbigpOwogICAgIG1fY2hpbGRyZW5EaXJ0eSA9IGZhbHNlOwogfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEltYWdlTWFwQ2hpbGRyZW4oKQoreworICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjc3NCb3ggPSByZW5kZXJCb3hNb2RlbE9iamVjdCgpOworICAgIGlm
ICghY3NzQm94IHx8ICFjc3NCb3gtPmlzUmVuZGVySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIAorICAgIEhUTUxNYXBFbGVtZW50KiBtYXAgPSB0b1JlbmRlckltYWdlKGNzc0JveCktPmlt
YWdlTWFwKCk7CisgICAgaWYgKCFtYXApCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoTm9k
ZSogY3VycmVudCA9IG1hcC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+dHJhdmVyc2VOZXh0Tm9kZShtYXApKSB7CisgICAgICAgIAorICAgICAgICAvLyBhZGQgYW4g
PGFyZWE+IGVsZW1lbnQgZm9yIHRoaXMgY2hpbGQgaWYgaXQgaGFzIGEgbGluaworICAgICAgICBp
ZiAoY3VycmVudC0+aGFzVGFnTmFtZShhcmVhVGFnKSAmJiBjdXJyZW50LT5pc0xpbmsoKSkgewor
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluayogYXJlYU9iamVjdCA9IHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsqPihheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKEltYWdlTWFwTGlua1JvbGUpKTsKKyAgICAgICAgICAgIGFyZWFPYmplY3QtPnNldEhU
TUxBcmVhRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihjdXJyZW50KSk7Cisg
ICAgICAgICAgICBhcmVhT2JqZWN0LT5zZXRIVE1MTWFwRWxlbWVudChtYXApOworICAgICAgICAg
ICAgYXJlYU9iamVjdC0+c2V0UGFyZW50KHRoaXMpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBtX2NoaWxkcmVuLmFwcGVuZChhcmVhT2JqZWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwog
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCkKIHsKICAgICBpZiAobmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkpCkBAIC0zNDczLDcgKzM0ODks
MjQgQEAKICAgICAKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp1cGRhdGVDaGlsZHJlbklmTmVj
ZXNzYXJ5KCk7CiB9CisgICAgCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFRl
eHRGaWVsZENoaWxkcmVuKCkKK3sKKyAgICBOb2RlKiBub2RlID0gdGhpcy0+bm9kZSgpOworICAg
IGlmICghbm9kZSB8fCAhbm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihub2RlKTsKKyAgICBIVE1MRWxlbWVudCogc3BpbkJ1dHRvbkVsZW1lbnQg
PSBpbnB1dC0+aW5uZXJTcGluQnV0dG9uRWxlbWVudCgpOworICAgIGlmICghc3BpbkJ1dHRvbkVs
ZW1lbnQgfHwgIXNwaW5CdXR0b25FbGVtZW50LT5pc1NwaW5CdXR0b25FbGVtZW50KCkpCisgICAg
ICAgIHJldHVybjsKIAorICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKiBheFNwaW5CdXR0b24g
PSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbio+KGF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoU3BpbkJ1dHRvblJvbGUpKTsKKyAgICBheFNwaW5CdXR0b24tPnNldFNwaW5C
dXR0b25FbGVtZW50KHN0YXRpY19jYXN0PFNwaW5CdXR0b25FbGVtZW50Kj4oc3BpbkJ1dHRvbkVs
ZW1lbnQpKTsKKyAgICBheFNwaW5CdXR0b24tPnNldFBhcmVudCh0aGlzKTsKKyAgICBtX2NoaWxk
cmVuLmFwcGVuZChheFNwaW5CdXR0b24pOworfQorCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmFkZENoaWxkcmVuKCkKIHsKICAgICAvLyBJZiB0aGUgbmVlZCB0byBhZGQgbW9yZSBj
aGlsZHJlbiBpbiBhZGRpdGlvbiB0byBleGlzdGluZyBjaGlsZHJlbiBhcmlzZXMsIApAQCAtMzUx
NSwyNSArMzU0OCw4IEBACiAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChheE9iamVjdENh
Y2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCkpOwogICAgIH0KICAgICAKLSAgICAvLyBmb3IgYSBS
ZW5kZXJJbWFnZSwgYWRkIHRoZSA8YXJlYT4gZWxlbWVudHMgYXMgaW5kaXZpZHVhbCBhY2Nlc3Np
YmlsaXR5IG9iamVjdHMKLSAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY3NzQm94ID0gcmVuZGVy
Qm94TW9kZWxPYmplY3QoKTsKLSAgICBpZiAoY3NzQm94ICYmIGNzc0JveC0+aXNSZW5kZXJJbWFn
ZSgpKSB7Ci0gICAgICAgIEhUTUxNYXBFbGVtZW50KiBtYXAgPSB0b1JlbmRlckltYWdlKGNzc0Jv
eCktPmltYWdlTWFwKCk7Ci0gICAgICAgIGlmIChtYXApIHsKLSAgICAgICAgICAgIGZvciAoTm9k
ZSogY3VycmVudCA9IG1hcC0+Zmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+dHJhdmVyc2VOZXh0Tm9kZShtYXApKSB7Ci0KLSAgICAgICAgICAgICAgICAvLyBhZGQgYW4g
PGFyZWE+IGVsZW1lbnQgZm9yIHRoaXMgY2hpbGQgaWYgaXQgaGFzIGEgbGluawotICAgICAgICAg
ICAgICAgIGlmIChjdXJyZW50LT5oYXNUYWdOYW1lKGFyZWFUYWcpICYmIGN1cnJlbnQtPmlzTGlu
aygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsqIGFy
ZWFPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKj4oYXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShJbWFnZU1hcExpbmtSb2xlKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFyZWFPYmplY3QtPnNldEhUTUxBcmVhRWxlbWVudChzdGF0aWNfY2FzdDxIVE1MQXJl
YUVsZW1lbnQqPihjdXJyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIGFyZWFPYmplY3QtPnNl
dEhUTUxNYXBFbGVtZW50KG1hcCk7Ci0gICAgICAgICAgICAgICAgICAgIGFyZWFPYmplY3QtPnNl
dFBhcmVudCh0aGlzKTsKLQotICAgICAgICAgICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChh
cmVhT2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9CisgICAgYWRkSW1hZ2VNYXBDaGlsZHJlbigpOworICAgIGFkZFRleHRGaWVsZENoaWxk
cmVuKCk7CiB9CiAgICAgICAgIAogY29uc3QgQXRvbWljU3RyaW5nJiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjphcmlhTGl2ZVJlZ2lvblN0YXR1cygpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDk3NjM4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiwyNCBAQAogICAgIHJl
dHVybiBMYXlvdXRQb2ludChyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QueSgpICsg
cmVjdC5oZWlnaHQoKSAvIDIpOwogfQogCitMYXlvdXRSZWN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OmJvdW5kaW5nQm94Rm9yUXVhZHMoUmVuZGVyT2JqZWN0KiBvYmosIFZlY3RvcjxGbG9hdFF1YWQ+
JiBxdWFkcykKK3sKKyAgICBjb25zdCBzaXplX3QgbiA9IHF1YWRzLnNpemUoKTsKKyAgICBpZiAo
IW4pCisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgCisgICAgTGF5b3V0UmVjdCBy
ZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgTGF5
b3V0UmVjdCByID0gcXVhZHNbaV0uZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICAgICAgaWYg
KCFyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKG9iai0+c3R5bGUoKS0+aGFzQXBwZWFy
YW5jZSgpKQorICAgICAgICAgICAgICAgIG9iai0+dGhlbWUoKS0+YWRqdXN0UmVwYWludFJlY3Qo
b2JqLCByKTsKKyAgICAgICAgICAgIHJlc3VsdC51bml0ZShyKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpw
cmVzcygpIGNvbnN0CiB7CiAgICAgRWxlbWVudCogYWN0aW9uRWxlbSA9IGFjdGlvbkVsZW1lbnQo
KTsKQEAgLTEzMjMsNiArMTM0MSwxMyBAQAogICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+
aXNGcmFtZVZpZXcoKSkKICAgICAgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHdpZGdldCktPmFjY2Vzc2liaWxpdHlIaXRUZXN0KHRvUG9pbnQocG9pbnQgLSB3aWRn
ZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpKTsKICAgICB9CisgICAgCisgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgYXJlIGFueSBtb2NrIGVsZW1lbnRzIHRoYXQgbmVlZCB0byBiZSBoYW5kbGVkLgor
ICAgIHNpemVfdCBjb3VudCA9IG1fY2hpbGRyZW4uc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGsg
PSAwOyBrIDwgY291bnQ7IGsrKykgeworICAgICAgICBpZiAobV9jaGlsZHJlbltrXS0+aXNNb2Nr
T2JqZWN0KCkgJiYgbV9jaGlsZHJlbltrXS0+ZWxlbWVudFJlY3QoKS5jb250YWlucyhwb2ludCkp
CisgICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltrXS0+ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KHBvaW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gY29uc3RfY2FzdDxBY2Nlc3NpYmls
aXR5T2JqZWN0Kj4odGhpcyk7IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvbl9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uX2gKKworI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgiCisKKyNpbmNsdWRlICJUZXh0Q29udHJvbElu
bmVyRWxlbWVudHMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgQWNjZXNz
aWJpbGl0eVNwaW5CdXR0b24gOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QgeworICAg
IAorcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
PiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOworICAg
IAorICAgIHZvaWQgc2V0U3BpbkJ1dHRvbkVsZW1lbnQoU3BpbkJ1dHRvbkVsZW1lbnQqIHNwaW5C
dXR0b24pIHsgbV9zcGluQnV0dG9uRWxlbWVudCA9IHNwaW5CdXR0b247IH0KKyAgICAKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBpbmNyZW1lbnRCdXR0b24oKTsKKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBkZWNyZW1lbnRCdXR0b24oKTsKKworICAgIHZvaWQgc3RlcChpbnQgYW1vdW50KTsK
KyAgICAKK3Byb3RlY3RlZDoKKyAgICBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbigpOworICAgIAor
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIFNwaW5CdXR0b25Sb2xlOyB9CisgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c1NwaW5CdXR0b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkcmVuKCk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7
CisgICAgCisgICAgU3BpbkJ1dHRvbkVsZW1lbnQqIG1fc3BpbkJ1dHRvbkVsZW1lbnQ7Cit9OyAK
KyAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0IDogcHVibGljIEFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0IHsKKyAgICAKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvblBhcnQ+IGNyZWF0ZSgpOworICAgIHZpcnR1YWwgfkFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uUGFydCgpIHsgfQorICAgIAorICAgIGJvb2wgaXNJbmNyZW1lbnRv
cigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmNyZW1lbnRvcjsgfQorICAgIHZvaWQgc2V0SXNJbmNy
ZW1lbnRvcihib29sIHZhbHVlKSB7IG1faXNJbmNyZW1lbnRvciA9IHZhbHVlOyB9CisgICAgCitw
cml2YXRlOgorICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCgpOworICAgIGJvb2wgbV9p
c0luY3JlbWVudG9yIDogMTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IEJ1dHRvblJvbGU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTcGluQnV0dG9uUGFydCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Cit9OworICAgIAoraW5saW5lIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9u
KiB0b0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBvYmplY3QtPmlzU3BpbkJ1dHRvbigpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b24qPihvYmplY3QpOworfQor
ICAgIAoraW5saW5lIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uUGFydCogdG9BY2Nlc3NpYmlsaXR5
U3BpbkJ1dHRvblBhcnQoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VS
VCghb2JqZWN0IHx8IG9iamVjdC0+aXNTcGluQnV0dG9uUGFydCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0Kj4ob2JqZWN0KTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUgCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U3BpbkJ1
dHRvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAJKHJldmlzaW9uIDk3NjM4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVNjcm9sbGJhci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTbGlkZXIuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAgLTMyNCw2ICszMjUsMTIgQEAKICAgICBjYXNlIE1l
bnVMaXN0T3B0aW9uUm9sZToKICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0
aW9uOjpjcmVhdGUoKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTcGluQnV0dG9uUm9sZToK
KyAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b246OmNyZWF0ZSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNwaW5CdXR0b25QYXJ0Um9sZToKKyAgICAgICAgb2JqID0gQWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0OjpjcmVhdGUoKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgb2JqID0gMDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcAko
cmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIAogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3Q6OkFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0KCkKLSAgICA6IG1fcGFyZW50KDApCisgICAgOiBBY2Nlc3NpYmlsaXR5
T2JqZWN0KCkKKyAgICAsIG1fcGFyZW50KDApCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHJldmlzaW9uIDk3NjM4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjkyLDYgKzE2OTIsOCBAQAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVNjcm9sbGJhci5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTbGlkZXIuY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTbGlkZXIuaCcsCisgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U3BpbkJ1dHRvbi5jcHAnLAorICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNwaW5CdXR0b24uaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VGFibGUuY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZS5oJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gOTc2MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDMsOCArMzQzLDggQEAKIHsKICAgICBtX3JlcGVhdGluZ1RpbWVyLnN0b3Ao
KTsKIH0KLQotdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6cmVwZWF0aW5nVGltZXJGaXJlZChUaW1l
cjxTcGluQnV0dG9uRWxlbWVudD4qKQorICAgIAordm9pZCBTcGluQnV0dG9uRWxlbWVudDo6c3Rl
cChpbnQgYW1vdW50KQogewogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yTm9kZSgpKTsKICAgICBpZiAoaW5w
dXQtPmRpc2FibGVkKCkgfHwgaW5wdXQtPmlzUmVhZE9ubHlGb3JtQ29udHJvbCgpKQpAQCAtMzU2
LDggKzM1NiwxMyBAQAogICAgIGlmIChtX3VwRG93blN0YXRlICE9IG1fcHJlc3NTdGFydGluZ1N0
YXRlKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBpbnB1dC0+c3RlcFVwRnJvbVJlbmRl
cmVyKG1fdXBEb3duU3RhdGUgPT0gVXAgPyAxIDogLTEpOworICAgIGlucHV0LT5zdGVwVXBGcm9t
UmVuZGVyZXIoYW1vdW50KTsKIH0KKyAgICAKK3ZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6OnJlcGVh
dGluZ1RpbWVyRmlyZWQoVGltZXI8U3BpbkJ1dHRvbkVsZW1lbnQ+KikKK3sKKyAgICBzdGVwKG1f
dXBEb3duU3RhdGUgPT0gVXAgPyAxIDogLTEpOworfQogCiB2b2lkIFNwaW5CdXR0b25FbGVtZW50
OjpzZXRIb3ZlcmVkKGJvb2wgZmxhZykKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCShyZXZpc2lvbiA5NzYz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDggQEAKICAgICBVcERvd25TdGF0ZSB1
cERvd25TdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXBEb3duU3RhdGU7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZUNhcHR1cmUoKTsKIAorICAgIHZvaWQgc3RlcChpbnQgYW1vdW50KTsKKyAg
ICAKIHByaXZhdGU6CiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk3NjM4KQorKysgU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNyBAQAogICAgIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAKKyAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0
dG9uLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAKICAgICBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA5NzYzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNjczLDYgKzY3Myw4IEBACiAJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9i
amVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMubW0gKi87
IH07CiAJCTI5QUNCMjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBQ0Iy
MTExNDNFNzEyODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggKi87IH07CiAJ
CTI5QUNCMjE0MTQzRTc0OTgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUFDQjIxMzE0
M0U3NDk4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwICovOyB9OworCQky
OUQ3QkNGNjE0NDRBRjU4MDA3MDYxOUMgLyogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlEN0JDRjUxNDQ0
QUY1ODAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCAqLzsgfTsKKwkJMjlE
N0JDRkExNDQ0QUY3RDAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQ3QkNGOTE0NDRBRjdE
MDA3MDYxOUMgLyogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCAqLzsgfTsKIAkJMkJFOEUyQzcx
MkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUw
IC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oICovOyB9OwogCQkyQkU4RTJDOTEyQTU4QTAxMDBG
QUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCRThFMkM4MTJBNThBMDEwMEZBRDU1MCAvKiBIVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwICovOyB9OwogCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAg
LyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDNBMEUzNTEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc3NTYs
NiArNzc1OCw4IEBACiAJCTI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hl
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVhPYmplY3RD
YWNoZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBQ0IyMTExNDNFNzEy
ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5QUNCMjEzMTQzRTc0OTgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5
TW9ja09iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5
RDdCQ0Y1MTQ0NEFGNTgwMDcwNjE5QyAvKiBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRv
bi5jcHA7IHBhdGggPSBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkyOUQ3QkNGOTE0NDRBRjdEMDA3MDYxOUMg
LyogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkJFOEUyQzYxMkE1ODlFQzAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIVE1MTWV0YUNoYXJzZXRQYXJzZXIu
aDsgcGF0aCA9IHBhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkJFOEUyQzgxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNl
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MTWV0
YUNoYXJzZXRQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEM0EwRTM1MTNBN0Q3NjEwMEU4NUFG
MCAvKiBTVkdQYXJzaW5nRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHUGFyc2luZ0Vycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDU3MCw2
ICsxNDU3NCw4IEBACiAJCQkJMjk0ODlGQzUxMkMwMEYwMzAwRDgzRjBGIC8qIEFjY2Vzc2liaWxp
dHlTY3JvbGxWaWV3LmggKi8sCiAJCQkJMjk4MUNBQTkxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vz
c2liaWxpdHlTbGlkZXIuY3BwICovLAogCQkJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8sCisJCQkJMjlEN0JDRjUxNDQ0QUY1ODAwNzA2MTlDIC8q
IEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCAqLywKKwkJCQkyOUQ3QkNGOTE0NDRBRjdEMDA3
MDYxOUMgLyogQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCAqLywKIAkJCQkyOTgxQ0FBQTEzMTgy
MkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAqLywKIAkJCQkyOUE4MTIwRDBG
QkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmggKi8sCiAJCQkJMjk4MUNBQUIx
MzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwICovLApAQCAtMjQ2
MjAsNiArMjQ2MjYsNyBAQAogCQkJCTMxMDYwMzc5MTQzMjgxQ0QwMEFCRjRCQSAvKiBET01XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwNjAzN0IxNDMyODFDRDAw
QUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QUNCMjEyMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVj
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlEN0JDRkExNDQ0QUY3RDAwNzA2MTlDIC8qIEFjY2Vz
c2liaWxpdHlTcGluQnV0dG9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjM3NUVEQjE0NDc4QTAx
MDBGM0NBRTUgLyogTWljcm9EYXRhSXRlbUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUYy
RDY5MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcxQ0NCNDlEMTQ0ODI0QUMwMEM2NzZENiAvKiBJbWFnZUJ5U2l6ZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NDcxLDYgKzI3NDc4LDcgQEAKIAkJCQkzMTA2MDM3NDE0MzI4
MTlDMDBBQkY0QkEgLyogSlNXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTA2MDM3QTE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyOUFDQjIxNDE0M0U3NDk4MDA2QkNBNUYgLyogQWNjZXNz
aWJpbGl0eU1vY2tPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjlEN0JDRjYxNDQ0QUY1
ODAwNzA2MTlDIC8qIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMDkwODdGMTQ0NEZEQjIwMDAyODkxNyAvKiBTY3JvbGxiYXJUaGVtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5QjM3NUVEQTE0NDc4QTAxMDBGM0NBRTUgLyogTWljcm9EYXRhSXRlbUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRjJENkMxNDQzNUQyMTAwMTZBNzg0IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvck1hYy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWw1LWlucHV0LW51bWJlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2h0bWw1
LWlucHV0LW51bWJlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvaHRtbDUtaW5wdXQtbnVtYmVyLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQ+Cit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gZmFsc2U7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBpZD0iYm9keSI+CisKKzxmb3JtPgorPGlucHV0IGlkPSJudW1iZXIiIHR5cGU9Im51
bWJlciI+PGJyPgorPC9mb3JtPgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhhdCBpbnB1dCB0eXBlPSdudW1iZXInIGV4cG9zZXMgdGhlIGFjY2Vzc2liaWxpdHkgb2Yg
aXQncyBzdGVwcGVyIGNvcnJlY3RseSIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJudW1iZXIi
KS5mb2N1cygpOworICAgICAgICB2YXIgdGV4dGZpZWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7CisKKyAgICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNsaWNrIHBv
aW50IGlzIHRoZSBzYW1lIGFzIHRoZSBjaGlsZC4KKyAgICAgICAgc2hvdWxkQmUoInRleHRmaWVs
ZC5jaGlsZHJlbkNvdW50IiwgIjEiKTsKKworICAgICAgICB2YXIgaW5jcmVtZW50b3IgPSB0ZXh0
ZmllbGQuY2hpbGRBdEluZGV4KDApOworCisgICAgICAgIHNob3VsZEJlKCJpbmNyZW1lbnRvci5y
b2xlIiwgIidBWFJvbGU6IEFYSW5jcmVtZW50b3InIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgi
aW5jcmVtZW50b3Iud2lkdGggPiAwIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5jcmVtZW50
b3IuaGVpZ2h0ID4gMCIpOworICAgICAgICBzaG91bGRCZSgiaW5jcmVtZW50b3IuY2hpbGRyZW5D
b3VudCIsICIyIik7CisKKyAgICAgICAgc2hvdWxkQmUoImluY3JlbWVudG9yLmNoaWxkQXRJbmRl
eCgwKS5yb2xlIiwgIidBWFJvbGU6IEFYQnV0dG9uJyIpOworICAgICAgICBzaG91bGRCZSgiaW5j
cmVtZW50b3IuY2hpbGRBdEluZGV4KDApLnN1YnJvbGUiLCAiJ0FYU3Vicm9sZTogQVhJbmNyZW1l
bnRBcnJvdyciKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJpbmNyZW1lbnRvci5jaGlsZEF0SW5k
ZXgoMCkud2lkdGggPiAwIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaW5jcmVtZW50b3IuY2hp
bGRBdEluZGV4KDApLmhlaWdodCA+IDAiKTsKKworICAgICAgICAvLyBJbmNyZW1lbnQuCisgICAg
ICAgIGluY3JlbWVudG9yLmNoaWxkQXRJbmRleCgwKS5wcmVzcygpOworICAgICAgICBzaG91bGRC
ZSgidGV4dGZpZWxkLnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiAxJyIpOworCisgICAgICAgIHNo
b3VsZEJlKCJpbmNyZW1lbnRvci5jaGlsZEF0SW5kZXgoMSkucm9sZSIsICInQVhSb2xlOiBBWEJ1
dHRvbiciKTsKKyAgICAgICAgc2hvdWxkQmUoImluY3JlbWVudG9yLmNoaWxkQXRJbmRleCgxKS5z
dWJyb2xlIiwgIidBWFN1YnJvbGU6IEFYRGVjcmVtZW50QXJyb3cnIik7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgiaW5jcmVtZW50b3IuY2hpbGRBdEluZGV4KDEpLndpZHRoID4gMCIpOworICAgICAg
ICBzaG91bGRCZVRydWUoImluY3JlbWVudG9yLmNoaWxkQXRJbmRleCgxKS5oZWlnaHQgPiAwIik7
CisKKyAgICAgICAgLy8gRGVjcmVtZW50LgorICAgICAgICBpbmNyZW1lbnRvci5jaGlsZEF0SW5k
ZXgoMSkucHJlc3MoKTsKKyAgICAgICAgc2hvdWxkQmUoInRleHRmaWVsZC5zdHJpbmdWYWx1ZSIs
ICInQVhWYWx1ZTogMCciKTsKKyAgICB9CisKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbDUtaW5wdXQtbnVtYmVyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9odG1sNS1pbnB1dC1udW1iZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaHRtbDUtaW5wdXQtbnVtYmVyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorCitUaGlzIHRlc3RzIHRo
YXQgaW5wdXQgdHlwZT0nbnVtYmVyJyBleHBvc2VzIHRoZSBhY2Nlc3NpYmlsaXR5IG9mIGl0J3Mg
c3RlcHBlciBjb3JyZWN0bHkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
dGV4dGZpZWxkLmNoaWxkcmVuQ291bnQgaXMgMQorUEFTUyBpbmNyZW1lbnRvci5yb2xlIGlzICdB
WFJvbGU6IEFYSW5jcmVtZW50b3InCitQQVNTIGluY3JlbWVudG9yLndpZHRoID4gMCBpcyB0cnVl
CitQQVNTIGluY3JlbWVudG9yLmhlaWdodCA+IDAgaXMgdHJ1ZQorUEFTUyBpbmNyZW1lbnRvci5j
aGlsZHJlbkNvdW50IGlzIDIKK1BBU1MgaW5jcmVtZW50b3IuY2hpbGRBdEluZGV4KDApLnJvbGUg
aXMgJ0FYUm9sZTogQVhCdXR0b24nCitQQVNTIGluY3JlbWVudG9yLmNoaWxkQXRJbmRleCgwKS5z
dWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYSW5jcmVtZW50QXJyb3cnCitQQVNTIGluY3JlbWVudG9y
LmNoaWxkQXRJbmRleCgwKS53aWR0aCA+IDAgaXMgdHJ1ZQorUEFTUyBpbmNyZW1lbnRvci5jaGls
ZEF0SW5kZXgoMCkuaGVpZ2h0ID4gMCBpcyB0cnVlCitQQVNTIHRleHRmaWVsZC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogMScKK1BBU1MgaW5jcmVtZW50b3IuY2hpbGRBdEluZGV4KDEpLnJvbGUg
aXMgJ0FYUm9sZTogQVhCdXR0b24nCitQQVNTIGluY3JlbWVudG9yLmNoaWxkQXRJbmRleCgxKS5z
dWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYRGVjcmVtZW50QXJyb3cnCitQQVNTIGluY3JlbWVudG9y
LmNoaWxkQXRJbmRleCgxKS53aWR0aCA+IDAgaXMgdHJ1ZQorUEFTUyBpbmNyZW1lbnRvci5jaGls
ZEF0SW5kZXgoMSkuaGVpZ2h0ID4gMCBpcyB0cnVlCitQQVNTIHRleHRmaWVsZC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogMCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NzYzOCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTE3ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGJ1dHRvbnMg
b2YgbnVtYmVyIHR5cGUgPGlucHV0PiBjb250cm9scyBhcmUgbm90IGZ1bGx5IGFjY2Vzc2libGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMjQxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sNS1pbnB1dC1udW1iZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9odG1sNS1pbnB1dC1udW1i
ZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMTAtMTcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAyOTM5Mjk+IFJFR1JFU1NJT04gKHI5
NzUyNSk6IGlDaGF0IHRyYW5zY3JpcHQgaGFzIGhvcml6b250YWwgc2Nyb2xsIGJhciB3aGVuIHRo
ZSBjb252ZXJzYXRpb24gaW5jbHVkZXMgYSB3aWRlIGltYWdlCg==
</data>
<flag name="review"
          id="109104"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>