<?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>202476</bug_id>
          
          <creation_ts>2019-10-02 09:58:03 -0700</creation_ts>
          <short_desc>Allow pages using FontFaceSet to enter the back/forward cache</short_desc>
          <delta_ts>2019-10-04 11:17:01 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202548</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>202293</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576034</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-02 09:58:03 -0700</bug_when>
    <thetext>Allow pages using FontFaceSet to enter the back/forward cache. This causes failures on sites with Youtube embeds for example:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576533</commentid>
    <comment_count>1</comment_count>
      <attachid>380148</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 11:52:44 -0700</bug_when>
    <thetext>Created attachment 380148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576575</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 13:42:46 -0700</bug_when>
    <thetext>I&apos;m also doing a little bit of additional investigation around this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576600</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 14:27:28 -0700</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #2)
&gt; I&apos;m also doing a little bit of additional investigation around this bug.

There are 2 issues:
1. Sometimes, the FontFace think it is loading when it actually is not (which I did not address and Myles is investigating).
2. We fail to enter page cache because the FontFace think it is still loading (which I address).

I agree that it&apos;d be good to investigate 1 but fixing 1 would not be sufficient, because we want to enter PageCache no matter what, even if the font really is loading.
This is why I think implementing queueing in FontFaceSet like my patch does is the right thing to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576632</commentid>
    <comment_count>4</comment_count>
      <attachid>380148</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-10-03 15:42:40 -0700</bug_when>
    <thetext>Comment on attachment 380148
Patch

I&apos;ve gotten a bug about this kind of behavior: https://github.com/doanythingfordethklok/safari-cache-bug but if we are really willing to use the policy of cancelling all in-flight requests during navigation, and never reloading them upon &apos;back&apos;, then this patch is a good one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576657</commentid>
    <comment_count>5</comment_count>
      <attachid>380148</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 17:38:02 -0700</bug_when>
    <thetext>Comment on attachment 380148
Patch

Clearing flags on attachment: 380148

Committed r250693: &lt;https://trac.webkit.org/changeset/250693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576658</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 17:38:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576659</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-03 17:39:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55968375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576924</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-04 10:56:49 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/250693/webkit

caused 4 new crashes on Debug:
fast/text/document-fonts-while-loading-crash.html 
fast/text/font-face-set-destroy-document.html 
fast/text/font-face-set-javascript.html 
http/tests/navigation/page-cache-fragment-referrer.html

History:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash.html%20fast%2Ftext%2Ffont-face-set-destroy-document.html%20fast%2Ftext%2Ffont-face-set-javascript.html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html

Assertion crash:
ASSERTION FAILED: !m_valueOrException
/Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/DOMPromiseProxy.h(294) : void WebCore::DOMPromiseProxyWithResolveCallback&lt;WebCore::IDLInterface&lt;WebCore::FontFaceSet&gt; &gt;::resolve(typename IDLType::ParameterType) [IDLType = WebCore::IDLInterface&lt;WebCore::FontFaceSet&gt;]

ASSERTION FAILED: !is&lt;Document&gt;(m_scriptExecutionContext) || &amp;downcast&lt;Document&gt;(m_scriptExecutionContext)-&gt;contextDocument() == downcast&lt;Document&gt;(m_scriptExecutionContext)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576925</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 10:57:22 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #8)
&gt; It looks like the changes in https://trac.webkit.org/changeset/250693/webkit
&gt; 
&gt; caused 4 new crashes on Debug:
&gt; fast/text/document-fonts-while-loading-crash.html 
&gt; fast/text/font-face-set-destroy-document.html 
&gt; fast/text/font-face-set-javascript.html 
&gt; http/tests/navigation/page-cache-fragment-referrer.html
&gt; 
&gt; History:
&gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; html#showAllRuns=true&amp;tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash.
&gt; html%20fast%2Ftext%2Ffont-face-set-destroy-document.
&gt; html%20fast%2Ftext%2Ffont-face-set-javascript.
&gt; html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html
&gt; 
&gt; Assertion crash:
&gt; ASSERTION FAILED: !m_valueOrException
&gt; /Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/
&gt; DOMPromiseProxy.h(294) : void
&gt; WebCore::DOMPromiseProxyWithResolveCallback&lt;WebCore::IDLInterface&lt;WebCore::
&gt; FontFaceSet&gt; &gt;::resolve(typename IDLType::ParameterType) [IDLType =
&gt; WebCore::IDLInterface&lt;WebCore::FontFaceSet&gt;]
&gt; 
&gt; ASSERTION FAILED: !is&lt;Document&gt;(m_scriptExecutionContext) ||
&gt; &amp;downcast&lt;Document&gt;(m_scriptExecutionContext)-&gt;contextDocument() ==
&gt; downcast&lt;Document&gt;(m_scriptExecutionContext)

