<?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>114874</bug_id>
          
          <creation_ts>2013-04-19 07:09:52 -0700</creation_ts>
          <short_desc>Refactor transform code in StyleResolver</short_desc>
          <delta_ts>2013-04-19 10:16:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>878426</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-19 07:09:52 -0700</bug_when>
    <thetext>Refactor transform code in StyleResolver. It should be in it&apos;s own file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878427</commentid>
    <comment_count>1</comment_count>
      <attachid>198853</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-19 07:15:36 -0700</bug_when>
    <thetext>Created attachment 198853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878428</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-19 07:18:46 -0700</bug_when>
    <thetext>Attachment 198853 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcproj/WebCore.vcproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/css/TransformFunctions.cpp&apos;, u&apos;Source/WebCore/css/TransformFunctions.h&apos;, u&apos;Source/WebCore/css/WebKitCSSMatrix.cpp&apos;]&quot; exit_code: 1
Source/WebCore/css/TransformFunctions.cpp:285:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/css/TransformFunctions.cpp:296:  static_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebCore/css/TransformFunctions.cpp:297:  static_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878446</commentid>
    <comment_count>3</comment_count>
      <attachid>198853</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-04-19 08:17:20 -0700</bug_when>
    <thetext>Comment on attachment 198853
Patch

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

r=me

&gt; Source/WebCore/css/TransformFunctions.h:41
&gt; +bool transformsForValue(const RenderStyle*, const RenderStyle* rootStyle, CSSValue*, TransformOperations&amp;);

Can we make the CSSValue* argument const here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878453</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-04-19 08:30:51 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 198853 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=198853&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/css/TransformFunctions.h:41
&gt; &gt; +bool transformsForValue(const RenderStyle*, const RenderStyle* rootStyle, CSSValue*, TransformOperations&amp;);
&gt; 
&gt; Can we make the CSSValue* argument const here?

I tried to, that is why I pinged you about the CSSValueListIterator. It will be possible soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878555</commentid>
    <comment_count>5</comment_count>
      <attachid>198853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-19 10:16:27 -0700</bug_when>
    <thetext>Comment on attachment 198853
Patch

Clearing flags on attachment: 198853

Committed r148753: &lt;http://trac.webkit.org/changeset/148753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878556</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-19 10:16:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198853</attachid>
            <date>2013-04-19 07:15:36 -0700</date>
            <delta_ts>2013-04-19 10:16:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114874-20130419071508.patch</filename>
            <type>text/plain</type>
            <size>53481</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVjZTlmYjhkMjRjMjlh
