<?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>137819</bug_id>
          
          <creation_ts>2014-10-17 07:37:23 -0700</creation_ts>
          <short_desc>[EFL] Introduce EFL Accessibility in WebKit</short_desc>
          <delta_ts>2014-12-11 23:05:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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>
          
          <blocked>139577</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Krzysztof Czech">k.czech</reporter>
          <assigned_to name="Krzysztof Czech">k.czech</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jinwoo7.song</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ryuan.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042373</commentid>
    <comment_count>0</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-17 07:37:23 -0700</bug_when>
    <thetext>EFL Accessibility delivers set of APIs that are used to notify clients that specific actions occurs. In general notifications are sent through XWindow and each client (WebKit) is able to register itself on specific accessibility events and do some actions on accessibility tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042375</commentid>
    <comment_count>1</comment_count>
      <attachid>240014</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-17 08:16:19 -0700</bug_when>
    <thetext>Created attachment 240014
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042377</commentid>
    <comment_count>2</comment_count>
      <attachid>240015</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-17 08:21:04 -0700</bug_when>
    <thetext>Created attachment 240015
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042378</commentid>
    <comment_count>3</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-17 08:25:05 -0700</bug_when>
    <thetext>This patch only stabs out required API and delivers event handler on specific accessibility notifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042396</commentid>
    <comment_count>4</comment_count>
      <attachid>240015</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 10:34:01 -0700</bug_when>
    <thetext>Comment on attachment 240015
proposed patch

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

Just a couple of drive-by comments.

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:20
&gt; +    , m_eventHandler(0)

m_eventHandler(ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, eventHandler, this)) ?

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:27
&gt; +    if (m_eventHandler)

Does this check ever fail? m_eventHandler is initialized in the constructor and never reset elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042784</commentid>
    <comment_count>5</comment_count>
      <attachid>240015</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-20 04:53:21 -0700</bug_when>
    <thetext>Comment on attachment 240015
proposed patch

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

Basically this patch looks good. However I need to understand whole behavior new AX EFL APIs do. Let me take a look again. r- due to Chris and my comments.

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:1
&gt; +#include &quot;config.h&quot;

Missing License.

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:36
&gt; +

Please use #ifdef HAVE_ECORE_X macro for Ecore_X

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.h:1
&gt; +#ifndef WebAccessibility_h

Missing License.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:1037
&gt; +EAPI Eina_Bool ewk_view_accessibility_action_next_get(const Evas_Object* o);

Wrong * place.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:1046
&gt; +EAPI Eina_Bool ewk_view_accessibility_action_prev_get(const Evas_Object* o);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.h:1055
&gt; +EAPI Eina_Bool ewk_view_accessibility_action_read_by_point_get(const Evas_Object* o);

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_accessibility.cpp:1
&gt; +#include &quot;config.h&quot;

Missing License.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042789</commentid>
    <comment_count>6</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-20 05:11:12 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 240015 [details]
&gt; proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240015&amp;action=review
&gt; 
&gt; Just a couple of drive-by comments.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:20
&gt; &gt; +    , m_eventHandler(0)
&gt; 
&gt; m_eventHandler(ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
&gt; eventHandler, this)) ?
Yes, right
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:27
&gt; &gt; +    if (m_eventHandler)
&gt; 
&gt; Does this check ever fail? m_eventHandler is initialized in the constructor
&gt; and never reset elsewhere.
Does not suppose to fail.

Thanks Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042794</commentid>
    <comment_count>7</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-20 05:40:56 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 240015 [details]
&gt; proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240015&amp;action=review
&gt; 
&gt; Basically this patch looks good. However I need to understand whole behavior
&gt; new AX EFL APIs do. Let me take a look again. r- due to Chris and my
&gt; comments.
&gt; 
Let me put some light on this. Basically the simplest test case could look as follows. Take into account accessibility is rather for someone with disabilities to help utilize an application in terms of proper navigation through UI interface, but this is not a rule. For example we have a Browser and additional application that is able to read gestures or do some navigation. Now comes the EFL and accessibility API. Whenever there is a need to notify clients about some specific action that has just happened for example (go to the next element on a web page or next element in UI) ecore_x_e_illume_access_action_..... is sent. All the clients that now how to interpret it, do this in its own context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042795</commentid>
    <comment_count>8</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-20 05:48:06 -0700</bug_when>
    <thetext>&gt; &gt; Basically this patch looks good. However I need to understand whole behavior
&gt; &gt; new AX EFL APIs do. Let me take a look again. r- due to Chris and my
&gt; &gt; comments.
&gt; &gt; 
&gt; Let me put some light on this. Basically the simplest test case could look
&gt; as follows. Take into account accessibility is rather for someone with
&gt; disabilities to help utilize an application in terms of proper navigation
&gt; through UI interface, but this is not a rule. For example we have a Browser
&gt; and additional application that is able to read gestures or do some
&gt; navigation. Now comes the EFL and accessibility API. Whenever there is a
&gt; need to notify clients about some specific action that has just happened for
&gt; example (go to the next element on a web page or next element in UI)
&gt; ecore_x_e_illume_access_action_..... is sent. All the clients that now how
&gt; to interpret it, do this in its own context.

I provided a test case test_ewk2_accessibility and you can think of it as such an application that is able to recognize gestures or do some navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042799</commentid>
    <comment_count>9</comment_count>
      <attachid>240117</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-20 06:56:12 -0700</bug_when>
    <thetext>Created attachment 240117
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042800</commentid>
    <comment_count>10</comment_count>
      <attachid>240118</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-20 06:57:57 -0700</bug_when>
    <thetext>Created attachment 240118
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043007</commentid>
    <comment_count>11</comment_count>
      <attachid>240118</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-20 16:22:59 -0700</bug_when>
    <thetext>Comment on attachment 240118
patch

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

&gt; Source/WebKit2/ChangeLog:48
&gt; +        (WebKit::WebPageProxy::accessibilityObjectReadByPoint):

I think you need to explain why you add these functions.

&gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:109
&gt; +{

notImplemented() ?

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_accessibility.cpp:49
&gt; +    ASSERT_TRUE(ewk_view_accessibility_action_read_by_point_get(webView()));

I wonder how ewk_view_accessibility_action_read_by_point_get() can be true. Because eventually this function will return m_readAction. However m_readAction can be true by accessibilityObjectReadByPoint() though, accessibilityObjectReadByPoint() isn&apos;t implemented. Other functions looks same. 

m_readAction = m_ewkView-&gt;page()-&gt;accessibilityObjectReadByPoint(WebCore::IntPoint(m_currentPoint.x(), m_currentPoint.y()));

&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:145
&gt; +bool WebPageProxy::accessibilityObjectReadByPoint(const WebCore::IntPoint&amp; point)

*point* argument will cause unused param build warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043141</commentid>
    <comment_count>12</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-21 01:29:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 240118 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240118&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:48
&gt; &gt; +        (WebKit::WebPageProxy::accessibilityObjectReadByPoint):
&gt; 
&gt; I think you need to explain why you add these functions.
Well it&apos;s not a final patch. These are only required empty stubs that will form a whole functionality. Basically those functions are needed to have a connection with WebProcess. WebProcess part it not ready yet. I wanted to split it into two parts or three parts.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:109
&gt; &gt; +{
&gt; 
&gt; notImplemented() ?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_accessibility.cpp:49
&gt; &gt; +    ASSERT_TRUE(ewk_view_accessibility_action_read_by_point_get(webView()));
&gt; 
&gt; I wonder how ewk_view_accessibility_action_read_by_point_get() can be true.
&gt; Because eventually this function will return m_readAction. However
&gt; m_readAction can be true by accessibilityObjectReadByPoint() though,
&gt; accessibilityObjectReadByPoint() isn&apos;t implemented. Other functions looks
&gt; same. 
&gt; 
It will be failing until I make a WebProcess part.
&gt; m_readAction =
&gt; m_ewkView-&gt;page()-&gt;accessibilityObjectReadByPoint(WebCore::
&gt; IntPoint(m_currentPoint.x(), m_currentPoint.y()));
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:145
&gt; &gt; +bool WebPageProxy::accessibilityObjectReadByPoint(const WebCore::IntPoint&amp; point)
&gt; 
&gt; *point* argument will cause unused param build warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043151</commentid>
    <comment_count>13</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-21 03:42:22 -0700</bug_when>
    <thetext>&gt; &gt; I wonder how ewk_view_accessibility_action_read_by_point_get() can be true.
&gt; &gt; Because eventually this function will return m_readAction. However
&gt; &gt; m_readAction can be true by accessibilityObjectReadByPoint() though,
&gt; &gt; accessibilityObjectReadByPoint() isn&apos;t implemented. Other functions looks
&gt; &gt; same. 
&gt; &gt; 
&gt; It will be failing until I make a WebProcess part.
To be more clear. WebProcess part will be doing navigation across Accessibility Tree. Basically this means when ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_NEXT happens we&apos;ll focus next element. What may be the result of focusing next element. Well, screen reader may read its content/description/role/name to the user. Ewk API will be getting a status whether for example focusing next element is properly done and test_ewk2_accessibility will be testing it. I already mentioned test_ewk2_accessibility triggering ecore_x_e_illume_... actions and read results. In real scenario screen reader is a target that should be able to speak aloud results (content/description/name) or do something with a role.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043311</commentid>
    <comment_count>14</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-21 16:59:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Comment on attachment 240118 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=240118&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/ChangeLog:48
&gt; &gt; &gt; +        (WebKit::WebPageProxy::accessibilityObjectReadByPoint):
&gt; &gt; 
&gt; &gt; I think you need to explain why you add these functions.
&gt; Well it&apos;s not a final patch. These are only required empty stubs that will
&gt; form a whole functionality. Basically those functions are needed to have a
&gt; connection with WebProcess. WebProcess part it not ready yet. I wanted to
&gt; split it into two parts or three parts.

Aha, I missed test_ewk2_accessibility isn&apos;t included in API test execution list.

&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/WebAccessibility.cpp:109
&gt; &gt; &gt; +{
&gt; &gt; 
&gt; &gt; notImplemented() ?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_accessibility.cpp:49
&gt; &gt; &gt; +    ASSERT_TRUE(ewk_view_accessibility_action_read_by_point_get(webView()));
&gt; &gt; 
&gt; &gt; I wonder how ewk_view_accessibility_action_read_by_point_get() can be true.
&gt; &gt; Because eventually this function will return m_readAction. However
&gt; &gt; m_readAction can be true by accessibilityObjectReadByPoint() though,
&gt; &gt; accessibilityObjectReadByPoint() isn&apos;t implemented. Other functions looks
&gt; &gt; same. 
&gt; &gt; 
&gt; It will be failing until I make a WebProcess part.
&gt; &gt; m_readAction =
&gt; &gt; m_ewkView-&gt;page()-&gt;accessibilityObjectReadByPoint(WebCore::
&gt; &gt; IntPoint(m_currentPoint.x(), m_currentPoint.y()));
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:145
&gt; &gt; &gt; +bool WebPageProxy::accessibilityObjectReadByPoint(const WebCore::IntPoint&amp; point)
&gt; &gt; 
&gt; &gt; *point* argument will cause unused param build warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043312</commentid>
    <comment_count>15</comment_count>
      <attachid>240118</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-10-21 17:00:04 -0700</bug_when>
    <thetext>Comment on attachment 240118
patch

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

LGTM.

&gt;&gt;&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:145
&gt;&gt;&gt; +bool WebPageProxy::accessibilityObjectReadByPoint(const WebCore::IntPoint&amp; point)
&gt;&gt; 
&gt;&gt; *point* argument will cause unused param build warning.
&gt; 
&gt; 

Please land after removing &quot;point&quot; argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043441</commentid>
    <comment_count>16</comment_count>
      <attachid>240273</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-22 07:47:04 -0700</bug_when>
    <thetext>Created attachment 240273
attempt to check bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043710</commentid>
    <comment_count>17</comment_count>
      <attachid>240273</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-10-23 00:24:17 -0700</bug_when>
    <thetext>Comment on attachment 240273
attempt to check bots

Ready to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043714</commentid>
    <comment_count>18</comment_count>
      <attachid>240273</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-23 01:02:40 -0700</bug_when>
    <thetext>Comment on attachment 240273
attempt to check bots

Clearing flags on attachment: 240273

Committed r175098: &lt;http://trac.webkit.org/changeset/175098&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043715</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-23 01:03:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240014</attachid>
            <date>2014-10-17 08:16:19 -0700</date>
            <delta_ts>2014-10-17 08:21:04 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>a11y-illume-access.patch</filename>
            <type>text/plain</type>
            <size>19394</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYWJmMjgxLi42MWZhZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTQtMTAtMTcgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVGTCBBY2Nlc3NpYmlsaXR5IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIEFjY2Vzc2li
aWxpdHkgcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgdXNlZCB0byBub3RpZnkgY2xpZW50cyB0aGF0
IGNlcnRhaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eSBldmVudHMgb2NjdXIuIFV0aWxpemluZyBp
dCBtYWtlcyBXZWJLaXQtRUZMIGNvaGVyZW50IHdpdGggRUZMIG5hdGl2ZQorICAgICAgICBhY2Nl
c3NpYmlsaXR5IGFwcHJvYWNoLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpF
d2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojp3ZWJBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9XZWJBY2Nlc3NpYmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHk6OldlYkFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5Ojp+V2ViQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHk6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6
OmV4ZWN1dGVHZXN0dXJlQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZE5leHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkUHJldik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHk6OnVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6
ZG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6Om1vdXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eTo6ZGlzYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJp
bGl0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6YWN0aXZh
dGVBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cHJldkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnJlYWRBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19hY2Nlc3NpYmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2FjY2Vzc2liaWxpdHkuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAgICAoZXdrX3ZpZXdfYWNjZXNz
aWJpbGl0eV9hY3Rpb25fYWN0aXZhdGVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX25leHRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2liaWxpdHlf
YWN0aW9uX3ByZXZfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9u
X3JlYWRfYnlfcG9pbnRfZ2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3Np
YmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgIChFV0syQWNjZXNzaWJpbGl0eTo6eHdpbmRvdyk6
CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRCeVBvaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZp
b3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5T2JqZWN0
UmVhZE5leHQpOgorCiAyMDE0LTEwLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtTT1VQXSBbV0syXSBXZWJQcm9jZXNzIGFuZCBOZXR3b3Jr
UHJvY2VzcyBpbml0aWFsaXphdGlvbiBjbGVhcnMgY2FjaGUgY29udGVudHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggYzBiZGVjZS4uMjIxMzc4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKQEAgLTgwLDYgKzgwLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9HZXN0
dXJlUmVjb2duaXplci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9TbmFwc2hvdEltYWdlR0wu
Y3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfYXBwbGljYXRpb25fY2FjaGVfbWFuYWdlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfYXV0aF9yZXF1ZXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19iYWNrX2ZvcndhcmRfbGlzdC5jcHAKQEAgLTQ5Miw2ICs0OTMsNyBAQCB0YXJnZXRfbGlu
a19saWJyYXJpZXMoZXdrMlVuaXRUZXN0VXRpbHMgJHtFV0syVW5pdFRlc3RzX0xJQlJBUklFU30p
CiAjIFRoZSAiZXdrIiBvbiB0aGUgdGVzdCBuYW1lIG5lZWRzIHRvIGJlIHN1ZmZpeGVkIHdpdGgg
IjIiLCBvdGhlcndpc2UgaXQKICMgd2lsbCBjbGFzaCB3aXRoIHRlc3RzIGZyb20gdGhlIFdlYktp
dCAxIHRlc3Qgc3VpdGUuCiBzZXQoRVdLMlVuaXRUZXN0c19CSU5BUklFUworICAgIHRlc3RfZXdr
Ml9hY2Nlc3NpYmlsaXR5CiAgICAgdGVzdF9ld2syX2FwcGxpY2F0aW9uX2NhY2hlX21hbmFnZXIK
ICAgICB0ZXN0X2V3azJfYXV0aF9yZXF1ZXN0CiAgICAgdGVzdF9ld2syX2JhY2tfZm9yd2FyZF9s
aXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4
IDFhNDEwZGEuLjZmMzY5OTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuY3BwCkBAIC04Miw2ICs4MiwxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5LmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0yOTcsNiArMzAxLDkgQEAgRXdrVmll
dzo6RXdrVmlldyhXS1ZpZXdSZWYgdmlldywgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiAjZW5k
aWYKICAgICAsIG1fZGlzcGxheVRpbWVyKHRoaXMsICZFd2tWaWV3OjpkaXNwbGF5VGltZXJGaXJl
ZCkKICAgICAsIG1faW5wdXRNZXRob2RDb250ZXh0KElucHV0TWV0aG9kQ29udGV4dEVmbDo6Y3Jl
YXRlKHRoaXMsIHNtYXJ0RGF0YSgpLT5iYXNlLmV2YXMpKQorI2lmIEhBVkUoQUNDRVNTSUJJTElU
WSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgLCBtX3dlYkFjY2Vzc2liaWxpdHkoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJBY2Nlc3NpYmlsaXR5Pih0aGlzKSkKKyNlbmRpZgogICAgICwgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KHRoaXMpCiAgICAgLCBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIocGFnZSgpLCAmbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KQogICAgICwg
bV9pc0FjY2VsZXJhdGVkKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKaW5kZXggZjc5NmM0MC4uY2JjOGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtNTksNiArNTksMTAgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5OwogI2lmIEVOQUJMRShWSUJSQVRJT04pCiBjbGFzcyBWaWJyYXRpb25DbGllbnRFZmw7CiAj
ZW5kaWYKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CitjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5OworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTIwMSw2ICsyMDUsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIg
c21hcnRDbGFzc05hbWVbXTsKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChI
QVZFX0VDT1JFX1gpCisgICAgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5KiB3ZWJBY2Nlc3NpYmls
aXR5KCkgeyByZXR1cm4gbV93ZWJBY2Nlc3NpYmlsaXR5LmdldCgpOyB9CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBFd2tWaWV3KFdLVmlld1JlZiwgRXZhc19PYmplY3QqKTsKICAgICB+RXdrVmll
dygpOwpAQCAtMzAxLDYgKzMwOSwxMCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
d2tDb2xvclBpY2tlcj4gbV9jb2xvclBpY2tlcjsKICNlbmRpZgogCisjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
S2l0OjpXZWJBY2Nlc3NpYmlsaXR5PiBtX3dlYkFjY2Vzc2liaWxpdHk7CisjZW5kaWYKKwogICAg
IFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbCBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQ7CiAgICAgV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9XZWJBY2Nlc3NpYmlsaXR5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yN2U0MTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAKQEAgLTAsMCArMSwxNDkgQEAKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5LmgiCisKKyNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpCisKKyNpbmNsdWRlICJFd2tWaWV3LmgiCisjaW5jbHVkZSAiV0tW
aWV3RWZsLmgiCisjaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkFjY2Vzc2li
aWxpdHk6OldlYkFjY2Vzc2liaWxpdHkoRXdrVmlldyogZXdrVmlldykKKyAgICA6IG1fYWN0aXZh
dGVBY3Rpb24oZmFsc2UpCisgICAgLCBtX25leHRBY3Rpb24oZmFsc2UpCisgICAgLCBtX3ByZXZB
Y3Rpb24oZmFsc2UpCisgICAgLCBtX3JlYWRBY3Rpb24oZmFsc2UpCisgICAgLCBtX2N1cnJlbnRQ
b2ludChXZWJDb3JlOjpJbnRQb2ludCgtMSwgLTEpKQorICAgICwgbV9ld2tWaWV3KGV3a1ZpZXcp
CisgICAgLCBtX2V2ZW50SGFuZGxlcigwKQoreworICAgIG1fZXZlbnRIYW5kbGVyID0gZWNvcmVf
ZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfWF9FVkVOVF9DTElFTlRfTUVTU0FHRSwgZXZlbnRIYW5k
bGVyLCB0aGlzKTsKK30KKworV2ViQWNjZXNzaWJpbGl0eTo6fldlYkFjY2Vzc2liaWxpdHkoKQor
eworICAgIGlmIChtX2V2ZW50SGFuZGxlcikKKyAgICAgICAgZWNvcmVfZXZlbnRfaGFuZGxlcl9k
ZWwobV9ldmVudEhhbmRsZXIpOworfQorCitFaW5hX0Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6ZXZl
bnRIYW5kbGVyKHZvaWQqIGRhdGEsIGludCB0eXBlLCB2b2lkKiBldmVudCkKK3sKKyAgICBXZWJB
Y2Nlc3NpYmlsaXR5KiBheEdlc3R1cmVDb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8V2ViQWNjZXNz
aWJpbGl0eSo+KGRhdGEpOworICAgIGlmICghYXhHZXN0dXJlQ29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSogZXYgPSBz
dGF0aWNfY2FzdDxFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNzYWdlKj4oZXZlbnQpOworICAgIGlm
ICghZXYpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBheEdlc3R1cmVDb250
cm9sbGVyLT5leGVjdXRlR2VzdHVyZUFjdGlvbihldik7Cit9CisKK0VpbmFfQm9vbCBXZWJBY2Nl
c3NpYmlsaXR5OjpleGVjdXRlR2VzdHVyZUFjdGlvbihFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNz
YWdlKiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPm1lc3NhZ2VfdHlwZSA9PSBFQ09SRV9YX0FU
T01fRV9JTExVTUVfQUNDRVNTX0NPTlRST0wpIHsKKyAgICAgICAgdW5zaWduZWQgZ2VzdHVyZVR5
cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXZlbnQtPmRhdGEubFsxXSk7CisgICAgICAgIGlm
IChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9BQ1RJ
VkFURSkKKyAgICAgICAgICAgIHJldHVybiBhY3RpdmF0ZSgpOworCisgICAgICAgIGlmIChnZXN0
dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9SRUFEKQorICAg
ICAgICAgICAgcmV0dXJuIHJlYWQoZXZlbnQtPmRhdGEubFsyXSwgZXZlbnQtPmRhdGEubFszXSk7
CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NF
U1NfQUNUSU9OX09WRVIpCisgICAgICAgICAgICByZXR1cm4gcmVhZChldmVudC0+ZGF0YS5sWzJd
LCBldmVudC0+ZGF0YS5sWzNdKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVf
WF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fUkVBRF9ORVhUKQorICAgICAgICAgICAgcmV0
dXJuIHJlYWROZXh0KCk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRP
TV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1JFQURfUFJFVikKKyAgICAgICAgICAgIHJldHVybiBy
ZWFkUHJldigpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9J
TExVTUVfQUNDRVNTX0FDVElPTl9VUCkKKyAgICAgICAgICAgIHJldHVybiB1cCgpOworCisgICAg
ICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElP
Tl9ET1dOKQorICAgICAgICAgICAgcmV0dXJuIGRvd24oKTsKKworICAgICAgICBpZiAoZ2VzdHVy
ZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fU0NST0xMKQorICAg
ICAgICAgICAgcmV0dXJuIHNjcm9sbCgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBF
Q09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9NT1VTRSkKKyAgICAgICAgICAgIHJl
dHVybiBtb3VzZSgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01f
RV9JTExVTUVfQUNDRVNTX0FDVElPTl9FTkFCTEUpCisgICAgICAgICAgICByZXR1cm4gZW5hYmxl
KCk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9B
Q0NFU1NfQUNUSU9OX0RJU0FCTEUpCisgICAgICAgICAgICByZXR1cm4gZGlzYWJsZSgpOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OmFjdGl2
YXRlKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6
cmVhZChpbnQgeCwgaW50IHkpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9yZWFk
QWN0aW9uID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2lu
dChXZWJDb3JlOjpJbnRQb2ludChtX2N1cnJlbnRQb2ludC54KCksIG1fY3VycmVudFBvaW50Lnko
KSkpOworICAgIHJldHVybiBtX3JlYWRBY3Rpb247Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0
eTo6cmVhZE5leHQoKQoreworICAgIEFTU0VSVChtX2V3a1ZpZXcpOworICAgIG1fbmV4dEFjdGlv
biA9IG1fZXdrVmlldy0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3VzKCk7
CisgICAgcmV0dXJuIG1fbmV4dEFjdGlvbjsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5Ojpy
ZWFkUHJldigpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9wcmV2QWN0aW9uID0g
bV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKTsKKyAg
ICByZXR1cm4gbV9wcmV2QWN0aW9uOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OnVwKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBX
ZWJBY2Nlc3NpYmlsaXR5Ojpkb3duKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjpzY3JvbGwoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vz
c2liaWxpdHk6Om1vdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjplbmFibGUoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2liaWxp
dHk6OmRpc2FibGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJ
TElUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFj
Y2Vzc2liaWxpdHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vz
c2liaWxpdHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDEwNDcxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNj
ZXNzaWJpbGl0eS5oCkBAIC0wLDAgKzEsNTYgQEAKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eV9o
CisjZGVmaW5lIFdlYkFjY2Vzc2liaWxpdHlfaAorCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQor
CisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9YLmg+CisjaW5jbHVkZSA8RWlu
YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKworY2xhc3MgRXdrVmlldzsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHkgeworcHVibGljOgor
ICAgIGV4cGxpY2l0IFdlYkFjY2Vzc2liaWxpdHkoRXdrVmlldyogZXdrVmlldyk7CisgICAgfldl
YkFjY2Vzc2liaWxpdHkoKTsKKworICAgIGJvb2wgYWN0aXZhdGVBY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2YXRlQWN0aW9uOyB9CisgICAgYm9vbCBuZXh0QWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXh0QWN0aW9uOyB9CisgICAgYm9vbCBwcmV2QWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wcmV2QWN0aW9uOyB9CisgICAgYm9vbCByZWFkQWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9yZWFkQWN0aW9uOyB9Citwcml2YXRlOgorICAgIHN0YXRpYyBFaW5hX0Jvb2wgZXZlbnRIYW5k
bGVyKHZvaWQqLCBpbnQsIHZvaWQqKTsKKworICAgIEVpbmFfQm9vbCBleGVjdXRlR2VzdHVyZUFj
dGlvbihFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNzYWdlKik7CisKKyAgICAvLyBBY3Rpb25zCisg
ICAgYm9vbCBhY3RpdmF0ZSgpOworICAgIGJvb2wgcmVhZChpbnQsIGludCk7CisgICAgYm9vbCBy
ZWFkTmV4dCgpOworICAgIGJvb2wgcmVhZFByZXYoKTsKKyAgICBib29sIHVwKCk7CisgICAgYm9v
bCBkb3duKCk7CisgICAgYm9vbCBzY3JvbGwoKTsKKyAgICBib29sIHpvb20oKTsKKyAgICBib29s
IG1vdXNlKCk7CisgICAgYm9vbCBlbmFibGUoKTsKKyAgICBib29sIGRpc2FibGUoKTsKKworICAg
IGJvb2wgbV9hY3RpdmF0ZUFjdGlvbjsKKyAgICBib29sIG1fbmV4dEFjdGlvbjsKKyAgICBib29s
IG1fcHJldkFjdGlvbjsKKyAgICBib29sIG1fcmVhZEFjdGlvbjsKKworICAgIFdlYkNvcmU6Oklu
dFBvaW50IG1fY3VycmVudFBvaW50OworICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKKyAgICBFY29y
ZV9FdmVudF9IYW5kbGVyKiBtX2V2ZW50SGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQorCisjZW5kaWYgLy8gV2ViQWNj
ZXNzaWJpbGl0eV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfYWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfYWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZDUyYTViYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19hY2Nlc3NpYmlsaXR5LmNwcApAQCAtMCwwICsxLDcgQEAKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJld2tfYWNjZXNzaWJpbGl0eS5oIgorCisjaW5jbHVkZSAiRWZs
U2NyZWVuVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRXdrVmlldy5oIgorCitFaW5hX0Jvb2wgZXdr
X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2YXRlX3Jlc3VsdChjb25zdCBFdmFzX09iamVjdCog
ZXdrVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19hY2Nlc3NpYmlsaXR5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
YWNjZXNzaWJpbGl0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYWJj
OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYWNjZXNzaWJpbGl0eS5oCkBAIC0wLDAgKzEsMjAgQEAKKyNpZm5kZWYgZXdrX2FjY2Vzc2li
aWxpdHlfaAorI2RlZmluZSBld2tfYWNjZXNzaWJpbGl0eV9oCisKKyNpbmNsdWRlIDxFaW5hLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworRUFQSSBFaW5h
X0Jvb2wgZXdrX2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2YXRlX3Jlc3VsdChjb25zdCBFdmFz
X09iamVjdCopOworRUFQSSBFaW5hX0Jvb2wgZXdrX2FjY2Vzc2liaWxpdHlfYWN0aW9uX25leHRf
cmVzdWx0KGNvbnN0IEV2YXNfT2JqZWN0Kik7CitFQVBJIEVpbmFfQm9vbCBld2tfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fcHJldl9yZXN1bHQoY29uc3QgRXZhc19PYmplY3QqKTsKK0VBUEkgRWluYV9C
b29sIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl91cF9yZXN1bHQoY29uc3QgRXZhc19PYmplY3Qq
KTsKK0VBUEkgRWluYV9Cb29sIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9kb3duX3Jlc3VsdChj
b25zdCBFdmFzX09iamVjdCopOworRUFQSSBFaW5hX0Jvb2wgZXdrX2FjY2Vzc2liaWxpdHlfYWN0
aW9uX3JlYWRfcmVzdWx0KGNvbnN0IEV2YXNfT2JqZWN0Kik7CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworfQorI2VuZGlmCisjZW5kaWYgLy8gZXdrX2FjY2Vzc2liaWxpdHlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDlhNjE4ZjYuLjBlMzI3
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
QEAgLTQ2LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNlbmRp
ZgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHku
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdGF0aWMgaW5saW5lIEV3
a1ZpZXcqIHRvRXdrVmlld0NoZWNrZWQoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCkBA
IC03ODQsMyArNzg4LDQ3IEBAIEVpbmFfQm9vbCBld2tfdmlld19jb250ZW50c19zaXplX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCogd2lkCiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2
YXRlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CisgICAgcmV0dXJuIGltcGwtPndlYkFjY2Vz
c2liaWxpdHkoKS0+YWN0aXZhdGVBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3
a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOwor
ICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPm5leHRBY3Rpb24oKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcHJldl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBk
ZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCkt
PnByZXZBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0
eV9hY3Rpb25fcmVhZF9ieV9wb2ludF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7
CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJl
dHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPnJlYWRBY3Rpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzNiM2QwYi4u
ODkzMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CkBAIC0xMDE4LDYgKzEwMTgsNDIgQEAgRUFQSSB2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChj
b25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW4KICAqLwogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIEV2YXNfQ29vcmQgKndpZHRoLCBFdmFzX0Nvb3JkICpoZWlnaHQpOwogCisvKioKKyAqIEdl
dCBzdGF0dXMgb2YgdGhlIGFjdGl2YXRlIGFjdGlvbi4gQWN0aXZhdGUgYWN0aW9uIGRlc2NyaWJl
cyB0aGUgY2xpY2suCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fYWN0
aXZhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9m
IHRoZSBuZXh0IGFjdGlvbi4gQWN0aW9uIG5leHQgbW92ZXMgYW5kIGZvY3VzZXMgbmV4dCBvYmpl
Y3QuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pOworCisvKioKKyAqIEdldCBzdGF0dXMgb2YgdGhlIHByZXZpb3Vz
IGFjdGlvbi4gUHJldmlvdXMgYWN0aW9uIG1vdmVzIGFuZCBmb2N1c2VzIHByZXZpb3VzIGVsZW1l
bnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcHJldl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pOworCisvKioKKyAqIEdldCBzdGF0dXMgb2YgdGhlIHJlYWQgYWN0
aW9uLiBSZWFkIGFjdGlvbiBmb2N1c2VzIG9iamVjdCB3aXRoIHNwZWNpZmljIGNvb3JkaW5hdGVz
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VB
UEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iZTJjNzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2FjY2Vzc2liaWxpdHkuY3BwCkBA
IC0wLDAgKzEsNTIgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8
RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWZsU2NyZWVuVXRpbGl0aWVzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2NsYXNzIEVXSzJBY2Nlc3NpYmlsaXR5IDog
cHVibGljIEVXSzJVbml0VGVzdEJhc2UgeworcHJvdGVjdGVkOgorICAgIEVjb3JlX1hfV2luZG93
IHh3aW5kb3coKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmdldEVjb3JlWFdpbmRv
dyhlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdlYlZpZXco
KSkpKTsKKyAgICB9Cit9OworCitURVNUX0YoRVdLMkFjY2Vzc2liaWxpdHksIGV3a19hY2Nlc3Np
YmlsaXR5X2FjdGlvbl9hY3RpdmF0ZSkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19h
Y3Rpb25fYWN0aXZhdGVfc2VuZCh4d2luZG93KCkpOworICAgIGJvb2wgYWN0aXZhdGVTZW5kID0g
ZmFsc2U7CisgICAgd2FpdFVudGlsVHJ1ZShhY3RpdmF0ZVNlbmQsIDEpOworICAgIEFTU0VSVF9U
UlVFKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldCh3ZWJWaWV3KCkp
KTsKK30KKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNzaWJpbGl0eV9hY3Rp
b25fbmV4dCkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19hY3Rpb25fcmVhZF9uZXh0
X3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIG5leHRTZW5kID0gZmFsc2U7CisgICAgd2FpdFVu
dGlsVHJ1ZShuZXh0U2VuZCwgMSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fbmV4dF9nZXQod2ViVmlldygpKSk7Cit9CisKK1RFU1RfRihFV0syQWNjZXNz
aWJpbGl0eSwgZXdrX2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXYpCit7CisgICAgZWNvcmVfeF9l
X2lsbHVtZV9hY2Nlc3NfYWN0aW9uX3JlYWRfcHJldl9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9v
bCBwcmV2U2VuZCA9IGZhbHNlOworICAgIHdhaXRVbnRpbFRydWUocHJldlNlbmQsIDEpOworICAg
IEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KHdlYlZp
ZXcoKSkpOworfQorCitURVNUX0YoRVdLMkFjY2Vzc2liaWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5
X2FjdGlvbl9yZWFkX2J5X3BvaW50KQoreworICAgIGVjb3JlX3hfZV9pbGx1bWVfYWNjZXNzX2Fj
dGlvbl9yZWFkX3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIHJlYWRTZW5kID0gZmFsc2U7Cisg
ICAgd2FpdFVudGlsVHJ1ZShyZWFkU2VuZCwgMSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdf
YWNjZXNzaWJpbGl0eV9hY3Rpb25fcmVhZF9ieV9wb2ludF9nZXQod2ViVmlldygpKSk7Cit9CisK
KyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGMwYzBhMzQuLmI4ODAx
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkxOCw2ICs5
MTgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hv
dCgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkg
JiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0UmVh
ZEJ5UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICBib29sIGFjY2Vzc2liaWxp
dHlPYmplY3RSZWFkUHJldmlvdXMoKTsKKyAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RSZWFk
TmV4dCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1
cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCAwMmU1MjlmLi5j
NDQ0NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJv
eHlFZmwuY3BwCkBAIC0xNDAsNCArMTQwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFs
aXplVUlQb3B1cE1lbnVDbGllbnQoY29uc3QgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRCYXNlCiAg
ICAgbV91aVBvcHVwTWVudUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKKyNpZiBIQVZF
KEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorCitib29sIFdlYlBhZ2VQ
cm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRCeVBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWROZXh0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240015</attachid>
            <date>2014-10-17 08:21:04 -0700</date>
            <delta_ts>2014-10-20 06:56:12 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>a11y-illume-access.patch</filename>
            <type>text/plain</type>
            <size>17936</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYWJmMjgxLi41ZjE2ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTQtMTAtMTcgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVGTCBBY2Nlc3NpYmlsaXR5IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIEFjY2Vzc2li
aWxpdHkgcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgdXNlZCB0byBub3RpZnkgY2xpZW50cyB0aGF0
IGNlcnRhaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eSBldmVudHMgb2NjdXIuIFV0aWxpemluZyBp
dCBtYWtlcyBXZWJLaXQtRUZMIGNvaGVyZW50IHdpdGggRUZMIG5hdGl2ZQorICAgICAgICBhY2Nl
c3NpYmlsaXR5IGFwcHJvYWNoLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpF
d2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojp3ZWJBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9XZWJBY2Nlc3NpYmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHk6OldlYkFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5Ojp+V2ViQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHk6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6
OmV4ZWN1dGVHZXN0dXJlQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZE5leHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkUHJldik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHk6OnVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6
ZG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6Om1vdXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eTo6ZGlzYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJp
bGl0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6YWN0aXZh
dGVBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cHJldkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnJlYWRBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmls
aXR5X2FjdGlvbl9uZXh0X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2Fj
dGlvbl9wcmV2X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9y
ZWFkX2J5X3BvaW50X2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYWNjZXNzaWJp
bGl0eS5jcHA6IEFkZGVkLgorICAgICAgICAoRVdLMkFjY2Vzc2liaWxpdHk6Onh3aW5kb3cpOgor
ICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJl
YWROZXh0KToKKwogMjAxNC0xMC0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gW1dLMl0gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1By
b2Nlc3MgaW5pdGlhbGl6YXRpb24gY2xlYXJzIGNhY2hlIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IGMwYmRlY2UuLjIyMTM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC04MCw2ICs4MCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2FwcGxpY2F0aW9uX2NhY2hlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC00OTIsNiArNDkzLDcgQEAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQog
IyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIy
Iiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQg
MSB0ZXN0IHN1aXRlLgogc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJf
YWNjZXNzaWJpbGl0eQogICAgIHRlc3RfZXdrMl9hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyCiAg
ICAgdGVzdF9ld2syX2F1dGhfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAx
YTQxMGRhLi42ZjM2OTk1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcApAQCAtODIsNiArODIsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5l
ZChIQVZFX0VDT1JFX1gpCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eS5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjk3LDYgKzMwMSw5IEBAIEV3a1ZpZXc6
OkV3a1ZpZXcoV0tWaWV3UmVmIHZpZXcsIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogI2VuZGlm
CiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0aGlzLCAmRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQp
CiAgICAgLCBtX2lucHV0TWV0aG9kQ29udGV4dChJbnB1dE1ldGhvZENvbnRleHRFZmw6OmNyZWF0
ZSh0aGlzLCBzbWFydERhdGEoKS0+YmFzZS5ldmFzKSkKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgICwgbV93ZWJBY2Nlc3NpYmlsaXR5KHN0ZDo6
bWFrZV91bmlxdWU8V2ViQWNjZXNzaWJpbGl0eT4odGhpcykpCisjZW5kaWYKICAgICAsIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCh0aGlzKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKHBhZ2UoKSwgJm1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCkKICAgICAsIG1f
aXNBY2NlbGVyYXRlZCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5oCmluZGV4IGY3OTZjNDAuLmNiYzhmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTU5LDYgKzU5LDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsOwogI2Vu
ZGlmCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQor
Y2xhc3MgV2ViQWNjZXNzaWJpbGl0eTsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yMDEsNiArMjA1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHNt
YXJ0Q2xhc3NOYW1lW107CiAKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFW
RV9FQ09SRV9YKQorICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eSogd2ViQWNjZXNzaWJpbGl0
eSgpIHsgcmV0dXJuIG1fd2ViQWNjZXNzaWJpbGl0eS5nZXQoKTsgfQorI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgRXdrVmlldyhXS1ZpZXdSZWYsIEV2YXNfT2JqZWN0Kik7CiAgICAgfkV3a1ZpZXco
KTsKQEAgLTMwMSw2ICszMDksMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXdr
Q29sb3JQaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eT4gbV93ZWJBY2Nlc3NpYmlsaXR5OworI2VuZGlmCisKICAgICBX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50OwogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjdlNDE0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsMTQ5IEBACisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eS5oIgorCisjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKQorCisjaW5jbHVkZSAiRXdrVmlldy5oIgorI2luY2x1ZGUgIldLVmll
d0VmbC5oIgorI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBY2Nlc3NpYmls
aXR5OjpXZWJBY2Nlc3NpYmlsaXR5KEV3a1ZpZXcqIGV3a1ZpZXcpCisgICAgOiBtX2FjdGl2YXRl
QWN0aW9uKGZhbHNlKQorICAgICwgbV9uZXh0QWN0aW9uKGZhbHNlKQorICAgICwgbV9wcmV2QWN0
aW9uKGZhbHNlKQorICAgICwgbV9yZWFkQWN0aW9uKGZhbHNlKQorICAgICwgbV9jdXJyZW50UG9p
bnQoV2ViQ29yZTo6SW50UG9pbnQoLTEsIC0xKSkKKyAgICAsIG1fZXdrVmlldyhld2tWaWV3KQor
ICAgICwgbV9ldmVudEhhbmRsZXIoMCkKK3sKKyAgICBtX2V2ZW50SGFuZGxlciA9IGVjb3JlX2V2
ZW50X2hhbmRsZXJfYWRkKEVDT1JFX1hfRVZFTlRfQ0xJRU5UX01FU1NBR0UsIGV2ZW50SGFuZGxl
ciwgdGhpcyk7Cit9CisKK1dlYkFjY2Vzc2liaWxpdHk6On5XZWJBY2Nlc3NpYmlsaXR5KCkKK3sK
KyAgICBpZiAobV9ldmVudEhhbmRsZXIpCisgICAgICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfZGVs
KG1fZXZlbnRIYW5kbGVyKTsKK30KKworRWluYV9Cb29sIFdlYkFjY2Vzc2liaWxpdHk6OmV2ZW50
SGFuZGxlcih2b2lkKiBkYXRhLCBpbnQgdHlwZSwgdm9pZCogZXZlbnQpCit7CisgICAgV2ViQWNj
ZXNzaWJpbGl0eSogYXhHZXN0dXJlQ29udHJvbGxlciA9IHN0YXRpY19jYXN0PFdlYkFjY2Vzc2li
aWxpdHkqPihkYXRhKTsKKyAgICBpZiAoIWF4R2VzdHVyZUNvbnRyb2xsZXIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEVjb3JlX1hfRXZlbnRfQ2xpZW50X01lc3NhZ2UqIGV2ID0gc3Rh
dGljX2Nhc3Q8RWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSo+KGV2ZW50KTsKKyAgICBpZiAo
IWV2KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gYXhHZXN0dXJlQ29udHJv
bGxlci0+ZXhlY3V0ZUdlc3R1cmVBY3Rpb24oZXYpOworfQorCitFaW5hX0Jvb2wgV2ViQWNjZXNz
aWJpbGl0eTo6ZXhlY3V0ZUdlc3R1cmVBY3Rpb24oRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2Fn
ZSogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5tZXNzYWdlX3R5cGUgPT0gRUNPUkVfWF9BVE9N
X0VfSUxMVU1FX0FDQ0VTU19DT05UUk9MKSB7CisgICAgICAgIHVuc2lnbmVkIGdlc3R1cmVUeXBl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV2ZW50LT5kYXRhLmxbMV0pOworICAgICAgICBpZiAo
Z2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fQUNUSVZB
VEUpCisgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGUoKTsKKworICAgICAgICBpZiAoZ2VzdHVy
ZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fUkVBRCkKKyAgICAg
ICAgICAgIHJldHVybiByZWFkKGV2ZW50LT5kYXRhLmxbMl0sIGV2ZW50LT5kYXRhLmxbM10pOwor
CisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNT
X0FDVElPTl9PVkVSKQorICAgICAgICAgICAgcmV0dXJuIHJlYWQoZXZlbnQtPmRhdGEubFsyXSwg
ZXZlbnQtPmRhdGEubFszXSk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hf
QVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1JFQURfTkVYVCkKKyAgICAgICAgICAgIHJldHVy
biByZWFkTmV4dCgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01f
RV9JTExVTUVfQUNDRVNTX0FDVElPTl9SRUFEX1BSRVYpCisgICAgICAgICAgICByZXR1cm4gcmVh
ZFByZXYoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxM
VU1FX0FDQ0VTU19BQ1RJT05fVVApCisgICAgICAgICAgICByZXR1cm4gdXAoKTsKKworICAgICAg
ICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05f
RE9XTikKKyAgICAgICAgICAgIHJldHVybiBkb3duKCk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVU
eXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1NDUk9MTCkKKyAgICAg
ICAgICAgIHJldHVybiBzY3JvbGwoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNP
UkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fTU9VU0UpCisgICAgICAgICAgICByZXR1
cm4gbW91c2UoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0Vf
SUxMVU1FX0FDQ0VTU19BQ1RJT05fRU5BQkxFKQorICAgICAgICAgICAgcmV0dXJuIGVuYWJsZSgp
OworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUND
RVNTX0FDVElPTl9ESVNBQkxFKQorICAgICAgICAgICAgcmV0dXJuIGRpc2FibGUoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjphY3RpdmF0
ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OnJl
YWQoaW50IHgsIGludCB5KQoreworICAgIEFTU0VSVChtX2V3a1ZpZXcpOworICAgIG1fcmVhZEFj
dGlvbiA9IG1fZXdrVmlldy0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZEJ5UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQobV9jdXJyZW50UG9pbnQueCgpLCBtX2N1cnJlbnRQb2ludC55KCkp
KTsKKyAgICByZXR1cm4gbV9yZWFkQWN0aW9uOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6
OnJlYWROZXh0KCkKK3sKKyAgICBBU1NFUlQobV9ld2tWaWV3KTsKKyAgICBtX25leHRBY3Rpb24g
PSBtX2V3a1ZpZXctPnBhZ2UoKS0+YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91cygpOwor
ICAgIHJldHVybiBtX25leHRBY3Rpb247Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6cmVh
ZFByZXYoKQoreworICAgIEFTU0VSVChtX2V3a1ZpZXcpOworICAgIG1fcHJldkFjdGlvbiA9IG1f
ZXdrVmlldy0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3VzKCk7CisgICAg
cmV0dXJuIG1fcHJldkFjdGlvbjsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5Ojp1cCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2Vi
QWNjZXNzaWJpbGl0eTo6ZG93bigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6c2Nyb2xsKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3Np
YmlsaXR5Ojptb3VzZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6ZW5hYmxlKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5
OjpkaXNhYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJ
VFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nl
c3NpYmlsaXR5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nlc3Np
YmlsaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxMDQ3MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vz
c2liaWxpdHkuaApAQCAtMCwwICsxLDU2IEBACisjaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlfaAor
I2RlZmluZSBXZWJBY2Nlc3NpYmlsaXR5X2gKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKwor
I2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPEVpbmEu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisKK2NsYXNzIEV3a1ZpZXc7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5IHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBXZWJBY2Nlc3NpYmlsaXR5KEV3a1ZpZXcqIGV3a1ZpZXcpOworICAgIH5XZWJB
Y2Nlc3NpYmlsaXR5KCk7CisKKyAgICBib29sIGFjdGl2YXRlQWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9hY3RpdmF0ZUFjdGlvbjsgfQorICAgIGJvb2wgbmV4dEFjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmV4dEFjdGlvbjsgfQorICAgIGJvb2wgcHJldkFjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJldkFjdGlvbjsgfQorICAgIGJvb2wgcmVhZEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZEFjdGlvbjsgfQorcHJpdmF0ZToKKyAgICBzdGF0aWMgRWluYV9Cb29sIGV2ZW50SGFuZGxl
cih2b2lkKiwgaW50LCB2b2lkKik7CisKKyAgICBFaW5hX0Jvb2wgZXhlY3V0ZUdlc3R1cmVBY3Rp
b24oRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSopOworCisgICAgLy8gQWN0aW9ucworICAg
IGJvb2wgYWN0aXZhdGUoKTsKKyAgICBib29sIHJlYWQoaW50LCBpbnQpOworICAgIGJvb2wgcmVh
ZE5leHQoKTsKKyAgICBib29sIHJlYWRQcmV2KCk7CisgICAgYm9vbCB1cCgpOworICAgIGJvb2wg
ZG93bigpOworICAgIGJvb2wgc2Nyb2xsKCk7CisgICAgYm9vbCB6b29tKCk7CisgICAgYm9vbCBt
b3VzZSgpOworICAgIGJvb2wgZW5hYmxlKCk7CisgICAgYm9vbCBkaXNhYmxlKCk7CisKKyAgICBi
b29sIG1fYWN0aXZhdGVBY3Rpb247CisgICAgYm9vbCBtX25leHRBY3Rpb247CisgICAgYm9vbCBt
X3ByZXZBY3Rpb247CisgICAgYm9vbCBtX3JlYWRBY3Rpb247CisKKyAgICBXZWJDb3JlOjpJbnRQ
b2ludCBtX2N1cnJlbnRQb2ludDsKKyAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7CisgICAgRWNvcmVf
RXZlbnRfSGFuZGxlciogbV9ldmVudEhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKKworI2VuZGlmIC8vIFdlYkFjY2Vz
c2liaWxpdHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCmluZGV4IDlhNjE4ZjYuLjBlMzI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTQ2LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2lu
Y2x1ZGUgIldlYkFjY2Vzc2liaWxpdHkuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBzdGF0aWMgaW5saW5lIEV3a1ZpZXcqIHRvRXdrVmlld0NoZWNrZWQoY29uc3QgRXZh
c19PYmplY3QqIGV2YXNPYmplY3QpCkBAIC03ODQsMyArNzg4LDQ3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19jb250ZW50c19zaXplX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19D
b29yZCogd2lkCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KKworRWluYV9Cb29sIGV3a192aWV3X2Fj
Y2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmll
dykKK3sKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQor
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIGltcGwtPndlYkFjY2Vzc2liaWxpdHkoKS0+YWN0aXZhdGVBY3Rpb24oKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAm
JiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5
KCktPm5leHRBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fcHJldl9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYg
SEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBp
bXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPnByZXZBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jv
b2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcmVhZF9ieV9wb2ludF9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPnJl
YWRBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKaW5kZXggYzNiM2QwYi4uODkzMWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCkBAIC0xMDE4LDYgKzEwMTgsNDIgQEAgRUFQSSB2b2lk
IGV3a192aWV3X2JnX2NvbG9yX2dldChjb25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQg
KmcsIGludCAqYiwgaW4KICAqLwogRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGVudHNfc2l6
ZV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8sIEV2YXNfQ29vcmQgKndpZHRoLCBFdmFzX0Nvb3Jk
ICpoZWlnaHQpOwogCisvKioKKyAqIEdldCBzdGF0dXMgb2YgdGhlIGFjdGl2YXRlIGFjdGlvbi4g
QWN0aXZhdGUgYWN0aW9uIGRlc2NyaWJlcyB0aGUgY2xpY2suCisgKgorICogQHBhcmFtIG8gdmll
dyBvZiB0aGUgb2JqZWN0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywg
b3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdf
YWNjZXNzaWJpbGl0eV9hY3Rpb25fYWN0aXZhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
KworLyoqCisgKiBHZXQgc3RhdHVzIG9mIHRoZSBuZXh0IGFjdGlvbi4gQWN0aW9uIG5leHQgbW92
ZXMgYW5kIGZvY3VzZXMgbmV4dCBvYmplY3QuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUg
b2JqZWN0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fbmV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pOworCisvKioKKyAqIEdl
dCBzdGF0dXMgb2YgdGhlIHByZXZpb3VzIGFjdGlvbi4gUHJldmlvdXMgYWN0aW9uIG1vdmVzIGFu
ZCBmb2N1c2VzIHByZXZpb3VzIGVsZW1lbnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUg
b2JqZWN0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlO
QV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fcHJldl9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pOworCisvKioKKyAqIEdl
dCBzdGF0dXMgb2YgdGhlIHJlYWQgYWN0aW9uLiBSZWFkIGFjdGlvbiBmb2N1c2VzIG9iamVjdCB3
aXRoIHNwZWNpZmljIGNvb3JkaW5hdGVzLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9i
amVjdAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFf
RkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxp
dHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTJjNzBiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2FjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisK
KyNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlIDxF
Y29yZV9FdmFzLmg+CisjaW5jbHVkZSA8RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWZs
U2NyZWVuVXRpbGl0aWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2Ns
YXNzIEVXSzJBY2Nlc3NpYmlsaXR5IDogcHVibGljIEVXSzJVbml0VGVzdEJhc2UgeworcHJvdGVj
dGVkOgorICAgIEVjb3JlX1hfV2luZG93IHh3aW5kb3coKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OmdldEVjb3JlWFdpbmRvdyhlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNf
b2JqZWN0X2V2YXNfZ2V0KHdlYlZpZXcoKSkpKTsKKyAgICB9Cit9OworCitURVNUX0YoRVdLMkFj
Y2Vzc2liaWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9hY3RpdmF0ZSkKK3sKKyAgICBl
Y29yZV94X2VfaWxsdW1lX2FjY2Vzc19hY3Rpb25fYWN0aXZhdGVfc2VuZCh4d2luZG93KCkpOwor
ICAgIGJvb2wgYWN0aXZhdGVTZW5kID0gZmFsc2U7CisgICAgd2FpdFVudGlsVHJ1ZShhY3RpdmF0
ZVNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9u
X2FjdGl2YXRlX2dldCh3ZWJWaWV3KCkpKTsKK30KKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5
LCBld2tfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dCkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1l
X2FjY2Vzc19hY3Rpb25fcmVhZF9uZXh0X3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIG5leHRT
ZW5kID0gZmFsc2U7CisgICAgd2FpdFVudGlsVHJ1ZShuZXh0U2VuZCwgMSk7CisgICAgQVNTRVJU
X1RSVUUoZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQod2ViVmlldygpKSk7
Cit9CisKK1RFU1RfRihFV0syQWNjZXNzaWJpbGl0eSwgZXdrX2FjY2Vzc2liaWxpdHlfYWN0aW9u
X3ByZXYpCit7CisgICAgZWNvcmVfeF9lX2lsbHVtZV9hY2Nlc3NfYWN0aW9uX3JlYWRfcHJldl9z
ZW5kKHh3aW5kb3coKSk7CisgICAgYm9vbCBwcmV2U2VuZCA9IGZhbHNlOworICAgIHdhaXRVbnRp
bFRydWUocHJldlNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2liaWxp
dHlfYWN0aW9uX3ByZXZfZ2V0KHdlYlZpZXcoKSkpOworfQorCitURVNUX0YoRVdLMkFjY2Vzc2li
aWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9yZWFkX2J5X3BvaW50KQoreworICAgIGVj
b3JlX3hfZV9pbGx1bWVfYWNjZXNzX2FjdGlvbl9yZWFkX3NlbmQoeHdpbmRvdygpKTsKKyAgICBi
b29sIHJlYWRTZW5kID0gZmFsc2U7CisgICAgd2FpdFVudGlsVHJ1ZShyZWFkU2VuZCwgMSk7Cisg
ICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcmVhZF9ieV9wb2lu
dF9nZXQod2ViVmlldygpKSk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpICYm
IGRlZmluZWQoSEFWRV9FQ09SRV9YKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGMwYzBhMzQuLmI4ODAxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTkxOCw2ICs5MTgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
TmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShFRkwp
ICYmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgYm9v
bCBhY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZEJ5UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
KTsKKyAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKTsKKyAgICBib29s
IGFjY2Vzc2liaWxpdHlPYmplY3RSZWFkTmV4dCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAg
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlBhZ2VDb25maWd1cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFn
ZVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5
RWZsLmNwcAppbmRleCAwMmU1MjlmLi5jNDQ0NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCkBAIC0xNDAsNCArMTQwLDI2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplVUlQb3B1cE1lbnVDbGllbnQoY29uc3QgV0tQYWdl
VUlQb3B1cE1lbnVDbGllbnRCYXNlCiAgICAgbV91aVBvcHVwTWVudUNsaWVudC5pbml0aWFsaXpl
KGNsaWVudCk7CiB9CiAKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9F
Q09SRV9YKQorCitib29sIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRCeVBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJQYWdlUHJveHk6OmFjY2Vzc2li
aWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVj
dFJlYWROZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="264767"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240117</attachid>
            <date>2014-10-20 06:56:12 -0700</date>
            <delta_ts>2014-10-20 06:57:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a11y-illume-access.patch</filename>
            <type>text/plain</type>
            <size>20706</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYWJmMjgxLi41ZjE2ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTQtMTAtMTcgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVGTCBBY2Nlc3NpYmlsaXR5IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIEFjY2Vzc2li
aWxpdHkgcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgdXNlZCB0byBub3RpZnkgY2xpZW50cyB0aGF0
IGNlcnRhaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eSBldmVudHMgb2NjdXIuIFV0aWxpemluZyBp
dCBtYWtlcyBXZWJLaXQtRUZMIGNvaGVyZW50IHdpdGggRUZMIG5hdGl2ZQorICAgICAgICBhY2Nl
c3NpYmlsaXR5IGFwcHJvYWNoLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpF
d2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojp3ZWJBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9XZWJBY2Nlc3NpYmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHk6OldlYkFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5Ojp+V2ViQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHk6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6
OmV4ZWN1dGVHZXN0dXJlQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZE5leHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkUHJldik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHk6OnVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6
ZG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6Om1vdXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eTo6ZGlzYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJp
bGl0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6YWN0aXZh
dGVBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cHJldkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnJlYWRBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmls
aXR5X2FjdGlvbl9uZXh0X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2Fj
dGlvbl9wcmV2X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9y
ZWFkX2J5X3BvaW50X2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYWNjZXNzaWJp
bGl0eS5jcHA6IEFkZGVkLgorICAgICAgICAoRVdLMkFjY2Vzc2liaWxpdHk6Onh3aW5kb3cpOgor
ICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJl
YWROZXh0KToKKwogMjAxNC0xMC0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gW1dLMl0gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1By
b2Nlc3MgaW5pdGlhbGl6YXRpb24gY2xlYXJzIGNhY2hlIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IGMwYmRlY2UuLjIyMTM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC04MCw2ICs4MCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2FwcGxpY2F0aW9uX2NhY2hlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC00OTIsNiArNDkzLDcgQEAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQog
IyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIy
Iiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQg
MSB0ZXN0IHN1aXRlLgogc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJf
YWNjZXNzaWJpbGl0eQogICAgIHRlc3RfZXdrMl9hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyCiAg
ICAgdGVzdF9ld2syX2F1dGhfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAx
YTQxMGRhLi42ZjM2OTk1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcApAQCAtODIsNiArODIsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5l
ZChIQVZFX0VDT1JFX1gpCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eS5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjk3LDYgKzMwMSw5IEBAIEV3a1ZpZXc6
OkV3a1ZpZXcoV0tWaWV3UmVmIHZpZXcsIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogI2VuZGlm
CiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0aGlzLCAmRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQp
CiAgICAgLCBtX2lucHV0TWV0aG9kQ29udGV4dChJbnB1dE1ldGhvZENvbnRleHRFZmw6OmNyZWF0
ZSh0aGlzLCBzbWFydERhdGEoKS0+YmFzZS5ldmFzKSkKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgICwgbV93ZWJBY2Nlc3NpYmlsaXR5KHN0ZDo6
bWFrZV91bmlxdWU8V2ViQWNjZXNzaWJpbGl0eT4odGhpcykpCisjZW5kaWYKICAgICAsIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCh0aGlzKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKHBhZ2UoKSwgJm1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCkKICAgICAsIG1f
aXNBY2NlbGVyYXRlZCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5oCmluZGV4IGY3OTZjNDAuLmNiYzhmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTU5LDYgKzU5LDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsOwogI2Vu
ZGlmCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQor
Y2xhc3MgV2ViQWNjZXNzaWJpbGl0eTsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yMDEsNiArMjA1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHNt
YXJ0Q2xhc3NOYW1lW107CiAKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFW
RV9FQ09SRV9YKQorICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eSogd2ViQWNjZXNzaWJpbGl0
eSgpIHsgcmV0dXJuIG1fd2ViQWNjZXNzaWJpbGl0eS5nZXQoKTsgfQorI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgRXdrVmlldyhXS1ZpZXdSZWYsIEV2YXNfT2JqZWN0Kik7CiAgICAgfkV3a1ZpZXco
KTsKQEAgLTMwMSw2ICszMDksMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXdr
Q29sb3JQaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eT4gbV93ZWJBY2Nlc3NpYmlsaXR5OworI2VuZGlmCisKICAgICBX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50OwogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTc3MDUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2Nl
c3NpYmlsaXR5LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9F
Q09SRV9YKQorCisjaW5jbHVkZSAiRXdrVmlldy5oIgorI2luY2x1ZGUgIldLVmlld0VmbC5oIgor
I2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBY2Nlc3NpYmlsaXR5OjpXZWJB
Y2Nlc3NpYmlsaXR5KEV3a1ZpZXcqIGV3a1ZpZXcpCisgICAgOiBtX2FjdGl2YXRlQWN0aW9uKGZh
bHNlKQorICAgICwgbV9uZXh0QWN0aW9uKGZhbHNlKQorICAgICwgbV9wcmV2QWN0aW9uKGZhbHNl
KQorICAgICwgbV9yZWFkQWN0aW9uKGZhbHNlKQorICAgICwgbV9jdXJyZW50UG9pbnQoV2ViQ29y
ZTo6SW50UG9pbnQoLTEsIC0xKSkKKyAgICAsIG1fZXdrVmlldyhld2tWaWV3KQorICAgICwgbV9l
dmVudEhhbmRsZXIoZWNvcmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfWF9FVkVOVF9DTElFTlRf
TUVTU0FHRSwgZXZlbnRIYW5kbGVyLCB0aGlzKSkKK3sKK30KKworV2ViQWNjZXNzaWJpbGl0eTo6
fldlYkFjY2Vzc2liaWxpdHkoKQoreworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfZGVsKG1fZXZl
bnRIYW5kbGVyKTsKK30KKworRWluYV9Cb29sIFdlYkFjY2Vzc2liaWxpdHk6OmV2ZW50SGFuZGxl
cih2b2lkKiBkYXRhLCBpbnQsIHZvaWQqIGV2ZW50KQoreworICAgIFdlYkFjY2Vzc2liaWxpdHkq
IHdlYkFjY2Vzc2liaWxpdHkgPSBzdGF0aWNfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5Kj4oZGF0YSk7
CisgICAgaWYgKCF3ZWJBY2Nlc3NpYmlsaXR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNzYWdlKiBldiA9IHN0YXRpY19jYXN0PEVjb3JlX1hf
RXZlbnRfQ2xpZW50X01lc3NhZ2UqPihldmVudCk7CisgICAgaWYgKCFldikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHdlYkFjY2Vzc2liaWxpdHktPmFjdGlvbihldik7Cit9
CisKK0VpbmFfQm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjphY3Rpb24oRWNvcmVfWF9FdmVudF9DbGll
bnRfTWVzc2FnZSogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5tZXNzYWdlX3R5cGUgPT0gRUNP
UkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19DT05UUk9MKSB7CisgICAgICAgIHVuc2lnbmVkIGdl
c3R1cmVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV2ZW50LT5kYXRhLmxbMV0pOworICAg
ICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJ
T05fQUNUSVZBVEUpCisgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGUoKTsKKworICAgICAgICBp
ZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fUkVB
RCkKKyAgICAgICAgICAgIHJldHVybiByZWFkKGV2ZW50LT5kYXRhLmxbMl0sIGV2ZW50LT5kYXRh
LmxbM10pOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExV
TUVfQUNDRVNTX0FDVElPTl9PVkVSKQorICAgICAgICAgICAgcmV0dXJuIHJlYWQoZXZlbnQtPmRh
dGEubFsyXSwgZXZlbnQtPmRhdGEubFszXSk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09
IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1JFQURfTkVYVCkKKyAgICAgICAg
ICAgIHJldHVybiByZWFkTmV4dCgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09S
RV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9SRUFEX1BSRVYpCisgICAgICAgICAgICBy
ZXR1cm4gcmVhZFByZXYoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9B
VE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fVVApCisgICAgICAgICAgICByZXR1cm4gdXAoKTsK
KworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VT
U19BQ1RJT05fRE9XTikKKyAgICAgICAgICAgIHJldHVybiBkb3duKCk7CisKKyAgICAgICAgaWYg
KGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1NDUk9M
TCkKKyAgICAgICAgICAgIHJldHVybiBzY3JvbGwoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5
cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fTU9VU0UpCisgICAgICAg
ICAgICByZXR1cm4gbW91c2UoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVf
WF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fRU5BQkxFKQorICAgICAgICAgICAgcmV0dXJu
IGVuYWJsZSgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9J
TExVTUVfQUNDRVNTX0FDVElPTl9ESVNBQkxFKQorICAgICAgICAgICAgcmV0dXJuIGRpc2FibGUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5
OjphY3RpdmF0ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2li
aWxpdHk6OnJlYWQoaW50LCBpbnQpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9y
ZWFkQWN0aW9uID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQ
b2ludChXZWJDb3JlOjpJbnRQb2ludChtX2N1cnJlbnRQb2ludC54KCksIG1fY3VycmVudFBvaW50
LnkoKSkpOworICAgIHJldHVybiBtX3JlYWRBY3Rpb247Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJp
bGl0eTo6cmVhZE5leHQoKQoreworICAgIEFTU0VSVChtX2V3a1ZpZXcpOworICAgIG1fbmV4dEFj
dGlvbiA9IG1fZXdrVmlldy0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3Vz
KCk7CisgICAgcmV0dXJuIG1fbmV4dEFjdGlvbjsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5
OjpyZWFkUHJldigpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9wcmV2QWN0aW9u
ID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKTsK
KyAgICByZXR1cm4gbV9wcmV2QWN0aW9uOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OnVw
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBXZWJBY2Nlc3NpYmlsaXR5Ojpkb3duKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjpzY3JvbGwoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFj
Y2Vzc2liaWxpdHk6Om1vdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjplbmFibGUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2li
aWxpdHk6OmRpc2FibGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNT
SUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nlc3NpYmlsaXR5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nlc3NpYmlsaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDc4NDYxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuaApAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eV9oCisjZGVm
aW5lIFdlYkFjY2Vzc2liaWxpdHlfaAorCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVf
WC5oPgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisK
K2NsYXNzIEV3a1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJBY2Nlc3Np
YmlsaXR5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBY2Nlc3NpYmlsaXR5KEV3a1ZpZXcq
IGV3a1ZpZXcpOworICAgIH5XZWJBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICBib29sIGFjdGl2YXRl
QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmF0ZUFjdGlvbjsgfQorICAgIGJvb2wgbmV4
dEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFjdGlvbjsgfQorICAgIGJvb2wgcHJldkFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkFjdGlvbjsgfQorICAgIGJvb2wgcmVhZEFjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZEFjdGlvbjsgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBFaW5hX0Jvb2wgZXZlbnRIYW5kbGVyKHZvaWQqLCBpbnQsIHZvaWQqKTsKKworICAgIEVpbmFf
Qm9vbCBhY3Rpb24oRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSopOworCisgICAgLy8gQWN0
aW9ucworICAgIGJvb2wgYWN0aXZhdGUoKTsKKyAgICBib29sIHJlYWQoaW50LCBpbnQpOworICAg
IGJvb2wgcmVhZE5leHQoKTsKKyAgICBib29sIHJlYWRQcmV2KCk7CisgICAgYm9vbCB1cCgpOwor
ICAgIGJvb2wgZG93bigpOworICAgIGJvb2wgc2Nyb2xsKCk7CisgICAgYm9vbCB6b29tKCk7Cisg
ICAgYm9vbCBtb3VzZSgpOworICAgIGJvb2wgZW5hYmxlKCk7CisgICAgYm9vbCBkaXNhYmxlKCk7
CisKKyAgICBib29sIG1fYWN0aXZhdGVBY3Rpb247CisgICAgYm9vbCBtX25leHRBY3Rpb247Cisg
ICAgYm9vbCBtX3ByZXZBY3Rpb247CisgICAgYm9vbCBtX3JlYWRBY3Rpb247CisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX2N1cnJlbnRQb2ludDsKKyAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7Cisg
ICAgRWNvcmVfRXZlbnRfSGFuZGxlciogbV9ldmVudEhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChI
QVZFX0VDT1JFX1gpCisKKyNlbmRpZiAvLyBXZWJBY2Nlc3NpYmlsaXR5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA5YTYxOGY2Li4wZTMy
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CkBAIC00Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjZW5k
aWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGlubGluZSBF
d2tWaWV3KiB0b0V3a1ZpZXdDaGVja2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQpA
QCAtNzg0LDMgKzc4OCw0NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQqIHdpZAogCiAgICAgcmV0dXJu
IHRydWU7CiB9CisKK0VpbmFfQm9vbCBld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9hY3Rp
dmF0ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nl
c3NpYmlsaXR5KCktPmFjdGl2YXRlQWN0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShl
d2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192
aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX25leHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQoreworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsK
KyAgICByZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgpLT5uZXh0QWN0aW9uKCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYg
ZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIGltcGwsIGZhbHNlKTsKKyAgICByZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgp
LT5wcmV2QWN0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxp
dHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKKyAgICBy
ZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgpLT5yZWFkQWN0aW9uKCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGMzYjNkMGIu
Ljg5MzFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aApAQCAtMTAxOCw2ICsxMDE4LDQyIEBAIEVBUEkgdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGluCiAgKi8KIEVB
UEkgRWluYV9Cb29sIGV3a192aWV3X2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkICp3aWR0aCwgRXZhc19Db29yZCAqaGVpZ2h0KTsKIAorLyoqCisgKiBH
ZXQgc3RhdHVzIG9mIHRoZSBhY3RpdmF0ZSBhY3Rpb24uIEFjdGl2YXRlIGFjdGlvbiBkZXNjcmli
ZXMgdGhlIGNsaWNrLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2Fj
dGl2YXRlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogR2V0IHN0YXR1cyBv
ZiB0aGUgbmV4dCBhY3Rpb24uIEFjdGlvbiBuZXh0IG1vdmVzIGFuZCBmb2N1c2VzIG5leHQgb2Jq
ZWN0LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX25leHRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9mIHRoZSBwcmV2aW91
cyBhY3Rpb24uIFByZXZpb3VzIGFjdGlvbiBtb3ZlcyBhbmQgZm9jdXNlcyBwcmV2aW91cyBlbGVt
ZW50LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9mIHRoZSByZWFkIGFj
dGlvbi4gUmVhZCBhY3Rpb24gZm9jdXNlcyBvYmplY3Qgd2l0aCBzcGVjaWZpYyBjb29yZGluYXRl
cy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9mIHRoZSBvYmplY3QKKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9yZWFkX2J5X3BvaW50
X2dldChjb25zdCBFdmFzX09iamVjdCogbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfYWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfYWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmUyYzcwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcApA
QCAtMCwwICsxLDUyIEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUg
PEVjb3JlX1guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VmbFNjcmVlblV0aWxpdGllcy5oPgorCit1
c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitjbGFzcyBFV0syQWNjZXNzaWJpbGl0eSA6
IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBFY29yZV9YX1dpbmRv
dyB4d2luZG93KCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpnZXRFY29yZVhXaW5k
b3coZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzX29iamVjdF9ldmFzX2dldCh3ZWJWaWV3
KCkpKSk7CisgICAgfQorfTsKKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNz
aWJpbGl0eV9hY3Rpb25fYWN0aXZhdGUpCit7CisgICAgZWNvcmVfeF9lX2lsbHVtZV9hY2Nlc3Nf
YWN0aW9uX2FjdGl2YXRlX3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIGFjdGl2YXRlU2VuZCA9
IGZhbHNlOworICAgIHdhaXRVbnRpbFRydWUoYWN0aXZhdGVTZW5kLCAxKTsKKyAgICBBU1NFUlRf
VFJVRShld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9hY3RpdmF0ZV9nZXQod2ViVmlldygp
KSk7Cit9CisKK1RFU1RfRihFV0syQWNjZXNzaWJpbGl0eSwgZXdrX2FjY2Vzc2liaWxpdHlfYWN0
aW9uX25leHQpCit7CisgICAgZWNvcmVfeF9lX2lsbHVtZV9hY2Nlc3NfYWN0aW9uX3JlYWRfbmV4
dF9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9vbCBuZXh0U2VuZCA9IGZhbHNlOworICAgIHdhaXRV
bnRpbFRydWUobmV4dFNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX25leHRfZ2V0KHdlYlZpZXcoKSkpOworfQorCitURVNUX0YoRVdLMkFjY2Vz
c2liaWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9wcmV2KQoreworICAgIGVjb3JlX3hf
ZV9pbGx1bWVfYWNjZXNzX2FjdGlvbl9yZWFkX3ByZXZfc2VuZCh4d2luZG93KCkpOworICAgIGJv
b2wgcHJldlNlbmQgPSBmYWxzZTsKKyAgICB3YWl0VW50aWxUcnVlKHByZXZTZW5kLCAxKTsKKyAg
ICBBU1NFUlRfVFJVRShld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9wcmV2X2dldCh3ZWJW
aWV3KCkpKTsKK30KKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNzaWJpbGl0
eV9hY3Rpb25fcmVhZF9ieV9wb2ludCkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19h
Y3Rpb25fcmVhZF9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9vbCByZWFkU2VuZCA9IGZhbHNlOwor
ICAgIHdhaXRVbnRpbFRydWUocmVhZFNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3
X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRfZ2V0KHdlYlZpZXcoKSkpOworfQor
CisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMGMwYTM0Li5iODgw
MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MTgsNiAr
OTE4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNo
b3QoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIGJvb2wgYWNjZXNzaWJpbGl0eU9iamVjdFJl
YWRCeVBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgYm9vbCBhY2Nlc3NpYmls
aXR5T2JqZWN0UmVhZFByZXZpb3VzKCk7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0UmVh
ZE5leHQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29uZmln
dXJhdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggMDJlNTI5Zi4u
YzQ0NDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVBy
b3h5RWZsLmNwcApAQCAtMTQwLDQgKzE0MCwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlh
bGl6ZVVJUG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50QmFzZQog
ICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQogCisjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKworYm9vbCBXZWJQYWdl
UHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3Vz
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkTmV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240118</attachid>
            <date>2014-10-20 06:57:57 -0700</date>
            <delta_ts>2014-10-22 07:47:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a11y-illume-access.patch</filename>
            <type>text/plain</type>
            <size>20706</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiYWJmMjgxLi41ZjE2ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTQtMTAtMTcgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVGTCBBY2Nlc3NpYmlsaXR5IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRUZMIEFjY2Vzc2li
aWxpdHkgcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgdXNlZCB0byBub3RpZnkgY2xpZW50cyB0aGF0
IGNlcnRhaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eSBldmVudHMgb2NjdXIuIFV0aWxpemluZyBp
dCBtYWtlcyBXZWJLaXQtRUZMIGNvaGVyZW50IHdpdGggRUZMIG5hdGl2ZQorICAgICAgICBhY2Nl
c3NpYmlsaXR5IGFwcHJvYWNoLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpF
d2tWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAgICAg
IChFd2tWaWV3Ojp3ZWJBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9XZWJBY2Nlc3NpYmlsaXR5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vz
c2liaWxpdHk6OldlYkFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5Ojp+V2ViQWNjZXNzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2li
aWxpdHk6OmV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6
OmV4ZWN1dGVHZXN0dXJlQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0
eTo6YWN0aXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZE5leHQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkUHJldik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHk6OnVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6
ZG93bik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6Om1vdXNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eTo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eTo6ZGlzYWJsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJp
bGl0eS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6YWN0aXZh
dGVBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpuZXh0QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cHJldkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnJlYWRBY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmls
aXR5X2FjdGlvbl9uZXh0X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2Fj
dGlvbl9wcmV2X2dldCk6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9y
ZWFkX2J5X3BvaW50X2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfYWNjZXNzaWJp
bGl0eS5jcHA6IEFkZGVkLgorICAgICAgICAoRVdLMkFjY2Vzc2liaWxpdHk6Onh3aW5kb3cpOgor
ICAgICAgICAoVEVTVF9GKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJl
YWROZXh0KToKKwogMjAxNC0xMC0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gW1dLMl0gV2ViUHJvY2VzcyBhbmQgTmV0d29ya1By
b2Nlc3MgaW5pdGlhbGl6YXRpb24gY2xlYXJzIGNhY2hlIGNvbnRlbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IGMwYmRlY2UuLjIyMTM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC04MCw2ICs4MCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVy
ZVJlY29nbml6ZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2FwcGxpY2F0aW9uX2NhY2hlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCkBAIC00OTIsNiArNDkzLDcgQEAgdGFyZ2V0X2xpbmtf
bGlicmFyaWVzKGV3azJVbml0VGVzdFV0aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQog
IyBUaGUgImV3ayIgb24gdGhlIHRlc3QgbmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIy
Iiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwgY2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQg
MSB0ZXN0IHN1aXRlLgogc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJf
YWNjZXNzaWJpbGl0eQogICAgIHRlc3RfZXdrMl9hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyCiAg
ICAgdGVzdF9ld2syX2F1dGhfcmVxdWVzdAogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlz
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAx
YTQxMGRhLi42ZjM2OTk1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcApAQCAtODIsNiArODIsMTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5l
ZChIQVZFX0VDT1JFX1gpCisjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eS5oIgorI2VuZGlmCisK
IHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMjk3LDYgKzMwMSw5IEBAIEV3a1ZpZXc6
OkV3a1ZpZXcoV0tWaWV3UmVmIHZpZXcsIEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogI2VuZGlm
CiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0aGlzLCAmRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQp
CiAgICAgLCBtX2lucHV0TWV0aG9kQ29udGV4dChJbnB1dE1ldGhvZENvbnRleHRFZmw6OmNyZWF0
ZSh0aGlzLCBzbWFydERhdGEoKS0+YmFzZS5ldmFzKSkKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgICwgbV93ZWJBY2Nlc3NpYmlsaXR5KHN0ZDo6
bWFrZV91bmlxdWU8V2ViQWNjZXNzaWJpbGl0eT4odGhpcykpCisjZW5kaWYKICAgICAsIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCh0aGlzKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyKHBhZ2UoKSwgJm1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCkKICAgICAsIG1f
aXNBY2NlbGVyYXRlZCh0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlldy5oCmluZGV4IGY3OTZjNDAuLmNiYzhmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTU5LDYgKzU5LDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94
eTsKICNpZiBFTkFCTEUoVklCUkFUSU9OKQogY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsOwogI2Vu
ZGlmCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQor
Y2xhc3MgV2ViQWNjZXNzaWJpbGl0eTsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0yMDEsNiArMjA1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHNt
YXJ0Q2xhc3NOYW1lW107CiAKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFW
RV9FQ09SRV9YKQorICAgIFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eSogd2ViQWNjZXNzaWJpbGl0
eSgpIHsgcmV0dXJuIG1fd2ViQWNjZXNzaWJpbGl0eS5nZXQoKTsgfQorI2VuZGlmCisKIHByaXZh
dGU6CiAgICAgRXdrVmlldyhXS1ZpZXdSZWYsIEV2YXNfT2JqZWN0Kik7CiAgICAgfkV3a1ZpZXco
KTsKQEAgLTMwMSw2ICszMDksMTAgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXdr
Q29sb3JQaWNrZXI+IG1fY29sb3JQaWNrZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6V2ViQWNjZXNzaWJpbGl0eT4gbV93ZWJBY2Nlc3NpYmlsaXR5OworI2VuZGlmCisKICAgICBX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50OwogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOTc3MDUwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2Nl
c3NpYmlsaXR5LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9F
Q09SRV9YKQorCisjaW5jbHVkZSAiRXdrVmlldy5oIgorI2luY2x1ZGUgIldLVmlld0VmbC5oIgor
I2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBY2Nlc3NpYmlsaXR5OjpXZWJB
Y2Nlc3NpYmlsaXR5KEV3a1ZpZXcqIGV3a1ZpZXcpCisgICAgOiBtX2FjdGl2YXRlQWN0aW9uKGZh
bHNlKQorICAgICwgbV9uZXh0QWN0aW9uKGZhbHNlKQorICAgICwgbV9wcmV2QWN0aW9uKGZhbHNl
KQorICAgICwgbV9yZWFkQWN0aW9uKGZhbHNlKQorICAgICwgbV9jdXJyZW50UG9pbnQoV2ViQ29y
ZTo6SW50UG9pbnQoLTEsIC0xKSkKKyAgICAsIG1fZXdrVmlldyhld2tWaWV3KQorICAgICwgbV9l
dmVudEhhbmRsZXIoZWNvcmVfZXZlbnRfaGFuZGxlcl9hZGQoRUNPUkVfWF9FVkVOVF9DTElFTlRf
TUVTU0FHRSwgZXZlbnRIYW5kbGVyLCB0aGlzKSkKK3sKK30KKworV2ViQWNjZXNzaWJpbGl0eTo6
fldlYkFjY2Vzc2liaWxpdHkoKQoreworICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfZGVsKG1fZXZl
bnRIYW5kbGVyKTsKK30KKworRWluYV9Cb29sIFdlYkFjY2Vzc2liaWxpdHk6OmV2ZW50SGFuZGxl
cih2b2lkKiBkYXRhLCBpbnQsIHZvaWQqIGV2ZW50KQoreworICAgIFdlYkFjY2Vzc2liaWxpdHkq
IHdlYkFjY2Vzc2liaWxpdHkgPSBzdGF0aWNfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5Kj4oZGF0YSk7
CisgICAgaWYgKCF3ZWJBY2Nlc3NpYmlsaXR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNzYWdlKiBldiA9IHN0YXRpY19jYXN0PEVjb3JlX1hf
RXZlbnRfQ2xpZW50X01lc3NhZ2UqPihldmVudCk7CisgICAgaWYgKCFldikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHdlYkFjY2Vzc2liaWxpdHktPmFjdGlvbihldik7Cit9
CisKK0VpbmFfQm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjphY3Rpb24oRWNvcmVfWF9FdmVudF9DbGll
bnRfTWVzc2FnZSogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5tZXNzYWdlX3R5cGUgPT0gRUNP
UkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19DT05UUk9MKSB7CisgICAgICAgIHVuc2lnbmVkIGdl
c3R1cmVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV2ZW50LT5kYXRhLmxbMV0pOworICAg
ICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJ
T05fQUNUSVZBVEUpCisgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGUoKTsKKworICAgICAgICBp
ZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fUkVB
RCkKKyAgICAgICAgICAgIHJldHVybiByZWFkKGV2ZW50LT5kYXRhLmxbMl0sIGV2ZW50LT5kYXRh
LmxbM10pOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExV
TUVfQUNDRVNTX0FDVElPTl9PVkVSKQorICAgICAgICAgICAgcmV0dXJuIHJlYWQoZXZlbnQtPmRh
dGEubFsyXSwgZXZlbnQtPmRhdGEubFszXSk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09
IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1JFQURfTkVYVCkKKyAgICAgICAg
ICAgIHJldHVybiByZWFkTmV4dCgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09S
RV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9SRUFEX1BSRVYpCisgICAgICAgICAgICBy
ZXR1cm4gcmVhZFByZXYoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9B
VE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fVVApCisgICAgICAgICAgICByZXR1cm4gdXAoKTsK
KworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VT
U19BQ1RJT05fRE9XTikKKyAgICAgICAgICAgIHJldHVybiBkb3duKCk7CisKKyAgICAgICAgaWYg
KGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1NDUk9M
TCkKKyAgICAgICAgICAgIHJldHVybiBzY3JvbGwoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5
cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fTU9VU0UpCisgICAgICAg
ICAgICByZXR1cm4gbW91c2UoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVf
WF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fRU5BQkxFKQorICAgICAgICAgICAgcmV0dXJu
IGVuYWJsZSgpOworCisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9J
TExVTUVfQUNDRVNTX0FDVElPTl9ESVNBQkxFKQorICAgICAgICAgICAgcmV0dXJuIGRpc2FibGUo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5
OjphY3RpdmF0ZSgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2li
aWxpdHk6OnJlYWQoaW50LCBpbnQpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9y
ZWFkQWN0aW9uID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQ
b2ludChXZWJDb3JlOjpJbnRQb2ludChtX2N1cnJlbnRQb2ludC54KCksIG1fY3VycmVudFBvaW50
LnkoKSkpOworICAgIHJldHVybiBtX3JlYWRBY3Rpb247Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJp
bGl0eTo6cmVhZE5leHQoKQoreworICAgIEFTU0VSVChtX2V3a1ZpZXcpOworICAgIG1fbmV4dEFj
dGlvbiA9IG1fZXdrVmlldy0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3Vz
KCk7CisgICAgcmV0dXJuIG1fbmV4dEFjdGlvbjsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5
OjpyZWFkUHJldigpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9wcmV2QWN0aW9u
ID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKTsK
KyAgICByZXR1cm4gbV9wcmV2QWN0aW9uOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OnVw
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBXZWJBY2Nlc3NpYmlsaXR5Ojpkb3duKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjpzY3JvbGwoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFj
Y2Vzc2liaWxpdHk6Om1vdXNlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjplbmFibGUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2li
aWxpdHk6OmRpc2FibGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNT
SUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nlc3NpYmlsaXR5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9XZWJBY2Nlc3NpYmlsaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDc4NDYxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuaApAQCAtMCwwICsxLDgyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eV9oCisjZGVm
aW5lIFdlYkFjY2Vzc2liaWxpdHlfaAorCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZp
bmVkKEhBVkVfRUNPUkVfWCkKKworI2luY2x1ZGUgPEVjb3JlLmg+CisjaW5jbHVkZSA8RWNvcmVf
WC5oPgorI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisK
K2NsYXNzIEV3a1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJBY2Nlc3Np
YmlsaXR5IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJBY2Nlc3NpYmlsaXR5KEV3a1ZpZXcq
IGV3a1ZpZXcpOworICAgIH5XZWJBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICBib29sIGFjdGl2YXRl
QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmF0ZUFjdGlvbjsgfQorICAgIGJvb2wgbmV4
dEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dEFjdGlvbjsgfQorICAgIGJvb2wgcHJldkFj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcHJldkFjdGlvbjsgfQorICAgIGJvb2wgcmVhZEFjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZEFjdGlvbjsgfQorCitwcml2YXRlOgorICAgIHN0YXRp
YyBFaW5hX0Jvb2wgZXZlbnRIYW5kbGVyKHZvaWQqLCBpbnQsIHZvaWQqKTsKKworICAgIEVpbmFf
Qm9vbCBhY3Rpb24oRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSopOworCisgICAgLy8gQWN0
aW9ucworICAgIGJvb2wgYWN0aXZhdGUoKTsKKyAgICBib29sIHJlYWQoaW50LCBpbnQpOworICAg
IGJvb2wgcmVhZE5leHQoKTsKKyAgICBib29sIHJlYWRQcmV2KCk7CisgICAgYm9vbCB1cCgpOwor
ICAgIGJvb2wgZG93bigpOworICAgIGJvb2wgc2Nyb2xsKCk7CisgICAgYm9vbCB6b29tKCk7Cisg
ICAgYm9vbCBtb3VzZSgpOworICAgIGJvb2wgZW5hYmxlKCk7CisgICAgYm9vbCBkaXNhYmxlKCk7
CisKKyAgICBib29sIG1fYWN0aXZhdGVBY3Rpb247CisgICAgYm9vbCBtX25leHRBY3Rpb247Cisg
ICAgYm9vbCBtX3ByZXZBY3Rpb247CisgICAgYm9vbCBtX3JlYWRBY3Rpb247CisKKyAgICBXZWJD
b3JlOjpJbnRQb2ludCBtX2N1cnJlbnRQb2ludDsKKyAgICBFd2tWaWV3KiBtX2V3a1ZpZXc7Cisg
ICAgRWNvcmVfRXZlbnRfSGFuZGxlciogbV9ldmVudEhhbmRsZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChI
QVZFX0VDT1JFX1gpCisKKyNlbmRpZiAvLyBXZWJBY2Nlc3NpYmlsaXR5X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA5YTYxOGY2Li4wZTMy
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CkBAIC00Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjZW5k
aWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5
LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGlubGluZSBF
d2tWaWV3KiB0b0V3a1ZpZXdDaGVja2VkKGNvbnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQpA
QCAtNzg0LDMgKzc4OCw0NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV2YXNfQ29vcmQqIHdpZAogCiAgICAgcmV0dXJu
IHRydWU7CiB9CisKK0VpbmFfQm9vbCBld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9hY3Rp
dmF0ZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nl
c3NpYmlsaXR5KCktPmFjdGl2YXRlQWN0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShl
d2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192
aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX25leHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQoreworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gp
CisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsK
KyAgICByZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgpLT5uZXh0QWN0aW9uKCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
K30KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYg
ZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3
a1ZpZXcsIGltcGwsIGZhbHNlKTsKKyAgICByZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgp
LT5wcmV2QWN0aW9uKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxp
dHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQor
eworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIGltcGwsIGZhbHNlKTsKKyAgICBy
ZXR1cm4gaW1wbC0+d2ViQWNjZXNzaWJpbGl0eSgpLT5yZWFkQWN0aW9uKCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShld2tWaWV3KTsKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGMzYjNkMGIu
LjkwNWU1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aApAQCAtMTAxOCw2ICsxMDE4LDQyIEBAIEVBUEkgdm9pZCBld2tfdmlld19iZ19jb2xvcl9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8sIGludCAqciwgaW50ICpnLCBpbnQgKmIsIGluCiAgKi8KIEVB
UEkgRWluYV9Cb29sIGV3a192aWV3X2NvbnRlbnRzX3NpemVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvLCBFdmFzX0Nvb3JkICp3aWR0aCwgRXZhc19Db29yZCAqaGVpZ2h0KTsKIAorLyoqCisgKiBH
ZXQgc3RhdHVzIG9mIHRoZSBhY3RpdmF0ZSBhY3Rpb24uIEFjdGl2YXRlIGFjdGlvbiBkZXNjcmli
ZXMgdGhlIGNsaWNrLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAq
IEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3
aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2Fj
dGl2YXRlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogR2V0IHN0YXR1cyBv
ZiB0aGUgbmV4dCBhY3Rpb24uIEFjdGlvbiBuZXh0IG1vdmVzIGFuZCBmb2N1c2VzIG5leHQgb2Jq
ZWN0LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX25leHRfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9mIHRoZSBwcmV2aW91
cyBhY3Rpb24uIFByZXZpb3VzIGFjdGlvbiBtb3ZlcyBhbmQgZm9jdXNlcyBwcmV2aW91cyBlbGVt
ZW50LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4g
QGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9mIHRoZSByZWFkIGFj
dGlvbi4gUmVhZCBhY3Rpb24gZm9jdXNlcyBvYmplY3Qgd2l0aCBzcGVjaWZpYyBjb29yZGluYXRl
cy4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9mIHRoZSBvYmplY3QKKyAqCisgKiBAcmV0dXJuIEBj
IEVJTkFfVFJVRSBvbiBzdWNjZXNzLCBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitF
QVBJIEVpbmFfQm9vbCBld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9yZWFkX2J5X3BvaW50
X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90
ZXN0X2V3azJfYWNjZXNzaWJpbGl0eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfYWNjZXNzaWJpbGl0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYmUyYzcwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcApA
QCAtMCwwICsxLDUyIEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorCisjaW5jbHVkZSAiVW5pdFRlc3RVdGls
cy9FV0syVW5pdFRlc3RCYXNlLmgiCisjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgorI2luY2x1ZGUg
PEVjb3JlX1guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0VmbFNjcmVlblV0aWxpdGllcy5oPgorCit1
c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OworCitjbGFzcyBFV0syQWNjZXNzaWJpbGl0eSA6
IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBFY29yZV9YX1dpbmRv
dyB4d2luZG93KCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpnZXRFY29yZVhXaW5k
b3coZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzX29iamVjdF9ldmFzX2dldCh3ZWJWaWV3
KCkpKSk7CisgICAgfQorfTsKKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNz
aWJpbGl0eV9hY3Rpb25fYWN0aXZhdGUpCit7CisgICAgZWNvcmVfeF9lX2lsbHVtZV9hY2Nlc3Nf
YWN0aW9uX2FjdGl2YXRlX3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIGFjdGl2YXRlU2VuZCA9
IGZhbHNlOworICAgIHdhaXRVbnRpbFRydWUoYWN0aXZhdGVTZW5kLCAxKTsKKyAgICBBU1NFUlRf
VFJVRShld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9hY3RpdmF0ZV9nZXQod2ViVmlldygp
KSk7Cit9CisKK1RFU1RfRihFV0syQWNjZXNzaWJpbGl0eSwgZXdrX2FjY2Vzc2liaWxpdHlfYWN0
aW9uX25leHQpCit7CisgICAgZWNvcmVfeF9lX2lsbHVtZV9hY2Nlc3NfYWN0aW9uX3JlYWRfbmV4
dF9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9vbCBuZXh0U2VuZCA9IGZhbHNlOworICAgIHdhaXRV
bnRpbFRydWUobmV4dFNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2li
aWxpdHlfYWN0aW9uX25leHRfZ2V0KHdlYlZpZXcoKSkpOworfQorCitURVNUX0YoRVdLMkFjY2Vz
c2liaWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9wcmV2KQoreworICAgIGVjb3JlX3hf
ZV9pbGx1bWVfYWNjZXNzX2FjdGlvbl9yZWFkX3ByZXZfc2VuZCh4d2luZG93KCkpOworICAgIGJv
b2wgcHJldlNlbmQgPSBmYWxzZTsKKyAgICB3YWl0VW50aWxUcnVlKHByZXZTZW5kLCAxKTsKKyAg
ICBBU1NFUlRfVFJVRShld2tfdmlld19hY2Nlc3NpYmlsaXR5X2FjdGlvbl9wcmV2X2dldCh3ZWJW
aWV3KCkpKTsKK30KKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNzaWJpbGl0
eV9hY3Rpb25fcmVhZF9ieV9wb2ludCkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19h
Y3Rpb25fcmVhZF9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9vbCByZWFkU2VuZCA9IGZhbHNlOwor
ICAgIHdhaXRVbnRpbFRydWUocmVhZFNlbmQsIDEpOworICAgIEFTU0VSVF9UUlVFKGV3a192aWV3
X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRfZ2V0KHdlYlZpZXcoKSkpOworfQor
CisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMGMwYTM0Li5iODgw
MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05MTgsNiAr
OTE4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNo
b3QoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkp
ICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIGJvb2wgYWNjZXNzaWJpbGl0eU9iamVjdFJl
YWRCeVBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgYm9vbCBhY2Nlc3NpYmls
aXR5T2JqZWN0UmVhZFByZXZpb3VzKCk7CisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0UmVh
ZE5leHQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ29uZmln
dXJhdGlvbiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAKaW5kZXggMDJlNTI5Zi4u
YzQ0NDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVBy
b3h5RWZsLmNwcApAQCAtMTQwLDQgKzE0MCwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlh
bGl6ZVVJUG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50QmFzZQog
ICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQogCisjaWYgSEFW
RShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKworYm9vbCBXZWJQYWdl
UHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZFByZXZpb3Vz
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkTmV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="264885"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240273</attachid>
            <date>2014-10-22 07:47:04 -0700</date>
            <delta_ts>2014-10-23 01:02:40 -0700</delta_ts>
            <desc>attempt to check bots</desc>
            <filename>a11y-illume-access.patch</filename>
            <type>text/plain</type>
            <size>20791</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3YTc0YWQ0Li4yYjRiZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTQtMTAtMjIgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisK
KyAgICAgICAgW0VGTF0gSW50cm9kdWNlIEVGTCBBY2Nlc3NpYmlsaXR5IGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3ODE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisgICAgICAgIEVGTCBBY2Nlc3NpYmls
aXR5IHByb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIHVzZWQgdG8gbm90aWZ5IGNsaWVudHMgdGhhdCBj
ZXJ0YWluCisgICAgICAgIEFjY2Vzc2liaWxpdHkgZXZlbnRzIG9jY3VyLiBVdGlsaXppbmcgaXQg
bWFrZXMgV2ViS2l0LUVGTCBjb2hlcmVudCB3aXRoIEVGTCBuYXRpdmUKKyAgICAgICAgYWNjZXNz
aWJpbGl0eSBhcHByb2FjaC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwOgorICAgICAgICAoRXdrVmlldzo6RXdr
Vmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oOgorICAgICAgICAo
RXdrVmlldzo6d2ViQWNjZXNzaWJpbGl0eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
V2ViQWNjZXNzaWJpbGl0eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5OjpXZWJBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJp
bGl0eTo6fldlYkFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5OjpldmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Ojpl
eGVjdXRlR2VzdHVyZUFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6
OmFjdGl2YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnJlYWROZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6cmVhZFByZXYpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5Ojp1cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OmRv
d24pOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpzY3JvbGwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5Ojptb3VzZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkFjY2Vzc2liaWxpdHk6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxp
dHk6OmRpc2FibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxp
dHkuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OmFjdGl2YXRl
QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eTo6bmV4dEFjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHk6OnByZXZBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5OjpyZWFkQWN0aW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19hY2Nlc3NpYmls
aXR5X2FjdGlvbl9hY3RpdmF0ZV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYWNjZXNzaWJpbGl0
eV9hY3Rpb25fbmV4dF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rp
b25fcHJldl9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcmVh
ZF9ieV9wb2ludF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2FjY2Vzc2liaWxp
dHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEVXSzJBY2Nlc3NpYmlsaXR5Ojp4d2luZG93KToKKyAg
ICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5T2JqZWN0UmVhZEJ5UG9pbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFk
TmV4dCk6CisKIDIwMTQtMTAtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgR3RrSW5wdXRNZXRob2RGaWx0ZXIgZnJvbSBQ
bGF0Zm9ybSB0byBXZWJLaXQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGMwYmRlY2Uu
LjIyMTM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC04MCw2ICs4MCw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvR2VzdHVyZVJlY29nbml6ZXIuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvU25hcHNob3RJbWFnZUdMLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L1dlYkFjY2Vzc2liaWxpdHkuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2FwcGxpY2F0
aW9uX2NhY2hlX21hbmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2F1dGhfcmVx
dWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3Bw
CkBAIC00OTIsNiArNDkzLDcgQEAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGV3azJVbml0VGVzdFV0
aWxzICR7RVdLMlVuaXRUZXN0c19MSUJSQVJJRVN9KQogIyBUaGUgImV3ayIgb24gdGhlIHRlc3Qg
bmFtZSBuZWVkcyB0byBiZSBzdWZmaXhlZCB3aXRoICIyIiwgb3RoZXJ3aXNlIGl0CiAjIHdpbGwg
Y2xhc2ggd2l0aCB0ZXN0cyBmcm9tIHRoZSBXZWJLaXQgMSB0ZXN0IHN1aXRlLgogc2V0KEVXSzJV
bml0VGVzdHNfQklOQVJJRVMKKyAgICB0ZXN0X2V3azJfYWNjZXNzaWJpbGl0eQogICAgIHRlc3Rf
ZXdrMl9hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyCiAgICAgdGVzdF9ld2syX2F1dGhfcmVxdWVz
dAogICAgIHRlc3RfZXdrMl9iYWNrX2ZvcndhcmRfbGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAppbmRleCAxYTQxMGRhLi42ZjM2OTk1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtODIsNiArODIs
MTAgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAor
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisjaW5jbHVk
ZSAiV2ViQWNjZXNzaWJpbGl0eS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBFd2tWaWV3
Q2FsbGJhY2tzOwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtMjk3LDYgKzMwMSw5IEBAIEV3a1ZpZXc6OkV3a1ZpZXcoV0tWaWV3UmVmIHZpZXcs
IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0
aGlzLCAmRXdrVmlldzo6ZGlzcGxheVRpbWVyRmlyZWQpCiAgICAgLCBtX2lucHV0TWV0aG9kQ29u
dGV4dChJbnB1dE1ldGhvZENvbnRleHRFZmw6OmNyZWF0ZSh0aGlzLCBzbWFydERhdGEoKS0+YmFz
ZS5ldmFzKSkKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9Y
KQorICAgICwgbV93ZWJBY2Nlc3NpYmlsaXR5KHN0ZDo6bWFrZV91bmlxdWU8V2ViQWNjZXNzaWJp
bGl0eT4odGhpcykpCisjZW5kaWYKICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dCh0aGlzKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyKHBhZ2UoKSwgJm1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudCkKICAgICAsIG1faXNBY2NlbGVyYXRlZCh0cnVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IGY3OTZjNDAuLmNi
YzhmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAg
LTU5LDYgKzU5LDEwIEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKICNpZiBFTkFCTEUoVklCUkFUSU9O
KQogY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsOwogI2VuZGlmCisKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorY2xhc3MgV2ViQWNjZXNzaWJpbGl0eTsK
KyNlbmRpZgogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMDEsNiArMjA1LDEwIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyIHNtYXJ0Q2xhc3NOYW1lW107CiAKKyNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eSogd2ViQWNjZXNzaWJpbGl0eSgpIHsgcmV0dXJuIG1fd2ViQWNjZXNz
aWJpbGl0eS5nZXQoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRXdrVmlldyhXS1ZpZXdS
ZWYsIEV2YXNfT2JqZWN0Kik7CiAgICAgfkV3a1ZpZXcoKTsKQEAgLTMwMSw2ICszMDksMTAgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXdrQ29sb3JQaWNrZXI+IG1fY29sb3JQaWNr
ZXI7CiAjZW5kaWYKIAorI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkgJiYgZGVmaW5lZChIQVZFX0VD
T1JFX1gpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eT4gbV93
ZWJBY2Nlc3NpYmlsaXR5OworI2VuZGlmCisKICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwogICAgIFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxp
dHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyNTc4NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2li
aWxpdHkuY3BwCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5LmgiCisKKyNpZiBIQVZF
KEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorCisjaW5jbHVkZSAiRXdr
Vmlldy5oIgorI2luY2x1ZGUgIldLVmlld0VmbC5oIgorI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1
bHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJBY2Nlc3NpYmlsaXR5OjpXZWJBY2Nlc3NpYmlsaXR5KEV3a1ZpZXcqIGV3
a1ZpZXcpCisgICAgOiBtX2FjdGl2YXRlQWN0aW9uKGZhbHNlKQorICAgICwgbV9uZXh0QWN0aW9u
KGZhbHNlKQorICAgICwgbV9wcmV2QWN0aW9uKGZhbHNlKQorICAgICwgbV9yZWFkQWN0aW9uKGZh
bHNlKQorICAgICwgbV9jdXJyZW50UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQoLTEsIC0xKSkKKyAg
ICAsIG1fZXdrVmlldyhld2tWaWV3KQorICAgICwgbV9ldmVudEhhbmRsZXIoZWNvcmVfZXZlbnRf
aGFuZGxlcl9hZGQoRUNPUkVfWF9FVkVOVF9DTElFTlRfTUVTU0FHRSwgZXZlbnRIYW5kbGVyLCB0
aGlzKSkKK3sKK30KKworV2ViQWNjZXNzaWJpbGl0eTo6fldlYkFjY2Vzc2liaWxpdHkoKQorewor
ICAgIGVjb3JlX2V2ZW50X2hhbmRsZXJfZGVsKG1fZXZlbnRIYW5kbGVyKTsKK30KKworRWluYV9C
b29sIFdlYkFjY2Vzc2liaWxpdHk6OmV2ZW50SGFuZGxlcih2b2lkKiBkYXRhLCBpbnQsIHZvaWQq
IGV2ZW50KQoreworICAgIFdlYkFjY2Vzc2liaWxpdHkqIHdlYkFjY2Vzc2liaWxpdHkgPSBzdGF0
aWNfY2FzdDxXZWJBY2Nlc3NpYmlsaXR5Kj4oZGF0YSk7CisgICAgaWYgKCF3ZWJBY2Nlc3NpYmls
aXR5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBFY29yZV9YX0V2ZW50X0NsaWVudF9N
ZXNzYWdlKiBldiA9IHN0YXRpY19jYXN0PEVjb3JlX1hfRXZlbnRfQ2xpZW50X01lc3NhZ2UqPihl
dmVudCk7CisgICAgaWYgKCFldikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu
IHdlYkFjY2Vzc2liaWxpdHktPmFjdGlvbihldik7Cit9CisKK0VpbmFfQm9vbCBXZWJBY2Nlc3Np
YmlsaXR5OjphY3Rpb24oRWNvcmVfWF9FdmVudF9DbGllbnRfTWVzc2FnZSogZXZlbnQpCit7Cisg
ICAgaWYgKGV2ZW50LT5tZXNzYWdlX3R5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VT
U19DT05UUk9MKSB7CisgICAgICAgIHVuc2lnbmVkIGdlc3R1cmVUeXBlID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGV2ZW50LT5kYXRhLmxbMV0pOworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0g
RUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fQUNUSVZBVEUpCisgICAgICAgICAg
ICByZXR1cm4gYWN0aXZhdGUoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVf
WF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fUkVBRCkKKyAgICAgICAgICAgIHJldHVybiBy
ZWFkKGV2ZW50LT5kYXRhLmxbMl0sIGV2ZW50LT5kYXRhLmxbM10pOworCisgICAgICAgIGlmIChn
ZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9PVkVSKQor
ICAgICAgICAgICAgcmV0dXJuIHJlYWQoZXZlbnQtPmRhdGEubFsyXSwgZXZlbnQtPmRhdGEubFsz
XSk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hfQVRPTV9FX0lMTFVNRV9B
Q0NFU1NfQUNUSU9OX1JFQURfTkVYVCkKKyAgICAgICAgICAgIHJldHVybiByZWFkTmV4dCgpOwor
CisgICAgICAgIGlmIChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNT
X0FDVElPTl9SRUFEX1BSRVYpCisgICAgICAgICAgICByZXR1cm4gcmVhZFByZXYoKTsKKworICAg
ICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJ
T05fVVApCisgICAgICAgICAgICByZXR1cm4gdXAoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5
cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19BQ1RJT05fRE9XTikKKyAgICAgICAg
ICAgIHJldHVybiBkb3duKCk7CisKKyAgICAgICAgaWYgKGdlc3R1cmVUeXBlID09IEVDT1JFX1hf
QVRPTV9FX0lMTFVNRV9BQ0NFU1NfQUNUSU9OX1NDUk9MTCkKKyAgICAgICAgICAgIHJldHVybiBz
Y3JvbGwoKTsKKworICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxM
VU1FX0FDQ0VTU19BQ1RJT05fTU9VU0UpCisgICAgICAgICAgICByZXR1cm4gbW91c2UoKTsKKwor
ICAgICAgICBpZiAoZ2VzdHVyZVR5cGUgPT0gRUNPUkVfWF9BVE9NX0VfSUxMVU1FX0FDQ0VTU19B
Q1RJT05fRU5BQkxFKQorICAgICAgICAgICAgcmV0dXJuIGVuYWJsZSgpOworCisgICAgICAgIGlm
IChnZXN0dXJlVHlwZSA9PSBFQ09SRV9YX0FUT01fRV9JTExVTUVfQUNDRVNTX0FDVElPTl9ESVNB
QkxFKQorICAgICAgICAgICAgcmV0dXJuIGRpc2FibGUoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmlsaXR5OjphY3RpdmF0ZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJp
bGl0eTo6cmVhZChpbnQsIGludCkKK3sKKyAgICBBU1NFUlQobV9ld2tWaWV3KTsKKyAgICBtX3Jl
YWRBY3Rpb24gPSBtX2V3a1ZpZXctPnBhZ2UoKS0+YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRCeVBv
aW50KFdlYkNvcmU6OkludFBvaW50KG1fY3VycmVudFBvaW50LngoKSwgbV9jdXJyZW50UG9pbnQu
eSgpKSk7CisgICAgcmV0dXJuIG1fcmVhZEFjdGlvbjsKK30KKworYm9vbCBXZWJBY2Nlc3NpYmls
aXR5OjpyZWFkTmV4dCgpCit7CisgICAgQVNTRVJUKG1fZXdrVmlldyk7CisgICAgbV9uZXh0QWN0
aW9uID0gbV9ld2tWaWV3LT5wYWdlKCktPmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkUHJldmlvdXMo
KTsKKyAgICByZXR1cm4gbV9uZXh0QWN0aW9uOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6
OnJlYWRQcmV2KCkKK3sKKyAgICBBU1NFUlQobV9ld2tWaWV3KTsKKyAgICBtX3ByZXZBY3Rpb24g
PSBtX2V3a1ZpZXctPnBhZ2UoKS0+YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91cygpOwor
ICAgIHJldHVybiBtX3ByZXZBY3Rpb247Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJpbGl0eTo6dXAo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IFdlYkFjY2Vzc2liaWxpdHk6OmRvd24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OnNjcm9sbCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQWNj
ZXNzaWJpbGl0eTo6bW91c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIFdlYkFjY2Vzc2liaWxpdHk6OmVuYWJsZSgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViQWNjZXNzaWJp
bGl0eTo6ZGlzYWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJ
QklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL1dlYkFjY2Vzc2liaWxpdHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNzg0NjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvV2ViQWNjZXNzaWJpbGl0eS5oCkBAIC0wLDAgKzEsODIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5X2gKKyNkZWZp
bmUgV2ViQWNjZXNzaWJpbGl0eV9oCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmlu
ZWQoSEFWRV9FQ09SRV9YKQorCisjaW5jbHVkZSA8RWNvcmUuaD4KKyNpbmNsdWRlIDxFY29yZV9Y
Lmg+CisjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKwor
Y2xhc3MgRXdrVmlldzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkFjY2Vzc2li
aWxpdHkgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYkFjY2Vzc2liaWxpdHkoRXdrVmlldyog
ZXdrVmlldyk7CisgICAgfldlYkFjY2Vzc2liaWxpdHkoKTsKKworICAgIGJvb2wgYWN0aXZhdGVB
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGl2YXRlQWN0aW9uOyB9CisgICAgYm9vbCBuZXh0
QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0QWN0aW9uOyB9CisgICAgYm9vbCBwcmV2QWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2QWN0aW9uOyB9CisgICAgYm9vbCByZWFkQWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkQWN0aW9uOyB9CisKK3ByaXZhdGU6CisgICAgc3RhdGlj
IEVpbmFfQm9vbCBldmVudEhhbmRsZXIodm9pZCosIGludCwgdm9pZCopOworCisgICAgRWluYV9C
b29sIGFjdGlvbihFY29yZV9YX0V2ZW50X0NsaWVudF9NZXNzYWdlKik7CisKKyAgICAvLyBBY3Rp
b25zCisgICAgYm9vbCBhY3RpdmF0ZSgpOworICAgIGJvb2wgcmVhZChpbnQsIGludCk7CisgICAg
Ym9vbCByZWFkTmV4dCgpOworICAgIGJvb2wgcmVhZFByZXYoKTsKKyAgICBib29sIHVwKCk7Cisg
ICAgYm9vbCBkb3duKCk7CisgICAgYm9vbCBzY3JvbGwoKTsKKyAgICBib29sIHpvb20oKTsKKyAg
ICBib29sIG1vdXNlKCk7CisgICAgYm9vbCBlbmFibGUoKTsKKyAgICBib29sIGRpc2FibGUoKTsK
KworICAgIGJvb2wgbV9hY3RpdmF0ZUFjdGlvbjsKKyAgICBib29sIG1fbmV4dEFjdGlvbjsKKyAg
ICBib29sIG1fcHJldkFjdGlvbjsKKyAgICBib29sIG1fcmVhZEFjdGlvbjsKKworICAgIFdlYkNv
cmU6OkludFBvaW50IG1fY3VycmVudFBvaW50OworICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKKyAg
ICBFY29yZV9FdmVudF9IYW5kbGVyKiBtX2V2ZW50SGFuZGxlcjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhB
VkVfRUNPUkVfWCkKKworI2VuZGlmIC8vIFdlYkFjY2Vzc2liaWxpdHlfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDlhNjE4ZjYuLjBlMzI3
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAK
QEAgLTQ2LDYgKzQ2LDEwIEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNlbmRp
ZgogCisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHku
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdGF0aWMgaW5saW5lIEV3
a1ZpZXcqIHRvRXdrVmlld0NoZWNrZWQoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCkBA
IC03ODQsMyArNzg4LDQ3IEBAIEVpbmFfQm9vbCBld2tfdmlld19jb250ZW50c19zaXplX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldywgRXZhc19Db29yZCogd2lkCiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KKworRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2
YXRlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyNpZiBIQVZFKEFDQ0VTU0lC
SUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxzZSk7CisgICAgcmV0dXJuIGltcGwtPndlYkFjY2Vz
c2liaWxpdHkoKS0+YWN0aXZhdGVBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3
a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3Zp
ZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1Zp
ZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkK
KyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOwor
ICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPm5leHRBY3Rpb24oKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
fQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcHJldl9nZXQoY29u
c3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBk
ZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdr
VmlldywgaW1wbCwgZmFsc2UpOworICAgIHJldHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCkt
PnByZXZBY3Rpb24oKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0
eV9hY3Rpb25fcmVhZF9ieV9wb2ludF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7
CisjaWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKKyAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgZmFsc2UpOworICAgIHJl
dHVybiBpbXBsLT53ZWJBY2Nlc3NpYmlsaXR5KCktPnJlYWRBY3Rpb24oKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGV3a1ZpZXcpOworICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKaW5kZXggYzNiM2QwYi4u
OTA1ZTU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
CkBAIC0xMDE4LDYgKzEwMTgsNDIgQEAgRUFQSSB2b2lkIGV3a192aWV3X2JnX2NvbG9yX2dldChj
b25zdCBFdmFzX09iamVjdCAqbywgaW50ICpyLCBpbnQgKmcsIGludCAqYiwgaW4KICAqLwogRUFQ
SSBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29udGVudHNfc2l6ZV9nZXQoY29uc3QgRXZhc19PYmplY3Qg
Km8sIEV2YXNfQ29vcmQgKndpZHRoLCBFdmFzX0Nvb3JkICpoZWlnaHQpOwogCisvKioKKyAqIEdl
dCBzdGF0dXMgb2YgdGhlIGFjdGl2YXRlIGFjdGlvbi4gQWN0aXZhdGUgYWN0aW9uIGRlc2NyaWJl
cyB0aGUgY2xpY2suCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICog
QHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndp
c2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fYWN0
aXZhdGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBHZXQgc3RhdHVzIG9m
IHRoZSBuZXh0IGFjdGlvbi4gQWN0aW9uIG5leHQgbW92ZXMgYW5kIGZvY3VzZXMgbmV4dCBvYmpl
Y3QuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fbmV4dF9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEdldCBzdGF0dXMgb2YgdGhlIHByZXZpb3Vz
IGFjdGlvbi4gUHJldmlvdXMgYWN0aW9uIG1vdmVzIGFuZCBmb2N1c2VzIHByZXZpb3VzIGVsZW1l
bnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvZiB0aGUgb2JqZWN0CisgKgorICogQHJldHVybiBA
YyBFSU5BX1RSVUUgb24gc3VjY2Vzcywgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLwor
RUFQSSBFaW5hX0Jvb2wgZXdrX3ZpZXdfYWNjZXNzaWJpbGl0eV9hY3Rpb25fcHJldl9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIEdldCBzdGF0dXMgb2YgdGhlIHJlYWQgYWN0
aW9uLiBSZWFkIGFjdGlvbiBmb2N1c2VzIG9iamVjdCB3aXRoIHNwZWNpZmljIGNvb3JkaW5hdGVz
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2YgdGhlIG9iamVjdAorICoKKyAqIEByZXR1cm4gQGMg
RUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VB
UEkgRWluYV9Cb29sIGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3JlYWRfYnlfcG9pbnRf
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL3Rlc3RzL3Rlc3RfZXdrMl9hY2Nlc3NpYmlsaXR5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iZTJjNzBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2FjY2Vzc2liaWxpdHkuY3BwCkBA
IC0wLDAgKzEsNTIgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEhBVkUoQUNDRVNTSUJJ
TElUWSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisKKyNpbmNsdWRlICJVbml0VGVzdFV0aWxz
L0VXSzJVbml0VGVzdEJhc2UuaCIKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVkZSA8
RWNvcmVfWC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRWZsU2NyZWVuVXRpbGl0aWVzLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7CisKK2NsYXNzIEVXSzJBY2Nlc3NpYmlsaXR5IDog
cHVibGljIEVXSzJVbml0VGVzdEJhc2UgeworcHJvdGVjdGVkOgorICAgIEVjb3JlX1hfV2luZG93
IHh3aW5kb3coKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OmdldEVjb3JlWFdpbmRv
dyhlY29yZV9ldmFzX2Vjb3JlX2V2YXNfZ2V0KGV2YXNfb2JqZWN0X2V2YXNfZ2V0KHdlYlZpZXco
KSkpKTsKKyAgICB9Cit9OworCitURVNUX0YoRVdLMkFjY2Vzc2liaWxpdHksIGV3a19hY2Nlc3Np
YmlsaXR5X2FjdGlvbl9hY3RpdmF0ZSkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19h
Y3Rpb25fYWN0aXZhdGVfc2VuZCh4d2luZG93KCkpOworICAgIGJvb2wgYWN0aXZhdGVTZW5kID0g
ZmFsc2U7CisgICAgd2FpdFVudGlsVHJ1ZShhY3RpdmF0ZVNlbmQsIDEpOworICAgIEFTU0VSVF9U
UlVFKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX2FjdGl2YXRlX2dldCh3ZWJWaWV3KCkp
KTsKK30KKworVEVTVF9GKEVXSzJBY2Nlc3NpYmlsaXR5LCBld2tfYWNjZXNzaWJpbGl0eV9hY3Rp
b25fbmV4dCkKK3sKKyAgICBlY29yZV94X2VfaWxsdW1lX2FjY2Vzc19hY3Rpb25fcmVhZF9uZXh0
X3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIG5leHRTZW5kID0gZmFsc2U7CisgICAgd2FpdFVu
dGlsVHJ1ZShuZXh0U2VuZCwgMSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdfYWNjZXNzaWJp
bGl0eV9hY3Rpb25fbmV4dF9nZXQod2ViVmlldygpKSk7Cit9CisKK1RFU1RfRihFV0syQWNjZXNz
aWJpbGl0eSwgZXdrX2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXYpCit7CisgICAgZWNvcmVfeF9l
X2lsbHVtZV9hY2Nlc3NfYWN0aW9uX3JlYWRfcHJldl9zZW5kKHh3aW5kb3coKSk7CisgICAgYm9v
bCBwcmV2U2VuZCA9IGZhbHNlOworICAgIHdhaXRVbnRpbFRydWUocHJldlNlbmQsIDEpOworICAg
IEFTU0VSVF9UUlVFKGV3a192aWV3X2FjY2Vzc2liaWxpdHlfYWN0aW9uX3ByZXZfZ2V0KHdlYlZp
ZXcoKSkpOworfQorCitURVNUX0YoRVdLMkFjY2Vzc2liaWxpdHksIGV3a19hY2Nlc3NpYmlsaXR5
X2FjdGlvbl9yZWFkX2J5X3BvaW50KQoreworICAgIGVjb3JlX3hfZV9pbGx1bWVfYWNjZXNzX2Fj
dGlvbl9yZWFkX3NlbmQoeHdpbmRvdygpKTsKKyAgICBib29sIHJlYWRTZW5kID0gZmFsc2U7Cisg
ICAgd2FpdFVudGlsVHJ1ZShyZWFkU2VuZCwgMSk7CisgICAgQVNTRVJUX1RSVUUoZXdrX3ZpZXdf
YWNjZXNzaWJpbGl0eV9hY3Rpb25fcmVhZF9ieV9wb2ludF9nZXQod2ViVmlldygpKSk7Cit9CisK
KyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGUyZTk5ODUuLjgzYTcz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkyNCw2ICs5
MjQsMTIgQEAgcHVibGljOgogCiAgICAgV2ViSGl0VGVzdFJlc3VsdCogYWN0aXZlQWN0aW9uTWVu
dUhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUFjdGlvbk1lbnVIaXRUZXN0
UmVzdWx0LmdldCgpOyB9CiAKKyNpZiBQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElU
WSkgJiYgZGVmaW5lZChIQVZFX0VDT1JFX1gpCisgICAgYm9vbCBhY2Nlc3NpYmlsaXR5T2JqZWN0
UmVhZEJ5UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICBib29sIGFjY2Vzc2li
aWxpdHlPYmplY3RSZWFkUHJldmlvdXMoKTsKKyAgICBib29sIGFjY2Vzc2liaWxpdHlPYmplY3RS
ZWFkTmV4dCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDb25m
aWd1cmF0aW9uJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAppbmRleCAwMmU1Mjlm
Li40ZWUyYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBh
Z2VQcm94eUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdl
UHJveHlFZmwuY3BwCkBAIC0xNDAsNCArMTQwLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0
aWFsaXplVUlQb3B1cE1lbnVDbGllbnQoY29uc3QgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRCYXNl
CiAgICAgbV91aVBvcHVwTWVudUNsaWVudC5pbml0aWFsaXplKGNsaWVudCk7CiB9CiAKKyNpZiBI
QVZFKEFDQ0VTU0lCSUxJVFkpICYmIGRlZmluZWQoSEFWRV9FQ09SRV9YKQorCitib29sIFdlYlBh
Z2VQcm94eTo6YWNjZXNzaWJpbGl0eU9iamVjdFJlYWRCeVBvaW50KGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb2ludCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocG9pbnQpOworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYlBhZ2VQcm94eTo6YWNj
ZXNzaWJpbGl0eU9iamVjdFJlYWRQcmV2aW91cygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5
T2JqZWN0UmVhZE5leHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>