Looking now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576929</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-04 11:17:01 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Truitt Savell from comment #8)
&gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/250693/webkit
&gt; &gt; 
&gt; &gt; caused 4 new crashes on Debug:
&gt; &gt; fast/text/document-fonts-while-loading-crash.html 
&gt; &gt; fast/text/font-face-set-destroy-document.html 
&gt; &gt; fast/text/font-face-set-javascript.html 
&gt; &gt; http/tests/navigation/page-cache-fragment-referrer.html
&gt; &gt; 
&gt; &gt; History:
&gt; &gt; https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.
&gt; &gt; html#showAllRuns=true&amp;tests=fast%2Ftext%2Fdocument-fonts-while-loading-crash.
&gt; &gt; html%20fast%2Ftext%2Ffont-face-set-destroy-document.
&gt; &gt; html%20fast%2Ftext%2Ffont-face-set-javascript.
&gt; &gt; html%20http%2Ftests%2Fnavigation%2Fpage-cache-fragment-referrer.html
&gt; &gt; 
&gt; &gt; Assertion crash:
&gt; &gt; ASSERTION FAILED: !m_valueOrException
&gt; &gt; /Volumes/Data/slave/mojave-debug/build/Source/WebCore/bindings/js/
&gt; &gt; DOMPromiseProxy.h(294) : void
&gt; &gt; WebCore::DOMPromiseProxyWithResolveCallback&lt;WebCore::IDLInterface&lt;WebCore::
&gt; &gt; FontFaceSet&gt; &gt;::resolve(typename IDLType::ParameterType) [IDLType =
&gt; &gt; WebCore::IDLInterface&lt;WebCore::FontFaceSet&gt;]
&gt; &gt; 
&gt; &gt; ASSERTION FAILED: !is&lt;Document&gt;(m_scriptExecutionContext) ||
&gt; &gt; &amp;downcast&lt;Document&gt;(m_scriptExecutionContext)-&gt;contextDocument() ==
&gt; &gt; downcast&lt;Document&gt;(m_scriptExecutionContext)
&gt; 
&gt; Looking now.

Fixed in &lt;https://trac.webkit.org/changeset/250731&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380148</attachid>
            <date>2019-10-03 11:52:44 -0700</date>
            <delta_ts>2019-10-03 17:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202476-20191003115243.patch</filename>
            <type>text/plain</type>
            <size>26347</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ1MzVjOTY1MDQ3NGNi