YmZkNjFlM2E4NTViYmYwOGZmNTUxZTc4My4uY2M4YmU2MGQ4OWNiM2ZhODY0NTljZGM2NTc4OThl
YjFkYjc0NDNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTA0LTE5ICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgdHJhbnNmb3Jt
IGNvZGUgaW4gU3R5bGVSZXNvbHZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE0ODc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSB0cmFuc2Zvcm0gY29kZSBmcm9tZSBTdHlsZVJlc29sdmVyIGlu
dG8gb3duIGZpbGVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBubyBjaGFuZ2VzIGluIGZ1bmN0
aW9uYWxpdHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cGFy
c2VDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIpOgorICAgICAgICAqIGNzcy9TdHlsZVJl
c29sdmVyLmg6CisgICAgICAgICogY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1PcGVyYXRpb25U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0Zsb2F0TGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6CisgICAgICAgICogY3NzL1RyYW5zZm9ybUZ1
bmN0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzZXRN
YXRyaXhWYWx1ZSk6CisKIDIwMTMtMDQtMTcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWDogVm9pY2VPdmVyIHNheXMgZXZlcnl0aGluZyB0aGF0IGlz
bid0IGEgbGluayBpcyBhICJjbGlja2FibGUiIGluIFNhZmFyaSByZWFkZXI/CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDFlMzNjMWY3MTM4YzAxNWJkYzgzN2IxMTQxNzk4NTk2MWVjZGFkZWQuLmU3
Y2Y2NTI4NDBiZDRkMjI3NzczNGYxNDIxYWM0Yzk3MmIyNmM0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xMDk5LDYgKzEwOTksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKICAgICBjc3MvU1ZHQ1NTUGFyc2VyLmNw
cAogICAgIGNzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAorICAgIGNzcy9UcmFuc2Zvcm1GdW5j
dGlvbnMuY3BwCiAgICAgY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAKICAgICBjc3MvV2Vi
S2l0Q1NTRmlsdGVyUnVsZS5jcHAKICAgICBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlNzZlMWQwYjRiODU3MzY2YWZlZTg3OGI0
ODJhMWJkNTdkNjgwM2IyLi4wODlmMzNiOTZlNDZiNzFmOGFkODEyNTI0NTU1MjBhNGRjMmM4NTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3NTMsNiArMjc1Myw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50
cy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldExpc3QuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL1RyYW5z
Zm9ybUZ1bmN0aW9ucy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlv
bnMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU0FycmF5RnVuY3Rpb25WYWx1ZS5jcHAgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5k
ZXggMTNhMGZjMTkwNjhlNmQ4ZjIyNDI4NzZhMWYyMGVmM2VhNjMzMzBlYS4uNmFmMTEwZjljYmU2
YmY2NzMzMDJiMTMxYzBjZGEzZDM5OGRjYzYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNDMsNiArMzQz
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgY3NzL1N0eWxlU2hlZXQuY3BwIFwKICAgICBjc3MvU3R5
bGVTaGVldENvbnRlbnRzLmNwcCBcCiAgICAgY3NzL1N0eWxlU2hlZXRMaXN0LmNwcCBcCisgICAg
Y3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAgXAogICAgIGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2
ZXIuY3BwIFwKICAgICBjc3MvV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcCBcCiAgICAg
Y3NzL1dlYktpdENTU0ZpbHRlclJ1bGUuY3BwIFwKQEAgLTE1ODMsNiArMTU4NCw3IEBAIEhFQURF
UlMgKz0gXAogICAgIGNzcy9TdHlsZVNoZWV0LmggXAogICAgIGNzcy9TdHlsZVNoZWV0Q29udGVu
dHMuaCBcCiAgICAgY3NzL1N0eWxlU2hlZXRMaXN0LmggXAorICAgIGNzcy9UcmFuc2Zvcm1GdW5j
dGlvbnMuaCBcCiAgICAgY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZlci5oIFwKICAgICBjc3MvV2Vi
S2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmggXAogICAgIGNzcy9XZWJLaXRDU1NGaWx0ZXJSdWxl
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCAzMTJlMDY2MzcyYTUyNmU2N2RmMzBjZWZlZjNkMzE5NzIxZTMzNDFmLi4yYTk0ZmU1Y2Y4ZDE1
NGM0OTljZDc0NDBjZGZjOGQ5MGE0OTVkZGQ4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzg5NDMsNiArMzg5NDMsMTQgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFRyYW5zZm9ybUZ1
bmN0aW9ucy5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGNzc1xUcmFuc2Zvcm1GdW5jdGlvbnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAi
CiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2oKaW5kZXggOWMzOTk5M2YxYTMxNjJhMGI3MmRhNWQxNWVmZDQzYmFiYTUx
YzY2Zi4uNTA2N2NmMjE3NTJiODk4OGI2Njk4OThhNjQ0MGQwM2E3NzdmMWVkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC01Mzg4LDYg
KzUzODgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFNWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxjc3Nc
U1ZHQ1NTUGFyc2VyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xTVkdD
U1NTdHlsZVNlbGVjdG9yLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGNzc1xU
cmFuc2Zvcm1GdW5jdGlvbnMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3Nz
XFZpZXdwb3J0U3R5bGVSZXNvbHZlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
Llxjc3NcV2ViS2l0Q1NTQXJyYXlGdW5jdGlvblZhbHVlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGNzc1xXZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAiIC8+CkBAIC0xMjE2OCw2
ICsxMjE2OSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcU3R5bGVTaGVldC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlU2hlZXRDb250ZW50cy5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cY3NzXFN0eWxlU2hlZXRMaXN0LmgiIC8+
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcVHJhbnNmb3JtRnVuY3Rpb25zLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcVmlld3BvcnRTdHlsZVJlc29sdmVyLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTQXJyYXlGdW5jdGlv
blZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcV2ViS2l0Q1NTRmls
dGVyVmFsdWUuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAwNGEwZmI5NzU2ZGJmNzg0N2NlNTFmMDQ1
ZDJlNjM1MjU0MmNmOTFlLi41YmUxYTY4OGQ4MDg0OGIwYzIwYzZiY2IxNDg4OTEwNTFkYzNiODQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCkBAIC0zNzgzLDYgKzM3ODMsOSBAQAogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cY3NzXFNWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+Y3Nz
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxj
c3NcVHJhbnNmb3JtRnVuY3Rpb25zLmNwcCI+CisgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgor
ICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cY3NzXFZpZXdwb3J0
U3R5bGVSZXNvbHZlci5jcHAiPgogICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KQEAgLTEwNTYwLDYgKzEwNTYzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGNzc1xTdHlsZVNoZWV0TGlzdC5oIj4KICAgICAgIDxGaWx0ZXI+Y3NzPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxjc3NcVHJhbnNmb3Jt
RnVuY3Rpb25zLmgiPgorICAgICAgPEZpbHRlcj5jc3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGNzc1xWaWV3cG9ydFN0eWxlUmVzb2x2ZXIu
aCI+CiAgICAgICA8RmlsdGVyPmNzczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMw
MDM3ZGM0OGQ3MWQ5MmZmY2FjNjE0N2U3Y2Y0YTNiYjk0NDdlZjAuLmEwMWRkZWQ2NjM1ZTY2OTBi
YjUwYjMwYTdiMzk2ODNkNzJlNGVjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3MjgsNiArNTcyOCw4IEBACiAJCUZBQkU3
MkZFMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJGQzEwNTlDMjExMDBEOTk5REQgLyog
TWF0aE1MTmFtZXMuY3BwICovOyB9OwogCQlGQjJDMTVDMzE2NUQ2NDlEMDAzOUM5RjggLyogQ2Fj
aGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZCMkMxNUMyMTY1RDY0OTAwMDM5QzlGOCAvKiBDYWNoZWRTVkdEb2N1
bWVudFJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZCMzA1NkMyMTY5RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMzA1NkMxMTY5
RTVEQUMwMDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCAqLzsgfTsKKwkJRkI0ODRGNEMxNzFG
ODIxRTAwMDQwNzU1IC8qIFRyYW5zZm9ybUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjQ4NEY0QTE3MUY4MjFFMDAwNDA3NTUgLyog
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcCAqLzsgfTsKKwkJRkI0ODRGNEQxNzFGODIxRTAwMDQwNzU1
IC8qIFRyYW5zZm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkI0ODRGNEIxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5zZm9ybUZ1bmN0
aW9ucy5oICovOyB9OwogCQlGQjQ5QzM5RDE2Nzg0OTQ3MDA3RkZCNUQgLyogQ1NTSG9zdFJ1bGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCNDlDMzlD
MTY3ODQ5NDcwMDdGRkI1RCAvKiBDU1NIb3N0UnVsZS5oICovOyB9OwogCQlGQjc4QUQyRTE1MUJG
NUU2MDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkI3OEFEMkMxNTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNl
ck1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlGQjkxMzkyNDE2QUU0QzE3MDAxRkU2ODIgLyogRE9NUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MTM5MjAxNkFFNEIwQjAwMUZFNjgyIC8q
IERPTVBhdGguaCAqLzsgfTsKQEAgLTEyNTY4LDYgKzEyNTcwLDggQEAKIAkJRkFCRTcyRkMxMDU5
QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1hdGhNTE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkIyQzE1QzIxNjVENjQ5MDAwMzlDOUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCMzA1NkMxMTY5RTVEQUMw
MDk2QTIzMiAvKiBDU1NHcm91cGluZ1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ1NTR3JvdXBpbmdSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZC
NDg0RjRBMTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkI0ODRGNEIxNzFGODIxRTAwMDQwNzU1IC8qIFRy
YW5zZm9ybUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFu
c2Zvcm1GdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI0OUMzOUMx
Njc4NDk0NzAwN0ZGQjVEIC8qIENTU0hvc3RSdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0hvc3RSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZC
NDlDMzlFMTY3ODQ5NTQwMDdGRkI1RCAvKiBDU1NIb3N0UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ1NTSG9zdFJ1bGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
Qjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQYXJzZXJNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTg2Miw2ICsxOTg2Niw4IEBACiAJCQkJQjIyMjdCMDIwRDAwQkZGMTAwNzFC
NzgyIC8qIFNWR0NTU1Byb3BlcnR5TmFtZXMuaW4gKi8sCiAJCQkJQjIyMjdCMDMwRDAwQkZGMTAw
NzFCNzgyIC8qIFNWR0NTU1N0eWxlU2VsZWN0b3IuY3BwICovLAogCQkJCUIyMjI3QjA0MEQwMEJG
RjEwMDcxQjc4MiAvKiBTVkdDU1NWYWx1ZUtleXdvcmRzLmluICovLAorCQkJCUZCNDg0RjRBMTcx
RjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuY3BwICovLAorCQkJCUZCNDg0RjRC
MTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuaCAqLywKIAkJCQlCQzVFQzE3
NjBBNTA3RTNFMDA2MDA3RjUgLyogdmlldy1zb3VyY2UuY3NzICovLAogCQkJCTNGRkZGOUFCMTU5
RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwICovLAogCQkJCTNGRkZG
OUFDMTU5RDlCMDYwMDIwQkJENSAvKiBWaWV3cG9ydFN0eWxlUmVzb2x2ZXIuaCAqLywKQEAgLTI0
MDM5LDYgKzI0MDQ1LDcgQEAKIAkJCQlFMTUyNTUxNTE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29y
ZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUI1MzM0OTE3MTdERUUzMDBGMjA1RjkgLyogQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJFODhFMEMyMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xp
c3RCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQjQ4NEY0RDE3MUY4MjFFMDAwNDA3NTUgLyog
VHJhbnNmb3JtRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI2OTg4LDYgKzI2OTk1LDcg
QEAKIAkJCQlFMTUyNTUxNjE2RkQyMzUwMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCNTMzNDcx
NzE3RDBBMTAwRjIwNUY5IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJFODhFMEMxMTcxNUNFMjYwMDY1OEQ5OCAvKiBUcmFja0xpc3RCYXNlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZCNDg0RjRDMTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zv
cm1GdW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggMWZlYWNkYWZmMWEyODY0ZDc3NmVhMzU5NWQ4Mjk2NmIzZjRjMTc1ZC4uYWJh
YjNlMjU2MzA1OGE1MjVmNWM5NmRkMDIyOGMxZWJmNDIwZWRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtODEsOCArODEsNiBAQAogI2luY2x1ZGUgIkxpbmtIYXNoLmgi
CiAjaW5jbHVkZSAiTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmgiCiAjaW5jbHVkZSAiTWF0aE1MTmFt
ZXMuaCIKLSNpbmNsdWRlICJNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUg
Ik1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgogI2lu
Y2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUu
aCIKQEAgLTkwLDcgKzg4LDYgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZVJ1
bGVDb2xsZWN0b3IuaCIKICNpbmNsdWRlICJQYWlyLmgiCi0jaW5jbHVkZSAiUGVyc3BlY3RpdmVU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgiCiAjaW5jbHVkZSAi
UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgpAQCAtOTksMTggKzk2LDE1IEBACiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKICNpbmNsdWRlICJSdWxlU2V0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2Nh
bGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlckZhc3RQYXRoLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
ICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgIlNoYWRvd1ZhbHVlLmgiCi0jaW5jbHVkZSAiU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUdlbmVyYXRlZElt
YWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5kaW5nSW1hZ2UuaCIKQEAgLTEyMSw4ICsxMTUsOCBA
QAogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRM
aXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCi0jaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAi
VHJhbnNmb3JtRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgog
I2luY2x1ZGUgIlVzZXJBZ2VudFN0eWxlU2hlZXRzLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRTdHls
ZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5oIgpAQCAtMjY1Miw3ICsy
NjQ2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
OiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRyYW5zZm9ybSwgVHJhbnNm
b3JtKTsKICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOwotICAgICAgICBj
cmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlLCBzdGF0ZS5zdHlsZSgpLCBzdGF0ZS5yb290
RWxlbWVudFN0eWxlKCksIG9wZXJhdGlvbnMpOworICAgICAgICB0cmFuc2Zvcm1zRm9yVmFsdWUo
c3RhdGUuc3R5bGUoKSwgc3RhdGUucm9vdEVsZW1lbnRTdHlsZSgpLCB2YWx1ZSwgb3BlcmF0aW9u
cyk7CiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldFRyYW5zZm9ybShvcGVyYXRpb25zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1NDEsMjgwICszNTM1LDYgQEAgYm9vbCBTdHlsZVJl
c29sdmVyOjphZmZlY3RlZEJ5Vmlld3BvcnRDaGFuZ2UoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotc3RhdGljIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBnZXRUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2Zvcm1PcGVy
YXRpb25UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFOwotICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNj
YWxlWFRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
WDsKLSAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVy
YXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k7Ci0gICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJh
bnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOwotICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFXzNEOwotICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOwot
ICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVy
YXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOwotICAgIGNhc2Ug
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246IHJl
dHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOwotICAgIGNhc2UgV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOwotICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfM0Q7Ci0gICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RB
VEU7Ci0gICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWFRyYW5zZm9ybU9w
ZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g7Ci0gICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJu
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k7Ci0gICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZTo6Um90YXRlWlRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJh
dGlvbjo6Uk9UQVRFX1o7Ci0gICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRl
M0RUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8z
RDsKLSAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0
aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOwotICAgIGNhc2UgV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlNrZXdYVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3Jt
T3BlcmF0aW9uOjpTS0VXX1g7Ci0gICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tl
d1lUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWTsK
LSAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDsKLSAgICBjYXNlIFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOwotICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0
aW9uOjpQRVJTUEVDVElWRTsKLSAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpVbmtu
b3duVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOwot
ICAgIH0KLSAgICByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOwotfQotCi1ib29sIFN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUs
IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgb3V0T3BlcmF0aW9ucykKLXsKLSAgICBpZiAoIWluVmFsdWUgfHwgIWluVmFsdWUt
PmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgb3V0T3BlcmF0aW9ucy5jbGVhcigpOwotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlID8g
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IDE7Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zOwotICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IGluVmFsdWU7IGkuaGFz
TW9yZSgpOyBpLmFkdmFuY2UoKSkgewotICAgICAgICBDU1NWYWx1ZSogY3VyclZhbHVlID0gaS52
YWx1ZSgpOwotCi0gICAgICAgIGlmICghY3VyclZhbHVlLT5pc1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZSogdHJhbnNmb3JtVmFsdWUgPSBzdGF0aWNfY2FzdDxXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSo+KGkudmFsdWUoKSk7Ci0gICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgp
KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYm9vbCBoYXZlTm9uUHJpbWl0aXZl
VmFsdWUgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHRyYW5zZm9y
bVZhbHVlLT5sZW5ndGgoKTsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoIXRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGopLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgICAgICAgICBoYXZlTm9uUHJpbWl0aXZlVmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChoYXZlTm9uUHJp
bWl0aXZlVmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZmlyc3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJh
bnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpOwotCi0gICAgICAgIHN3aXRj
aCAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSkgewotICAgICAgICBjYXNlIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgY2Fz
ZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uOgotICAg
ICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRp
b246IHsKLSAgICAgICAgICAgIGRvdWJsZSBzeCA9IDEuMDsKLSAgICAgICAgICAgIGRvdWJsZSBz
eSA9IDEuMDsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgp
ID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0g
ICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlw
ZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24p
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDEp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNv
bmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHN4LCBzeSwgMS4wLCBnZXRUcmFuc2Zvcm1PcGVy
YXRpb25UeXBlKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgIGRvdWJs
ZSBzeCA9IDEuMDsKLSAgICAgICAgICAgIGRvdWJsZSBzeSA9IDEuMDsKLSAgICAgICAgICAgIGRv
dWJsZSBzeiA9IDEuMDsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9u
VHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRp
b24pCi0gICAgICAgICAgICAgICAgc3ogPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAg
ICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KTsKLSAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSAh
PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMikpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJs
ZVZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgc3kgPSBzeDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShzeCwgc3ksIHN6LCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9y
bVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb246Ci0gICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5z
bGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgIExlbmd0
aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7Ci0gICAgICAgICAgICBMZW5ndGggdHkgPSBMZW5ndGgo
MCwgRml4ZWQpOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBl
KCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRp
b24pCi0gICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVl
LCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIHR4ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZh
bHVlLT5vcGVyYXRpb25UeXBlKCkgIT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0
ZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9y
bVZhbHVlLT5sZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9GbG9hdExlbmd0aChzZWNvbmRWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0eC5pc1VuZGVmaW5l
ZCgpIHx8IHR5LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCBMZW5ndGgoMCwgRml4ZWQpLCBnZXRUcmFu
c2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICBjYXNlIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogewot
ICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3RoKDAsIEZpeGVkKTsKLSAgICAgICAgICAgIExl
bmd0aCB0eSA9IExlbmd0aCgwLCBGaXhlZCk7Ci0gICAgICAgICAgICBMZW5ndGggdHogPSBMZW5n
dGgoMCwgRml4ZWQpOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25U
eXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVy
YXRpb24pCi0gICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZh
bHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgdHkgPSBj
b252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFj
dG9yKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHR4ID0gY29udmVydFRv
RmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgIT0gV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSA+IDIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0Zs
b2F0TGVuZ3RoKHRoaXJkVmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1
ZS0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290
U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodHguaXNVbmRlZmluZWQoKSB8
fCB0eS5pc1VuZGVmaW5lZCgpIHx8IHR6LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUodHgsIHR5LCB0eiwgZ2V0VHJh
bnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpKSkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICBkb3Vi
bGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5jb21wdXRlRGVncmVlcygpOwotICAgICAgICAgICAgb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKDAsIDAsIDEsIGFuZ2xlLCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZh
bHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVYVHJhbnNmb3JtT3Bl
cmF0aW9uOgotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJh
bnNmb3JtT3BlcmF0aW9uOgotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpS
b3RhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IDA7Ci0g
ICAgICAgICAgICBkb3VibGUgeSA9IDA7Ci0gICAgICAgICAgICBkb3VibGUgeiA9IDA7Ci0gICAg
ICAgICAgICBkb3VibGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5jb21wdXRlRGVncmVlcygpOwotCi0g
ICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICB4ID0gMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRp
b25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZVlUcmFuc2Zvcm1PcGVy
YXRpb24pCi0gICAgICAgICAgICAgICAgeSA9IDE7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgeiA9IDE7Ci0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBl
bmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgYW5nbGUsIGdldFRy
YW5zZm9ybU9wZXJhdGlvblR5cGUodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSkpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICBp
ZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpIDwgNCkKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMSkpOwotICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDIpKTsKLSAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb3VydGhWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMykpOwotICAgICAgICAgICAgZG91YmxlIHggPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIHkgPSBzZWNvbmRWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZvdXJ0aFZhbHVlLT5j
b21wdXRlRGVncmVlcygpOwotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFuZ2xlLCBnZXRU
cmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICBjYXNlIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgY2Fz
ZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1lUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAg
ICAgICAgICAgIGRvdWJsZSBhbmdsZVggPSAwOwotICAgICAgICAgICAgZG91YmxlIGFuZ2xlWSA9
IDA7Ci0gICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5jb21wdXRlRGVncmVl
cygpOwotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAg
ICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgYW5nbGVYID0gYW5nbGU7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVl
LT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5s
ZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGVZID0gc2Vjb25kVmFsdWUtPmNvbXB1dGVEZWdyZWVzKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBv
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2tld1RyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKGFuZ2xlWCwgYW5nbGVZLCBnZXRUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKHRyYW5zZm9ybVZh
bHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb246IHsKLSAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPCA2KQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGIgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDEpKS0+Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBjID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygyKSktPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZCA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMykpLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGUgPSB6
b29tRmFjdG9yICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1
ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAg
ICAgICBkb3VibGUgZiA9IHpvb21GYWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS0+Z2V0RG91Ymxl
VmFsdWUoKTsKLSAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRy
aXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShhLCBiLCBjLCBkLCBlLCBmKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjogewotICAgICAgICAgICAgaWYgKHRyYW5z
Zm9ybVZhbHVlLT5sZW5ndGgoKSA8IDE2KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLT5nZXRE
b3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMSkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMikpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFs
dWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLT5nZXREb3VibGVWYWx1
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5n
ZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soNikpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soNykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLT5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOSkpLT5nZXREb3VibGVW
YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTAp
KS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDExKSktPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgem9vbUZhY3RvciAqIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJh
bnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTIpKS0+Z2V0RG91YmxlVmFsdWUo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tRmFjdG9yICogc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHND
aGVjaygxMykpLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMTQpKS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE1KSktPmdldERvdWJsZVZhbHVlKCkpOwot
ICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbjogewotICAgICAgICAgICAgTGVuZ3RoIHAgPSBMZW5ndGgoMCwgRml4
ZWQpOwotICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPmlzTGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgcCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFy
ZSBmaW5hbGl6ZWQuCi0gICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUtPmdl
dERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgcCA9IHZhbCA+PSAwID8gTGVuZ3RoKGNs
YW1wVG9Qb3NpdGl2ZUludGVnZXIodmFsKSwgRml4ZWQpIDogTGVuZ3RoKFVuZGVmaW5lZCk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlv
bnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShwKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIG91dE9wZXJhdGlvbnMgPSBvcGVyYXRpb25zOwotICAgIHJldHVybiB0cnVlOwotfQotCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogc3RhdGljIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9u
VHlwZSBmaWx0ZXJPcGVyYXRpb25Gb3JUeXBlKFdlYktpdENTU0ZpbHRlclZhbHVlOjpGaWx0ZXJP
cGVyYXRpb25UeXBlIHR5cGUpCiB7CkBAIC0zOTkyLDcgKzM3MTIsNyBAQCBQYXNzUmVmUHRyPEN1
c3RvbUZpbHRlclBhcmFtZXRlcj4gU3R5bGVSZXNvbHZlcjo6cGFyc2VDdXN0b21GaWx0ZXJUcmFu
c2Zvcm1QYXJhbQogewogICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI+
IHRyYW5zZm9ybVBhcmFtZXRlciA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3Jl
YXRlKG5hbWUpOwogICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICBjcmVh
dGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlcywgbV9zdGF0ZS5zdHlsZSgpLCBtX3N0YXRlLnJv
b3RFbGVtZW50U3R5bGUoKSwgb3BlcmF0aW9ucyk7CisgICAgdHJhbnNmb3Jtc0ZvclZhbHVlKG1f
c3RhdGUuc3R5bGUoKSwgbV9zdGF0ZS5yb290RWxlbWVudFN0eWxlKCksIHZhbHVlcywgb3BlcmF0
aW9ucyk7CiAgICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMp
OwogICAgIHJldHVybiB0cmFuc2Zvcm1QYXJhbWV0ZXIucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmgKaW5kZXggOThlNjExODA5N2JkYzhjYWEyZTZiNDkzOGQ3ZDIyNmY2
N2VlYjA0ZC4uNDliOGQyMDM5Y2MzNjg1MjZhY2VmYWY2YjU0ZWVlYTRmM2I0ZDk1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zMDQsOCArMzA0LDYgQEAgcHVibGljOgogICAg
IGJvb2wgdXNlc1NpYmxpbmdSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFtX3J1bGVTZXRzLmZlYXR1
cmVzKCkuc2libGluZ1J1bGVzLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgdXNlc0ZpcnN0TGluZVJ1
bGVzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0cy5mZWF0dXJlcygpLnVzZXNGaXJzdExpbmVS
dWxlczsgfQogICAgIGJvb2wgdXNlc0JlZm9yZUFmdGVyUnVsZXMoKSBjb25zdCB7IHJldHVybiBt
X3J1bGVTZXRzLmZlYXR1cmVzKCkudXNlc0JlZm9yZUFmdGVyUnVsZXM7IH0KLQotICAgIHN0YXRp
YyBib29sIGNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRl
clN0eWxlKiBpblN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBUcmFuc2Zvcm1PcGVyYXRp
b25zJiBvdXRPcGVyYXRpb25zKTsKICAgICAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJv
cGVydGllc0NhY2hlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zv
cm1GdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDcyNWY4NjJhMDhkMWMzMDg1NGE4OWE4OWMwY2I2NzUzZDgzNTM2Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMu
Y3BwCkBAIC0wLDAgKzEsMzI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcK
KyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVIg4oCcQVMgSVPigJ0g
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgQkUKKyAqIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKKyAqIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRgorICog
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVHJhbnNmb3JtRnVuY3Rpb25zLmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTVmFs
dWVQb29sLmgiCisjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNs
dWRlICJNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKKyNpbmNsdWRlICJTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAi
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIHRyYW5zZm9ybU9wZXJhdGlvblR5cGUoV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OlRyYW5zZm9ybU9wZXJhdGlvblR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU7CisgICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4g
VHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOworICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfWTsKKyAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVpUcmFu
c2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o7CisgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbjog
cmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q7CisgICAgY2FzZSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU7CisgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFX1g7CisgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNs
YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1k7CisgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5z
Zm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o7Cisg
ICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlM0RUcmFuc2Zvcm1PcGVy
YXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDsKKyAgICBjYXNl
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVy
biBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURTsKKyAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEVfWDsKKyAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZ
VHJhbnNmb3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWTsK
KyAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVaVHJhbnNmb3JtT3BlcmF0
aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWjsKKyAgICBjYXNlIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOworICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246
OlNLRVc7CisgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFuc2Zvcm1P
cGVyYXRpb246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDsKKyAgICBjYXNlIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOworICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjogcmV0dXJuIFRyYW5zZm9ybU9wZXJhdGlvbjo6
TUFUUklYOworICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uOiByZXR1cm4gVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q7CisgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b246IHJldHVybiBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOworICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlVua25vd25UcmFuc2Zvcm1PcGVyYXRpb246IHJldHVybiBU
cmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU7CisgICAgfQorICAgIHJldHVybiBUcmFuc2Zvcm1PcGVy
YXRpb246Ok5PTkU7Cit9CisKK3N0YXRpYyBMZW5ndGggY29udmVydFRvRmxvYXRMZW5ndGgoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKQor
eworICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZSA/IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9M
ZW5ndGg8Rml4ZWRGbG9hdENvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0
ZWRDb252ZXJzaW9uIHwgRnJhY3Rpb25Db252ZXJzaW9uIHwgVmlld3BvcnRQZXJjZW50YWdlQ29u
dmVyc2lvbj4oc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikgOiBMZW5ndGgoVW5kZWZpbmVk
KTsKK30KKworYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBDU1NWYWx1ZSogdmFsdWUsIFRyYW5zZm9y
bU9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUt
PmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgb3V0T3BlcmF0aW9ucy5jbGVhcigpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlID8g
c3R5bGUtPmVmZmVjdGl2ZVpvb20oKSA6IDE7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zOworICAgIGZvciAoQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaSA9IHZhbHVlOyBpLmhhc01v
cmUoKTsgaS5hZHZhbmNlKCkpIHsKKyAgICAgICAgQ1NTVmFsdWUqIGN1cnJWYWx1ZSA9IGkudmFs
dWUoKTsKKworICAgICAgICBpZiAoIWN1cnJWYWx1ZS0+aXNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUqPihpLnZhbHVlKCkpOworICAgICAgICBpZiAoIXRyYW5zZm9ybVZhbHVlLT5sZW5ndGgoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGJvb2wgaGF2ZU5vblByaW1pdGl2ZVZh
bHVlID0gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCB0cmFuc2Zvcm1W
YWx1ZS0+bGVuZ3RoKCk7ICsraikgeworICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhqKS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAg
ICAgICAgICAgaGF2ZU5vblByaW1pdGl2ZVZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoaGF2ZU5vblByaW1p
dGl2ZVZhbHVlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgQ1NTUHJpbWl0aXZl
VmFsdWUqIGZpcnN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5z
Zm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKKworICAgICAgICBzd2l0Y2gg
KHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgIGNhc2Ug
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAg
ICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9u
OiB7CisgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7CisgICAgICAgICAgICBkb3VibGUgc3kg
PSAxLjA7CisgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSA9
PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAg
ICAgICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFs
dWUoKTsKKyAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUo
KSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25k
VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShzeCwgc3ksIDEuMCwgdHJhbnNmb3JtT3BlcmF0aW9u
VHlwZSh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2Nh
bGVaVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpTY2FsZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICBkb3VibGUgc3gg
PSAxLjA7CisgICAgICAgICAgICBkb3VibGUgc3kgPSAxLjA7CisgICAgICAgICAgICBkb3VibGUg
c3ogPSAxLjA7CisgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUo
KSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uKQor
ICAgICAgICAgICAgICAgIHN6ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAg
ICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgIT0gV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN6ID0gdGhpcmRWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpID4gMSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN5ID0gc3g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
b3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoc3gsIHN5LCBzeiwgdHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS0+
b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOgorICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJh
bnNmb3JtT3BlcmF0aW9uOgorICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpU
cmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICBMZW5ndGggdHggPSBM
ZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZpeGVk
KTsKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAg
ICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0eCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3Bl
cmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNm
b3JtT3BlcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+
bGVuZ3RoKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9y
bVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHR5ID0gY29udmVydFRvRmxvYXRMZW5ndGgoc2Vjb25kVmFsdWUsIHN0eWxlLCByb290U3R5
bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHguaXNVbmRlZmluZWQoKSB8fCB0
eS5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKHR4LCB0eSwgTGVuZ3RoKDAsIEZpeGVkKSwgdHJhbnNmb3JtT3BlcmF0
aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
VHJhbnNsYXRlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6VHJhbnNsYXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAgICAgICAgICAg
IExlbmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAgICBMZW5ndGggdHkgPSBM
ZW5ndGgoMCwgRml4ZWQpOworICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVk
KTsKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uKQorICAg
ICAgICAgICAgICAgIHR6ID0gY29udmVydFRvRmxvYXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1W
YWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xh
dGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgIHR5ID0gY29udmVydFRvRmxv
YXRMZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0Zsb2F0TGVuZ3Ro
KGZpcnN0VmFsdWUsIHN0eWxlLCByb290U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAg
ICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MikpOworICAgICAgICAgICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9GbG9hdExlbmd0aCh0
aGlyZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgp
ID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29u
ZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0eSA9
IGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKHNlY29uZFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29t
RmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHR4LmlzVW5kZWZpbmVkKCkgfHwgdHkuaXNVbmRl
ZmluZWQoKSB8fCB0ei5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHR4LCB0eSwgdHosIHRyYW5zZm9ybU9wZXJhdGlv
blR5cGUodHJhbnNmb3JtVmFsdWUtPm9wZXJhdGlvblR5cGUoKSkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmly
c3RWYWx1ZS0+Y29tcHV0ZURlZ3JlZXMoKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0
aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgwLCAwLCAxLCBh
bmdsZSwgdHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlw
ZSgpKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAg
Y2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjoK
KyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWlRyYW5zZm9ybU9w
ZXJhdGlvbjogeworICAgICAgICAgICAgZG91YmxlIHggPSAwOworICAgICAgICAgICAgZG91Ymxl
IHkgPSAwOworICAgICAgICAgICAgZG91YmxlIHogPSAwOworICAgICAgICAgICAgZG91YmxlIGFu
Z2xlID0gZmlyc3RWYWx1ZS0+Y29tcHV0ZURlZ3JlZXMoKTsKKworICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
OlJvdGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgeCA9IDE7CisgICAg
ICAgICAgICBlbHNlIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAg
ICAgICAgIHkgPSAxOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHogPSAxOwor
ICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFuZ2xlLCB0cmFuc2Zvcm1PcGVyYXRpb25UeXBl
KHRyYW5zZm9ybVZhbHVlLT5vcGVyYXRpb25UeXBlKCkpKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUz
RFRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLT5s
ZW5ndGgoKSA8IDQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKKyAgICAgICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMp
KTsKKyAgICAgICAgICAgIGRvdWJsZSB4ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsK
KyAgICAgICAgICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Cisg
ICAgICAgICAgICBkb3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAg
ICAgICAgICBkb3VibGUgYW5nbGUgPSBmb3VydGhWYWx1ZS0+Y29tcHV0ZURlZ3JlZXMoKTsKKyAg
ICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgdHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh0
cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpKSkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1RyYW5z
Zm9ybU9wZXJhdGlvbjoKKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tl
d1hUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICBkb3VibGUgYW5nbGVY
ID0gMDsKKyAgICAgICAgICAgIGRvdWJsZSBhbmdsZVkgPSAwOworICAgICAgICAgICAgZG91Ymxl
IGFuZ2xlID0gZmlyc3RWYWx1ZS0+Y29tcHV0ZURlZ3JlZXMoKTsKKyAgICAgICAgICAgIGlmICh0
cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICBhbmdsZVkgPSBhbmds
ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFuZ2xlOwor
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpID09IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IHNlY29uZFZhbHVl
LT5jb21wdXRlRGVncmVlcygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCku
YXBwZW5kKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShhbmdsZVgsIGFuZ2xlWSwgdHJh
bnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS0+b3BlcmF0aW9uVHlwZSgpKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICBpZiAo
dHJhbnNmb3JtVmFsdWUtPmxlbmd0aCgpIDwgNikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAg
ICAgICAgIGRvdWJsZSBiID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zv
cm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCk7Cisg
ICAgICAgICAgICBkb3VibGUgYyA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJh
bnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpLT5nZXREb3VibGVWYWx1ZSgp
OworICAgICAgICAgICAgZG91YmxlIGQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS0+Z2V0RG91YmxlVmFs
dWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBlID0gem9vbUZhY3RvciAqIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
NCkpLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGYgPSB6b29tRmFjdG9y
ICogc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayg1KSktPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBvcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoYSwgYiwgYywgZCwgZSwgZikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb246IHsKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS0+bGVuZ3RoKCkgPCAxNikK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1hdHJpeChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFu
c2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSktPmdldERvdWJsZVZhbHVlKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpLT5nZXRE
b3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDMpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdp
dGhvdXRCb3VuZHNDaGVjayg0KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3Jt
VmFsdWUtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYpKS0+Z2V0RG91Ymxl
VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3
KSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soOCkpLT5nZXREb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVl
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDkpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0
cmFuc2Zvcm1WYWx1ZS0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMCkpLT5nZXREb3VibGVWYWx1
ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDExKSkt
PmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpvb21G
YWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDEyKSktPmdldERvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgKiBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHRyYW5zZm9ybVZhbHVlLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSktPmdl
dERvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odHJhbnNmb3JtVmFsdWUtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMTQpKS0+Z2V0RG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih0cmFuc2Zvcm1WYWx1ZS0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAg
IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKG1hdHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb246IHsKKyAgICAgICAgICAgIExlbmd0aCBwID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAg
ICAgICAgIGlmIChmaXJzdFZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICAgICAgICAgIHAgPSBj
b252ZXJ0VG9GbG9hdExlbmd0aChmaXJzdFZhbHVlLCBzdHlsZSwgcm9vdFN0eWxlLCB6b29tRmFj
dG9yKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBx
dWlyayB0aGF0IHNob3VsZCBnbyBhd2F5IHdoZW4gM2QgdHJhbnNmb3JtcyBhcmUgZmluYWxpemVk
LgorICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgICAgIHAgPSB2YWwgPj0gMCA/IExlbmd0aChjbGFtcFRvUG9zaXRp
dmVJbnRlZ2VyKHZhbCksIEZpeGVkKSA6IExlbmd0aChVbmRlZmluZWQpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAocC5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBvdXRPcGVy
YXRpb25zID0gb3BlcmF0aW9uczsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3NWUwYjY1NjUwMzc4MWM4
MzFmZGExNDUyMjM5ZTQ2YWI0ZGQ4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUcmFuc2Zvcm1GdW5jdGlvbnNfaAorI2RlZmlu
ZSBUcmFuc2Zvcm1GdW5jdGlvbnNfaAorCisjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1ZhbHVlOworY2xhc3MgUmVuZGVy
U3R5bGU7CitjbGFzcyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTsKKworYm9vbCB0cmFuc2Zvcm1z
Rm9yVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
LCBDU1NWYWx1ZSosIFRyYW5zZm9ybU9wZXJhdGlvbnMmKTsKKworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IGUzMmJiOGQyMWJkM2I0Yzc1ODRhMjYy
MmVlNDkxZGQwM2FkNWU0NDcuLmYxY2M2YTQxMzA3YzA2YzdhNjI5NTA4MDMzOWM4Zjc1NGNiYTdk
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCi0jaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY2LDcgKzY2LDcgQEAgdm9p
ZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBUcmFuc2Zv
cm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGlmICghU3R5bGVSZXNvbHZlcjo6Y3Jl
YXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZS5nZXQoKSwgMCwgMCwgb3BlcmF0aW9ucykpIHsK
KyAgICAgICAgaWYgKCF0cmFuc2Zvcm1zRm9yVmFsdWUoMCwgMCwgdmFsdWUuZ2V0KCksIG9wZXJh
dGlvbnMpKSB7CiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>