ZjQyYmFkMzM5NzJmZmRjNzI3NjVhYTc0OC4uNWJmMzBkNTM0M2I3NjY5Y2Q1ZGNlZTRiMTlkZmNi
MDQ3MjdlMjI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTEwLTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgcGFnZXMgdXNpbmcg
Rm9udEZhY2VTZXQgdG8gZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNDc2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsb3cgcGFnZXMgdXNpbmcgRm9u
dEZhY2VTZXQgdG8gZW50ZXIgdGhlIGJhY2svZm9yd2FyZCBjYWNoZSBieSB1cGRhdGluZyBpdHMK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gcXVldWUgYWxsIGl0cyB0YXNrcyB0aGF0IHJ1biBz
Y3JpcHQgdG8gYSBTdXNwZW5kYWJsZVRhc2tRdWV1ZS4KKyAgICAgICAgVGhlIFN1c3BlbmRhYmxl
VGFza1F1ZXVlIG1ha2VzIHN1cmUgdG8gcHJvcGVybHkgc3VzcGVuZCB3aGlsZSBpbiBQYWdlQ2Fj
aGUgYW5kCisgICAgICAgIHJ1biB0aGUgdGFza3Mgd2hlbiByZXN1bWluZyBmcm9tIFBhZ2VDYWNo
ZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1mb250
ZmFjZXNldC5odG1sCisKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zv
bnRGYWNlOjpmb250TG9hZEV2ZW50T2NjdXJyZWQpOgorICAgICAgICAqIGNzcy9Gb250RmFjZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6Rm9udEZhY2VTZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmRpZEZpcnN0TGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpjb21wbGV0ZWRMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQpOgorICAgICAgICAqIGNz
cy9Gb250RmFjZVNldC5oOgorCisgICAgICAgICogcGxhdGZvcm0vU3VzcGVuZGFibGVUYXNrUXVl
dWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGFza1F1ZXVlOjpT
dXNwZW5kYWJsZVRhc2tRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRhc2tR
dWV1ZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUYXNrUXVldWU6OmNh
bmNlbEFsbFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGFza1F1ZXVlOjpl
bnF1ZXVlVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRhc2tRdWV1ZTo6cnVu
T25lVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRhc2tRdWV1ZTo6YWN0aXZl
RE9NT2JqZWN0TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRhc2tR
dWV1ZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdXNwZW5kYWJsZVRhc2tRdWV1ZTo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpT
dXNwZW5kYWJsZVRhc2tRdWV1ZTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5k
YWJsZVRhc2tRdWV1ZTo6cmVzdW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TdXNwZW5kYWJsZVRh
c2tRdWV1ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGFza1F1ZXVl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUYXNrUXVldWU6OmlzQ2xv
c2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGFza1F1ZXVlOjpoYXNQ
ZW5kaW5nVGFza3MgY29uc3QpOgorICAgICAgICBBZGQgYSBTdXNwZW5kYWJsZVRhc2tRdWV1ZSBj
bGFzcyB3aGljaCBpcyBQYWdlLUNhY2hlIGF3YXJlIGFuZCBjYW4gYmUgdXNlZCB0byBxdWV1ZQor
ICAgICAgICBnZW5lcmljIHRhc2tzIGFzIFdURjo6RnVuY3Rpb248dm9pZDw+PiBsYW1iZGFzLgor
CiAyMDE5LTEwLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UHJvdmlzaW9uYWwgLyBzY2hlZHVsZWQgbG9hZHMgaW4gc3ViZnJhbWVzIHNob3VsZCBub3QgcHJl
dmVudCBhIHBhZ2UgZnJvbSBlbnRlcmluZyB0aGUgYmFjay9mb3J3YXJkIGNhY2hlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGNjNWZiMGI5ZDY3NjY5NDk5Y2U5NmVkNGFiOWQwNjlmOWI0
NWRhMGUuLmEyZDFmYTY4OTFjMjY0YmJkM2Q2NDkyNjNhOWQ0NDdlNDg5NmYxYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0zNCw2ICszNCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL0N1cnNvci5jcHAKICAgICBwbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcAogICAgIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuY3BwCisgICAgcGxhdGZv
cm0vU3VzcGVuZGFibGVUYXNrUXVldWUuY3BwCiAKICAgICBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk1ODZmYTA0OGNi
N2VlZDI4NjU5YmEwNjBiOGRmOGExMGUyYmRkYS4uYWQ3MWM3MmUyNDk1MzM4ZTBlZGMxMGNhYTE3
OTE3YzdkN2JkNzJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE3MzUsNiArMTczNSw3IEBAIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNw
cAogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuY3BwCitwbGF0Zm9ybS9TdXNwZW5kYWJsZVRhc2tRdWV1ZS5jcHAKIHBsYXRmb3JtL1RoZW1l
LmNwcAogcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKIHBsYXRmb3JtL1RocmVhZFRpbWVy
cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBhMTc2MWM2N2I0Yzk1ZDhlYWI0NzdhN2MwMGFlNTU0NWQyM2E3OWVlLi5jNDEy
OWQ1MjM5MmQ2YzA4MTIzNTI5MjMyMWVhNWI0YzAxNTJmYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjI3LDYgKzEyMjcs
NyBAQAogCQk0NkM2OTZDQzFFNzIwNUZDMDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM2OTZDQTFFNzIwNUU0
MDA1OTc5MzcgLyogQ1BVTW9uaXRvci5jcHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZDQTlDNDQx
Rjk3QkJFOTAwNENGQzNBIC8qIFZpc2liaWxpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDQTlDNDExRjk3QkJFNzAwNENGQzNBIC8qIFZp
c2liaWxpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTQ2Q0RDMUYwMjM0NjZCMjMwMEQyRTcwRSAvKiBTdXNwZW5kYWJsZVRhc2tRdWV1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2OTA3
RjgyMzQ2Njg2MjAwRUZFRkYwIC8qIFN1c3BlbmRhYmxlVGFza1F1ZXVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAw
RDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2Vy
dmVyTWFjLmggKi87IH07CiAJCTQ2REZGNDk4MURDMjYwMzEwMEI4MEI0OCAvKiBTaGFkb3dSb290
TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZE
RkY0OTYxREMyNjAxMzAwQjgwQjQ4IC8qIFNoYWRvd1Jvb3RNb2RlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZERkY0OUMxREMyNjIwQjAwQjgw
QjQ4IC8qIEpTU2hhZG93Um9vdE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2REZGNDlBMURDMjYxRjkwMEI4MEI0OCAvKiBKU1NoYWRvd1Jvb3RN
b2RlLmggKi87IH07CkBAIC03NjAxLDYgKzc2MDIsOCBAQAogCQk0NjVFREQ5RDIyMkY0RUMzMDBC
NDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvbkV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uRXZlbnQuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUVEREEwMjIyRjRFQzQwMEI0NkUxNiAvKiBE
ZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY2OTA3RjYyMzQ2Njg2MjAwRUZFRkYwIC8q
IFN1c3BlbmRhYmxlVGFza1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1c3BlbmRhYmxl
VGFza1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY2OTA3RjgyMzQ2
Njg2MjAwRUZFRkYwIC8qIFN1c3BlbmRhYmxlVGFza1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1
c3BlbmRhYmxlVGFza1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NkRD
NkFCMUVERTAyMUQwMDc0NjIyNCAvKiBKU0RPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NUmVjdExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjZFRDhEMjFFREUwMTM1MDA1RTQzRjYgLyogSlNET01SZWN0TGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzFFMDYzMUQ2N0E1N0IwMEM2QjQ5NyAvKiBDYW52
YXNQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbnZhc1Bh
dGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU1OTcsNiArMjU2MDAsOCBA
QAogCQkJCUY0MzNFOTAyMURCQkRCQTIwMEVGMEQxNCAvKiBTdGF0aWNQYXN0ZWJvYXJkLmggKi8s
CiAJCQkJOTNCMkQ4MTUwRjk5MjBEMjAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9uLmggKi8s
CiAJCQkJOTc2MjdCOTcxNEZCNTQyNDAwMkNEQ0ExIC8qIFN1cHBsZW1lbnRhYmxlLmggKi8sCisJ
CQkJNDY2OTA3RjYyMzQ2Njg2MjAwRUZFRkYwIC8qIFN1c3BlbmRhYmxlVGFza1F1ZXVlLmNwcCAq
LywKKwkJCQk0NjY5MDdGODIzNDY2ODYyMDBFRkVGRjAgLyogU3VzcGVuZGFibGVUYXNrUXVldWUu
aCAqLywKIAkJCQk3Q0M1NjRCNjE4QkFCRUE2MDAxQjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0
ZWN0b3IuaCAqLywKIAkJCQlCQ0U2NUQzMTBFQUQxMjExMDA3RTQ1MzMgLyogVGhlbWUuY3BwICov
LAogCQkJCUJDRTY1OEZFMEVBOTI0OEEwMDdFNDUzMyAvKiBUaGVtZS5oICovLApAQCAtMzE4NTIs
NiArMzE4NTcsNyBAQAogCQkJCTk3QzA3ODUwMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzYyN0I5ODE0RkI1NDI0MDAyQ0RDQTEgLyogU3VwcGxl
bWVudGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NzU1OEM2MTNCNEE1N0QwMEY0OTMwNyAv
KiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2
Q0RDMUYwMjM0NjZCMjMwMEQyRTcwRSAvKiBTdXNwZW5kYWJsZVRhc2tRdWV1ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjJDMTIxN0QxMUFCOUU3NzAwM0M0NjJDIC8qIFN1c3BlbmRhYmxlVGltZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEyQjExM0NBOUExRjAwRDIxOTE1IC8qIFNW
R0FsdEdseXBoRGVmRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmNwcAppbmRleCA0NTQ2ZGRhZDQ2NTg1ZjcwMjI5NzhhYmE5M2NjNjBlYjNiMjU5Y2Y2Li5h
MTcwZTAxMmY5YzhmOWQwYTZkMzgzNTAwNjBkZmRkNzQ5MWFiZWVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZVNldC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgRm9udEZhY2VTZXQ6OkZvbnRGYWNlU2V0
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbmkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChkb2N1bWVudCkKICAgICAsIG1fYmFja2luZyhDU1NGb250
RmFjZVNldDo6Y3JlYXRlKCkpCiAgICAgLCBtX3JlYWR5UHJvbWlzZSgqdGhpcywgJkZvbnRGYWNl
U2V0OjpyZWFkeVByb21pc2VSZXNvbHZlKQorICAgICwgbV90YXNrUXVldWUoU3VzcGVuZGFibGVU
YXNrUXVldWU6OmNyZWF0ZSgmZG9jdW1lbnQpKQogewogICAgIG1fYmFja2luZy0+YWRkQ2xpZW50
KCp0aGlzKTsKICAgICBmb3IgKGF1dG8mIGZhY2UgOiBpbml0aWFsRmFjZXMpCkBAIC02Niw2ICs2
Nyw3IEBAIEZvbnRGYWNlU2V0OjpGb250RmFjZVNldChEb2N1bWVudCYgZG9jdW1lbnQsIENTU0Zv
bnRGYWNlU2V0JiBiYWNraW5nKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50KQogICAg
ICwgbV9iYWNraW5nKGJhY2tpbmcpCiAgICAgLCBtX3JlYWR5UHJvbWlzZSgqdGhpcywgJkZvbnRG
YWNlU2V0OjpyZWFkeVByb21pc2VSZXNvbHZlKQorICAgICwgbV90YXNrUXVldWUoU3VzcGVuZGFi
bGVUYXNrUXVldWU6OmNyZWF0ZSgmZG9jdW1lbnQpKQogewogICAgIGlmIChkb2N1bWVudC5mcmFt
ZSgpKQogICAgICAgICBtX2lzRmlyc3RMYXlvdXREb25lID0gZG9jdW1lbnQuZnJhbWUoKS0+bG9h
ZGVyKCkuc3RhdGVNYWNoaW5lKCkuZmlyc3RMYXlvdXREb25lKCk7CkBAIC0xOTAsNyArMTkyLDcg
QEAgYXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1cwogCiBib29s
IEZvbnRGYWNlU2V0OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9iYWNraW5nLT5zdGF0dXMoKSA9PSBDU1NGb250RmFjZVNldDo6U3RhdHVz
OjpMb2FkZWQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0
ZWRMb2FkaW5nKCkKQEAgLTIwMSwxNCArMjAzLDIwIEBAIHZvaWQgRm9udEZhY2VTZXQ6OnN0YXJ0
ZWRMb2FkaW5nKCkKIHZvaWQgRm9udEZhY2VTZXQ6OmRpZEZpcnN0TGF5b3V0KCkKIHsKICAgICBt
X2lzRmlyc3RMYXlvdXREb25lID0gdHJ1ZTsKLSAgICBpZiAoIW1fYmFja2luZy0+aGFzQWN0aXZl
Rm9udEZhY2VzKCkgJiYgIW1fcmVhZHlQcm9taXNlLmlzRnVsZmlsbGVkKCkpCi0gICAgICAgIG1f
cmVhZHlQcm9taXNlLnJlc29sdmUoKnRoaXMpOworICAgIGlmICghbV9iYWNraW5nLT5oYXNBY3Rp
dmVGb250RmFjZXMoKSAmJiAhbV9yZWFkeVByb21pc2UuaXNGdWxmaWxsZWQoKSkgeworICAgICAg
ICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3RoaXNdIHsKKyAgICAgICAgICAgIG1fcmVhZHlQ
cm9taXNlLnJlc29sdmUoKnRoaXMpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgRm9u
dEZhY2VTZXQ6OmNvbXBsZXRlZExvYWRpbmcoKQogewotICAgIGlmIChtX2lzRmlyc3RMYXlvdXRE
b25lICYmICFtX3JlYWR5UHJvbWlzZS5pc0Z1bGZpbGxlZCgpKQotICAgICAgICBtX3JlYWR5UHJv
bWlzZS5yZXNvbHZlKCp0aGlzKTsKKyAgICBpZiAobV9pc0ZpcnN0TGF5b3V0RG9uZSAmJiAhbV9y
ZWFkeVByb21pc2UuaXNGdWxmaWxsZWQoKSkgeworICAgICAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1
ZVRhc2soW3RoaXNdIHsKKyAgICAgICAgICAgIG1fcmVhZHlQcm9taXNlLnJlc29sdmUoKnRoaXMp
OworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgRm9udEZhY2VTZXQ6OmZhY2VGaW5pc2hl
ZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0dXMpCkBAIC0y
MTYsMjYgKzIyNCwyNiBAQCB2b2lkIEZvbnRGYWNlU2V0OjpmYWNlRmluaXNoZWQoQ1NTRm9udEZh
Y2UmIGZhY2UsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdHVzKQogICAgIGlmICghZmFjZS5l
eGlzdGluZ1dyYXBwZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpdGVyYXRvciA9
IG1fcGVuZGluZ1Byb21pc2VzLmZpbmQoZmFjZS5leGlzdGluZ1dyYXBwZXIoKSk7Ci0gICAgaWYg
KGl0ZXJhdG9yID09IG1fcGVuZGluZ1Byb21pc2VzLmVuZCgpKQorICAgIGF1dG8gcGVuZGluZ1By
b21pc2VzID0gbV9wZW5kaW5nUHJvbWlzZXMudGFrZShmYWNlLmV4aXN0aW5nV3JhcHBlcigpKTsK
KyAgICBpZiAocGVuZGluZ1Byb21pc2VzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZm9yIChhdXRvJiBwZW5kaW5nUHJvbWlzZSA6IGl0ZXJhdG9yLT52YWx1ZSkgewotICAgICAg
ICBpZiAocGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1
czo6U3VjY2VzcykgewotICAgICAgICAgICAgaWYgKHBlbmRpbmdQcm9taXNlLT5oYXNPbmVSZWYo
KSkgewotICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNlLnJlc29sdmUocGVu
ZGluZ1Byb21pc2UtPmZhY2VzKTsKKyAgICBtX3Rhc2tRdWV1ZS0+ZW5xdWV1ZVRhc2soW3BlbmRp
bmdQcm9taXNlcyA9IFdURk1vdmUocGVuZGluZ1Byb21pc2VzKSwgbmV3U3RhdHVzXSB7CisgICAg
ICAgIGZvciAoYXV0byYgcGVuZGluZ1Byb21pc2UgOiBwZW5kaW5nUHJvbWlzZXMpIHsKKyAgICAg
ICAgICAgIGlmIChwZW5kaW5nUHJvbWlzZS0+aGFzUmVhY2hlZFRlcm1pbmFsU3RhdGUpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAobmV3U3RhdHVzID09IENTU0Zv
bnRGYWNlOjpTdGF0dXM6OlN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAocGVuZGluZ1By
b21pc2UtPmhhc09uZVJlZigpKSB7CisgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdQcm9taXNl
LT5wcm9taXNlLnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZhY2VzKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFT
U0VSVChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSk7CisgICAgICAg
ICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UucmVqZWN0KE5ldHdvcmtFcnJvcik7CiAg
ICAgICAgICAgICAgICAgcGVuZGluZ1Byb21pc2UtPmhhc1JlYWNoZWRUZXJtaW5hbFN0YXRlID0g
dHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VS
VChuZXdTdGF0dXMgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6RmFpbHVyZSk7Ci0gICAgICAgICAg
ICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZWplY3QoTmV0d29ya0Vycm9yKTsKLSAgICAgICAg
ICAgIHBlbmRpbmdQcm9taXNlLT5oYXNSZWFjaGVkVGVybWluYWxTdGF0ZSA9IHRydWU7CiAgICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdQcm9taXNlcy5yZW1vdmUoaXRlcmF0b3IpOwor
ICAgIH0pOwogfQogCiBGb250RmFjZVNldCYgRm9udEZhY2VTZXQ6OnJlYWR5UHJvbWlzZVJlc29s
dmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCA1NWE2ZTc1YzNiMjdlNWUyNTIwZDA5
OGI4OGM1ODM1MzJlZjJjODJkLi5jNTdiMjExNjVkNzMwYjcxYTAzZDBhYTgxNzlkOTA2MGZkYmIz
ODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkRPTVByb21pc2VQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJTdXNwZW5kYWJsZVRhc2tRdWV1
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExNiw2ICsxMTcsNyBAQCBwcml2YXRl
OgogICAgIFJlZjxDU1NGb250RmFjZVNldD4gbV9iYWNraW5nOwogICAgIEhhc2hNYXA8UmVmUHRy
PEZvbnRGYWNlPiwgVmVjdG9yPFJlZjxQZW5kaW5nUHJvbWlzZT4+PiBtX3BlbmRpbmdQcm9taXNl
czsKICAgICBSZWFkeVByb21pc2UgbV9yZWFkeVByb21pc2U7CisgICAgVW5pcXVlUmVmPFN1c3Bl
bmRhYmxlVGFza1F1ZXVlPiBtX3Rhc2tRdWV1ZTsKICAgICBib29sIG1faXNGaXJzdExheW91dERv
bmUgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
dXNwZW5kYWJsZVRhc2tRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXNwZW5k
YWJsZVRhc2tRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWY3YWRlMTJjZTc3YTVkYzg4YWYwOWM2Mzkz
ZGNiZWJhYTdjY2M4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1N1c3BlbmRhYmxlVGFza1F1ZXVlLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlN1c3BlbmRhYmxlVGFza1F1ZXVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
U3VzcGVuZGFibGVUYXNrUXVldWU6OlN1c3BlbmRhYmxlVGFza1F1ZXVlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICAs
IG1fdGFza1F1ZXVlKGNvbnRleHQpCisgICAgLCBtX2lzQ2xvc2VkKCFjb250ZXh0KQoreworfQor
Cit2b2lkIFN1c3BlbmRhYmxlVGFza1F1ZXVlOjpjbG9zZSgpCit7CisgICAgbV9pc0Nsb3NlZCA9
IHRydWU7CisgICAgY2FuY2VsQWxsVGFza3MoKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVRhc2tR
dWV1ZTo6Y2FuY2VsQWxsVGFza3MoKQoreworICAgIG1fdGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tz
KCk7CisgICAgbV9wZW5kaW5nVGFza3MuY2xlYXIoKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVRh
c2tRdWV1ZTo6ZW5xdWV1ZVRhc2soVGFza0Z1bmN0aW9uJiYgdGFzaykKK3sKKyAgICBpZiAobV9p
c0Nsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wZW5kaW5nVGFza3MuYXBwZW5kKFdU
Rk1vdmUodGFzaykpOworCisgICAgaWYgKG1faXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKHN0ZDo6YmluZCgmU3VzcGVuZGFibGVUYXNr
UXVldWU6OnJ1bk9uZVRhc2ssIHRoaXMpKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVRhc2tRdWV1
ZTo6cnVuT25lVGFzaygpCit7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdUYXNrcy5pc0VtcHR5KCkp
OworICAgIGF1dG8gdGFzayA9IG1fcGVuZGluZ1Rhc2tzLnRha2VGaXJzdCgpOworICAgIHRhc2so
KTsKK30KKworY29uc3QgY2hhciogU3VzcGVuZGFibGVUYXNrUXVldWU6OmFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiAiU3VzcGVuZGFibGVUYXNrUXVldWUiOworfQor
Citib29sIFN1c3BlbmRhYmxlVGFza1F1ZXVlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVRh
c2tRdWV1ZTo6c3RvcCgpCit7CisgICAgY2xvc2UoKTsKK30KKwordm9pZCBTdXNwZW5kYWJsZVRh
c2tRdWV1ZTo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIG1faXNTdXNwZW5k
ZWQgPSB0cnVlOworICAgIG1fdGFza1F1ZXVlLmNhbmNlbEFsbFRhc2tzKCk7Cit9CisKK3ZvaWQg
U3VzcGVuZGFibGVUYXNrUXVldWU6OnJlc3VtZSgpCit7CisgICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nVGFza3Muc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fdGFza1F1ZXVlLmVucXVldWVUYXNrKHN0ZDo6YmluZCgmU3VzcGVuZGFi
bGVUYXNrUXVldWU6OnJ1bk9uZVRhc2ssIHRoaXMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VzcGVuZGFibGVUYXNr
UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1c3BlbmRhYmxlVGFza1F1ZXVlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmExNjEyNTE3NjhlOWIxY2MyMzMzNTY3YzBlNzBiNmNiMDIwY2M1OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1c3BlbmRhYmxlVGFza1F1
ZXVlLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdXNwZW5kYWJsZVRhc2tRdWV1ZSA6
IHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBVbmlxdWVSZWY8U3VzcGVuZGFibGVUYXNrUXVldWU+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgYXV0byB0
YXNrUXVldWUgPSBtYWtlVW5pcXVlUmVmPFN1c3BlbmRhYmxlVGFza1F1ZXVlPihjb250ZXh0KTsK
KyAgICAgICAgdGFza1F1ZXVlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIHRh
c2tRdWV1ZTsKKyAgICB9CisKKyAgICB1c2luZyBUYXNrRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoKT47CisgICAgdm9pZCBlbnF1ZXVlVGFzayhUYXNrRnVuY3Rpb24mJik7CisgICAgdm9p
ZCBjYW5jZWxBbGxUYXNrcygpOworCisgICAgdm9pZCBjbG9zZSgpOworICAgIGJvb2wgaXNDbG9z
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisKKyAgICBib29sIGhhc1BlbmRpbmdU
YXNrcygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1Rhc2tzLmlzRW1wdHkoKTsgfQorCitwcml2
YXRlOgorICAgIGZyaWVuZCBVbmlxdWVSZWY8U3VzcGVuZGFibGVUYXNrUXVldWU+IFdURjo6bWFr
ZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8U3VzcGVuZGFibGVUYXNrUXVldWUsIFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqJj4oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dComKTsKKyAgICBleHBsaWNpdCBTdXNwZW5kYWJsZVRhc2tRdWV1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisKKyAgICB2b2lkIHJ1bk9uZVRhc2soKTsKKworICAgIC8vIEFjdGl2
ZURPTU9iamVjdC4KKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOworICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CisKKyAgICBHZW5l
cmljVGFza1F1ZXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fdGFza1F1ZXVlOworICAgIERl
cXVlPFRhc2tGdW5jdGlvbj4gbV9wZW5kaW5nVGFza3M7CisgICAgYm9vbCBtX2lzQ2xvc2VkIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVjZTg4N2Q3YjcwZjJmNmU3MTQwYjg1ODk0N2JiMjEw
Mjg0ZGRmY2QuLjM4Y2FhOGQwNTZkNTQxYTFmMWRkMmE2YTU0MTU4MmMxN2ExNjFiYjMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxOS0xMC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEFsbG93IHBhZ2VzIHVzaW5nIEZvbnRGYWNlU2V0IHRvIGVudGVyIHRo
ZSBiYWNrL2ZvcndhcmQgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjQ3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9wYWdlLWNhY2hlLWZvbnRmYWNlc2V0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZm9udGZhY2Vz
ZXQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9wYWdlLWNhY2hlLWZvbnRmYWNlc2V0LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0w
MiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFByb3Zpc2lvbmFs
IC8gc2NoZWR1bGVkIGxvYWRzIGluIHN1YmZyYW1lcyBzaG91bGQgbm90IHByZXZlbnQgYSBwYWdl
IGZyb20gZW50ZXJpbmcgdGhlIGJhY2svZm9yd2FyZCBjYWNoZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZm9udGZhY2VzZXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZm9u
dGZhY2VzZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhNzQ2NmZhMDU2ZTIyMWYxNzkzYmFh
OGRlMjc3ZTdhNTA0NzBhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL25hdmlnYXRpb24vcGFnZS1jYWNoZS1mb250ZmFjZXNldC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMyBAQAorVGVzdHMgdGhhdCBhIHBhZ2Ugd2l0aCBwZW5kaW5nIENTU0ZvbnRGYWNlU2V0
IGFjdGl2aXR5IGdvZXMgaW50byB0aGUgcGFnZSBjYWNoZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK3BhZ2VzaG93IC0gbm90IGZyb20gY2FjaGUKK3BhZ2VoaWRlIC0gZW50ZXJp
bmcgY2FjaGUKK3BhZ2VzaG93IC0gZnJvbSBjYWNoZQorUEFTUyBQYWdlIHdhcyByZXN0b3JlZCBm
cm9tIFBhZ2UgQ2FjaGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cGFnZS1jYWNoZS1mb250ZmFjZXNldC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3BhZ2UtY2FjaGUtZm9udGZhY2VzZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjlmNWMzMjM4
NjNjY2U4NDg3MmU3MmJjNmYwYzNlYTZkMGZhOGMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3BhZ2UtY2FjaGUtZm9udGZhY2VzZXQuaHRtbApA
QCAtMCwwICsxLDQzIEBACis8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZVBhZ2VDYWNo
ZT10cnVlIF0gLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYSBwYWdlIHdpdGggcGVuZGlu
ZyBDU1NGb250RmFjZVNldCBhY3Rpdml0eSBnb2VzIGludG8gdGhlIHBhZ2UgY2FjaGUuJyk7Citq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93
IiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBkZWJ1ZygicGFnZXNob3cgLSAiICsgKGV2ZW50LnBl
cnNpc3RlZCA/ICIiIDogIm5vdCAiKSArICJmcm9tIGNhY2hlIik7CisgICAgaWYgKGV2ZW50LnBl
cnNpc3RlZCkgeworICAgICAgICB0ZXN0UGFzc2VkKCJQYWdlIHdhcyByZXN0b3JlZCBmcm9tIFBh
Z2UgQ2FjaGUiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorfSk7CisKK3dpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGVi
dWcoInBhZ2VoaWRlIC0gIiArIChldmVudC5wZXJzaXN0ZWQgPyAiIiA6ICJub3QgIikgKyAiZW50
ZXJpbmcgY2FjaGUiKTsKKyAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICB0ZXN0
RmFpbGVkKCJQYWdlIGZhaWxlZCB0byBlbnRlciB0aGUgUGFnZSBDYWNoZSIpOworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9KTsKKworb25sb2FkID0gKCkgPT4geworICAgIHNldFRp
bWVvdXQoKCkgPT4geworICAgICAgICBsZXQgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaWZyYW1lIik7CisgICAgICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3BhZ2UtY2FjaGUt
Zm9udGZhY2VzZXQtaWZyYW1lLmh0bWwiCisgICAgICAgIGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7
CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICB0ZXN0TGlu
ay5jbGljaygpOworICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfTsKKyAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+
Cis8YSBpZD0idGVzdExpbmsiIGhyZWY9InJlc291cmNlcy9wYWdlLWNhY2hlLWhlbHBlci5odG1s
IiBzdHlsZT0iZGlzcGxheTogbm9uZSI+TGluazwvYT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1j
YWNoZS1mb250ZmFjZXNldC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvcGFnZS1jYWNoZS1mb250ZmFjZXNldC1pZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jOGVlYmIyMzcxYTA0OGRiODY5NDQ5N2ExNTcyZTM1MTkzZThmYTQwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9w
YWdlLWNhY2hlLWZvbnRmYWNlc2V0LWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTI5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitAZm9udC1mYWNlIHsKKyAgICBm
b250LWZhbWlseTogJ1JvYm90byc7CisgICAgZm9udC1zdHlsZTogbm9ybWFsOworICAgIGZvbnQt
d2VpZ2h0OiA0MDA7CisgICAgc3JjOiBsb2NhbCgnUm9ib3RvIFJlZ3VsYXInKSwgbG9jYWwoJ1Jv
Ym90by1SZWd1bGFyJyksIHVybCgvcmVzb3VyY2VzL0FoZW0ud29mZj9oKSBmb3JtYXQoJ3dvZmYn
KTsKKyAgICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsxQzgwLTFDODgsIFUrMjBCNCwg
VSsyREUwLTJERkYsIFUrQTY0MC1BNjlGLCBVK0ZFMkUtRkUyRjsKK30KKworQGZvbnQtZmFjZSB7
CisgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAg
ICBmb250LXdlaWdodDogNDAwOworICAgIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxv
Y2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL3Jlc291cmNlcy9BaGVtLndvZmY/aSkgZm9ybWF0
KCd3b2ZmJyk7CisgICAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBV
KzA0QjAtMDRCMSwgVSsyMTE2OworfQorCitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTog
J1JvYm90byc7CisgICAgZm9udC1zdHlsZTogbm9ybWFsOworICAgIGZvbnQtd2VpZ2h0OiA0MDA7
CisgICAgc3JjOiBsb2NhbCgnUm9ib3RvIFJlZ3VsYXInKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFy
JyksIHVybCgvcmVzb3VyY2VzL0FoZW0ud29mZj9qKSBmb3JtYXQoJ3dvZmYnKTsKKyAgICB1bmlj
b2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKK30KKworQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1p
bHk6ICdSb2JvdG8nOworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICBmb250LXdlaWdodDog
NDAwOworICAgIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxvY2FsKCdSb2JvdG8tUmVn
dWxhcicpLCB1cmwoL3Jlc291cmNlcy9BaGVtLndvZmY/aykgZm9ybWF0KCd3b2ZmJyk7CisgICAg
dW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cit9CisKK0Bmb250LWZhY2UgeworICAgIGZvbnQt
ZmFtaWx5OiAnUm9ib3RvJzsKKyAgICBmb250LXN0eWxlOiBub3JtYWw7CisgICAgZm9udC13ZWln
aHQ6IDQwMDsKKyAgICBzcmM6IGxvY2FsKCdSb2JvdG8gUmVndWxhcicpLCBsb2NhbCgnUm9ib3Rv
LVJlZ3VsYXInKSwgdXJsKC9yZXNvdXJjZXMvQWhlbS53b2ZmP2wpIGZvcm1hdCgnd29mZicpOwor
ICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjks
IFUrMjBBQjsKK30KKworQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwor
ICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICBmb250LXdlaWdodDogNDAwOworICAgIHNyYzog
bG9jYWwoJ1JvYm90byBSZWd1bGFyJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL3Jl
c291cmNlcy9BaGVtLndvZmY/bSkgZm9ybWF0KCd3b2ZmJyk7CisgICAgdW5pY29kZS1yYW5nZTog
VSswMTAwLTAyNEYsIFUrMDI1OSwgVSsxRTAwLTFFRkYsIFUrMjAyMCwgVSsyMEEwLTIwQUIsIFUr
MjBBRC0yMENGLCBVKzIxMTMsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKK30KKworQGZvbnQt
ZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOworICAgIGZvbnQtc3R5bGU6IG5vcm1h
bDsKKyAgICBmb250LXdlaWdodDogNDAwOworICAgIHNyYzogbG9jYWwoJ1JvYm90byBSZWd1bGFy
JyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL3Jlc291cmNlcy9BaGVtLndvZmY/bikg
Zm9ybWF0KCd3b2ZmJyk7CisgICAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwg
VSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAt
MjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsy
MjE1LCBVK0ZFRkYsIFUrRkZGRDsKK30KKworQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6
ICdSb2JvdG8nOworICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICBmb250LXdlaWdodDogNTAw
OworICAgIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0n
KSwgdXJsKC9yZXNvdXJjZXMvQWhlbS53b2ZmP28pIGZvcm1hdCgnd29mZicpOworICAgIHVuaWNv
ZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzFDODAtMUM4OCwgVSsyMEI0LCBVKzJERTAtMkRGRiwg
VStBNjQwLUE2OUYsIFUrRkUyRS1GRTJGOworfQorCitAZm9udC1mYWNlIHsKKyAgICBmb250LWZh
bWlseTogJ1JvYm90byc7CisgICAgZm9udC1zdHlsZTogbm9ybWFsOworICAgIGZvbnQtd2VpZ2h0
OiA1MDA7CisgICAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1l
ZGl1bScpLCB1cmwoL3Jlc291cmNlcy9BaGVtLndvZmY/cCkgZm9ybWF0KCd3b2ZmJyk7CisgICAg
dW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsy
MTE2OworfQorCitAZm9udC1mYWNlIHsKKyAgICBmb250LWZhbWlseTogJ1JvYm90byc7CisgICAg
Zm9udC1zdHlsZTogbm9ybWFsOworICAgIGZvbnQtd2VpZ2h0OiA1MDA7CisgICAgc3JjOiBsb2Nh
bCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL3Jlc291cmNl
cy9BaGVtLndvZmY/cSkgZm9ybWF0KCd3b2ZmJyk7CisgICAgdW5pY29kZS1yYW5nZTogVSsxRjAw
LTFGRkY7Cit9CisKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKKyAg
ICBmb250LXN0eWxlOiBub3JtYWw7CisgICAgZm9udC13ZWlnaHQ6IDUwMDsKKyAgICBzcmM6IGxv
Y2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvcmVzb3Vy
Y2VzL0FoZW0ud29mZj9yKSBmb3JtYXQoJ3dvZmYnKTsKKyAgICB1bmljb2RlLXJhbmdlOiBVKzAz
NzAtMDNGRjsKK30KKworQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwor
ICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIHNyYzog
bG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9yZXNv
dXJjZXMvQWhlbS53b2ZmP3MpIGZvcm1hdCgnd29mZicpOworICAgIHVuaWNvZGUtcmFuZ2U6IFUr
MDEwMi0wMTAzLCBVKzAxMTAtMDExMSwgVSsxRUEwLTFFRjksIFUrMjBBQjsKK30KKworQGZvbnQt
ZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOworICAgIGZvbnQtc3R5bGU6IG5vcm1h
bDsKKyAgICBmb250LXdlaWdodDogNTAwOworICAgIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0n
KSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9yZXNvdXJjZXMvQWhlbS53b2ZmP3QpIGZv
cm1hdCgnd29mZicpOworICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzAyNTksIFUr
MUUwMC0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyMTEzLCBVKzJD
NjAtMkM3RiwgVStBNzIwLUE3RkY7Cit9CisKK0Bmb250LWZhY2UgeworICAgIGZvbnQtZmFtaWx5
OiAnUm9ib3RvJzsKKyAgICBmb250LXN0eWxlOiBub3JtYWw7CisgICAgZm9udC13ZWlnaHQ6IDUw
MDsKKyAgICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVt
JyksIHVybCgvcmVzb3VyY2VzL0FoZW0ud29mZj91KSBmb3JtYXQoJ3dvZmYnKTsKKyAgICB1bmlj
b2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMs
IFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsy
MTIyLCBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEOworfQor
Citib2R5IHsKKyAgICBmb250LWZhbWlseTogIlJvYm90byIsIGFyaWFsLCBzYW5zLXNlcmlmOwor
ICAgIGZvbnQtd2VpZ2h0OiA1MDA7Cit9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2ZvbnRGYWNlU2V0
ID0gZG9jdW1lbnQuZm9udHM7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorRk9PCis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>