<?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>217026</bug_id>
          
          <creation_ts>2020-09-26 21:51:10 -0700</creation_ts>
          <short_desc>[GPU Process] Several layout tests in fast/canvas crash under GraphicsContext::clipToImageBuffer</short_desc>
          <delta_ts>2022-02-10 10:53:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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=225959</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1692297</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-26 21:51:10 -0700</bug_when>
    <thetext>Fixes null dereference crashes when running these four layout tests with GPUP enabled:

- fast/canvas/2d.fillText.gradient.html
- fast/canvas/2d.text.draw.fill.maxWidth.gradient.html
- fast/canvas/canvas-text-alignment.html
- fast/canvas/gradient-text-with-shadow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692303</commentid>
    <comment_count>1</comment_count>
      <attachid>409813</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-26 22:55:01 -0700</bug_when>
    <thetext>Created attachment 409813
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692306</commentid>
    <comment_count>2</comment_count>
      <attachid>409814</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-26 23:00:21 -0700</bug_when>
    <thetext>Created attachment 409814
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692323</commentid>
    <comment_count>3</comment_count>
      <attachid>409820</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-27 00:19:35 -0700</bug_when>
    <thetext>Created attachment 409820
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692403</commentid>
    <comment_count>4</comment_count>
      <attachid>409840</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-27 09:49:22 -0700</bug_when>
    <thetext>Created attachment 409840
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692406</commentid>
    <comment_count>5</comment_count>
      <attachid>409841</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-27 10:04:46 -0700</bug_when>
    <thetext>Created attachment 409841
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692409</commentid>
    <comment_count>6</comment_count>
      <attachid>409842</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-27 10:11:24 -0700</bug_when>
    <thetext>Created attachment 409842
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692419</commentid>
    <comment_count>7</comment_count>
      <attachid>409846</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-27 11:22:10 -0700</bug_when>
    <thetext>Created attachment 409846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692439</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-27 13:03:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/69663834&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692824</commentid>
    <comment_count>9</comment_count>
      <attachid>409961</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-28 21:37:56 -0700</bug_when>
    <thetext>Created attachment 409961
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692825</commentid>
    <comment_count>10</comment_count>
      <attachid>409962</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-28 21:45:43 -0700</bug_when>
    <thetext>Created attachment 409962
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692834</commentid>
    <comment_count>11</comment_count>
      <attachid>409966</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-28 22:37:54 -0700</bug_when>
    <thetext>Created attachment 409966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692944</commentid>
    <comment_count>12</comment_count>
      <attachid>409966</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-29 09:26:46 -0700</bug_when>
    <thetext>Comment on attachment 409966
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:414
&gt; +    ClipToDrawingCommandsResult clipToDrawingCommands(const FloatRect&amp; destination, ColorSpace, Function&lt;void(GraphicsContext&amp;)&gt;&amp;&amp;);

This is great. We might end up generalizing this for other image buffer code paths, but it&apos;s a good start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692954</commentid>
    <comment_count>13</comment_count>
      <attachid>409966</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-29 09:31:27 -0700</bug_when>
    <thetext>Comment on attachment 409966
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:414
&gt;&gt; +    ClipToDrawingCommandsResult clipToDrawingCommands(const FloatRect&amp; destination, ColorSpace, Function&lt;void(GraphicsContext&amp;)&gt;&amp;&amp;);
&gt; 
&gt; This is great. We might end up generalizing this for other image buffer code paths, but it&apos;s a good start.

👍🏻</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692959</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-29 09:41:53 -0700</bug_when>
    <thetext>Committed r267742: &lt;https://trac.webkit.org/changeset/267742&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409966.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409813</attachid>
            <date>2020-09-26 22:55:01 -0700</date>
            <delta_ts>2020-09-26 23:02:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200926225500.patch</filename>
            <type>text/plain</type>
            <size>19282</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uNDU2YzIzZDhhN2EyN2VhOTdlMDUzM2I4MGJmODI0
MGQwMDBlMTk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA5LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5C
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6
OkNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlw
VG9OYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Q2xpcFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9JbWFnZUJ1ZmZl
cik6IERlbGV0ZWQuCisKIDIwMjAtMDktMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIHNldHRpbmcgQ01ZS0EgZmls
bCBhbmQgc3Ryb2tlIGNvbG9ycyBpbiAyRCBjYW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDUzYzE5ODM5YmIx
MjI2MjMwYzIxODRjNTA3YzI3NTk0ZWI3MDIwN2QuLmVkOTJjODVmOGJkNGJlN2QwYzJhYTg3ZTAw
MGJmN2U5ODViYTY4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODUxLDYgKzg1MSwxNSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJl
Y3QpCiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2lu
Z1N0b3JlKSkKKyAgICAgICAgY2xpcFRvTmF0aXZlSW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKK30K
KwogI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNUMkQpICYmICFVU0UoQ0FJUk8pCiBJbnRSZWN0
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDIyMDVhOGNj
ZGMyNmI3OWIwZjBhMWE0MzE3NzYyZTExNTAwM2U4N2EuLmNmZTI4NmUxYTgyODg0MjkyNWUyMzdm
NWFhZWRjODU4NDdkYmZhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MDgsNiArNDA4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKICAgICB2
b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSA9IFdpbmRSdWxlOjpFdmVuT2RkKTsK
ICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
Jik7CisgICAgdm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAppbmRleCA4ZmJjNWU1NmNmMTU0ODUzNzc5YzU1NDQ1NDVlOWU2YTFjOWM4ODdhLi41MTAw
MWIyZWI4MTlhZmRkYzVjNGFkNjM0N2VlY2IxODJjMTljOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC0x
MDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwT3V0KGNvbnN0IFBh
dGgmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIs
IGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggYTEwNDY1NmNiNWQ1ZGRlYTAzMjFkYWE0NGEwNDQ2NTE3NTA4OGU0Zi4uOWY0NTg4OWIy
NTMxZTNiN2Q4MmMzOWVjZWJmZWU1MGUxZmM4NGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMjYwLDE5ICsyNjAsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIGNsaXBSdWxlKQogICAgIENhaXJvOjpjbGlw
UGF0aCgqcGxhdGZvcm1Db250ZXh0KCksIHBhdGgsIGNsaXBSdWxlKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmNsaXBUb0ltYWdlQnVmZmVyKGJ1ZmZlciwgZGVz
dFJlY3QpOworICAgICAgICBtX2ltcGwtPmNsaXBUb05hdGl2ZUltYWdlKGltYWdlLCBkZXN0UmVj
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250
ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpw
bGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIENhaXJvOjpj
bGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RS
ZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKaW5kZXggODkxMzg0MzEwZWJlODE4
MjQzNDg0NjYxNzk0ODFlZDE3NjEyOWI2OS4uOGZhZDUwNjY4MDc5YzhjYjhjYWU0MDEwYzYxYzZm
NDkxYTQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00
MTIsMTAgKzQxMiw5IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwQm91
bmRzKCkKICAgICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpnZXRDbGlwQm91bmRzKG1fcGxhdGZvcm1D
b250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYpCiB7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9
IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBD
YWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCks
IGRlc3RSZWN0KTsKKyAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIobV9wbGF0Zm9ybUNvbnRl
eHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmlu
ZGV4IGIyMGYwNjI3NDc2MGNjZDRiZjY3NDBhYWNiODQ0NzUzYzE3YTRkNGQuLjBhZmE5ODdkN2Ez
Y2FmY2VjYWY3MTgzMjQ1NWZjYjcyZmRlZTRkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTUx
MCwxNCArNTEwLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9O
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Quc2l6ZSgpOwotICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5j
bGlwVG9OYXRpdmVJbWFnZShpbWFnZSwgZGVzdFJlY3QpOworICAgICAgICByZXR1cm47CisgICAg
fQogCisgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RSZWN0LnNpemUo
KTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8v
IEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFu
IGFscGhhIG1hc2sgaGVyZS4KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBidWZmZXJEZXN0aW5hdGlvblNpemUuaGVpZ2h0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAzNWMzOWEwNWFkMzczNjlmNjMxODYzMTc0OTIw
ZjBlNTRkYjViZjlmLi5jNTVkMmMyYTY1OWM5YzhhNjdlMDczZGNjZDMwMzExN2RkMGQ1OTI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTcsNiArNTcsNyBAQCBlbnVtIGNsYXNzIEl0ZW1U
eXBlIDogdWludDhfdCB7CiAgICAgQ2xpcE91dCwKICAgICBDbGlwT3V0VG9QYXRoLAogICAgIENs
aXBQYXRoLAorICAgIENsaXBUb05hdGl2ZUltYWdlLAogICAgIERyYXdHbHlwaHMsCiAgICAgRHJh
d0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCmluZGV4IDVhY2QzMzdkMDM2ODVjZmE5MDcwNzAwZWRlODA1MDFjMjRiNTg0NDQuLmEy
NjE3ZTdlM2QzMmQ4ZGI2YjMzYzA1YjU3YTY2ODVhNDAyOGM4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTk0LDYgKzk0LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJ
bkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8
Q2xpcE91dFRvUGF0aD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBQYXRoPihpdGVtKSk7CisgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6CisgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5
cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pKTsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6CkBAIC01MTAsNiArNTEyLDI2IEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYg
aXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0NsaXBUb05hdGl2ZUltYWdlOjpDbGlwVG9OYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlKQorICAgICwgbV9pbWFn
ZShpbWFnZSkKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7Cit9CisKK0NsaXBU
b05hdGl2ZUltYWdlOjp+Q2xpcFRvTmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgQ2xp
cFRvTmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sK
KyAgICBjb250ZXh0LmNsaXBUb05hdGl2ZUltYWdlKG1faW1hZ2UsIG1fZGVzdGluYXRpb24pOwor
fQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
Q2xpcFRvTmF0aXZlSW1hZ2UmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5h
dGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBEcmF3R2x5
cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBo
LCAxMjg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5j
ZXMsIGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9j
YWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAgOiBEcmF3aW5n
SXRlbShJdGVtVHlwZTo6RHJhd0dseXBocykKICAgICAsIG1fZm9udChjb25zdF9jYXN0PEZvbnQm
Pihmb250KSkKQEAgLTEzOTMsNiArMTQxNSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwT3V0OiB0cyA8PCAiY2xpcC1vdXQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwT3V0VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6IHRzIDw8ICJjbGlwLXRvLW5hdGl2ZS1pbWFn
ZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWds
eXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXct
aW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwg
ImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKQEAgLTE0ODMsNiArMTUwNiw5IEBAIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBQYXRoPihp
dGVtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1h
Z2U6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPihpdGVtKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgdHMg
PDwgZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYjQ1ZTc5NzcyNThjZTRjYWMxNWFhNzY3YjkzYjZl
ZmRiMjQ4ZTZlZC4uODQ3MGE5Y2M1MTA2NzNmMmZkMGJlMjM0ZmE1MjMzN2FhZWZlYmVmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMDQzLDYgKzEwNDMsNTIgQEAgT3B0
aW9uYWw8UmVmPENsaXBQYXRoPj4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHJldHVybiBDbGlwUGF0aDo6Y3JlYXRlKCpwYXRoLCAqd2luZFJ1bGUpOwogfQogCitjbGFz
cyBDbGlwVG9OYXRpdmVJbWFnZSA6IHB1YmxpYyBJdGVtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UmVmPENsaXBUb05hdGl2ZUltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDbGlwVG9OYXRpdmVJbWFnZShpbWFnZSwgZGVzdGluYXRpb24pKTsKKyAgICB9CisKKyAg
ICBXRUJDT1JFX0VYUE9SVCB+Q2xpcFRvTmF0aXZlSW1hZ2UoKTsKKworICAgIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxDbGlwVG9OYXRp
dmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBP
UlQgQ2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgRmxvYXRSZWN0IG1fZGVz
dGluYXRpb247Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBDbGlwVG9OYXRp
dmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBOYXRpdmVJbWFnZUhhbmRsZSB7IG1faW1hZ2UgfTsKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGlu
YXRpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxSZWY8Q2xpcFRv
TmF0aXZlSW1hZ2U+PiBDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VIYW5kbGU+IGhhbmRsZTsKKyAgICBkZWNvZGVy
ID4+IGhhbmRsZTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+
PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaXBUb05hdGl2ZUltYWdlOjpjcmVhdGUoaGFuZGxl
LT5pbWFnZSwgKmRlc3RpbmF0aW9uKTsKK30KKwogY2xhc3MgRHJhd0dseXBocyA6IHB1YmxpYyBE
cmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3R2x5cGhzPiBjcmVhdGUo
Y29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBH
bHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQ
b2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgRm9udFNt
b290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKQEAgLTI4NTYsNiArMjkwMiw5IEBAIHZvaWQgSXRl
bTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFBhdGg6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q2xpcFBhdGg+KCp0aGlzKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6CisgICAg
ICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KCp0aGlzKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgZW5jb2Rl
ciA8PCBkb3duY2FzdDxEcmF3R2x5cGhzPigqdGhpcyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzAz
Niw2ICszMDg1LDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGlwUGF0aDo6ZGVjb2RlKGRlY29k
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZN
b3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05h
dGl2ZUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFRvTmF0aXZlSW1hZ2U6OmRl
Y29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8
SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0dseXBoczo6ZGVjb2Rl
KGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVt
PihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zMjA1LDYgKzMyNTgsNyBAQCBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShDbGlwT3V0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKENsaXBPdXRUb1BhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oQ2xpcFBhdGgpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
Q2xpcFRvTmF0aXZlSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJhd1Rp
bGVkSW1hZ2UpCkBAIC0zMjY1LDYgKzMzMTksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkNsaXBPdXRUb1BhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb05h
dGl2ZUltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBo
cywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGIyYjZmNjE3NmU4ZTQ1ODFlMDY4
MWMyZDAwOWRmZTRmNWU3YTU3MGYuLjA4ZGQ4Njk2MDc0OTgzMTJjYTI3NjgyODBjMmI4NzgzZGU4
MzZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM3
Niw5ICszNzYsOSBAQCBJbnRSZWN0IFJlY29yZGVyOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4g
SW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOwogfQogCi12b2lkIFJlY29yZGVyOjpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIFJl
Y29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKLSAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4
dDo6Y2xpcFRvSW1hZ2VCdWZmZXIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIuIik7CisgICAgYXBwZW5kSXRlbShDbGlwVG9OYXRpdmVJbWFnZTo6Y3JlYXRlKGlt
YWdlLCBkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBseURldmljZVNjYWxl
RmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKaW5kZXggZTRlYjdhMzA4ZWM1M2M0NDZhYzFkMjZkOTUyZDkyMzVkY2U5MGZh
NS4uNmU2OGZlNWUxY2Q4YjAyZTc5YzFlMTMzYTgwN2IxYzdlOTUyNTczMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBh
dGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9OYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggMzc0MDcxNzE1YmNiNzkxZDU4OWQ1MGQ5
OWIyOWM2NmIwMTBiNzA4MS4uYzc4YTU0YjQ1MGJjMTFkYzVmNmZiNWU2NjMyY2Y5MjUwZmE5MDI5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC00MzYsMTUgKzQzNiw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgICAgIERpcmVjdDJEOjpkcmF3UGF0dGVybigq
cGxhdGZvcm1Db250ZXh0KCksIFdURk1vdmUodGlsZUltYWdlKSwgSW50U2l6ZShpbWFnZS5zaXpl
KCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
LmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0g
YnVmZmVyLnNpemVGb3JEZXN0aW5hdGlvblNpemUoZGVzdFJlY3Quc2l6ZSgpKTsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0
cm9rZWQgYm9yZGVyLgogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBkNjQ0NWQ3MGNiMzAzN2U3MmFlMjkwNmQ2NjM2ZWZm
YjQ0ODFkNzU4Li5kM2NlNDA5YjU5YjlmNzY1NDc0OWRhMmQ5NTk0NjE3NTcwZDIwN2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDE2LDE1ICs0MTYsOSBA
QCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcEJvdW5kcygpCiAgICAg
cmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5kcyhtX3BsYXRmb3JtQ29udGV4dCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
UHRyLCBjb25zdCBGbG9hdFJlY3QmKQogewotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBpZiAoIWltYWdlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBjb250ZXh0ID0gJmdyYXBoaWNzQ29udGV4dCgpOwot
ICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
Y29udGV4dCkpCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQpCg==
</data>
<flag name="commit-queue"
          id="425632"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409814</attachid>
            <date>2020-09-26 23:00:21 -0700</date>
            <delta_ts>2020-09-27 00:19:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200926230020.patch</filename>
            <type>text/plain</type>
            <size>20933</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uODg4ZDM2NWVmMTMwYTM1MmM1NjA3M2RkNWQxMDg4
Yzc4ODk4OGJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDIwLTA5LTI2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpz
aXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZl
SW1hZ2U6OkNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9OYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorCiAyMDIwLTA5LTI2ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBzZXR0
aW5nIENNWUtBIGZpbGwgYW5kIHN0cm9rZSBjb2xvcnMgaW4gMkQgY2FudmFzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA1M2MxOTgzOWJiMTIyNjIzMGMyMTg0YzUwN2MyNzU5NGViNzAyMDdkLi5lZDkyYzg1ZjhiZDRi
ZTdkMGMyYWE4N2UwMDBiZjdlOTg1YmE2ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTg1MSw2ICs4NTEsMTUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvIGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgICAgIGNsaXBUb05hdGl2ZUltYWdlKGltYWdlLCBk
ZXN0UmVjdCk7Cit9CisKICNpZiAhVVNFKENHKSAmJiAhVVNFKERJUkVDVDJEKSAmJiAhVVNFKENB
SVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4
Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDA4LDYgKzQwOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVs
ZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQ
dHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmEx
YzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYzNDdlZWNiMTgyYzE5YzljNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRkZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhl
NGYuLjlmNDU4ODliMjUzMWUzYjdkODJjMzllY2ViZmVlNTBlMWZjODRhMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSArMjYwLDE3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBjbGlwUnVsZSkKICAg
ICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5jbGlwVG9JbWFnZUJ1ZmZl
cihidWZmZXIsIGRlc3RSZWN0KTsKKyAgICAgICAgbV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShp
bWFnZSwgZGVzdFJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9J
bWFnZUJ1ZmZlcigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0KTsK
KyAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0OjpjbGlwQm91
bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDg5
MTM4NDMxMGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYxMjliNjkuLjhmYWQ1MDY2ODA3OWM4Y2I4
Y2FlNDAxMGM2MWM2ZjQ5MWE0OTA5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcApAQCAtNDEyLDEwICs0MTIsOSBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5k
cyhtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb05hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmKQogewotICAgIGlmIChh
dXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1f
cGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMmY1MTlkNDU0NzdkNDM3OThiNzU5YTgx
NTM0NjJjOTgzNTM3Y2Q5ZS4uZjgzYjIwMGVlNjAwNTQwOTlmNDkzOWJlNjlmYTM0YzYyMDQwNjZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVj
dCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0
KSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggYjIwZjA2Mjc0NzYwY2NkNGJmNjc0
MGFhY2I4NDQ3NTNjMTdhNGQ0ZC4uMGFmYTk4N2Q3YTNjYWZjZWNhZjcxODMyNDU1ZmNiNzJmZGVl
NGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNTEwLDE0ICs1MTAsMTcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5h
dGlvblNpemUgPSBkZXN0UmVjdC5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGlt
YWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXBUb05hdGl2ZUltYWdlKGltYWdlLCBk
ZXN0UmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBGbG9hdFNpemUgYnVmZmVy
RGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Quc2l6ZSgpOwogICAgIENHQ29udGV4dFJlZiBjb250
ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMg
dG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4gYWxwaGEgbWFzayBoZXJlLgogICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSAr
IGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmlu
ZGV4IDM1YzM5YTA1YWQzNzM2OWY2MzE4NjMxNzQ5MjBmMGU1NGRiNWJmOWYuLmM1NWQyYzJhNjU5
YzljOGE2N2UwNzNkY2NkMzAzMTE3ZGQwZDU5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBA
IC01Nyw2ICs1Nyw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBDbGlw
T3V0LAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xpcFBhdGgsCisgICAgQ2xpcFRvTmF0aXZl
SW1hZ2UsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1h
Z2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggNWFjZDMzN2QwMzY4
NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NC4uYTI2MTdlN2UzZDMyZDhkYjZiMzNjMDViNTdh
NjY4NWE0MDI4YzhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAt
OTQsNiArOTQsOCBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkK
ICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwT3V0VG9QYXRoPihpdGVtKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNh
c3Q8Q2xpcFBhdGg+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFn
ZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwVG9OYXRpdmVJbWFnZT4oaXRl
bSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZToKQEAgLTUxMCw2ICs1MTIsMjYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0K
IAorQ2xpcFRvTmF0aXZlSW1hZ2U6OkNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIDogSXRlbShJdGVtVHlwZTo6
Q2xpcFRvTmF0aXZlSW1hZ2UpCisgICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9kZXN0aW5h
dGlvbihkZXN0aW5hdGlvbikKK3sKK30KKworQ2xpcFRvTmF0aXZlSW1hZ2U6On5DbGlwVG9OYXRp
dmVJbWFnZSgpID0gZGVmYXVsdDsKKwordm9pZCBDbGlwVG9OYXRpdmVJbWFnZTo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGNvbnRleHQuY2xpcFRvTmF0aXZl
SW1hZ2UobV9pbWFnZSwgbV9kZXN0aW5hdGlvbik7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwVG9OYXRpdmVJbWFnZSYgaXRlbSkK
K3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigp
KTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxH
bHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRQb2ludCYgYmxv
Y2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01v
ZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3R2x5cGhz
KQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKQpAQCAtMTM5Myw2ICsxNDE1
LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6IHRzIDw8ICJjbGlw
LW91dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHRzIDw8ICJj
bGlwLW91dC10by1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHRz
IDw8ICJjbGlwLXBhdGgiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJ
bWFnZTogdHMgPDwgImNsaXAtdG8tbmF0aXZlLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0dseXBoczogdHMgPDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1pbWFnZSI7IGJyZWFr
OwpAQCAtMTQ4Myw2ICsxNTA2LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAg
ICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgdHMgPDwgZG93bmNh
c3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxEcmF3R2x5cGhzPihp
dGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRl
eCBiNDVlNzk3NzI1OGNlNGNhYzE1YWE3NjdiOTNiNmVmZGIyNDhlNmVkLi44NDcwYTljYzUxMDY3
M2YyZmQwYmUyMzRmYTUyMzM3YWFlZmViZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKQEAgLTEwNDMsNiArMTA0Myw1MiBAQCBPcHRpb25hbDxSZWY8Q2xpcFBhdGg+PiBDbGlw
UGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIENsaXBQYXRoOjpjcmVh
dGUoKnBhdGgsICp3aW5kUnVsZSk7CiB9CiAKK2NsYXNzIENsaXBUb05hdGl2ZUltYWdlIDogcHVi
bGljIEl0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2xpcFRvTmF0aXZlSW1hZ2U+IGNy
ZWF0ZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsaXBUb05hdGl2ZUltYWdlKGlt
YWdlLCBkZXN0aW5hdGlvbikpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIH5DbGlwVG9O
YXRpdmVJbWFnZSgpOworCisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UmVmPENsaXBUb05hdGl2ZUltYWdlPj4gZGVjb2RlKERlY29kZXIm
KTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDbGlwVG9OYXRpdmVJbWFnZShOYXRp
dmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisKKyAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgTmF0aXZlSW1hZ2VQ
dHIgbV9pbWFnZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKK307CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIENsaXBUb05hdGl2ZUltYWdlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IE5hdGl2ZUltYWdlSGFuZGxlIHsgbV9p
bWFnZSB9OworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxDbGlwVG9OYXRpdmVJbWFnZT4+IENsaXBUb05hdGl2
ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxOYXRpdmVJ
bWFnZUhhbmRsZT4gaGFuZGxlOworICAgIGRlY29kZXIgPj4gaGFuZGxlOworICAgIGlmICghaGFu
ZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICgh
ZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
Q2xpcFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZShoYW5kbGUtPmltYWdlLCAqZGVzdGluYXRpb24pOwor
fQorCiBjbGFzcyBEcmF3R2x5cGhzIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPERyYXdHbHlwaHM+IGNyZWF0ZShjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5j
ZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25z
dCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2Rl
KQpAQCAtMjg1Niw2ICsyOTAyLDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgZW5jb2RlciA8
PCBkb3duY2FzdDxDbGlwUGF0aD4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxD
bGlwVG9OYXRpdmVJbWFnZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERyYXdHbHlwaHM+
KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2LDYgKzMwODUsMTAgQEAgT3B0aW9uYWw8
UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgaWYgKGF1
dG8gaXRlbSA9IENsaXBQYXRoOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6CisgICAgICAgIGlmIChh
dXRvIGl0ZW0gPSBDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIpKQorICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIGlm
IChhdXRvIGl0ZW0gPSBEcmF3R2x5cGhzOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKQEAgLTMy
MDUsNiArMzI1OCw3IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShD
bGlwKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXBPdXQpCiBT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcE91dFRvUGF0aCkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwUGF0aCkKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwVG9OYXRpdmVJbWFnZSkKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhzKQogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKQEAgLTMyNjUsNiArMzMx
OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aCwKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAorICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2UsCiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKaW5kZXggYjJiNmY2MTc2ZThlNDU4MWUwNjgxYzJkMDA5ZGZlNGY1ZTdhNTcwZi4uMDhk
ZDg2OTYwNzQ5ODMxMmNhMjc2ODI4MGMyYjg3ODNkZTgzNmUyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzc2LDkgKzM3Niw5IEBAIEludFJlY3QgUmVj
b3JkZXI6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBJbnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5
NiwgNDA5Nik7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBUb05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQogewot
ICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlciBpcyBu
b3QgY29tcGF0aWJsZSB3aXRoIERpc3BsYXlMaXN0OjpSZWNvcmRlci4iKTsKKyAgICBhcHBlbmRJ
dGVtKENsaXBUb05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGRlc3RpbmF0aW9uKSk7CiB9CiAK
IHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBlNGViN2Ez
MDhlYzUzYzQ0NmFjMWQyNmQ5NTJkOTIzNWRjZTkwZmE1Li42ZTY4ZmU1ZTFjZDhiMDJlNzljMWUx
MzNhODA3YjFjN2U5NTI1NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcE91dChjb25zdCBQ
YXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUp
IG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2Nh
bGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cAppbmRleCAzNzQwNzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAxMGI3MDgxLi5jNzhhNTRi
NDUwYmMxMWRjNWY2ZmI1ZTY2MzJjZjkyNTBmYTkwMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKQEAgLTQzNiwxNSArNDM2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QK
ICAgICAgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgV1RGTW92
ZSh0aWxlSW1hZ2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0
aW9ucy5ibGVuZE1vZGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQot
ewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZs
b2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBidWZmZXIuc2l6ZUZvckRlc3RpbmF0aW9u
U2l6ZShkZXN0UmVjdC5zaXplKCkpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIC8vIERy
YXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJU
aGlja25lc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4
IGQ2NDQ1ZDcwY2IzMDM3ZTcyYWUyOTA2ZDY2MzZlZmZiNDQ4MWQ3NTguLmQzY2U0MDliNTliOWY3
NjU0NzQ5ZGEyZDk1OTQ2MTc1NzBkMjA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuY3BwCkBAIC00MTYsMTUgKzQxNiw5IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJEOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpn
ZXRDbGlwQm91bmRzKG1fcGxhdGZvcm1Db250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RDo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpCiB7
Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNr
aW5nU3RvcmUpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8q
IGNvbnRleHQgPSAmZ3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb250ZXh0KSkKLSAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA0NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2
YTI2YTU3ZWUzMWUyYjBlLi5lZDJlZDM0NTA2NDhkZGQ2NmE2NWE0NjM2ZGJmZjk3NDE4YWM0NmY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0xMDIsNyArMTAyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJl
Y3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVj
dCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0
KSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409820</attachid>
            <date>2020-09-27 00:19:35 -0700</date>
            <delta_ts>2020-09-27 09:49:21 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200927001935.patch</filename>
            <type>text/plain</type>
            <size>23991</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uOWM0NDNkMmJkZjgwNWMyNTNhN2QxOWIwOGE1Nzc2
MTU2OTgzMzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA5LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OkNs
aXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9O
YXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaDoKKwogMjAyMC0wOS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Igc2V0dGluZyBD
TVlLQSBmaWxsIGFuZCBzdHJva2UgY29sb3JzIGluIDJEIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTNj
MTk4MzliYjEyMjYyMzBjMjE4NGM1MDdjMjc1OTRlYjcwMjA3ZC4uNGYwZmIwYmFjZGU3YzQ5Nzg1
ZDMxYzA1ZTIxNTY5NjRhODFmNjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04NTEsNiArODUxLDE5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCisjaWYgIVVTRShDQUlSTykKKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBidWZmZXIuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvTmF0aXZl
SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKK30KKworI2VuZGlmCisKICNpZiAhVVNFKENHKSAmJiAh
VVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2
MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDA4LDYgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZj
ZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYz
NDdlZWNiMTgyYzE5YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRk
ZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjlhM2Q4MmVlZWM0ZTE1M2JiY2VlZTBhYjAzZjli
NDhkNjA3ZTM4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSAr
MjYwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4
dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIWltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHBsYXRmb3JtQ29udGV4dCgpKSkKKyAgICAgICAgY2xpcFRvTmF0aXZl
SW1hZ2Uoc3VyZmFjZSwgZGVzdGluYXRpb25SZWN0KTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uUmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+Y2xpcFRv
SW1hZ2VCdWZmZXIoYnVmZmVyLCBkZXN0UmVjdCk7CisgICAgICAgIG1faW1wbC0+Y2xpcFRvTmF0
aXZlSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBidWZmZXIuY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAg
ICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5n
ZXQoKSwgZGVzdFJlY3QpOworICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqcGxhdGZvcm1D
b250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCk7CiB9CiAKIEludFJlY3Qg
R3JhcGhpY3NDb250ZXh0OjpjbGlwQm91bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDg5MTM4NDMxMGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYx
MjliNjkuLjhmYWQ1MDY2ODA3OWM4Y2I4Y2FlNDAxMGM2MWM2ZjQ5MWE0OTA5OTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtNDEyLDEwICs0MTIsOSBAQCBJbnRS
ZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIENh
aXJvOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5kcyhtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYg
YnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmKQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAgQ2Fp
cm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVz
dFJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6YXBwbHlEZXZpY2VT
Y2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXgg
MmY1MTlkNDU0NzdkNDM3OThiNzU5YTgxNTM0NjJjOTgzNTM3Y2Q5ZS4uZjgzYjIwMGVlNjAwNTQw
OTlmNDkzOWJlNjlmYTM0YzYyMDQwNjZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0
IFBhdGgmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGFwcGx5
RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5k
ZXggYjIwZjA2Mjc0NzYwY2NkNGJmNjc0MGFhY2I4NDQ3NTNjMTdhNGQ0ZC4uMGFmYTk4N2Q3YTNj
YWZjZWNhZjcxODMyNDU1ZmNiNzJmZGVlNGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtNTEw
LDE0ICs1MTAsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0UmVjdC5zaXplKCk7Ci0gICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlOYXRpdmVJbWFnZShEb250
Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNs
aXBUb05hdGl2ZUltYWdlKGltYWdlLCBkZXN0UmVjdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAKKyAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Quc2l6ZSgp
OwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgLy8g
RklYTUU6IFRoaXMgaW1hZ2UgbmVlZHMgdG8gYmUgZ3JheXNjYWxlIHRvIGJlIHVzZWQgYXMgYW4g
YWxwaGEgbWFzayBoZXJlLgogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBkZXN0
UmVjdC54KCksIGRlc3RSZWN0LnkoKSArIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDM1YzM5YTA1YWQzNzM2OWY2MzE4NjMxNzQ5MjBm
MGU1NGRiNWJmOWYuLmM1NWQyYzJhNjU5YzljOGE2N2UwNzNkY2NkMzAzMTE3ZGQwZDU5MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xp
cFBhdGgsCisgICAgQ2xpcFRvTmF0aXZlSW1hZ2UsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3
SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAKaW5kZXggNWFjZDMzN2QwMzY4NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NC4uYTI2
MTdlN2UzZDMyZDhkYjZiMzNjMDViNTdhNjY4NWE0MDI4YzhmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtOTQsNiArOTQsOCBAQCBzaXplX3QgSXRlbTo6c2l6ZUlu
Qnl0ZXMoY29uc3QgSXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxD
bGlwT3V0VG9QYXRoPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAg
ICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pKTsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2Fz
dDxDbGlwVG9OYXRpdmVJbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6CiAgICAgICAgIHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZToKQEAgLTUxMCw2ICs1MTIsMjYgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBp
dGVtKQogICAgIHJldHVybiB0czsKIH0KIAorQ2xpcFRvTmF0aXZlSW1hZ2U6OkNsaXBUb05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KQorICAgIDogSXRlbShJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2UpCisgICAgLCBtX2ltYWdl
KGltYWdlKQorICAgICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKK3sKK30KKworQ2xpcFRv
TmF0aXZlSW1hZ2U6On5DbGlwVG9OYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKwordm9pZCBDbGlw
VG9OYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAorewor
ICAgIGNvbnRleHQuY2xpcFRvTmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9kZXN0aW5hdGlvbik7Cit9
CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwVG9OYXRpdmVJbWFnZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0
aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdHbHlw
aHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgs
IDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNl
cywgY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2Nh
bEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJ
dGVtKEl0ZW1UeXBlOjpEcmF3R2x5cGhzKQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+
KGZvbnQpKQpAQCAtMTM5Myw2ICsxNDE1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXQ6IHRzIDw8ICJjbGlwLW91dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBPdXRUb1BhdGg6IHRzIDw8ICJjbGlwLW91dC10by1wYXRoIjsgYnJlYWs7CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZTogdHMgPDwgImNsaXAtdG8tbmF0aXZlLWltYWdl
IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMgPDwgImRyYXctZ2x5
cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1p
bWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAi
ZHJhdy10aWxlZC1pbWFnZSI7IGJyZWFrOwpAQCAtMTQ4Myw2ICsxNTA2LDkgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFBhdGg+KGl0
ZW0pOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFn
ZToKKyAgICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KGl0ZW0pOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICB0cyA8
PCBkb3duY2FzdDxEcmF3R2x5cGhzPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBiNDVlNzk3NzI1OGNlNGNhYzE1YWE3NjdiOTNiNmVm
ZGIyNDhlNmVkLi44NDcwYTljYzUxMDY3M2YyZmQwYmUyMzRmYTUyMzM3YWFlZmViZWYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEwNDMsNiArMTA0Myw1MiBAQCBPcHRp
b25hbDxSZWY8Q2xpcFBhdGg+PiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgcmV0dXJuIENsaXBQYXRoOjpjcmVhdGUoKnBhdGgsICp3aW5kUnVsZSk7CiB9CiAKK2NsYXNz
IENsaXBUb05hdGl2ZUltYWdlIDogcHVibGljIEl0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8Q2xpcFRvTmF0aXZlSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENsaXBUb05hdGl2ZUltYWdlKGltYWdlLCBkZXN0aW5hdGlvbikpOworICAgIH0KKworICAg
IFdFQkNPUkVfRVhQT1JUIH5DbGlwVG9OYXRpdmVJbWFnZSgpOworCisgICAgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPENsaXBUb05hdGl2
ZUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9S
VCBDbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbik7CisKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0
aW5hdGlvbjsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENsaXBUb05hdGl2
ZUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IE5hdGl2ZUltYWdlSGFuZGxlIHsgbV9pbWFnZSB9OworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5h
dGlvbjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxDbGlwVG9O
YXRpdmVJbWFnZT4+IENsaXBUb05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyAgICBPcHRpb25hbDxOYXRpdmVJbWFnZUhhbmRsZT4gaGFuZGxlOworICAgIGRlY29kZXIg
Pj4gaGFuZGxlOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+
IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQ2xpcFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZShoYW5kbGUt
PmltYWdlLCAqZGVzdGluYXRpb24pOworfQorCiBjbGFzcyBEcmF3R2x5cGhzIDogcHVibGljIERy
YXdpbmdJdGVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdHbHlwaHM+IGNyZWF0ZShj
b25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBv
aW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBGb250U21v
b3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQpAQCAtMjg1Niw2ICsyOTAyLDkgQEAgdm9pZCBJdGVt
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
UGF0aDoKICAgICAgICAgZW5jb2RlciA8PCBkb3duY2FzdDxDbGlwUGF0aD4oKnRoaXMpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAg
ICAgZW5jb2RlciA8PCBkb3duY2FzdDxDbGlwVG9OYXRpdmVJbWFnZT4oKnRoaXMpOworICAgICAg
ICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBlbmNvZGVy
IDw8IGRvd25jYXN0PERyYXdHbHlwaHM+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2
LDYgKzMwODUsMTAgQEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IENsaXBQYXRoOjpkZWNvZGUoZGVjb2Rl
cikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1v
dmUoKml0ZW0pKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0
aXZlSW1hZ2U6CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGlwVG9OYXRpdmVJbWFnZTo6ZGVj
b2RlKGRlY29kZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3R2x5cGhzOjpkZWNvZGUo
ZGVjb2RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+
KFdURk1vdmUoKml0ZW0pKTsKQEAgLTMyMDUsNiArMzI1OCw3IEBAIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQ
TEFZTElTVF9JVEVNKENsaXBPdXQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oQ2xpcE91dFRvUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1Rf
SVRFTShDbGlwUGF0aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShD
bGlwVG9OYXRpdmVJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRF
TShEcmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERy
YXdJbWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGls
ZWRJbWFnZSkKQEAgLTMyNjUsNiArMzMxOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6Q2xpcE91dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvTmF0
aXZlSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhz
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAogICAgIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYjJiNmY2MTc2ZThlNDU4MWUwNjgx
YzJkMDA5ZGZlNGY1ZTdhNTcwZi4uMDhkZDg2OTYwNzQ5ODMxMmNhMjc2ODI4MGMyYjg3ODNkZTgz
NmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzc2
LDkgKzM3Niw5IEBAIEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBJ
bnRSZWN0KC0yMDQ4LCAtMjA0OCwgNDA5NiwgNDA5Nik7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNs
aXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgUmVj
b3JkZXI6OmNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKQogewotICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERpc3BsYXlMaXN0OjpS
ZWNvcmRlci4iKTsKKyAgICBhcHBlbmRJdGVtKENsaXBUb05hdGl2ZUltYWdlOjpjcmVhdGUoaW1h
Z2UsIGRlc3RpbmF0aW9uKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCBlNGViN2EzMDhlYzUzYzQ0NmFjMWQyNmQ5NTJkOTIzNWRjZTkwZmE1
Li42ZTY4ZmU1ZTFjZDhiMDJlNzljMWUxMzNhODA3YjFjN2U5NTI1NzMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5k
cygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICAK
ICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CmluZGV4IDAwYmU4ZTkxZDM1NTc3YmI0NjhiODM4ODMyNTZiN2VkOTlhZmM2ODAuLmRiMDllM2Uz
ZmQwZjI0NGZiODEzMTk3NDk4NGMxMTM5NWI3OWJiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0xMDUyLDcgKzEw
NTIsNyBAQCBJbnRSZWN0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBCb3VuZHMoKQogICAg
IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHN0YXRlLmN0bUludmVyc2UubWFwUmVjdChzdGF0ZS5j
bGlwQm91bmRzKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkK
K3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgc3RydWN0IENs
aXBUb0ltYWdlQnVmZmVyIGZpbmFsOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0PiB7CiAgICAgICAgIHZpcnR1YWwgfkNs
aXBUb0ltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwpAQCAtMTA2OCwxMiArMTA2OCw3IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1
ZmZlciwgY29uc3QgRmxvYXRSCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwotICAgIGlm
ICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFn
ZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KHN1cmZhY2Uu
Z2V0KCkpLCBkZXN0UmVjdCkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdl
QnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0KSk7
CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAppbmRleCA4MjYwYzQ4YWQ3OTg2ODRjNmU1N2MxZDY2ZGZiZTZkMDEwMWMxZjQx
Li4yMDQ1NDYwMzdiN2I0NTQwMjFlZTU2ZGFmOTVlZDA5MGY2NGI1ODU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC05OCw3
ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFdlYkNvcmU6OlBhdGgm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJD
b3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKaW5kZXggMzc0MDcxNzE1YmNi
NzkxZDU4OWQ1MGQ5OWIyOWM2NmIwMTBiNzA4MS4uYzc4YTU0YjQ1MGJjMTFkYzVmNmZiNWU2NjMy
Y2Y5MjUwZmE5MDI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCkBAIC00MzYs
MTUgKzQzNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgICAgIERpcmVjdDJEOjpk
cmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIFdURk1vdmUodGlsZUltYWdlKSwgSW50U2l6
ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKLXsKLSAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGlu
YXRpb25TaXplID0gYnVmZmVyLnNpemVGb3JEZXN0aW5hdGlvblNpemUoZGVzdFJlY3Quc2l6ZSgp
KTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5n
bGUgd2l0aCBhIHN0cm9rZWQgYm9yZGVyLgogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBkNjQ0NWQ3MGNiMzAzN2U3MmFl
MjkwNmQ2NjM2ZWZmYjQ0ODFkNzU4Li5kM2NlNDA5YjU5YjlmNzY1NDc0OWRhMmQ5NTk0NjE3NTcw
ZDIwN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDE2
LDE1ICs0MTYsOSBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcEJv
dW5kcygpCiAgICAgcmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6Z2V0Q2xpcEJvdW5kcyhtX3BsYXRm
b3JtQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlw
VG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKQogewotICAgIFJlZlB0cjxJbWFnZT4g
aW1hZ2UgPSBidWZmZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBpZiAo
IWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvKiBjb250ZXh0ID0gJmdyYXBoaWNz
Q29udGV4dCgpOwotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoY29udGV4dCkpCi0gICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmgKaW5kZXggNDQyNWZkMjZhYmU4NTQ1MWQyYzAzMmYzNmEyNmE1N2VlMzFlMmIwZS4uZWQy
ZWQzNDUwNjQ4ZGRkNjZhNjVhNDYzNmRiZmY5NzQxOGFjNDZmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3Qg
UGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZVB0ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIG92ZXJyaWRlOwogICAgIAog
ICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409840</attachid>
            <date>2020-09-27 09:49:22 -0700</date>
            <delta_ts>2020-09-27 10:40:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200927094921.patch</filename>
            <type>text/plain</type>
            <size>24001</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uOWM0NDNkMmJkZjgwNWMyNTNhN2QxOWIwOGE1Nzc2
MTU2OTgzMzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA5LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OkNs
aXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9O
YXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaDoKKwogMjAyMC0wOS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Igc2V0dGluZyBD
TVlLQSBmaWxsIGFuZCBzdHJva2UgY29sb3JzIGluIDJEIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTNj
MTk4MzliYjEyMjYyMzBjMjE4NGM1MDdjMjc1OTRlYjcwMjA3ZC4uNGYwZmIwYmFjZGU3YzQ5Nzg1
ZDMxYzA1ZTIxNTY5NjRhODFmNjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04NTEsNiArODUxLDE5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCisjaWYgIVVTRShDQUlSTykKKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBidWZmZXIuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvTmF0aXZl
SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKK30KKworI2VuZGlmCisKICNpZiAhVVNFKENHKSAmJiAh
VVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2
MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDA4LDYgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZj
ZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYz
NDdlZWNiMTgyYzE5YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRk
ZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjVlYTRmZTZjNGJhMzMxZjE1YjgyMTFjZTBlMDQ4
NmFjZGIwNzI0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSAr
MjYwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4
dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIWltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHRoaXMpKQorICAgICAgICBjbGlwVG9OYXRpdmVJbWFnZShzdXJmYWNl
LCBkZXN0aW5hdGlvblJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5jbGlwVG9JbWFnZUJ1ZmZlcihi
dWZmZXIsIGRlc3RSZWN0KTsKKyAgICAgICAgbV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5j
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCk7CisgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdGluYXRpb25SZWN0KTsKIH0KIAogSW50UmVjdCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBCb3VuZHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAKaW5kZXggODkxMzg0MzEwZWJlODE4MjQzNDg0NjYxNzk0ODFlZDE3NjEyOWI2OS4uYTBlMzMw
MDlkOGQ2NTc1YTVkNTk2MDJmYmI1NzBlMjc5NTA1ZjRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC00MTIsMTAgKzQxMiw5IEBAIEludFJlY3QgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpn
ZXRDbGlwQm91bmRzKG1fcGxhdGZvcm1Db250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb25SZWN0KQogewotICAgIGlmIChhdXRvIHN1cmZhY2UgPSBidWZmZXIuY29weU5hdGl2
ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdl
QnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCk7CisgICAg
Q2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwg
ZGVzdGluYXRpb25SZWN0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCmluZGV4IDJmNTE5ZDQ1NDc3ZDQzNzk4Yjc1OWE4MTUzNDYyYzk4MzUzN2NkOWUuLmY4M2Iy
MDBlZTYwMDU0MDk5ZjQ5MzliZTY5ZmEzNGM2MjA0MDY2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xp
cE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRy
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgb3ZlcnJpZGU7CiAgICAgCiAgICAg
dm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
Q0cuY3BwCmluZGV4IGIyMGYwNjI3NDc2MGNjZDRiZjY3NDBhYWNiODQ0NzUzYzE3YTRkNGQuLjBh
ZmE5ODdkN2EzY2FmY2VjYWY3MTgzMjQ1NWZjYjcyZmRlZTRkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKQEAgLTUxMCwxNCArNTEwLDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgfQog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBGbG9hdFNpemUgYnVmZmVyRGVzdGluYXRpb25TaXplID0gZGVzdFJlY3Quc2l6
ZSgpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShpbWFnZSwgZGVzdFJlY3QpOworICAgICAgICByZXR1
cm47CisgICAgfQogCisgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RS
ZWN0LnNpemUoKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29u
dGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBidWZmZXJEZXN0aW5hdGlvblNpemUu
aGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAzNWMzOWEwNWFkMzczNjlmNjMx
ODYzMTc0OTIwZjBlNTRkYjViZjlmLi5jNTVkMmMyYTY1OWM5YzhhNjdlMDczZGNjZDMwMzExN2Rk
MGQ1OTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtNTcsNiArNTcsNyBAQCBlbnVtIGNs
YXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgQ2xpcE91dCwKICAgICBDbGlwT3V0VG9QYXRo
LAogICAgIENsaXBQYXRoLAorICAgIENsaXBUb05hdGl2ZUltYWdlLAogICAgIERyYXdHbHlwaHMs
CiAgICAgRHJhd0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IDVhY2QzMzdkMDM2ODVjZmE5MDcwNzAwZWRlODA1MDFjMjRi
NTg0NDQuLmEyNjE3ZTdlM2QzMmQ4ZGI2YjMzYzA1YjU3YTY2ODVhNDAyOGM4ZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTk0LDYgKzk0LDggQEAgc2l6ZV90IEl0
ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAgIHJldHVybiBzaXplb2Yo
ZG93bmNhc3Q8Q2xpcE91dFRvUGF0aD4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQ
YXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBQYXRoPihpdGVtKSk7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6CisgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PERyYXdHbHlwaHM+
KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6CkBAIC01MTAsNiArNTEyLDI2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK0NsaXBUb05hdGl2ZUltYWdlOjpD
bGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbikKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlKQorICAg
ICwgbV9pbWFnZShpbWFnZSkKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCit7Cit9
CisKK0NsaXBUb05hdGl2ZUltYWdlOjp+Q2xpcFRvTmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgQ2xpcFRvTmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkg
Y29uc3QKK3sKKyAgICBjb250ZXh0LmNsaXBUb05hdGl2ZUltYWdlKG1faW1hZ2UsIG1fZGVzdGlu
YXRpb24pOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgQ2xpcFRvTmF0aXZlSW1hZ2UmIGl0ZW0pCit7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgcmV0dXJuIHRzOworfQor
CiBEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxHbHlwaEJ1
ZmZlckdseXBoLCAxMjg+JiYgZ2x5cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+
JiYgYWR2YW5jZXMsIGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0
U2l6ZSYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAg
OiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd0dseXBocykKICAgICAsIG1fZm9udChjb25zdF9j
YXN0PEZvbnQmPihmb250KSkKQEAgLTEzOTMsNiArMTQxNSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwT3V0OiB0cyA8PCAiY2xpcC1vdXQiOyBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7
CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6IHRzIDw8ICJjbGlwLXRvLW5h
dGl2ZS1pbWFnZSI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8
ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMg
PDwgImRyYXctaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFn
ZTogdHMgPDwgImRyYXctdGlsZWQtaW1hZ2UiOyBicmVhazsKQEAgLTE0ODMsNiArMTUwNiw5IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0p
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PENs
aXBQYXRoPihpdGVtKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRv
TmF0aXZlSW1hZ2U6CisgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPihp
dGVtKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAg
ICAgICAgdHMgPDwgZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYjQ1ZTc5NzcyNThjZTRjYWMxNWFh
NzY3YjkzYjZlZmRiMjQ4ZTZlZC4uODQ3MGE5Y2M1MTA2NzNmMmZkMGJlMjM0ZmE1MjMzN2FhZWZl
YmVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMDQzLDYgKzEwNDMs
NTIgQEAgT3B0aW9uYWw8UmVmPENsaXBQYXRoPj4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHJldHVybiBDbGlwUGF0aDo6Y3JlYXRlKCpwYXRoLCAqd2luZFJ1bGUpOwog
fQogCitjbGFzcyBDbGlwVG9OYXRpdmVJbWFnZSA6IHB1YmxpYyBJdGVtIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPENsaXBUb05hdGl2ZUltYWdlPiBjcmVhdGUoTmF0aXZlSW1hZ2VQdHIgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDbGlwVG9OYXRpdmVJbWFnZShpbWFnZSwgZGVzdGluYXRpb24pKTsKKyAg
ICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q2xpcFRvTmF0aXZlSW1hZ2UoKTsKKworICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
OyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxD
bGlwVG9OYXRpdmVJbWFnZT4+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgV0VC
Q09SRV9FWFBPUlQgQ2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24pOworCisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKKworICAgIE5hdGl2ZUltYWdlUHRyIG1faW1hZ2U7CisgICAgRmxvYXRS
ZWN0IG1fZGVzdGluYXRpb247Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBD
bGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBOYXRpdmVJbWFnZUhhbmRsZSB7IG1faW1hZ2UgfTsKKyAgICBlbmNvZGVyIDw8
IG1fZGVzdGluYXRpb247Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxS
ZWY8Q2xpcFRvTmF0aXZlSW1hZ2U+PiBDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8TmF0aXZlSW1hZ2VIYW5kbGU+IGhhbmRsZTsKKyAg
ICBkZWNvZGVyID4+IGhhbmRsZTsKKyAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAg
ZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaXBUb05hdGl2ZUltYWdlOjpjcmVh
dGUoaGFuZGxlLT5pbWFnZSwgKmRlc3RpbmF0aW9uKTsKK30KKwogY2xhc3MgRHJhd0dseXBocyA6
IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEcmF3R2x5cGhz
PiBjcmVhdGUoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwgY29u
c3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hv
ciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKQEAgLTI4NTYsNiArMjkwMiw5IEBA
IHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q2xpcFBhdGg+KCp0
aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1h
Z2U6CisgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KCp0aGlz
KTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAg
ICAgZW5jb2RlciA8PCBkb3duY2FzdDxEcmF3R2x5cGhzPigqdGhpcyk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMzAzNiw2ICszMDg1LDEwIEBAIE9wdGlvbmFsPFJlZjxJdGVtPj4gSXRlbTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGlwUGF0aDo6ZGVj
b2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJ
dGVtPihXVEZNb3ZlKCppdGVtKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBUb05hdGl2ZUltYWdlOgorICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFRvTmF0aXZl
SW1hZ2U6OmRlY29kZShkZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJl
bmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0dseXBo
czo6ZGVjb2RlKGRlY29kZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxJdGVtPihXVEZNb3ZlKCppdGVtKSk7CkBAIC0zMjA1LDYgKzMyNTgsNyBAQCBTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcCkKIFNQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwT3V0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKENsaXBPdXRUb1BhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJ
U1BMQVlMSVNUX0lURU0oQ2xpcFBhdGgpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlM
SVNUX0lURU0oQ2xpcFRvTmF0aXZlSW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BM
QVlMSVNUX0lURU0oRHJhd0dseXBocykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShEcmF3SW1hZ2UpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lU
RU0oRHJhd1RpbGVkSW1hZ2UpCkBAIC0zMjY1LDYgKzMzMTksNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZT4gewogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dCwKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGgsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpDbGlwUGF0aCwKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBUb05hdGl2ZUltYWdlLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0dseXBocywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFn
ZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGIyYjZmNjE3NmU4
ZTQ1ODFlMDY4MWMyZDAwOWRmZTRmNWU3YTU3MGYuLjA4ZGQ4Njk2MDc0OTgzMTJjYTI3NjgyODBj
MmI4NzgzZGU4MzZlMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTM3Niw5ICszNzYsOSBAQCBJbnRSZWN0IFJlY29yZGVyOjpjbGlwQm91bmRzKCkKICAg
ICByZXR1cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOwogfQogCi12b2lkIFJl
Y29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYp
Cit2b2lkIFJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKLSAgICBXVEZMb2dBbHdheXMoIkdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBEaXNw
bGF5TGlzdDo6UmVjb3JkZXIuIik7CisgICAgYXBwZW5kSXRlbShDbGlwVG9OYXRpdmVJbWFnZTo6
Y3JlYXRlKGltYWdlLCBkZXN0aW5hdGlvbikpOwogfQogCiB2b2lkIFJlY29yZGVyOjphcHBseURl
dmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTRlYjdhMzA4ZWM1M2M0NDZhYzFkMjZkOTUyZDky
MzVkY2U5MGZhNS4uNmU2OGZlNWUxY2Q4YjAyZTc5YzFlMTMzYTgwN2IxYzdlOTUyNTczMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMzUsNyArMTM1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0
IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNv
cmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBj
bGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlk
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcAppbmRleCAwMGJlOGU5MWQzNTU3N2JiNDY4YjgzODgzMjU2YjdlZDk5YWZjNjgw
Li5kYjA5ZTNlM2ZkMGYyNDRmYjgxMzE5NzQ5ODRjMTEzOTViNzliYmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAt
MTA1Miw3ICsxMDUyLDcgQEAgSW50UmVjdCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwQm91
bmRzKCkKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzdGF0ZS5jdG1JbnZlcnNlLm1hcFJl
Y3Qoc3RhdGUuY2xpcEJvdW5kcykpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAg
IHN0cnVjdCBDbGlwVG9JbWFnZUJ1ZmZlciBmaW5hbDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJh
dGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdD4gewogICAgICAgICB2
aXJ0dWFsIH5DbGlwVG9JbWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKQEAgLTEwNjgsMTIgKzEwNjgs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgICAgICB9CiAgICAgfTsKIAotICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byBzdXJm
YWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihzdXJmYWNlLmdldCgpKSwgZGVzdFJlY3QpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxD
bGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBk
ZXN0UmVjdCkpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmFwcGx5RGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggODI2MGM0OGFkNzk4Njg0YzZlNTdjMWQ2NmRmYmU2
ZDAxMDFjMWY0MS4uMjA0NTQ2MDM3YjdiNDU0MDIxZWU1NmRhZjk1ZWQwOTBmNjRiNTg1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcE91dChjb25zdCBXZWJD
b3JlOjpQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQ
YXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rvcihm
bG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmluZGV4IDM3
NDA3MTcxNWJjYjc5MWQ1ODlkNTBkOTliMjljNjZiMDEwYjcwODEuLmM3OGE1NGI0NTBiYzExZGM1
ZjZmYjVlNjYzMmNmOTI1MGZhOTAyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNw
cApAQCAtNDM2LDE1ICs0MzYsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgICAgICBE
aXJlY3QyRDo6ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBXVEZNb3ZlKHRpbGVJbWFn
ZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5k
TW9kZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCi17Ci0gICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRTaXplIGJ1
ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGJ1ZmZlci5zaXplRm9yRGVzdGluYXRpb25TaXplKGRlc3RS
ZWN0LnNpemUoKSk7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQogLy8gRHJhd3MgYSBmaWxs
ZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKaW5kZXggZDY0NDVkNzBj
YjMwMzdlNzJhZTI5MDZkNjYzNmVmZmI0NDgxZDc1OC4uZDNjZTQwOWI1OWI5Zjc2NTQ3NDlkYTJk
OTU5NDYxNzU3MGQyMDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5j
cHAKQEAgLTQxNiwxNSArNDE2LDkgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBEaXJlY3QyRDo6U3RhdGU6OmdldENsaXBCb3Vu
ZHMobV9wbGF0Zm9ybUNvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9O
YXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0JikKIHsKLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogY29udGV4dCA9
ICZncmFwaGljc0NvbnRleHQoKTsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnRleHQpKQotICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJEOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3Qy
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oCmluZGV4IDQ0MjVmZDI2YWJlODU0NTFkMmMwMzJmMzZhMjZhNTdlZTMx
ZTJiMGUuLmVkMmVkMzQ1MDY0OGRkZDY2YTY1YTQ2MzZkYmZmOTc0MThhYzQ2ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBQ
YXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91
bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvTmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KSBvdmVycmlk
ZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRl
OwogCg==
</data>
<flag name="commit-queue"
          id="425663"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409841</attachid>
            <date>2020-09-27 10:04:46 -0700</date>
            <delta_ts>2020-09-27 10:11:51 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200927100445.patch</filename>
            <type>text/plain</type>
            <size>23999</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uOWM0NDNkMmJkZjgwNWMyNTNhN2QxOWIwOGE1Nzc2
MTU2OTgzMzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA5LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OkNs
aXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9O
YXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaDoKKwogMjAyMC0wOS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Igc2V0dGluZyBD
TVlLQSBmaWxsIGFuZCBzdHJva2UgY29sb3JzIGluIDJEIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTNj
MTk4MzliYjEyMjYyMzBjMjE4NGM1MDdjMjc1OTRlYjcwMjA3ZC4uNGYwZmIwYmFjZGU3YzQ5Nzg1
ZDMxYzA1ZTIxNTY5NjRhODFmNjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04NTEsNiArODUxLDE5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCisjaWYgIVVTRShDQUlSTykKKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBidWZmZXIuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvTmF0aXZl
SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKK30KKworI2VuZGlmCisKICNpZiAhVVNFKENHKSAmJiAh
VVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2
MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDA4LDYgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZj
ZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYz
NDdlZWNiMTgyYzE5YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRk
ZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjY2M2NhZTQxN2RmM2QyY2JkODE0NWMyYzFiYzFl
MzUwYmMyMzFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSAr
MjYwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4
dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIWltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHRoaXMpKQorICAgICAgICBjbGlwVG9OYXRpdmVJbWFnZShzdXJmYWNl
LCBkZXN0aW5hdGlvblJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5jbGlwVG9JbWFnZUJ1ZmZlcihi
dWZmZXIsIGRlc3RSZWN0KTsKKyAgICAgICAgbV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5j
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCk7CisgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1h
Z2UuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
OjpjbGlwQm91bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CmluZGV4IDg5MTM4NDMxMGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYxMjliNjkuLmEwZTMzMDA5
ZDhkNjU3NWE1ZDU5NjAyZmJiNTcwZTI3OTUwNWY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcApAQCAtNDEyLDEwICs0MTIsOSBAQCBJbnRSZWN0IEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0
Q2xpcEJvdW5kcyhtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBU
b05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRl
c3RpbmF0aW9uUmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aAppbmRleCAyZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2MmM5ODM1MzdjZDllLi5mODNiMjAw
ZWU2MDA1NDA5OWY0OTM5YmU2OWZhMzRjNjIwNDA2NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBP
dXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYs
IFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCBiMjBmMDYyNzQ3NjBjY2Q0YmY2NzQwYWFjYjg0NDc1M2MxN2E0ZDRkLi4wYWZh
OTg3ZDdhM2NhZmNlY2FmNzE4MzI0NTVmY2I3MmZkZWU0ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC01MTAsMTQgKzUxMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RSZWN0LnNpemUo
KTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+Y2xpcFRvTmF0aXZlSW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAorICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0UmVj
dC5zaXplKCk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICAvLyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNl
ZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUuCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRl
eHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsgYnVmZmVyRGVzdGluYXRpb25TaXplLmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMzVjMzlhMDVhZDM3MzY5ZjYzMTg2
MzE3NDkyMGYwZTU0ZGI1YmY5Zi4uYzU1ZDJjMmE2NTljOWM4YTY3ZTA3M2RjY2QzMDMxMTdkZDBk
NTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTU3LDYgKzU3LDcgQEAgZW51bSBjbGFz
cyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIENsaXBPdXQsCiAgICAgQ2xpcE91dFRvUGF0aCwK
ICAgICBDbGlwUGF0aCwKKyAgICBDbGlwVG9OYXRpdmVJbWFnZSwKICAgICBEcmF3R2x5cGhzLAog
ICAgIERyYXdJbWFnZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAppbmRleCA1YWNkMzM3ZDAzNjg1Y2ZhOTA3MDcwMGVkZTgwNTAxYzI0YjU4
NDQ0Li5hMjYxN2U3ZTNkMzJkOGRiNmIzM2MwNWI1N2E2Njg1YTQwMjhjOGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC05NCw2ICs5NCw4IEBAIHNpemVfdCBJdGVt
OjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRv
d25jYXN0PENsaXBPdXRUb1BhdGg+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwUGF0aD4oaXRlbSkpOworICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlOgorICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3R2x5cGhzPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOgpAQCAtNTEwLDYgKzUxMiwyNiBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xp
cFBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitDbGlwVG9OYXRpdmVJbWFnZTo6Q2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZSkKKyAgICAs
IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQoreworfQor
CitDbGlwVG9OYXRpdmVJbWFnZTo6fkNsaXBUb05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OworCit2
b2lkIENsaXBUb05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0Cit7CisgICAgY29udGV4dC5jbGlwVG9OYXRpdmVJbWFnZShtX2ltYWdlLCBtX2Rlc3RpbmF0
aW9uKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IENsaXBUb05hdGl2ZUltYWdlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHJldHVybiB0czsKK30KKwog
RHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBWZWN0b3I8R2x5cGhCdWZm
ZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYm
IGFkdmFuY2VzLCBjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNp
emUmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogICAgIDog
RHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdHbHlwaHMpCiAgICAgLCBtX2ZvbnQoY29uc3RfY2Fz
dDxGb250Jj4oZm9udCkpCkBAIC0xMzkzLDYgKzE0MTUsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDogdHMgPDwgImNsaXAtb3V0IjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogdHMgPDwgImNsaXAtb3V0LXRvLXBhdGgiOyBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogdHMgPDwgImNsaXAtcGF0aCI7IGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlOiB0cyA8PCAiY2xpcC10by1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAi
ZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8
ICJkcmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6
IHRzIDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CkBAIC0xNDgzLDYgKzE1MDYsOSBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlw
UGF0aD4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05h
dGl2ZUltYWdlOgorICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwVG9OYXRpdmVJbWFnZT4oaXRl
bSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAg
ICAgIHRzIDw8IGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGI0NWU3OTc3MjU4Y2U0Y2FjMTVhYTc2
N2I5M2I2ZWZkYjI0OGU2ZWQuLjg0NzBhOWNjNTEwNjczZjJmZDBiZTIzNGZhNTIzMzdhYWVmZWJl
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMTA0Myw2ICsxMDQzLDUy
IEBAIE9wdGlvbmFsPFJlZjxDbGlwUGF0aD4+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICByZXR1cm4gQ2xpcFBhdGg6OmNyZWF0ZSgqcGF0aCwgKndpbmRSdWxlKTsKIH0K
IAorY2xhc3MgQ2xpcFRvTmF0aXZlSW1hZ2UgOiBwdWJsaWMgSXRlbSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxDbGlwVG9OYXRpdmVJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ2xpcFRvTmF0aXZlSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uKSk7CisgICAg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgfkNsaXBUb05hdGl2ZUltYWdlKCk7CisKKyAgICBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q2xp
cFRvTmF0aXZlSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIENsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIEZsb2F0UmVj
dCBtX2Rlc3RpbmF0aW9uOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ2xp
cFRvTmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgTmF0aXZlSW1hZ2VIYW5kbGUgeyBtX2ltYWdlIH07CisgICAgZW5jb2RlciA8PCBt
X2Rlc3RpbmF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVm
PENsaXBUb05hdGl2ZUltYWdlPj4gQ2xpcFRvTmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFuZGxlPiBoYW5kbGU7CisgICAg
ZGVjb2RlciA+PiBoYW5kbGU7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRl
Y29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBDbGlwVG9OYXRpdmVJbWFnZTo6Y3JlYXRl
KGhhbmRsZS0+aW1hZ2UsICpkZXN0aW5hdGlvbik7Cit9CisKIGNsYXNzIERyYXdHbHlwaHMgOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RHJhd0dseXBocz4g
Y3JlYXRlKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0
IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0yODU2LDYgKzI5MDIsOSBAQCB2
b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsaXBQYXRoPigqdGhp
cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdl
OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPigqdGhpcyk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0dseXBocz4oKnRoaXMpOwogICAgICAgICBicmVhazsK
QEAgLTMwMzYsNiArMzA4NSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFBhdGg6OmRlY29k
ZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IENsaXBUb05hdGl2ZUlt
YWdlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdHbHlwaHM6
OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzIwNSw2ICszMjU4LDcgQEAgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShDbGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQ
TEFZTElTVF9JVEVNKENsaXBQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKENsaXBUb05hdGl2ZUltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdUaWxlZEltYWdlKQpAQCAtMzI2NSw2ICszMzE5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcFBhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwVG9OYXRpdmVJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiMmI2ZjYxNzZlOGU0
NTgxZTA2ODFjMmQwMDlkZmU0ZjVlN2E1NzBmLi4wOGRkODY5NjA3NDk4MzEyY2EyNzY4MjgwYzJi
ODc4M2RlODM2ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0zNzYsOSArMzc2LDkgQEAgSW50UmVjdCBSZWNvcmRlcjo6Y2xpcEJvdW5kcygpCiAgICAg
cmV0dXJuIEludFJlY3QoLTIwNDgsIC0yMDQ4LCA0MDk2LCA0MDk2KTsKIH0KIAotdm9pZCBSZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKQor
dm9pZCBSZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRGlzcGxh
eUxpc3Q6OlJlY29yZGVyLiIpOworICAgIGFwcGVuZEl0ZW0oQ2xpcFRvTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShpbWFnZSwgZGVzdGluYXRpb24pKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU0ZWI3YTMwOGVjNTNjNDQ2YWMxZDI2ZDk1MmQ5MjM1
ZGNlOTBmYTUuLjZlNjhmZTVlMWNkOGIwMmU3OWMxZTEzM2E4MDdiMWM3ZTk1MjU3MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBj
bGlwQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKaW5kZXggMDBiZThlOTFkMzU1NzdiYjQ2OGI4Mzg4MzI1NmI3ZWQ5OWFmYzY4MC4u
ZGIwOWUzZTNmZDBmMjQ0ZmI4MTMxOTc0OTg0YzExMzk1Yjc5YmJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTEw
NTIsNyArMTA1Miw3IEBAIEludFJlY3QgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcEJvdW5k
cygpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc3RhdGUuY3RtSW52ZXJzZS5tYXBSZWN0
KHN0YXRlLmNsaXBCb3VuZHMpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZShO
YXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBz
dHJ1Y3QgQ2xpcFRvSW1hZ2VCdWZmZXIgZmluYWw6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRp
b25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3Q+IHsKICAgICAgICAgdmly
dHVhbCB+Q2xpcFRvSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMDY4LDEyICsxMDY4LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFIKICAgICAgICAgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8gc3VyZmFj
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4o
c3VyZmFjZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVz
dFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBseURldmljZVNj
YWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQw
MTAxYzFmNDEuLjIwNDU0NjAzN2I3YjQ1NDAyMWVlNTZkYWY5NWVkMDkwZjY0YjU4NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgK
QEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgV2ViQ29y
ZTo6UGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0
aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6
OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxv
YXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCAzNzQw
NzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAxMGI3MDgxLi5jNzhhNTRiNDUwYmMxMWRjNWY2
ZmI1ZTY2MzJjZjkyNTBmYTkwMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAK
QEAgLTQzNiwxNSArNDM2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICAgICAgRGly
ZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgV1RGTW92ZSh0aWxlSW1hZ2Up
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1v
ZGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQotewotICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBidWZm
ZXJEZXN0aW5hdGlvblNpemUgPSBidWZmZXIuc2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShkZXN0UmVj
dC5zaXplKCkpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIC8vIERyYXdzIGEgZmlsbGVk
IHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGQ2NDQ1ZDcwY2Iz
MDM3ZTcyYWUyOTA2ZDY2MzZlZmZiNDQ4MWQ3NTguLmQzY2U0MDliNTliOWY3NjU0NzQ5ZGEyZDk1
OTQ2MTc1NzBkMjA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3Bw
CkBAIC00MTYsMTUgKzQxNiw5IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpnZXRDbGlwQm91bmRz
KG1fcGxhdGZvcm1Db250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpCiB7Ci0gICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwot
ICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNvbnRleHQgPSAm
Z3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZShjb250ZXh0KSkKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaAppbmRleCA0NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3ZWUzMWUy
YjBlLi5lZDJlZDM0NTA2NDhkZGQ2NmE2NWE0NjM2ZGJmZjk3NDE4YWM0NmY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0
aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5k
cygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5h
dGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgb3ZlcnJpZGU7
CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsK
IAo=
</data>
<flag name="commit-queue"
          id="425660"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409842</attachid>
            <date>2020-09-27 10:11:24 -0700</date>
            <delta_ts>2020-09-27 11:22:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200927101123.patch</filename>
            <type>text/plain</type>
            <size>24008</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uOWM0NDNkMmJkZjgwNWMyNTNhN2QxOWIwOGE1Nzc2
MTU2OTgzMzMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA5LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV29yayBpbiBwcm9ncmVzcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBU
b05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OkNs
aXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9O
YXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xp
cFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3Np
YTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0RGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaDoKKwogMjAyMC0wOS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3Igc2V0dGluZyBD
TVlLQSBmaWxsIGFuZCBzdHJva2UgY29sb3JzIGluIDJEIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNTNj
MTk4MzliYjEyMjYyMzBjMjE4NGM1MDdjMjc1OTRlYjcwMjA3ZC4uNGYwZmIwYmFjZGU3YzQ5Nzg1
ZDMxYzA1ZTIxNTY5NjRhODFmNjdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04NTEsNiArODUxLDE5IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCisjaWYgIVVTRShDQUlSTykKKwor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZm
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBidWZmZXIuY29w
eU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICAgICAgY2xpcFRvTmF0aXZl
SW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKK30KKworI2VuZGlmCisKICNpZiAhVVNFKENHKSAmJiAh
VVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2
MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDA4LDYgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZj
ZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYz
NDdlZWNiMTgyYzE5YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRk
ZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjY2M2NhZTQxN2RmM2QyY2JkODE0NWMyYzFiYzFl
MzUwYmMyMzFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSAr
MjYwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4
dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIWltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHRoaXMpKQorICAgICAgICBjbGlwVG9OYXRpdmVJbWFnZShzdXJmYWNl
LCBkZXN0aW5hdGlvblJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5jbGlwVG9JbWFnZUJ1ZmZlcihi
dWZmZXIsIGRlc3RSZWN0KTsKKyAgICAgICAgbV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5j
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCk7CisgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1h
Z2UuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
OjpjbGlwQm91bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CmluZGV4IDg5MTM4NDMxMGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYxMjliNjkuLmEwZTMzMDA5
ZDhkNjU3NWE1ZDU5NjAyZmJiNTcwZTI3OTUwNWY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcApAQCAtNDEyLDEwICs0MTIsOSBAQCBJbnRSZWN0IEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0
Q2xpcEJvdW5kcyhtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBU
b05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRl
c3RpbmF0aW9uUmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aAppbmRleCAyZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2MmM5ODM1MzdjZDllLi5mODNiMjAw
ZWU2MDA1NDA5OWY0OTM5YmU2OWZhMzRjNjIwNDA2NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBP
dXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYs
IFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCBiMjBmMDYyNzQ3NjBjY2Q0YmY2NzQwYWFjYjg0NDc1M2MxN2E0ZDRkLi4wYWZh
OTg3ZDdhM2NhZmNlY2FmNzE4MzI0NTVmY2I3MmZkZWU0ZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC01MTAsMTQgKzUxMCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3RSZWN0LnNpemUo
KTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBidWZmZXIuY29weU5hdGl2ZUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+Y2xpcFRvTmF0aXZlSW1hZ2UoaW1hZ2UsIGRlc3RSZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAorICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0UmVj
dC5zaXplKCk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICAvLyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNl
ZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUuCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRl
eHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsgYnVmZmVyRGVzdGluYXRpb25TaXplLmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMzVjMzlhMDVhZDM3MzY5ZjYzMTg2
MzE3NDkyMGYwZTU0ZGI1YmY5Zi4uYzU1ZDJjMmE2NTljOWM4YTY3ZTA3M2RjY2QzMDMxMTdkZDBk
NTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTU3LDYgKzU3LDcgQEAgZW51bSBjbGFz
cyBJdGVtVHlwZSA6IHVpbnQ4X3QgewogICAgIENsaXBPdXQsCiAgICAgQ2xpcE91dFRvUGF0aCwK
ICAgICBDbGlwUGF0aCwKKyAgICBDbGlwVG9OYXRpdmVJbWFnZSwKICAgICBEcmF3R2x5cGhzLAog
ICAgIERyYXdJbWFnZSwKICAgICBEcmF3VGlsZWRJbWFnZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAppbmRleCA1YWNkMzM3ZDAzNjg1Y2ZhOTA3MDcwMGVkZTgwNTAxYzI0YjU4
NDQ0Li5hMjYxN2U3ZTNkMzJkOGRiNmIzM2MwNWI1N2E2Njg1YTQwMjhjOGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC05NCw2ICs5NCw4IEBAIHNpemVfdCBJdGVt
OjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICByZXR1cm4gc2l6ZW9mKGRv
d25jYXN0PENsaXBPdXRUb1BhdGg+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0
aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwUGF0aD4oaXRlbSkpOworICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlOgorICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0dseXBoczoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxEcmF3R2x5cGhzPihp
dGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOgpAQCAtNTEwLDYgKzUxMiwyNiBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ2xp
cFBhdGgmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitDbGlwVG9OYXRpdmVJbWFnZTo6Q2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZSkKKyAgICAs
IG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQoreworfQor
CitDbGlwVG9OYXRpdmVJbWFnZTo6fkNsaXBUb05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OworCit2
b2lkIENsaXBUb05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0Cit7CisgICAgY29udGV4dC5jbGlwVG9OYXRpdmVJbWFnZShtX2ltYWdlLCBtX2Rlc3RpbmF0
aW9uKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IENsaXBUb05hdGl2ZUltYWdlJiBpdGVtKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
ZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHJldHVybiB0czsKK30KKwog
RHJhd0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBWZWN0b3I8R2x5cGhCdWZm
ZXJHbHlwaCwgMTI4PiYmIGdseXBocywgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMTI4PiYm
IGFkdmFuY2VzLCBjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNp
emUmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogICAgIDog
RHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdHbHlwaHMpCiAgICAgLCBtX2ZvbnQoY29uc3RfY2Fz
dDxGb250Jj4oZm9udCkpCkBAIC0xMzkzLDYgKzE0MTUsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbVR5cGUmIHR5cGUpCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcE91dDogdHMgPDwgImNsaXAtb3V0IjsgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogdHMgPDwgImNsaXAtb3V0LXRvLXBhdGgiOyBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogdHMgPDwgImNsaXAtcGF0aCI7IGJyZWFrOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdlOiB0cyA8PCAiY2xpcC10by1uYXRp
dmUtaW1hZ2UiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAi
ZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8
ICJkcmF3LWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6
IHRzIDw8ICJkcmF3LXRpbGVkLWltYWdlIjsgYnJlYWs7CkBAIC0xNDgzLDYgKzE1MDYsOSBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlw
UGF0aD4oaXRlbSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05h
dGl2ZUltYWdlOgorICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwVG9OYXRpdmVJbWFnZT4oaXRl
bSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAg
ICAgIHRzIDw8IGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pOwogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IGI0NWU3OTc3MjU4Y2U0Y2FjMTVhYTc2
N2I5M2I2ZWZkYjI0OGU2ZWQuLjg0NzBhOWNjNTEwNjczZjJmZDBiZTIzNGZhNTIzMzdhYWVmZWJl
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMTA0Myw2ICsxMDQzLDUy
IEBAIE9wdGlvbmFsPFJlZjxDbGlwUGF0aD4+IENsaXBQYXRoOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICByZXR1cm4gQ2xpcFBhdGg6OmNyZWF0ZSgqcGF0aCwgKndpbmRSdWxlKTsKIH0K
IAorY2xhc3MgQ2xpcFRvTmF0aXZlSW1hZ2UgOiBwdWJsaWMgSXRlbSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxDbGlwVG9OYXRpdmVJbWFnZT4gY3JlYXRlKE5hdGl2ZUltYWdlUHRyIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ2xpcFRvTmF0aXZlSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uKSk7CisgICAg
fQorCisgICAgV0VCQ09SRV9FWFBPUlQgfkNsaXBUb05hdGl2ZUltYWdlKCk7CisKKyAgICBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q2xp
cFRvTmF0aXZlSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNP
UkVfRVhQT1JUIENsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKTsKKworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlOworICAgIEZsb2F0UmVj
dCBtX2Rlc3RpbmF0aW9uOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ2xp
cFRvTmF0aXZlSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgTmF0aXZlSW1hZ2VIYW5kbGUgeyBtX2ltYWdlIH07CisgICAgZW5jb2RlciA8PCBt
X2Rlc3RpbmF0aW9uOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8UmVm
PENsaXBUb05hdGl2ZUltYWdlPj4gQ2xpcFRvTmF0aXZlSW1hZ2U6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPE5hdGl2ZUltYWdlSGFuZGxlPiBoYW5kbGU7CisgICAg
ZGVjb2RlciA+PiBoYW5kbGU7CisgICAgaWYgKCFoYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRl
Y29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBDbGlwVG9OYXRpdmVJbWFnZTo6Y3JlYXRl
KGhhbmRsZS0+aW1hZ2UsICpkZXN0aW5hdGlvbik7Cit9CisKIGNsYXNzIERyYXdHbHlwaHMgOiBw
dWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RHJhd0dseXBocz4g
Y3JlYXRlKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgY291bnQsIGNvbnN0
IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCkBAIC0yODU2LDYgKzI5MDIsOSBAQCB2
b2lkIEl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsaXBQYXRoPigqdGhp
cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb05hdGl2ZUltYWdl
OgorICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PENsaXBUb05hdGl2ZUltYWdlPigqdGhpcyk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IGVuY29kZXIgPDwgZG93bmNhc3Q8RHJhd0dseXBocz4oKnRoaXMpOwogICAgICAgICBicmVhazsK
QEAgLTMwMzYsNiArMzA4NSwxMCBAQCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFBhdGg6OmRlY29k
ZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRl
bT4oV1RGTW92ZSgqaXRlbSkpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgaWYgKGF1dG8gaXRlbSA9IENsaXBUb05hdGl2ZUlt
YWdlOjpkZWNvZGUoZGVjb2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdHbHlwaHM6
OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwpAQCAtMzIwNSw2ICszMjU4LDcgQEAgU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElT
UExBWUxJU1RfSVRFTShDbGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQ
TEFZTElTVF9JVEVNKENsaXBQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElT
VF9JVEVNKENsaXBUb05hdGl2ZUltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZ
TElTVF9JVEVNKERyYXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oRHJhd0ltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdUaWxlZEltYWdlKQpAQCAtMzI2NSw2ICszMzE5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcFBhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
bGlwVG9OYXRpdmVJbWFnZSwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2Us
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBiMmI2ZjYxNzZlOGU0
NTgxZTA2ODFjMmQwMDlkZmU0ZjVlN2E1NzBmLi4wOGRkODY5NjA3NDk4MzEyY2EyNzY4MjgwYzJi
ODc4M2RlODM2ZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0zNzYsOSArMzc2LDkgQEAgSW50UmVjdCBSZWNvcmRlcjo6Y2xpcEJvdW5kcygpCiAgICAg
cmV0dXJuIEludFJlY3QoLTIwNDgsIC0yMDQ4LCA0MDk2LCA0MDk2KTsKIH0KIAotdm9pZCBSZWNv
cmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKQor
dm9pZCBSZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7Ci0gICAgV1RGTG9nQWx3YXlzKCJHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRGlzcGxh
eUxpc3Q6OlJlY29yZGVyLiIpOworICAgIGFwcGVuZEl0ZW0oQ2xpcFRvTmF0aXZlSW1hZ2U6OmNy
ZWF0ZShpbWFnZSwgZGVzdGluYXRpb24pKTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6YXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGU0ZWI3YTMwOGVjNTNjNDQ2YWMxZDI2ZDk1MmQ5MjM1
ZGNlOTBmYTUuLjZlNjhmZTVlMWNkOGIwMmU3OWMxZTEzM2E4MDdiMWM3ZTk1MjU3MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBj
bGlwQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3Jl
OjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xp
cFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAKaW5kZXggMDBiZThlOTFkMzU1NzdiYjQ2OGI4Mzg4MzI1NmI3ZWQ5OWFmYzY4MC4u
ZGIwOWUzZTNmZDBmMjQ0ZmI4MTMxOTc0OTg0YzExMzk1Yjc5YmJjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTEw
NTIsNyArMTA1Miw3IEBAIEludFJlY3QgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcEJvdW5k
cygpCiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc3RhdGUuY3RtSW52ZXJzZS5tYXBSZWN0
KHN0YXRlLmNsaXBCb3VuZHMpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0KQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZShO
YXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICBz
dHJ1Y3QgQ2xpcFRvSW1hZ2VCdWZmZXIgZmluYWw6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRp
b25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3Q+IHsKICAgICAgICAgdmly
dHVhbCB+Q2xpcFRvSW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CkBAIC0xMDY4LDEyICsxMDY4LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFIKICAgICAgICAgfQogICAgIH07CiAKLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7
Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGF1dG8gc3VyZmFj
ZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4o
c3VyZmFjZS5nZXQoKSksIGRlc3RSZWN0KSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8Q2xp
cFRvSW1hZ2VCdWZmZXI+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVz
dFJlY3QpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBseURldmljZVNj
YWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCmluZGV4IDgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQw
MTAxYzFmNDEuLjEyYzA2NTU1ZDY2MWI4NzVlODFkMWJlNGFiNGEyNjg0NzM2Y2IyNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgK
QEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgV2ViQ29y
ZTo6UGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0
aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6
OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGlwVG9OYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVG
YWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcApp
bmRleCAzNzQwNzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAxMGI3MDgxLi5jNzhhNTRiNDUw
YmMxMWRjNWY2ZmI1ZTY2MzJjZjkyNTBmYTkwMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJl
Y3QyRC5jcHAKQEAgLTQzNiwxNSArNDM2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAg
ICAgICAgRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgV1RGTW92ZSh0
aWxlSW1hZ2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9u
cy5ibGVuZE1vZGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQotewot
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0
U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBidWZmZXIuc2l6ZUZvckRlc3RpbmF0aW9uU2l6
ZShkZXN0UmVjdC5zaXplKCkpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIC8vIERyYXdz
IGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlj
a25lc3MpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGQ2
NDQ1ZDcwY2IzMDM3ZTcyYWUyOTA2ZDY2MzZlZmZiNDQ4MWQ3NTguLmQzY2U0MDliNTliOWY3NjU0
NzQ5ZGEyZDk1OTQ2MTc1NzBkMjA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuY3BwCkBAIC00MTYsMTUgKzQxNiw5IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpnZXRD
bGlwQm91bmRzKG1fcGxhdGZvcm1Db250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6
Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpCiB7Ci0g
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNv
bnRleHQgPSAmZ3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb250ZXh0KSkKLSAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA0NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2
YTU3ZWUzMWUyYjBlLi5lZDJlZDM0NTA2NDhkZGQ2NmE2NWE0NjM2ZGJmZjk3NDE4YWM0NmY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3ND
b250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0xMDIsNyArMTAyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkg
b3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBv
dmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409846</attachid>
            <date>2020-09-27 11:22:10 -0700</date>
            <delta_ts>2020-09-28 21:26:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217026-20200927112210.patch</filename>
            <type>text/plain</type>
            <size>26795</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uNjg0Yjc5N2ViMmJmMzlhYzllNzA4ZDkyOTVhNzMy
ZTkyM2Y0YzIxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDIwLTA5LTI3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyIHdoZW4gdXNpbmcgR1BVIFByb2Nlc3Mg
dG8gcmVuZGVyIGNhbnZhcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiB1c2luZyB0aGUgR1BVIFByb2Nlc3MgZm9yIHJlbmRlcmluZywgY2FsbGlu
ZyBgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcmAgY3VycmVudGx5IHJlc3VsdHMg
aW4gYQorICAgICAgICBjcmFzaCwgZHVlIHRvIHRoZSBwbGF0Zm9ybSBgQ0dDb250ZXh0UmVmYCBi
ZWluZyBudWxsLiBUaGlzIGNhdXNlcyB0aGUgZm9sbG93aW5nIDQgY2FudmFzLXJlbGF0ZWQgdGVz
dHMgdG8gZmFpbDoKKyAgICAgICAgLSBmYXN0L2NhbnZhcy8yZC5maWxsVGV4dC5ncmFkaWVudC5o
dG1sCisgICAgICAgIC0gZmFzdC9jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguZ3Jh
ZGllbnQuaHRtbAorICAgICAgICAtIGZhc3QvY2FudmFzL2NhbnZhcy10ZXh0LWFsaWdubWVudC5o
dG1sCisgICAgICAgIC0gZmFzdC9jYW52YXMvZ3JhZGllbnQtdGV4dC13aXRoLXNoYWRvdy5odG1s
CisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGltcGxlbWVudCBzdXBwb3J0IGZvciBgY2xpcFRv
SW1hZ2VCdWZmZXJgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBgR3JhcGhpY3NDb250ZXh0YCBpcyBi
YWNrZWQgYnkgYQorICAgICAgICBkaXNwbGF5IGxpc3QuIFNlZSBiZWxvdyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgor
CisgICAgICAgIFJlZmFjdG9yIGBjbGlwVG9JbWFnZUJ1ZmZlcmAgc28gdGhhdCBpdCBjYWxscyB0
aGUgbmV3IGBjbGlwVG9OYXRpdmVJbWFnZWAgZnVuY3Rpb24sIHdoaWNoIHRha2VzIGEKKyAgICAg
ICAgYE5hdGl2ZUltYWdlUHRyYCBhbmQgYSBkZXN0aW5hdGlvbiByZWN0LiBUaGUgaW1wbGVtZW50
YXRpb24gb2YgYGNsaXBUb0ltYWdlQnVmZmVyYCBub3cgZ3JhYnMgYSBuYXRpdmUgaW1hZ2UgZnJv
bQorICAgICAgICB0aGUgZ2l2ZW4gaW1hZ2UgYnVmZmVyIHVzaW5nIGBjb3B5TmF0aXZlSW1hZ2Vg
LCBhbmQgdGhlbiBjYWxscyBgY2xpcFRvTmF0aXZlSW1hZ2VgLiBOb3RlIHRoYXQgaW4gQ2Fpcm8s
CisgICAgICAgIGBjbGlwVG9JbWFnZUJ1ZmZlcmAgaW5zdGVhZCBhc2tzIHRoZSBidWZmZXIgZm9y
IGEgYFdlYkNvcmU6OkltYWdlYCwgYW5kIGdyYWJzIGEgYE5hdGl2ZUltYWdlUHRyYCBmcm9tIHRo
aXMKKyAgICAgICAgYEltYWdlYCB1c2luZyBgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWVgLiBU
aGlzIHByZXNlcnZlcyBleGlzdGluZyBiZWhhdmlvciB3aGVuIHVzaW5nCisgICAgICAgIGBOaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcmAgYXMgdGhlIGBHcmFwaGljc0NvbnRleHRJbXBsYCBv
biBDYWlybyBwbGF0Zm9ybXMsIHRob3VnaCBpdCdzIHBvc3NpYmxlIHRoYXQgd2UKKyAgICAgICAg
Y291bGQgdW5pZnkgdGhlc2UgaW1wbGVtZW50YXRpb25zIGJ5IGp1c3QgdXNpbmcgYGNvcHlOYXRp
dmVJbWFnZWAgZXZlcnl3aGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKToKKworICAgICAgICBTZWUgY29tbWVudCBhYm92ZS4KKworICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvTmF0aXZlSW1hZ2Up
OgorCisgICAgICAgIEFkZCBhIENhaXJvIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
IG9mIGBjbGlwVG9OYXRpdmVJbWFnZWAuCisKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorCisgICAgICAg
IFRlYWNoIGBjbGlwVG9OYXRpdmVJbWFnZWAgdG8gY2FsbCBpbnRvIHRoZSBgR3JhcGhpY3NDb250
ZXh0SW1wbGAgaWYgaXQgaXMgcHJlc2VudDsgb3RoZXJ3aXNlLCBwcm9jZWVkIHdpdGgKKyAgICAg
ICAgQ29yZUdyYXBoaWNzIGNvZGUgdG8gY2xpcCB0byBhIGBDR0ltYWdlUmVmYC4KKworICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwOgorCisgICAgICAgIEFkZCBhIG5ldyBgQ2xpcFRvTmF0aXZlSW1hZ2VgIGRpc3BsYXkg
bGlzdCBpdGVtLCB3aGljaCBob2xkcyBhIGBOYXRpdmVJbWFnZVB0cmAgYW5kIGEgZGVzdGluYXRp
b24gYEZsb2F0UmVjdGAuCisKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpz
aXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvTmF0aXZl
SW1hZ2U6OkNsaXBUb05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpDbGlwVG9OYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6Q2xpcFRvTmF0aXZlSW1hZ2U6OmRlc3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlwVG9OYXRpdmVJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVm
ZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmlj
b3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UpOgorICAgICAg
ICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIpOiBE
ZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIGZyb20gYGNsaXBUb0ltYWdlQnVmZmVyYCB0
byBgY2xpcFRvTmF0aXZlSW1hZ2VgLCBhbmQgbWFrZSBpdCB0YWtlIGEgYE5hdGl2ZUltYWdlUHRy
YCBpbnN0ZWFkIG9mIGFuCisgICAgICAgIGBJbWFnZUJ1ZmZlcmAuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VC
dWZmZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJEOjpjbGlwVG9OYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmg6CisKIDIwMjAtMDktMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIHNldHRpbmcgQ01ZS0EgZmlsbCBhbmQg
c3Ryb2tlIGNvbG9ycyBpbiAyRCBjYW52YXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDUzYzE5ODM5YmIxMjI2MjMw
YzIxODRjNTA3YzI3NTk0ZWI3MDIwN2QuLmU0NjJjNjY5NDI4N2M4Yzg5YjAyNDI5YjVlNTYwYzYz
M2IzYzU4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcApAQCAtODUxLDYgKzg1MSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiAg
ICAgY2xpcE91dChwYXRoKTsKIH0KIAorI2lmICFVU0UoQ0FJUk8pCisKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBpbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgICAgICBjbGlwVG9OYXRpdmVJbWFnZShp
bWFnZSwgZGVzdGluYXRpb25SZWN0KTsKK30KKworI2VuZGlmCisKICNpZiAhVVNFKENHKSAmJiAh
VVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThjY2RjMjZiNzliMGYwYTFhNDMxNzc2
MmUxMTUwMDNlODdhLi5jZmUyODZlMWE4Mjg4NDI5MjVlMjM3ZjVhYWVkYzg1ODQ3ZGJmYWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtNDA4LDYgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVk
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQ
YXRoJiwgV2luZFJ1bGUgPSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgY2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIAogICAg
IEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZj
ZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YS4uNTEwMDFiMmViODE5YWZkZGM1YzRhZDYz
NDdlZWNiMTgyYzE5YzljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSA9
IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQp
ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGExMDQ2NTZjYjVkNWRk
ZWEwMzIxZGFhNDRhMDQ0NjUxNzUwODhlNGYuLjY2M2NhZTQxN2RmM2QyY2JkODE0NWMyYzFiYzFl
MzUwYmMyMzFkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTI2MCwxOSAr
MjYwLDMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRo
LCBXaW5kUnVsZSBjbGlwUnVsZSkKICAgICBDYWlybzo6Y2xpcFBhdGgoKnBsYXRmb3JtQ29udGV4
dCgpLCBwYXRoLCBjbGlwUnVsZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQoreworICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaW1hZ2UgPSBidWZm
ZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICBpZiAoIWltYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKHRoaXMpKQorICAgICAgICBjbGlwVG9OYXRpdmVJbWFnZShzdXJmYWNl
LCBkZXN0aW5hdGlvblJlY3QpOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvTmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5jbGlwVG9JbWFnZUJ1ZmZlcihi
dWZmZXIsIGRlc3RSZWN0KTsKKyAgICAgICAgbV9pbXBsLT5jbGlwVG9OYXRpdmVJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGJ1ZmZlci5j
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBkZXN0UmVj
dCk7CisgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1h
Z2UuZ2V0KCksIGRlc3RpbmF0aW9uUmVjdCk7CiB9CiAKIEludFJlY3QgR3JhcGhpY3NDb250ZXh0
OjpjbGlwQm91bmRzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3Bw
CmluZGV4IDg5MTM4NDMxMGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYxMjliNjkuLmEwZTMzMDA5
ZDhkNjU3NWE1ZDU5NjAyZmJiNTcwZTI3OTUwNWY0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcApAQCAtNDEyLDEwICs0MTIsOSBAQCBJbnRSZWN0IEdyYXBoaWNzQ29u
dGV4dEltcGxDYWlybzo6Y2xpcEJvdW5kcygpCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6Z2V0
Q2xpcEJvdW5kcyhtX3BsYXRmb3JtQ29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBU
b05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uUmVjdCkKIHsKLSAgICBpZiAoYXV0byBzdXJmYWNlID0gYnVmZmVyLmNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1
ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QpOworICAgIENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcihtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRl
c3RpbmF0aW9uUmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjphcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aAppbmRleCAyZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2MmM5ODM1MzdjZDllLi5mODNiMjAw
ZWU2MDA1NDA5OWY0OTM5YmU2OWZhMzRjNjIwNDA2NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm8uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBP
dXQoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYs
IFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9OYXRpdmVJbWFnZShOYXRpdmVJbWFnZVB0ciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpIG92ZXJyaWRlOwogICAgIAogICAgIHZv
aWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAppbmRleCBiMjBmMDYyNzQ3NjBjY2Q0YmY2NzQwYWFjYjg0NDc1M2MxN2E0ZDRkLi5kZDNk
NTk3MjAzZjc5ZmJmOTA1ZDAzMWFmMDIyNjI5NDEwMjJlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
CkBAIC01MTAsMjIgKzUxMCwyNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0UmVj
dC5zaXplKCk7Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVmZmVyLmNvcHlO
YXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPmNsaXBUb05hdGl2ZUltYWdlKGltYWdlLCBkZXN0aW5hdGlvblJlY3QpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9u
U2l6ZSA9IGRlc3RpbmF0aW9uUmVjdC5zaXplKCk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpbWFnZSBuZWVkcyB0byBi
ZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUuCi0gICAgQ0dDb250
ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsgYnVm
ZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0o
Y29udGV4dCwgZGVzdGluYXRpb25SZWN0LngoKSwgZGVzdGluYXRpb25SZWN0LnkoKSArIGJ1ZmZl
ckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4
dCwgMSwgLTEpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoMCwgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpIC0gZGVzdFJlY3QuaGVp
Z2h0KCkpLCBkZXN0UmVjdC5zaXplKCkpKTsKKyAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRl
eHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KDAsIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQo
KSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSksIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpKTsK
ICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSksIGltYWdlLmdldCgpKTsKICAgICBDR0NvbnRleHRTY2Fs
ZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQs
IC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC55KCkgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CisgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC1kZXN0aW5hdGlvblJlY3QueCgpLCAtZGVz
dGluYXRpb25SZWN0LnkoKSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSk7CiB9CiAKIC8vIERy
YXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCmluZGV4IDM1YzM5YTA1YWQzNzM2OWY2MzE4NjMxNzQ5MjBmMGU1NGRiNWJmOWYu
LmM1NWQyYzJhNjU5YzljOGE2N2UwNzNkY2NkMzAzMTE3ZGQwZDU5MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90
IHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xpcFBhdGgsCisgICAg
Q2xpcFRvTmF0aXZlSW1hZ2UsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3SW1hZ2UsCiAgICAg
RHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXgg
NWFjZDMzN2QwMzY4NWNmYTkwNzA3MDBlZGU4MDUwMWMyNGI1ODQ0NC4uYTI2MTdlN2UzZDMyZDhk
YjZiMzNjMDViNTdhNjY4NWE0MDI4YzhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcApAQCAtOTQsNiArOTQsOCBAQCBzaXplX3QgSXRlbTo6c2l6ZUluQnl0ZXMoY29uc3Qg
SXRlbSYgaXRlbSkKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwT3V0VG9QYXRo
PihpdGVtKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJldHVybiBz
aXplb2YoZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
VG9OYXRpdmVJbWFnZToKKyAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwVG9OYXRp
dmVJbWFnZT4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZToKQEAgLTUxMCw2ICs1MTIsMjYgQEAgc3RhdGljIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQogICAgIHJl
dHVybiB0czsKIH0KIAorQ2xpcFRvTmF0aXZlSW1hZ2U6OkNsaXBUb05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQorICAgIDogSXRl
bShJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2UpCisgICAgLCBtX2ltYWdlKGltYWdlKQorICAg
ICwgbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKK3sKK30KKworQ2xpcFRvTmF0aXZlSW1hZ2U6
On5DbGlwVG9OYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKKwordm9pZCBDbGlwVG9OYXRpdmVJbWFn
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGNvbnRleHQu
Y2xpcFRvTmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9kZXN0aW5hdGlvbik7Cit9CisKK3N0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwVG9OYXRpdmVJ
bWFnZSYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5k
ZXN0aW5hdGlvbigpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdHbHlwaHM6OkRyYXdHbHlw
aHMoY29uc3QgRm9udCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlw
aHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxv
YXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBl
OjpEcmF3R2x5cGhzKQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKQpAQCAt
MTM5Myw2ICsxNDE1LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6
IHRzIDw8ICJjbGlwLW91dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1Bh
dGg6IHRzIDw8ICJjbGlwLW91dC10by1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwVG9OYXRpdmVJbWFnZTogdHMgPDwgImNsaXAtdG8tbmF0aXZlLWltYWdlIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMgPDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlOiB0cyA8PCAiZHJhdy1pbWFnZSI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlOiB0cyA8PCAiZHJhdy10aWxlZC1p
bWFnZSI7IGJyZWFrOwpAQCAtMTQ4Myw2ICsxNTA2LDkgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgSXRlbSYgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwUGF0aDoKICAgICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFBhdGg+KGl0ZW0pOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAg
dHMgPDwgZG93bmNhc3Q8Q2xpcFRvTmF0aXZlSW1hZ2U+KGl0ZW0pOworICAgICAgICBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxE
cmF3R2x5cGhzPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAppbmRleCBiNDVlNzk3NzI1OGNlNGNhYzE1YWE3NjdiOTNiNmVmZGIyNDhlNmVkLi44
NDcwYTljYzUxMDY3M2YyZmQwYmUyMzRmYTUyMzM3YWFlZmViZWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEwNDMsNiArMTA0Myw1MiBAQCBPcHRpb25hbDxSZWY8Q2xp
cFBhdGg+PiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJuIENs
aXBQYXRoOjpjcmVhdGUoKnBhdGgsICp3aW5kUnVsZSk7CiB9CiAKK2NsYXNzIENsaXBUb05hdGl2
ZUltYWdlIDogcHVibGljIEl0ZW0geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q2xpcFRvTmF0
aXZlSW1hZ2U+IGNyZWF0ZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsaXBUb05h
dGl2ZUltYWdlKGltYWdlLCBkZXN0aW5hdGlvbikpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQ
T1JUIH5DbGlwVG9OYXRpdmVJbWFnZSgpOworCisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UmVmPENsaXBUb05hdGl2ZUltYWdlPj4gZGVj
b2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDbGlwVG9OYXRp
dmVJbWFnZShOYXRpdmVJbWFnZVB0ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbik7CisK
KyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAg
TmF0aXZlSW1hZ2VQdHIgbV9pbWFnZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKK307
CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIENsaXBUb05hdGl2ZUltYWdlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IE5hdGl2ZUltYWdl
SGFuZGxlIHsgbV9pbWFnZSB9OworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPFJlZjxDbGlwVG9OYXRpdmVJbWFnZT4+
IENsaXBUb05hdGl2ZUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRp
b25hbDxOYXRpdmVJbWFnZUhhbmRsZT4gaGFuZGxlOworICAgIGRlY29kZXIgPj4gaGFuZGxlOwor
ICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9u
OworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4gQ2xpcFRvTmF0aXZlSW1hZ2U6OmNyZWF0ZShoYW5kbGUtPmltYWdlLCAqZGVz
dGluYXRpb24pOworfQorCiBjbGFzcyBEcmF3R2x5cGhzIDogcHVibGljIERyYXdpbmdJdGVtIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERyYXdHbHlwaHM+IGNyZWF0ZShjb25zdCBGb250JiBm
b250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2
YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBibG9ja0xv
Y2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBz
bW9vdGhpbmdNb2RlKQpAQCAtMjg1Niw2ICsyOTAyLDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAg
ICAgZW5jb2RlciA8PCBkb3duY2FzdDxDbGlwUGF0aD4oKnRoaXMpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9OYXRpdmVJbWFnZToKKyAgICAgICAgZW5jb2RlciA8
PCBkb3duY2FzdDxDbGlwVG9OYXRpdmVJbWFnZT4oKnRoaXMpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0
PERyYXdHbHlwaHM+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2LDYgKzMwODUsMTAg
QEAgT3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAg
ICAgICAgaWYgKGF1dG8gaXRlbSA9IENsaXBQYXRoOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2U6Cisg
ICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGlwVG9OYXRpdmVJbWFnZTo6ZGVjb2RlKGRlY29kZXIp
KQorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZNb3Zl
KCppdGVtKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6
CiAgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBEcmF3R2x5cGhzOjpkZWNvZGUoZGVjb2RlcikpCiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0
ZW0pKTsKQEAgLTMyMDUsNiArMzI1OCw3IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExB
WUxJU1RfSVRFTShDbGlwKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KENsaXBPdXQpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcE91
dFRvUGF0aCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwUGF0
aCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShDbGlwVG9OYXRpdmVJ
bWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3R2x5cGhz
KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJbWFnZSkKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJbWFnZSkKQEAg
LTMyNjUsNiArMzMxOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwT3V0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91
dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoLAor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvTmF0aXZlSW1hZ2UsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5cGhzLAogICAgIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYjJiNmY2MTc2ZThlNDU4MWUwNjgxYzJkMDA5ZGZlNGY1
ZTdhNTcwZi4uMDhkZDg2OTYwNzQ5ODMxMmNhMjc2ODI4MGMyYjg3ODNkZTgzNmUyMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzc2LDkgKzM3Niw5IEBA
IEludFJlY3QgUmVjb3JkZXI6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBJbnRSZWN0KC0yMDQ4
LCAtMjA0OCwgNDA5NiwgNDA5Nik7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBU
b05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKQogewotICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERpc3BsYXlMaXN0OjpSZWNvcmRlci4iKTsK
KyAgICBhcHBlbmRJdGVtKENsaXBUb05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGRlc3RpbmF0
aW9uKSk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCBlNGViN2EzMDhlYzUzYzQ0NmFjMWQyNmQ5NTJkOTIzNWRjZTkwZmE1Li42ZTY4ZmU1ZTFj
ZDhiMDJlNzljMWUxMzNhODA3YjFjN2U5NTI1NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xp
cE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDAwYmU4
ZTkxZDM1NTc3YmI0NjhiODM4ODMyNTZiN2VkOTlhZmM2ODAuLjM3OTgzZTZjODc0MDQyMzI5MWMx
NzE5NjYxZDc1MGE1YTMyMzg0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBJbnRS
ZWN0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBCb3VuZHMoKQogICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KHN0YXRlLmN0bUludmVyc2UubWFwUmVjdChzdGF0ZS5jbGlwQm91bmRzKSk7
CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQogewogICAgIHN0cnVjdCBDbGlwVG9J
bWFnZUJ1ZmZlciBmaW5hbDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRy
PGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdD4gewogICAgICAgICB2aXJ0dWFsIH5DbGlwVG9J
bWFnZUJ1ZmZlcigpID0gZGVmYXVsdDsKQEAgLTEwNjgsMTIgKzEwNjgsNyBAQCB2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIs
IGNvbnN0IEZsb2F0UgogICAgICAgICB9CiAgICAgfTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBidWZmZXIuY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBpZiAoIWlt
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PENsaXBUb0ltYWdlQnVmZmVyPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihzdXJmYWNlLmdldCgp
KSwgZGVzdFJlY3QpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxDbGlwVG9JbWFnZUJ1ZmZl
cj4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0aW5hdGlvblJlY3Qp
KTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFj
dG9yKGZsb2F0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5oCmluZGV4IDgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFm
NDEuLjEyYzA2NTU1ZDY2MWI4NzVlODFkMWJlNGFiNGEyNjg0NzM2Y2IyNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTk4
LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBPdXQoY29uc3QgV2ViQ29yZTo6UGF0
aCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdl
YkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3Vu
ZHMoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBj
bGlwVG9OYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3Io
ZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAppbmRleCAz
NzQwNzE3MTViY2I3OTFkNTg5ZDUwZDk5YjI5YzY2YjAxMGI3MDgxLi5jNzhhNTRiNDUwYmMxMWRj
NWY2ZmI1ZTY2MzJjZjkyNTBmYTkwMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5j
cHAKQEAgLTQzNiwxNSArNDM2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICAgICAg
RGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgV1RGTW92ZSh0aWxlSW1h
Z2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVu
ZE1vZGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQotewotICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBi
dWZmZXJEZXN0aW5hdGlvblNpemUgPSBidWZmZXIuc2l6ZUZvckRlc3RpbmF0aW9uU2l6ZShkZXN0
UmVjdC5zaXplKCkpOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIC8vIERyYXdzIGEgZmls
bGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIuCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3Mp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3Jh
cGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IGQ2NDQ1ZDcw
Y2IzMDM3ZTcyYWUyOTA2ZDY2MzZlZmZiNDQ4MWQ3NTguLmQzY2U0MDliNTliOWY3NjU0NzQ5ZGEy
ZDk1OTQ2MTc1NzBkMjA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCkBAIC00MTYsMTUgKzQxNiw5IEBAIEludFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJEOjpjbGlwQm91bmRzKCkKICAgICByZXR1cm4gRGlyZWN0MkQ6OlN0YXRlOjpnZXRDbGlwQm91
bmRzKG1fcGxhdGZvcm1Db250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRv
TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEZsb2F0UmVjdCYpCiB7Ci0gICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OwotICAgIGlmICghaW1hZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNvbnRleHQg
PSAmZ3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb250ZXh0KSkKLSAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQuaAppbmRleCA0NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3ZWUz
MWUyYjBlLi5lZDJlZDM0NTA2NDhkZGQ2NmE2NWE0NjM2ZGJmZjk3NDE4YWM0NmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlw
UGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJv
dW5kcygpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIm
LCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlUHRyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlk
ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409961</attachid>
            <date>2020-09-28 21:37:56 -0700</date>
            <delta_ts>2020-09-28 21:46:15 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200928213756.patch</filename>
            <type>text/plain</type>
            <size>27649</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uYzE5MGViZWI3Yjk3NzdmMjBiNjAyZTZlMTU1N2I2
NDQyYmY0MDc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA5LTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU2V2ZXJhbCBsYXlvdXQgdGVzdHMgaW4gZmFzdC9jYW52YXMgY3Jhc2ggdW5kZXIgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTY2
MzgzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
SVAgcGF0Y2guCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
VGV4dEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZW5kZXJpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0Ojp0YWtlRGlzcGxheUxpc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNs
aXBUb0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpk
cmF3aW5nQ29tbWFuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNs
aXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0Ry
YXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oOgorCiAyMDIwLTA5LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBzZXR0aW5n
IENNWUtBIGZpbGwgYW5kIHN0cm9rZSBjb2xvcnMgaW4gMkQgY2FudmFzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApp
bmRleCA4OTE4MDI3OWFmMmI3Zjc2NTZiY2RkZjhlZWMwODMzM2I2NWM2MTQ4Li4yODM2NGFmYTFh
NzZhNWRlOGFlNjRlZjM4NmIyNTJjNmFjNmU2MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTU0Niwz
MyArNTQ2LDMyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVy
bmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgICAgICBmb250UHJv
eHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiArIG9mZnNldCwgRm9udENhc2Nh
ZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVj
dC5zaXplKCksIENvbG9yU3BhY2U6OlNSR0IsICpjKTsKLSAgICAgICAgaWYgKCFtYXNrSW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byYgbWFza0ltYWdlQ29udGV4dCA9
IG1hc2tJbWFnZS0+Y29udGV4dCgpOwotCi0gICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAg
bWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpi
bGFjayk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4
dERyYXdpbmdNb2RlOjpTdHJva2UpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmMpOwogCi0gICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlv
bigpKTsKLSAgICAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21w
b3NpdGluZyBvcGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxsIHdvcmsuCi0gICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3
aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgZm9udFByb3h5LmRyYXdC
aWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250
Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24o
KSk7Ci0gICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQs
IHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFk
eSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBwYWludE1hc2tJbWFnZSA9IFsmXSAoR3JhcGhp
Y3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoZmlsbCkKKyAg
ICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2sp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5z
ZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOworICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUo
ZmlsbCA/IFRleHREcmF3aW5nTW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsK
KworICAgICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7CisgICAgICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRp
bmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgorICAgICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdp
ZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAgICAgICAgZm9udFByb3h5LmRy
YXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBG
b250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVj
dC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1h
c2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwg
V1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
Yyk7Ci0gICAgICAgIGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsK
ICAgICAgICAgZHJhd1N0eWxlLmFwcGx5RmlsbENvbG9yKCpjKTsKICAgICAgICAgYy0+ZmlsbFJl
Y3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA1M2MxOTgzOWJiMTIy
NjIzMGMyMTg0YzUwN2MyNzU5NGViNzAyMDdkLi4yNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4
NjNhYTQ0NDM5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTg1MSw2ICs4NTEsMjUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKK0dyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit7CisgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5k
c1Jlc3VsdDo6U3VjY2VzczsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5j
bGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UsIFdURk1vdmUoZHJh
d2luZ0Z1bmN0aW9uKSk7CisgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQ6OlN1Y2Nlc3M7CisgICAgfQorCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwg
KnRoaXMpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQ6OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7CisKKyAgICBkcmF3
aW5nRnVuY3Rpb24oaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgY2xpcFRvSW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKK30KKwogI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNU
MkQpICYmICFVU0UoQ0FJUk8pCiBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDIyMDVhOGNjZGMyNmI3OWIwZjBhMWE0MzE3NzYyZTExNTAwM2U4
N2EuLjdlODFhMWY1ODEzNTlkMjg5MzE0MzY4MzQxYzNlMWNmZjlkNmEzMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCkBAIC0zNDcsNyArMzQ4LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpOwogI2VuZGlmCiAgICAg
Ym9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0OwotICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0K
KyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGhhc1BsYXRmb3JtQ29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIGlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7CisgICAgICAgIHJldHVybiBpc0FjY2VsZXJhdGVkQ29udGV4dCgpID8g
UmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3RBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OkRp
c3BsYXlMaXN0VW5hY2NlbGVyYXRlZDsKKyAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNhdmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKTsKQEAgLTQwOCw2ICs0
MTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYpOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0g
V2luZFJ1bGU6OkV2ZW5PZGQpOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIg
fTsKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmEx
YzljODg3YS4uOGJjOWMxYzJlY2MwY2JmYzM4MjZhYTFlMDE5MTMxYzg5MzcyZDNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaApAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNs
aXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4OTEzODQzMTBl
YmU4MTgyNDM0ODQ2NjE3OTQ4MWVkMTc2MTI5YjY5Li4zZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIw
YjRkOTcxZjAyYTU0M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
QEAgLTQyNyw2ICs0MjcsMTEgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEcKICAgICByZXR1cm4g
Q2Fpcm86OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxhdGZvcm1Db250ZXh0LCByZWN0
KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMmY1MTlkNDU0NzdkNDM3OThiNzU5YTgxNTM0NjJj
OTgzNTM3Y2Q5ZS4uMzFiYTcxNjE3ZWZhNDU2YzExZjA0M2ExOWE0NDkzZmQ1ODViMjNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwog
ICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggYjIwZjA2Mjc0NzYwY2NkNGJmNjc0MGFhY2I4NDQ3NTNjMTdh
NGQ0ZC4uNjNmYjVkZDYxYmFiY2NjZjcwOTA0ZTU2ZDJmOWQ0ZTVhZDU4Y2FjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtNTEwLDIyICs1MTAsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUg
PSBkZXN0UmVjdC5zaXplKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNs
aXBUb0ltYWdlQnVmZmVyKGJ1ZmZlciwgZGVzdGluYXRpb25SZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0aW5h
dGlvblJlY3Quc2l6ZSgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZl
ci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpbWFn
ZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUu
Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJl
Y3QueSgpICsgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdGluYXRpb25SZWN0LngoKSwgZGVzdGluYXRpb25SZWN0
LnkoKSArIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oY29udGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpIC0g
ZGVzdFJlY3QuaGVpZ2h0KCkpLCBkZXN0UmVjdC5zaXplKCkpKTsKKyAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KDAsIGJ1ZmZlckRlc3RpbmF0aW9u
U2l6ZS5oZWlnaHQoKSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSksIGRlc3RpbmF0aW9uUmVj
dC5zaXplKCkpKTsKICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSksIGltYWdlLmdldCgpKTsKICAgICBD
R0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC55KCkgLSBkZXN0UmVjdC5oZWln
aHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC1kZXN0aW5hdGlvblJl
Y3QueCgpLCAtZGVzdGluYXRpb25SZWN0LnkoKSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSk7
CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDM1YzM5YTA1YWQzNzM2OWY2MzE4NjMxNzQ5MjBm
MGU1NGRiNWJmOWYuLjYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdjMjI0YjY0MjNhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xp
cFBhdGgsCisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAogICAgIERyYXdHbHlwaHMsCiAgICAg
RHJhd0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggZTg2NzgzNzI0YmVlOGIwNWI3ZTJiYWM5OWZh
ZjJmZDQ4YTgxZTc3Mi4uN2I2NzNmMzJhZDgxNWE1MDA4MWI3ZTdhYjEwODEzMTcxN2ZkZTU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0z
OSw2ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXImIHJlY29yZGVyKCk7CisgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gV1RGTW92ZShtX2Rpc3BsYXlMaXN0KTsg
fQogICAgIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7
IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QqIHJlcGxheWVkRGlzcGxheUxp
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGxheWVkRGlzcGxheUxpc3QuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA1YWNkMzM3ZDAzNjg1Y2ZhOTA3MDcw
MGVkZTgwNTAxYzI0YjU4NDQ0Li5lYThjZTY4ODI4YWU0ZWI1NGQzNjE2Y2E4NTgwMThmMDE3ZmY5
YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC05NCw2ICs5NCw4
IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBPdXRUb1BhdGg+KGl0ZW0pKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwUGF0
aD4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0p
KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2U6CkBAIC01MTAsNiArNTEyLDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAK
K0NsaXBUb0RyYXdpbmdDb21tYW5kczo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlzcGxheUxpc3QmJiBk
cmF3aW5nQ29tbWFuZHMpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCisgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhXVEZNb3ZlKGRyYXdpbmdDb21t
YW5kcykpCit7Cit9CisKK0NsaXBUb0RyYXdpbmdDb21tYW5kczo6fkNsaXBUb0RyYXdpbmdDb21t
YW5kcygpID0gZGVmYXVsdDsKKwordm9pZCBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhtX2Rlc3RpbmF0aW9uLCBtX2NvbG9yU3BhY2UsIFsmXSAoR3JhcGhpY3NDb250
ZXh0JiBjbGlwcGluZ0NvbnRleHQpIHsKKyAgICAgICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjbGlw
cGluZ0NvbnRleHQsIG1fZHJhd2luZ0NvbW1hbmRzIH07CisgICAgICAgIHJlcGxheWVyLnJlcGxh
eSgpOworICAgIH0pOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQoreworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY29sb3Itc3BhY2UiLCBpdGVtLmNvbG9yU3BhY2UoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJkcmF3aW5nLWNvbW1hbmRzLWNvdW50IiwgaXRlbS5kcmF3aW5nQ29tbWFuZHMo
KS5pdGVtQ291bnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBEcmF3R2x5cGhzOjpEcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYgZ2x5
cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5jZXMsIGNvbnN0IEZs
b2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6RHJhd0dseXBocykKICAgICAsIG1fZm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSkKQEAg
LTEzOTMsNiArMTQyMSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OiB0cyA8PCAiY2xpcC1vdXQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9Q
YXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3LWltYWdlIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRp
bGVkLWltYWdlIjsgYnJlYWs7CkBAIC0xNDgzLDYgKzE1MTIsOSBAQCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwUGF0aD4oaXRlbSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
KyAgICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgdHMg
PDwgZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYjQ1ZTc5NzcyNThjZTRjYWMxNWFhNzY3YjkzYjZl
ZmRiMjQ4ZTZlZC4uMGEyYWRhYzIzMGE2YWJiYjFjODIxNzhjODVhYTE1YmYzMjMxMTRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMDQzLDYgKzEwNDMsNjEgQEAgT3B0
aW9uYWw8UmVmPENsaXBQYXRoPj4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHJldHVybiBDbGlwUGF0aDo6Y3JlYXRlKCpwYXRoLCAqd2luZFJ1bGUpOwogfQogCitjbGFz
cyBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgOiBwdWJsaWMgSXRlbSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIERpc3BsYXlMaXN0JiYgZHJhd2luZ0Nv
bW1hbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdpbmdDb21tYW5k
cykpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
KCk7CisKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbjsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFu
ZHMoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdDb21tYW5kczsgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
Pj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFj
ZSwgRGlzcGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpOworCisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0
aW9uOworICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlOworICAgIERpc3BsYXlMaXN0IG1fZHJh
d2luZ0NvbW1hbmRzOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1fZGVzdGluYXRpb247CisgICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7Cisg
ICAgZW5jb2RlciA8PCBtX2RyYXdpbmdDb21tYW5kczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPFJlZjxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+PiBDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Cisg
ICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8RGlzcGxheUxpc3Q+IGRyYXdpbmdDb21tYW5kczsKKyAgICBkZWNvZGVyID4+IGRy
YXdpbmdDb21tYW5kczsKKyAgICBpZiAoIWRyYXdpbmdDb21tYW5kcykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNyZWF0
ZSgqZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBXVEZNb3ZlKCpkcmF3aW5nQ29tbWFuZHMpKTsK
K30KKwogY2xhc3MgRHJhd0dseXBocyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxEcmF3R2x5cGhzPiBjcmVhdGUoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29u
c3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKQEAgLTI4NTYsNiArMjkxMSw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8Q2xpcFBhdGg+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25j
YXN0PENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERy
YXdHbHlwaHM+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2LDYgKzMwOTQsMTAgQEAg
T3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgaWYgKGF1dG8gaXRlbSA9IENsaXBQYXRoOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoZGVj
b2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdU
Rk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ds
eXBoczoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdHbHlwaHM6OmRlY29kZShkZWNvZGVy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92
ZSgqaXRlbSkpOwpAQCAtMzIwNSw2ICszMjY3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShD
bGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENs
aXBQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXBUb0Ry
YXdpbmdDb21tYW5kcykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJ
bWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJ
bWFnZSkKQEAgLTMyNjUsNiArMzMyOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwT3V0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBo
cywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGIyYjZmNjE3NmU4ZTQ1ODFlMDY4
MWMyZDAwOWRmZTRmNWU3YTU3MGYuLjE3ZGYxNTFkZTM0ZWJkODY3YjZhNjE2MzI5MWZmMDc1ZjBm
ZGY4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM4
MSw2ICszODEsMTMgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKQogICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERpc3BsYXlMaXN0OjpS
ZWNvcmRlci4iKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit7CisgICAgYXV0
byByZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcmF3aW5nQ29udGV4dD4oZGVzdGluYXRp
b24uc2l6ZSgpKTsKKyAgICBkcmF3aW5nRnVuY3Rpb24ocmVjb3JkaW5nQ29udGV4dC0+Y29udGV4
dCgpKTsKKyAgICBhcHBlbmRJdGVtKENsaXBUb0RyYXdpbmdDb21tYW5kczo6Y3JlYXRlKGRlc3Rp
bmF0aW9uLCBjb2xvclNwYWNlLCByZWNvcmRpbmdDb250ZXh0LT50YWtlRGlzcGxheUxpc3QoKSkp
OworfQorCiB2b2lkIFJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1FOiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0s
IHdoaWNoIHdpbGwgaW52YWxpZGF0ZSBhbGwgb2Ygb3VyIGNhY2hlZCBleHRlbnRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTRlYjdhMzA4ZWM1M2M0NDZhYzFk
MjZkOTUyZDkyMzVkY2U5MGZhNS4uZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2JiYTkxYjJlNzYxYWVk
YzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMzYsNiAr
MTM2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMDBiZThlOTFkMzU1NzdiYjQ2OGI4Mzg4
MzI1NmI3ZWQ5OWFmYzY4MC4uY2VhMmE2ZWEwNDQ1MzRmZjQ1NDRlYTIxMDljMjYxN2Q3OTdjYTJm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTEwOTAsNCArMTA5MCw5IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4mJiBjb21tYW5k
CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RGTW92ZShjb21tYW5kKSk7CiB9CiAKK3ZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit7
CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgTmlj
b3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oCmluZGV4IDgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFmNDEuLjYy
NzE2NWIyMmVkYmQyYTE2NmE1ZThkMTQwNmI5ZWJiOGYwNDM3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBX
ZWJDb3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91
bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9y
U3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCBkNjQ0NWQ3MGNiMzAzN2U3MmFl
MjkwNmQ2NjM2ZWZmYjQ0ODFkNzU4Li41ODk0MGEzYjgxMzRkYjE5NTA1ZTY5MjFkNWE1NjMwOTU5
MWU4MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDM2
LDYgKzQzNiwxMSBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpyb3Vu
ZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdAogICAgIHJldHVybiBEaXJlY3Qy
RDo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDQ0MjVmZDI2YWJlODU0NTFkMmMwMzJmMzZh
MjZhNTdlZTMxZTJiMGUuLjhmMTExNzc2OTNhOGJiMTBiY2I0ODQ3OWYxOWE4ODkxMTI4M2NhZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTEwMyw2ICsxMDMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJy
aWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlk
ZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRl
OwogCg==
</data>
<flag name="commit-queue"
          id="425790"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409962</attachid>
            <date>2020-09-28 21:45:43 -0700</date>
            <delta_ts>2020-09-28 22:37:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-217026-20200928214542.patch</filename>
            <type>text/plain</type>
            <size>27676</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uYzE5MGViZWI3Yjk3NzdmMjBiNjAyZTZlMTU1N2I2
NDQyYmY0MDc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTA5LTI4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gU2V2ZXJhbCBsYXlvdXQgdGVzdHMgaW4gZmFzdC9jYW52YXMgY3Jhc2ggdW5kZXIgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTY2
MzgzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
SVAgcGF0Y2guCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
VGV4dEludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpyZW5kZXJpbmdNb2RlIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0Ojp0YWtlRGlzcGxheUxpc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNs
aXBUb0RyYXdpbmdDb21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpk
cmF3aW5nQ29tbWFuZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNs
aXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0Ry
YXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oOgorCiAyMDIwLTA5LTI2ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzdXBwb3J0IGZvciBzZXR0aW5n
IENNWUtBIGZpbGwgYW5kIHN0cm9rZSBjb2xvcnMgaW4gMkQgY2FudmFzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApp
bmRleCA4OTE4MDI3OWFmMmI3Zjc2NTZiY2RkZjhlZWMwODMzM2I2NWM2MTQ4Li4yODM2NGFmYTFh
NzZhNWRlOGFlNjRlZjM4NmIyNTJjNmFjNmU2MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTU0Niwz
MyArNTQ2LDMyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVy
bmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAgICAgICAgICAgICBmb250UHJv
eHkuZHJhd0JpZGlUZXh0KCpjLCB0ZXh0UnVuLCBsb2NhdGlvbiArIG9mZnNldCwgRm9udENhc2Nh
ZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVj
dC5zaXplKCksIENvbG9yU3BhY2U6OlNSR0IsICpjKTsKLSAgICAgICAgaWYgKCFtYXNrSW1hZ2Up
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgYXV0byYgbWFza0ltYWdlQ29udGV4dCA9
IG1hc2tJbWFnZS0+Y29udGV4dCgpOwotCi0gICAgICAgIGlmIChmaWxsKQotICAgICAgICAgICAg
bWFza0ltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpi
bGFjayk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LnNldFRleHREcmF3aW5nTW9kZShmaWxsID8gVGV4dERyYXdpbmdNb2RlOjpGaWxsIDogVGV4
dERyYXdpbmdNb2RlOjpTdHJva2UpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmMpOwogCi0gICAgICAgIGlmICh1c2VNYXhXaWR0aCkgewotICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlv
bigpKTsKLSAgICAgICAgICAgIC8vIFdlIGRyYXcgd2hlbiBmb250V2lkdGggaXMgMCBzbyBjb21w
b3NpdGluZyBvcGVyYXRpb25zIChlZywgYSAiY29weSIgb3ApIHN0aWxsIHdvcmsuCi0gICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3
aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkpOwotICAgICAgICAgICAgZm9udFByb3h5LmRyYXdC
aWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBGb250
Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24o
KSk7Ci0gICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1hc2tJbWFnZUNvbnRleHQs
IHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFk
eSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBwYWludE1hc2tJbWFnZSA9IFsmXSAoR3JhcGhp
Y3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoZmlsbCkKKyAg
ICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2sp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5z
ZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOworICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGMtPnN0cm9rZVRoaWNrbmVzcygpKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUo
ZmlsbCA/IFRleHREcmF3aW5nTW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsK
KworICAgICAgICAgICAgaWYgKHVzZU1heFdpZHRoKSB7CisgICAgICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24gLSBtYXNrUmVjdC5sb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBkcmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRp
bmcgb3BlcmF0aW9ucyAoZWcsIGEgImNvcHkiIG9wKSBzdGlsbCB3b3JrLgorICAgICAgICAgICAg
ICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChmb250V2lkdGggPiAwID8gKHdp
ZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAgICAgICAgZm9udFByb3h5LmRy
YXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBGbG9hdFBvaW50KDAsIDApLCBG
b250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVj
dC5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBmb250UHJveHkuZHJhd0JpZGlUZXh0KG1h
c2tJbWFnZUNvbnRleHQsIHRleHRSdW4sIGxvY2F0aW9uLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJh
Y2tJZkZvbnROb3RSZWFkeSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAg
aWYgKGMtPmNsaXBUb0RyYXdpbmdDb21tYW5kcyhtYXNrUmVjdCwgQ29sb3JTcGFjZTo6U1JHQiwg
V1RGTW92ZShwYWludE1hc2tJbWFnZSkpID09IEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
Yyk7Ci0gICAgICAgIGMtPmNsaXBUb0ltYWdlQnVmZmVyKCptYXNrSW1hZ2UsIG1hc2tSZWN0KTsK
ICAgICAgICAgZHJhd1N0eWxlLmFwcGx5RmlsbENvbG9yKCpjKTsKICAgICAgICAgYy0+ZmlsbFJl
Y3QobWFza1JlY3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA1M2MxOTgzOWJiMTIy
NjIzMGMyMTg0YzUwN2MyNzU5NGViNzAyMDdkLi4yNjVjYjU3ZDM5Mzk1MDM4YTYyOWYzNWJjZDY4
NjNhYTQ0NDM5YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTg1MSw2ICs4NTEsMjUgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0
KQogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKK0dyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit7CisgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5k
c1Jlc3VsdDo6U3VjY2VzczsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5j
bGlwVG9EcmF3aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UsIFdURk1vdmUoZHJh
d2luZ0Z1bmN0aW9uKSk7CisgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQ6OlN1Y2Nlc3M7CisgICAgfQorCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwg
KnRoaXMpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQ6OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7CisKKyAgICBkcmF3
aW5nRnVuY3Rpb24oaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgY2xpcFRvSW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdD
b21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKK30KKwogI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNU
MkQpICYmICFVU0UoQ0FJUk8pCiBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcygp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDIyMDVhOGNjZGMyNmI3OWIwZjBhMWE0MzE3NzYyZTExNTAwM2U4
N2EuLjdlODFhMWY1ODEzNTlkMjg5MzE0MzY4MzQxYzNlMWNmZjlkNmEzMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkRhc2hBcnJheS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkZvbnRDYXNjYWRlLmgiCkBAIC0zNDcsNyArMzQ4LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb250ZXh0KGJvb2wpOwogI2VuZGlmCiAgICAg
Ym9vbCBpc0FjY2VsZXJhdGVkQ29udGV4dCgpIGNvbnN0OwotICAgIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7IH0K
KyAgICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKGhhc1BsYXRmb3JtQ29udGV4dCgpKQorICAgICAgICAgICAgcmV0dXJuIGlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7CisgICAgICAgIHJldHVybiBpc0FjY2VsZXJhdGVkQ29udGV4dCgpID8g
UmVuZGVyaW5nTW9kZTo6RGlzcGxheUxpc3RBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OkRp
c3BsYXlMaXN0VW5hY2NlbGVyYXRlZDsKKyAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNhdmUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmUoKTsKQEAgLTQwOCw2ICs0
MTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYpOwogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0g
V2luZFJ1bGU6OkV2ZW5PZGQpOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIg
fTsKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmgKaW5kZXggOGZiYzVlNTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmEx
YzljODg3YS4uOGJjOWMxYzJlY2MwY2JmYzM4MjZhYTFlMDE5MTMxYzg5MzcyZDNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaApAQCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNs
aXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsK
ICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAw
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCA4OTEzODQzMTBl
YmU4MTgyNDM0ODQ2NjE3OTQ4MWVkMTc2MTI5YjY5Li4zZDQ2YTUwNTNiMTdjOWEzZWY5ZjgyYjIw
YjRkOTcxZjAyYTU0M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
QEAgLTQyNyw2ICs0MjcsMTEgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIEcKICAgICByZXR1cm4g
Q2Fpcm86OlN0YXRlOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKG1fcGxhdGZvcm1Db250ZXh0LCByZWN0
KTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dElt
cGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggMmY1MTlkNDU0NzdkNDM3OThiNzU5YTgxNTM0NjJj
OTgzNTM3Y2Q5ZS4uMzFiYTcxNjE3ZWZhNDU2YzExZjA0M2ExOWE0NDkzZmQ1ODViMjNlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwog
ICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAg
ICAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKaW5kZXggYjIwZjA2Mjc0NzYwY2NkNGJmNjc0MGFhY2I4NDQ3NTNjMTdh
NGQ0ZC4uNjNmYjVkZDYxYmFiY2NjZjcwOTA0ZTU2ZDJmOWQ0ZTVhZDU4Y2FjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcApAQCAtNTEwLDIyICs1MTAsMjcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QK
ICAgICB9CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUg
PSBkZXN0UmVjdC5zaXplKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNs
aXBUb0ltYWdlQnVmZmVyKGJ1ZmZlciwgZGVzdGluYXRpb25SZWN0KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEZsb2F0U2l6ZSBidWZmZXJEZXN0aW5hdGlvblNpemUgPSBkZXN0aW5h
dGlvblJlY3Quc2l6ZSgpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IGJ1ZmZl
ci5jb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBpbWFn
ZSBuZWVkcyB0byBiZSBncmF5c2NhbGUgdG8gYmUgdXNlZCBhcyBhbiBhbHBoYSBtYXNrIGhlcmUu
Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJl
Y3QueSgpICsgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpKTsKKyAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdGluYXRpb25SZWN0LngoKSwgZGVzdGluYXRpb25SZWN0
LnkoKSArIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oY29udGV4dCwgMSwgLTEpOwotICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpIC0g
ZGVzdFJlY3QuaGVpZ2h0KCkpLCBkZXN0UmVjdC5zaXplKCkpKTsKKyAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KDAsIGJ1ZmZlckRlc3RpbmF0aW9u
U2l6ZS5oZWlnaHQoKSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSksIGRlc3RpbmF0aW9uUmVj
dC5zaXplKCkpKTsKICAgICBDR0NvbnRleHRDbGlwVG9NYXNrKGNvbnRleHQsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSksIGltYWdlLmdldCgpKTsKICAgICBD
R0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGNvbnRleHQsIC1kZXN0UmVjdC54KCksIC1kZXN0UmVjdC55KCkgLSBkZXN0UmVjdC5oZWln
aHQoKSk7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC1kZXN0aW5hdGlvblJl
Y3QueCgpLCAtZGVzdGluYXRpb25SZWN0LnkoKSAtIGRlc3RpbmF0aW9uUmVjdC5oZWlnaHQoKSk7
CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBib3JkZXIu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDM1YzM5YTA1YWQzNzM2OWY2MzE4NjMxNzQ5MjBm
MGU1NGRiNWJmOWYuLjYxMDY0YTg4NjNiNDBmMTkwNWRhYTQwNTMzODdjMjI0YjY0MjNhOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC01Nyw2ICs1Nyw3IEBAIGVudW0gY2xhc3MgSXRlbVR5
cGUgOiB1aW50OF90IHsKICAgICBDbGlwT3V0LAogICAgIENsaXBPdXRUb1BhdGgsCiAgICAgQ2xp
cFBhdGgsCisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzLAogICAgIERyYXdHbHlwaHMsCiAgICAg
RHJhd0ltYWdlLAogICAgIERyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgKaW5kZXggZTg2NzgzNzI0YmVlOGIwNWI3ZTJiYWM5OWZh
ZjJmZDQ4YTgxZTc3Mi4uN2I2NzNmMzJhZDgxNWE1MDA4MWI3ZTdhYjEwODEzMTcxN2ZkZTU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCkBAIC0z
OSw2ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8RHJhd2luZ0NvbnRleHQmPigqdGhpcykubV9jb250ZXh0
OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXImIHJlY29yZGVyKCk7CisgICAgRGlzcGxh
eUxpc3QgdGFrZURpc3BsYXlMaXN0KCkgeyByZXR1cm4gV1RGTW92ZShtX2Rpc3BsYXlMaXN0KTsg
fQogICAgIERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIHsgcmV0dXJuIG1fZGlzcGxheUxpc3Q7
IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QoKSBjb25zdCB7IHJldHVybiBt
X2Rpc3BsYXlMaXN0OyB9CiAgICAgY29uc3QgRGlzcGxheUxpc3QqIHJlcGxheWVkRGlzcGxheUxp
c3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGxheWVkRGlzcGxheUxpc3QuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA1YWNkMzM3ZDAzNjg1Y2ZhOTA3MDcw
MGVkZTgwNTAxYzI0YjU4NDQ0Li5lYThjZTY4ODI4YWU0ZWI1NGQzNjE2Y2E4NTgwMThmMDE3ZmY5
YmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC05NCw2ICs5NCw4
IEBAIHNpemVfdCBJdGVtOjpzaXplSW5CeXRlcyhjb25zdCBJdGVtJiBpdGVtKQogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBPdXRUb1BhdGg+KGl0ZW0pKTsKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwUGF0
aD4oaXRlbSkpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihkb3duY2FzdDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0p
KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9m
KGRvd25jYXN0PERyYXdHbHlwaHM+KGl0ZW0pKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2U6CkBAIC01MTAsNiArNTEyLDMyIEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBDbGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAK
K0NsaXBUb0RyYXdpbmdDb21tYW5kczo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlzcGxheUxpc3QmJiBk
cmF3aW5nQ29tbWFuZHMpCisgICAgOiBJdGVtKEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMpCisgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCisgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhXVEZNb3ZlKGRyYXdpbmdDb21t
YW5kcykpCit7Cit9CisKK0NsaXBUb0RyYXdpbmdDb21tYW5kczo6fkNsaXBUb0RyYXdpbmdDb21t
YW5kcygpID0gZGVmYXVsdDsKKwordm9pZCBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3sKKyAgICBjb250ZXh0LmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhtX2Rlc3RpbmF0aW9uLCBtX2NvbG9yU3BhY2UsIFsmXSAoR3JhcGhpY3NDb250
ZXh0JiBjbGlwcGluZ0NvbnRleHQpIHsKKyAgICAgICAgUmVwbGF5ZXIgcmVwbGF5ZXIgeyBjbGlw
cGluZ0NvbnRleHQsIG1fZHJhd2luZ0NvbW1hbmRzIH07CisgICAgICAgIHJlcGxheWVyLnJlcGxh
eSgpOworICAgIH0pOworfQorCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBpdGVtKQoreworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGVzdGluYXRpb24iLCBpdGVtLmRlc3RpbmF0aW9uKCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY29sb3Itc3BhY2UiLCBpdGVtLmNvbG9yU3BhY2UoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJkcmF3aW5nLWNvbW1hbmRzLWNvdW50IiwgaXRlbS5kcmF3aW5nQ29tbWFuZHMo
KS5pdGVtQ291bnQoKSk7CisgICAgcmV0dXJuIHRzOworfQorCiBEcmF3R2x5cGhzOjpEcmF3R2x5
cGhzKGNvbnN0IEZvbnQmIGZvbnQsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYgZ2x5
cGhzLCBWZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+JiYgYWR2YW5jZXMsIGNvbnN0IEZs
b2F0UG9pbnQmIGJsb2NrTG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlw
ZTo6RHJhd0dseXBocykKICAgICAsIG1fZm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSkKQEAg
LTEzOTMsNiArMTQyMSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBJdGVtVHlwZSYgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OiB0cyA8PCAiY2xpcC1vdXQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9Q
YXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVh
azsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBi
cmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2U6IHRzIDw8ICJkcmF3LWltYWdlIjsg
YnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2U6IHRzIDw8ICJkcmF3LXRp
bGVkLWltYWdlIjsgYnJlYWs7CkBAIC0xNDgzLDYgKzE1MTIsOSBAQCBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBJdGVtJiBpdGVtKQogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOgogICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwUGF0aD4oaXRlbSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
KyAgICAgICAgdHMgPDwgZG93bmNhc3Q8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihpdGVtKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKICAgICAgICAgdHMg
PDwgZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYjQ1ZTc5NzcyNThjZTRjYWMxNWFhNzY3YjkzYjZl
ZmRiMjQ4ZTZlZC4uMGEyYWRhYzIzMGE2YWJiYjFjODIxNzhjODVhYTE1YmYzMjMxMTRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0xMDQzLDYgKzEwNDMsNjEgQEAgT3B0
aW9uYWw8UmVmPENsaXBQYXRoPj4gQ2xpcFBhdGg6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgIHJldHVybiBDbGlwUGF0aDo6Y3JlYXRlKCpwYXRoLCAqd2luZFJ1bGUpOwogfQogCitjbGFz
cyBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgOiBwdWJsaWMgSXRlbSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIERpc3BsYXlMaXN0JiYgZHJhd2luZ0Nv
bW1hbmRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGRlc3RpbmF0aW9uLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdpbmdDb21tYW5k
cykpKTsKKyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB+Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
KCk7CisKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kZXN0aW5hdGlvbjsgfQorICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFu
ZHMoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdDb21tYW5kczsgfQorCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
Pj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFj
ZSwgRGlzcGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpOworCisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0
aW9uOworICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlOworICAgIERpc3BsYXlMaXN0IG1fZHJh
d2luZ0NvbW1hbmRzOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IG1fZGVzdGluYXRpb247CisgICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7Cisg
ICAgZW5jb2RlciA8PCBtX2RyYXdpbmdDb21tYW5kczsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPFJlZjxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+PiBDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAo
IWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9u
YWw8Q29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7Cisg
ICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8RGlzcGxheUxpc3Q+IGRyYXdpbmdDb21tYW5kczsKKyAgICBkZWNvZGVyID4+IGRy
YXdpbmdDb21tYW5kczsKKyAgICBpZiAoIWRyYXdpbmdDb21tYW5kcykKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNyZWF0
ZSgqZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBXVEZNb3ZlKCpkcmF3aW5nQ29tbWFuZHMpKTsK
K30KKwogY2xhc3MgRHJhd0dseXBocyA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxEcmF3R2x5cGhzPiBjcmVhdGUoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFu
Y2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29u
c3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9k
ZSkKQEAgLTI4NTYsNiArMjkxMSw5IEBAIHZvaWQgSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIGVuY29kZXIg
PDwgZG93bmNhc3Q8Q2xpcFBhdGg+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICBlbmNvZGVyIDw8IGRvd25j
YXN0PENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMpOworICAgICAgICBicmVhazsKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICBlbmNvZGVyIDw8IGRvd25jYXN0PERy
YXdHbHlwaHM+KCp0aGlzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDM2LDYgKzMwOTQsMTAgQEAg
T3B0aW9uYWw8UmVmPEl0ZW0+PiBJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgaWYgKGF1dG8gaXRlbSA9IENsaXBQYXRoOjpkZWNvZGUoZGVjb2RlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdURk1vdmUoKml0ZW0pKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoZGVj
b2RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PEl0ZW0+KFdU
Rk1vdmUoKml0ZW0pKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ds
eXBoczoKICAgICAgICAgaWYgKGF1dG8gaXRlbSA9IERyYXdHbHlwaHM6OmRlY29kZShkZWNvZGVy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92
ZSgqaXRlbSkpOwpAQCAtMzIwNSw2ICszMjY3LDcgQEAgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19E
SVNQTEFZTElTVF9JVEVNKENsaXApCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNU
X0lURU0oQ2xpcE91dCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShD
bGlwT3V0VG9QYXRoKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENs
aXBQYXRoKQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKENsaXBUb0Ry
YXdpbmdDb21tYW5kcykKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShE
cmF3R2x5cGhzKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdJ
bWFnZSkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJU1RfSVRFTShEcmF3VGlsZWRJ
bWFnZSkKQEAgLTMyNjUsNiArMzMyOCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwT3V0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6Q2xpcE91dFRvUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBQYXRoLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0dseXBo
cywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZSwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdUaWxlZEltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGIyYjZmNjE3NmU4ZTQ1ODFlMDY4
MWMyZDAwOWRmZTRmNWU3YTU3MGYuLjE3ZGYxNTFkZTM0ZWJkODY3YjZhNjE2MzI5MWZmMDc1ZjBm
ZGY4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTM4
MSw2ICszODEsMTMgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKQogICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIERpc3BsYXlMaXN0OjpS
ZWNvcmRlci4iKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit7CisgICAgYXV0
byByZWNvcmRpbmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcmF3aW5nQ29udGV4dD4oZGVzdGluYXRp
b24uc2l6ZSgpKTsKKyAgICBkcmF3aW5nRnVuY3Rpb24ocmVjb3JkaW5nQ29udGV4dC0+Y29udGV4
dCgpKTsKKyAgICBhcHBlbmRJdGVtKENsaXBUb0RyYXdpbmdDb21tYW5kczo6Y3JlYXRlKGRlc3Rp
bmF0aW9uLCBjb2xvclNwYWNlLCByZWNvcmRpbmdDb250ZXh0LT50YWtlRGlzcGxheUxpc3QoKSkp
OworfQorCiB2b2lkIFJlY29yZGVyOjphcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yKQogewogICAgIC8vIEZJWE1FOiB0aGlzIGNoYW5nZXMgdGhlIGJhc2VDVE0s
IHdoaWNoIHdpbGwgaW52YWxpZGF0ZSBhbGwgb2Ygb3VyIGNhY2hlZCBleHRlbnRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggZTRlYjdhMzA4ZWM1M2M0NDZhYzFk
MjZkOTUyZDkyMzVkY2U5MGZhNS4uZDI3MGM1ZDkwOGFjNjhkNzgwODM2M2JiYTkxYjJlNzYxYWVk
YzkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xMzYsNiAr
MTM2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVs
ZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggMDBiZThlOTFkMzU1NzdiYjQ2OGI4Mzg4
MzI1NmI3ZWQ5OWFmYzY4MC4uY2VhMmE2ZWEwNDQ1MzRmZjQ1NDRlYTIxMDljMjYxN2Q3OTdjYTJm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKQEAgLTEwOTAsNCArMTA5MCw5IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxQYWludGluZ09wZXJhdGlvbj4mJiBjb21tYW5k
CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RGTW92ZShjb21tYW5kKSk7CiB9CiAKK3ZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit7
CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgTmlj
b3NpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oCmluZGV4IDgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFmNDEuLmRl
MjRhYjhiZDUyNDMyY2UyOTNhODBmNmI0Zjk4NjBmMjIyZmE3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBX
ZWJDb3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91
bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIFdlYkNvcmU6OkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9y
KGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNw
cAppbmRleCBkNjQ0NWQ3MGNiMzAzN2U3MmFlMjkwNmQ2NjM2ZWZmYjQ0ODFkNzU4Li41ODk0MGEz
YjgxMzRkYjE5NTA1ZTY5MjFkNWE1NjMwOTU5MWU4MzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmNwcApAQCAtNDM2LDYgKzQzNiwxMSBAQCBGbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdAogICAgIHJldHVybiBEaXJlY3QyRDo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMo
bV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit7CisgICAgLy8gRklYTUU6
IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gVVNFKERJUkVDVDJEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4
IDQ0MjVmZDI2YWJlODU0NTFkMmMwMzJmMzZhMjZhNTdlZTMxZTJiMGUuLjhmMTExNzc2OTNhOGJi
MTBiY2I0ODQ3OWYxOWE4ODkxMTI4M2NhZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERp
cmVjdDJELmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIGFwcGx5RGV2aWNl
U2NhbGVGYWN0b3IoZmxvYXQpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409966</attachid>
            <date>2020-09-28 22:37:54 -0700</date>
            <delta_ts>2020-09-29 09:41:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217026-20200928223753.patch</filename>
            <type>text/plain</type>
            <size>30471</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM1ODc1YTVjNzlkZWNi
MTAwNmQzMTg0NWZiMjE0ZGFjMzA4YTUxMy4uOGYyZWU1NjAwNTQ4YmMwZWYzYjFhN2JjMDMzYTNk
MWU4N2EzMGZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAyMC0wOS0yOCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIFNldmVyYWwgbGF5b3V0IHRlc3RzIGluIGZhc3QvY2FudmFzIGNyYXNoIHVuZGVyIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzAyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk2
NjM4MzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2hlbiB1c2luZyB0aGUgR1BVIFByb2Nlc3MgZm9yIHJlbmRlcmluZywgY2FsbGluZyBgR3JhcGhp
Y3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcmAgY3VycmVudGx5IHJlc3VsdHMgaW4gYQorICAg
ICAgICBjcmFzaCwgZHVlIHRvIHRoZSBwbGF0Zm9ybSBgQ0dDb250ZXh0UmVmYCBiZWluZyBudWxs
LiBUaGlzIGNhdXNlcyB0aGUgZm9sbG93aW5nIDQgY2FudmFzLXJlbGF0ZWQgdGVzdHMgdG8gZmFp
bDoKKyAgICAgICAgLSBmYXN0L2NhbnZhcy8yZC5maWxsVGV4dC5ncmFkaWVudC5odG1sCisgICAg
ICAgIC0gZmFzdC9jYW52YXMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguZ3JhZGllbnQuaHRt
bAorICAgICAgICAtIGZhc3QvY2FudmFzL2NhbnZhcy10ZXh0LWFsaWdubWVudC5odG1sCisgICAg
ICAgIC0gZmFzdC9jYW52YXMvZ3JhZGllbnQtdGV4dC13aXRoLXNoYWRvdy5odG1sCisKKyAgICAg
ICAgSW4gYWxsIGZvdXIgb2YgdGhlc2UgdGVzdHMsIHRoZSBgY2xpcFRvSW1hZ2VCdWZmZXJgIGNh
bGwgY29tZXMgZnJvbSBgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
YAorICAgICAgICBtZXRob2QsIHdoaWxlIGNyZWF0aW5nIHRoZSBpbWFnZSB1c2VkIHRvIHByb3Zp
ZGUgdGhlIG1hc2sgd2hlbiB0aGVyZSBpcyBhIGdyYWRpZW50IG9yIHBhdHRlcm4gZmlsbC4gVGhp
cyBpcworICAgICAgICB0cmlja3kgdG8gc3VwcG9ydCB3aGVuIHVzaW5nIHRoZSBHUFUgcHJvY2Vz
cyB3aXRoIGRpc3BsYXkgbGlzdCBpdGVtcywgc2luY2UgYEltYWdlQnVmZmVyYHMgY2Fubm90IGJl
IGdlbmVyYWxseQorICAgICAgICBzZW50IHRvIHRoZSBHUFUgcHJvY2VzcyB0aHJvdWdoIElQQy4g
SW5zdGVhZCBvZiBwYWludGluZyBhbiBgSW1hZ2VCdWZmZXJgIGFuZCBzZW5kaW5nIGl0IG92ZXIg
SVBDLCB3ZSBjYW4KKyAgICAgICAgaW50cm9kdWNlIGEgbmV3IGBHcmFwaGljc0NvbnRleHRgIG1l
dGhvZCB0aGF0IGNsaXBzIHRvIGFuIGltYWdlIHRoYXQgaXMgcGFpbnRlZCB2aWEgYSBgV1RGOjpG
dW5jdGlvbmAgdGhhdCBpcworICAgICAgICBwYXNzZWQgaW4sIGFuZCByZWNlaXZlcyBhIGBHcmFw
aGljc0NvbnRleHQmYC4gV2hlbiB1c2luZyBhIGRpc3BsYXktbGlzdC1iYWNrZWQgYEdyYXBoaWNz
Q29udGV4dGAsIHdlIGNhbiBjcmVhdGUKKyAgICAgICAgYSBuZXcgYERpc3BsYXlMaXN0YCByZWNv
cmRpbmcgY29udGV4dCBhbmQgdXNlIHRoZSBnaXZlbiBgRnVuY3Rpb25gIHRvIHBvcHVsYXRlIHRo
ZSBkaXNwbGF5IGxpc3Qgd2l0aCBpdGVtcywKKyAgICAgICAgd2hpY2ggY2FuIHRoZW4gYmUgc2Vu
dCB0byB0aGUgR1BVIHByb2Nlc3MgdGhyb3VnaCBJUEMuIFdoZW4gdXNpbmcgYSBwbGF0Zm9ybSBg
Q0dDb250ZXh0UmVmYC1iYWNrZWQKKyAgICAgICAgYEdyYXBoaWNzQ29udGV4dGAsIHdlIGluc3Rl
YWQgY3JlYXRlIGEgbmV3IGBJbWFnZUJ1ZmZlcmAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50
IGNvbnRleHQsIGFuZCB0aGVuIHVzZSB0aGlzCisgICAgICAgIGBJbWFnZUJ1ZmZlcmAgdG8gY2Fs
bCBgY2xpcFRvSW1hZ2VCdWZmZXJgLiBXZSB0aGVuIHJlZmFjdG9yIGBkcmF3VGV4dEludGVybmFs
YCBzbyB0aGF0IGl0IHVzZXMgdGhpcyBuZXcKKyAgICAgICAgYEdyYXBoaWNzQ29udGV4dGAgbWV0
aG9kLiBTZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorCisgICAgICAgIFJlZmFjdG9y
IHRoaXMgdG8gdXNlIGBjbGlwVG9EcmF3aW5nQ29tbWFuZHNgIGluc3RlYWQgb2YgYGNsaXBUb0lt
YWdlQnVmZmVyYC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IGBHcmFwaGljc0NvbnRleHRgIG1l
dGhvZCB0aGF0IHRha2VzIGEgZnVuY3Rpb24gd2hpY2ggZHJhd3MgaW50byBhIGdpdmVuIGBHcmFw
aGljc0NvbnRleHRgLiBXaGVuCisgICAgICAgIHRoZXJlIGlzIG5vIGBHcmFwaGljc0NvbnRleHRJ
bXBsYCBwcmVzZW50LCB3ZSBjcmVhdGUgYSBuZXcgYEltYWdlQnVmZmVyYCBjb21wYXRpYmxlIHdp
dGggdGhpcyBgR3JhcGhpY3NDb250ZXh0YCwKKyAgICAgICAgcGFpbnQgaW50byBpdCB1c2luZyB0
aGUgZ2l2ZW4gYEZ1bmN0aW9uYCwgYW5kIGxhc3RseSBwYXNzIHRoaXMgcGFpbnRlZCBgSW1hZ2VC
dWZmZXJgIGludG8gYGNsaXBUb0ltYWdlQnVmZmVyYC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorCisgICAgICAgIEFkZCBh
biB1bmltcGxlbWVudGVkIG1ldGhvZCBzdHViLiBTaW5jZSB0aGUgb25seSBjYWxsIHNpdGUgb2Yg
YEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzYCBpcyBiZWhpbmQKKyAgICAg
ICAgYSBgVVNFKENHKWAgZ3VhcmQsIGxlYXZpbmcgdGhpcyB1bmltcGxlbWVudGVkIGZvciB0aGUg
dGltZSBiZWluZyB3b24ndCByZXN1bHQgaW4gYW55IHJlZ3Jlc3Npb24gaW4gYmVoYXZpb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVy
KToKKworICAgICAgICBJdCdzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gZml4IHRoZXNlIGxh
eW91dCB0ZXN0cywgYnV0IHdlIHNob3VsZCBzdGlsbCBhZGQgYSBjaGVjayBmb3IgYGNsaXBUb0lt
YWdlQnVmZmVyYAorICAgICAgICBoZXJlIHdpdGggYSBjYWxsIHRvIGBHcmFwaGljc0NvbnRleHRJ
bXBsOjpjbGlwVG9JbWFnZUJ1ZmZlcmAgZXZlbiB0aG91Z2ggYGNsaXBUb0ltYWdlQnVmZmVyYCBp
cyB1bmltcGxlbWVudGVkLAorICAgICAgICB0byBlbnN1cmUgdGhhdCB3ZSBhdCBsZWFzdCBhdm9p
ZCBjcmFzaGluZyBpZiBhbnl0aGluZyBjYWxscyBpbnRvIHRoaXMgY29kZXBhdGguCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0Ojp0
YWtlRGlzcGxheUxpc3QpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0byBleHRy
YWN0IHRoZSBgRGlzcGxheUxpc3RgIG91dCBvZiBhIGBEaXNwbGF5TGlzdDo6RHJhd2luZ0NvbnRl
eHRgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdp
bmdDb21tYW5kczo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmFwcGx5IGNvbnN0KToKKworICAgICAg
ICBBcHBseSB0aGUgYENsaXBUb0RyYXdpbmdDb21tYW5kc2AgaXRlbSBieSB1c2luZyBgRGlzcGxh
eUxpc3Q6OlJlcGxheWVyYCB0byByZXBsYXkgdGhlIGdpdmVuIGRpc3BsYXkgbGlzdCBpdGVtcwor
ICAgICAgICBiYWNrIGluIGEgbmV3IHBsYXRmb3JtIENHLWJhY2tlZCBpbWFnZSBidWZmZXIgaW4g
dGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpkZXN0aW5hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpjb2xvclNwYWNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRyYXdp
bmdDb21tYW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW06OmRlY29kZSk6CisKKyAgICAgICAgQWRkIGEgbmV3IGBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNgIGRpc3BsYXkgbGlzdCBpdGVtLCB3aXRoIHN1cHBvcnQgZm9yIElQQyBlbmNv
ZGluZyBhbmQgZGVjb2RpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBkaXNwbGF5LWxpc3QtYmFja2VkIGBjbGlwVG9EcmF3aW5nQ29tbWFuZHNgIG1ldGhv
ZCBieSBjcmVhdGluZyBhIG5ldyBgRGlzcGxheUxpc3Q6OkRyYXdpbmdDb250ZXh0YAorICAgICAg
ICBhbmQgcGxheWluZyB0aGUgZ2l2ZW4gZHJhd2luZyBmdW5jdGlvbiBiYWNrIGludG8gdGhlIGBE
cmF3aW5nQ29udGV4dGAuIFRoaXMgcG9wdWxhdGVzIHRoZSByZWNvcmRpbmcgY29udGV4dCB3aXRo
CisgICAgICAgIGEgZGlzcGxheSBsaXN0LCB3aGljaCB3ZSBjYW4gdXNlIHRvIGNyZWF0ZSBhIHNl
cmlhbGl6YWJsZSBkaXNwbGF5IGxpc3QgaXRlbS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMpOgorCisgICAgICAgIEFkZCBhbm90aGVyIHVuaW1wbGVtZW50ZWQgbWV0aG9k
IHN0dWIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisKKyAg
ICAgICAgQWRkIGFub3RoZXIgdW5pbXBsZW1lbnRlZCBtZXRob2Qgc3R1Yi4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKwog
MjAyMC0wOS0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgc3VwcG9ydCBmb3Igc2V0dGluZyBDTVlLQSBmaWxsIGFuZCBzdHJva2UgY29s
b3JzIGluIDJEIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggODkxODAyNzlhZjJiN2Y3NjU2YmNk
ZGY4ZWVjMDgzMzNiNjVjNjE0OC4uMjgzNjRhZmExYTc2YTVkZThhZTY0ZWYzODZiMjUyYzZhYzZl
NjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC01NDYsMzMgKzU0NiwzMiBAQCB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHRleHQsIGZs
b2F0IHgsIGZsbwogICAgICAgICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dCgqYywgdGV4dFJ1
biwgbG9jYXRpb24gKyBvZmZzZXQsIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJl
YWR5KTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBDb2xvclNwYWNlOjpTUkdC
LCAqYyk7Ci0gICAgICAgIGlmICghbWFza0ltYWdlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIGF1dG8mIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKLQot
ICAgICAgICBpZiAoZmlsbCkKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0RmlsbENv
bG9yKENvbG9yOjpibGFjayk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOwotICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoZmls
bCA/IFRleHREcmF3aW5nTW9kZTo6RmlsbCA6IFRleHREcmF3aW5nTW9kZTo6U3Ryb2tlKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsKIAotICAgICAg
ICBpZiAodXNlTWF4V2lkdGgpIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNs
YXRlKGxvY2F0aW9uIC0gbWFza1JlY3QubG9jYXRpb24oKSk7Ci0gICAgICAgICAgICAvLyBXZSBk
cmF3IHdoZW4gZm9udFdpZHRoIGlzIDAgc28gY29tcG9zaXRpbmcgb3BlcmF0aW9ucyAoZWcsIGEg
ImNvcHkiIG9wKSBzdGlsbCB3b3JrLgotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoKGZvbnRXaWR0aCA+IDAgPyAod2lkdGggLyBmb250V2lkdGgpIDogMCksIDEp
KTsKLSAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4dCwg
dGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250
Tm90UmVhZHkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4
dC50cmFuc2xhdGUoLW1hc2tSZWN0LmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZm9udFByb3h5
LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBsb2NhdGlvbiwgRm9udENh
c2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOwotICAgICAgICB9CisgICAgICAgIGF1
dG8gcGFpbnRNYXNrSW1hZ2UgPSBbJl0gKEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4
dCkgeworICAgICAgICAgICAgaWYgKGZpbGwpCisgICAgICAgICAgICAgICAgbWFza0ltYWdlQ29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmJsYWNr
KTsKKyAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhj
LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1hc2tJ
bWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0RHJhd2luZ01vZGU6OkZp
bGwgOiBUZXh0RHJhd2luZ01vZGU6OlN0cm9rZSk7CisKKyAgICAgICAgICAgIGlmICh1c2VNYXhX
aWR0aCkgeworICAgICAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKGxvY2F0
aW9uIC0gbWFza1JlY3QubG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgZHJhdyB3
aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBhICJjb3B5
IiBvcCkgc3RpbGwgd29yay4KKyAgICAgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNjYWxl
KEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwgMSkp
OworICAgICAgICAgICAgICAgIGZvbnRQcm94eS5kcmF3QmlkaVRleHQobWFza0ltYWdlQ29udGV4
dCwgdGV4dFJ1biwgRmxvYXRQb2ludCgwLCAwKSwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZG
b250Tm90UmVhZHkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXNr
SW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtbWFza1JlY3QubG9jYXRpb24oKSk7CisgICAgICAgICAg
ICAgICAgZm9udFByb3h5LmRyYXdCaWRpVGV4dChtYXNrSW1hZ2VDb250ZXh0LCB0ZXh0UnVuLCBs
b2NhdGlvbiwgRm9udENhc2NhZGU6OlVzZUZhbGxiYWNrSWZGb250Tm90UmVhZHkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmIChjLT5jbGlwVG9EcmF3aW5nQ29tbWFu
ZHMobWFza1JlY3QsIENvbG9yU3BhY2U6OlNSR0IsIFdURk1vdmUocGFpbnRNYXNrSW1hZ2UpKSA9
PSBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9D
cmVhdGVJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmMpOwotICAgICAgICBjLT5jbGlwVG9JbWFn
ZUJ1ZmZlcigqbWFza0ltYWdlLCBtYXNrUmVjdCk7CiAgICAgICAgIGRyYXdTdHlsZS5hcHBseUZp
bGxDb2xvcigqYyk7CiAgICAgICAgIGMtPmZpbGxSZWN0KG1hc2tSZWN0KTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggNTNjMTk4MzliYjEyMjYyMzBjMjE4NGM1MDdjMjc1OTRlYjcwMjA3
ZC4uMjY1Y2I1N2QzOTM5NTAzOGE2MjlmMzViY2Q2ODYzYWE0NDQzOWM2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBA
IC04NTEsNiArODUxLDI1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKICAgICBjbGlwT3V0KHBhdGgpOwogfQog
CitHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+
JiYgZHJhd2luZ0Z1bmN0aW9uKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAg
ICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CisKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGRlc3Rp
bmF0aW9uLCBjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdpbmdGdW5jdGlvbikpOworICAgICAgICBy
ZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOworICAgIH0KKworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihk
ZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UsICp0aGlzKTsKKyAgICBpZiAoIWltYWdlQnVm
ZmVyKQorICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRU
b0NyZWF0ZUltYWdlQnVmZmVyOworCisgICAgZHJhd2luZ0Z1bmN0aW9uKGltYWdlQnVmZmVyLT5j
b250ZXh0KCkpOworICAgIGNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZGVzdGluYXRp
b24pOworICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7Cit9
CisKICNpZiAhVVNFKENHKSAmJiAhVVNFKERJUkVDVDJEKSAmJiAhVVNFKENBSVJPKQogSW50UmVj
dCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAyMjA1YThj
Y2RjMjZiNzliMGYwYTFhNDMxNzc2MmUxMTUwMDNlODdhLi4wODhmMmU1Mzk2YjliNDM4NTg4N2Vj
MDFmYWNhOGU3ZGQ5MGUxODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgpAQCAtNDA4LDYg
KzQwOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9h
dFJvdW5kZWRSZWN0Jik7CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUg
PSBXaW5kUnVsZTo6RXZlbk9kZCk7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5n
Q29tbWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZl
ciB9OworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9p
ZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAgICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA4ZmJjNWU1NmNmMTU0ODUzNzc5YzU1NDQ1NDVlOWU2
YTFjOWM4ODdhLi44YmM5YzFjMmVjYzBjYmZjMzgyNmFhMWUwMTkxMzFjODkzNzJkM2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCkBAIC0xMDYsNiArMTA2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAw
OwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDg5MTM4NDMx
MGViZTgxODI0MzQ4NDY2MTc5NDgxZWQxNzYxMjliNjkuLjNkNDZhNTA1M2IxN2M5YTNlZjlmODJi
MjBiNGQ5NzFmMDJhNTQzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cApAQCAtNDI3LDYgKzQyNywxMSBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRwogICAgIHJldHVy
biBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJl
Y3QpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENBSVJPKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAyZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2
MmM5ODM1MzdjZDllLi4zMWJhNzE2MTdlZmE0NTZjMTFmMDQzYTE5YTQ0OTNmZDU4NWIyM2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtMTA2LDYgKzEwNiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7
CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwog
ICAgIAogICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAppbmRleCBiMjBmMDYyNzQ3NjBjY2Q0YmY2NzQwYWFjYjg0NDc1M2Mx
N2E0ZDRkLi42M2ZiNWRkNjFiYWJjY2NmNzA5MDRlNTZkMmY5ZDRlNWFkNThjYWM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCkBAIC01MTAsMjIgKzUxMCwyNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6
ZSA9IGRlc3RSZWN0LnNpemUoKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+
Y2xpcFRvSW1hZ2VCdWZmZXIoYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgRmxvYXRTaXplIGJ1ZmZlckRlc3RpbmF0aW9uU2l6ZSA9IGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYnVm
ZmVyLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBDR0NvbnRl
eHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlt
YWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVy
ZS4KLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0
UmVjdC55KCkgKyBidWZmZXJEZXN0aW5hdGlvblNpemUuaGVpZ2h0KCkpOworICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBkZXN0aW5hdGlvblJlY3QueCgpLCBkZXN0aW5hdGlvblJl
Y3QueSgpICsgYnVmZmVyRGVzdGluYXRpb25TaXplLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRT
Y2FsZUNUTShjb250ZXh0LCAxLCAtMSk7Ci0gICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgwLCBidWZmZXJEZXN0aW5hdGlvblNpemUuaGVpZ2h0KCkg
LSBkZXN0UmVjdC5oZWlnaHQoKSksIGRlc3RSZWN0LnNpemUoKSkpOworICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoMCwgYnVmZmVyRGVzdGluYXRp
b25TaXplLmhlaWdodCgpIC0gZGVzdGluYXRpb25SZWN0LmhlaWdodCgpKSwgZGVzdGluYXRpb25S
ZWN0LnNpemUoKSkpOwogICAgIENHQ29udGV4dENsaXBUb01hc2soY29udGV4dCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYnVmZmVyRGVzdGluYXRpb25TaXplKSwgaW1hZ2UuZ2V0KCkpOwogICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKLSAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgLWRlc3RSZWN0LngoKSwgLWRlc3RSZWN0LnkoKSAtIGRlc3RSZWN0Lmhl
aWdodCgpKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgLWRlc3RpbmF0aW9u
UmVjdC54KCksIC1kZXN0aW5hdGlvblJlY3QueSgpIC0gZGVzdGluYXRpb25SZWN0LmhlaWdodCgp
KTsKIH0KIAogLy8gRHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKaW5kZXggMzVjMzlhMDVhZDM3MzY5ZjYzMTg2MzE3NDky
MGYwZTU0ZGI1YmY5Zi4uNjEwNjRhODg2M2I0MGYxOTA1ZGFhNDA1MzM4N2MyMjRiNjQyM2E4YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKQEAgLTU3LDYgKzU3LDcgQEAgZW51bSBjbGFzcyBJdGVt
VHlwZSA6IHVpbnQ4X3QgewogICAgIENsaXBPdXQsCiAgICAgQ2xpcE91dFRvUGF0aCwKICAgICBD
bGlwUGF0aCwKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0dseXBocywKICAg
ICBEcmF3SW1hZ2UsCiAgICAgRHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaAppbmRleCBlODY3ODM3MjRiZWU4YjA1YjdlMmJhYzk5
ZmFmMmZkNDhhODFlNzcyLi43YjY3M2YzMmFkODE1YTUwMDgxYjdlN2FiMTA4MTMxNzE3ZmRlNTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmgKQEAg
LTM5LDYgKzM5LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxEcmF3aW5nQ29udGV4dCY+KCp0aGlzKS5tX2NvbnRl
eHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlciYgcmVjb3JkZXIoKTsKKyAgICBEaXNw
bGF5TGlzdCB0YWtlRGlzcGxheUxpc3QoKSB7IHJldHVybiBXVEZNb3ZlKG1fZGlzcGxheUxpc3Qp
OyB9CiAgICAgRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0KCkgeyByZXR1cm4gbV9kaXNwbGF5TGlz
dDsgfQogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzcGxheUxpc3Q7IH0KICAgICBjb25zdCBEaXNwbGF5TGlzdCogcmVwbGF5ZWREaXNwbGF5
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGF5ZWREaXNwbGF5TGlzdC5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDVhY2QzMzdkMDM2ODVjZmE5MDcw
NzAwZWRlODA1MDFjMjRiNTg0NDQuLmVhOGNlNjg4MjhhZTRlYjU0ZDM2MTZjYTg1ODAxOGYwMTdm
ZjliZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTk0LDYgKzk0
LDggQEAgc2l6ZV90IEl0ZW06OnNpemVJbkJ5dGVzKGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgICAg
IHJldHVybiBzaXplb2YoZG93bmNhc3Q8Q2xpcE91dFRvUGF0aD4oaXRlbSkpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBQ
YXRoPihpdGVtKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICByZXR1cm4gc2l6ZW9mKGRvd25jYXN0PENsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRl
bSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHJldHVybiBzaXpl
b2YoZG93bmNhc3Q8RHJhd0dseXBocz4oaXRlbSkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJ
bWFnZToKQEAgLTUxMCw2ICs1MTIsMzIgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBQYXRoJiBpdGVtKQogICAgIHJldHVybiB0czsKIH0K
IAorQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBEaXNwbGF5TGlzdCYm
IGRyYXdpbmdDb21tYW5kcykKKyAgICA6IEl0ZW0oSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21t
YW5kcykKKyAgICAsIG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCisgICAgLCBtX2NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkKKyAgICAsIG1fZHJhd2luZ0NvbW1hbmRzKFdURk1vdmUoZHJhd2luZ0Nv
bW1hbmRzKSkKK3sKK30KKworQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjp+Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKCkgPSBkZWZhdWx0OworCit2b2lkIENsaXBUb0RyYXdpbmdDb21tYW5kczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAoreworICAgIGNvbnRleHQuY2xpcFRvRHJh
d2luZ0NvbW1hbmRzKG1fZGVzdGluYXRpb24sIG1fY29sb3JTcGFjZSwgWyZdIChHcmFwaGljc0Nv
bnRleHQmIGNsaXBwaW5nQ29udGV4dCkgeworICAgICAgICBSZXBsYXllciByZXBsYXllciB7IGNs
aXBwaW5nQ29udGV4dCwgbV9kcmF3aW5nQ29tbWFuZHMgfTsKKyAgICAgICAgcmVwbGF5ZXIucmVw
bGF5KCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIGl0ZW0pCit7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIsIGl0ZW0uZGVzdGluYXRpb24oKSk7CisgICAgdHMu
ZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIsIGl0ZW0uY29sb3JTcGFjZSgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImRyYXdpbmctY29tbWFuZHMtY291bnQiLCBpdGVtLmRyYXdpbmdDb21tYW5k
cygpLml0ZW1Db3VudCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdHbHlwaHM6OkRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBn
bHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3Qg
RmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwgY29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwg
Rm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3R2x5cGhzKQogICAgICwgbV9mb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKQpA
QCAtMTM5Myw2ICsxNDIxLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IEl0ZW1UeXBlJiB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBP
dXQ6IHRzIDw8ICJjbGlwLW91dCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRU
b1BhdGg6IHRzIDw8ICJjbGlwLW91dC10by1wYXRoIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFBhdGg6IHRzIDw8ICJjbGlwLXBhdGgiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJjbGlwLXRvLWltYWdlLWJ1ZmZlciI7IGJy
ZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWdseXBocyI7
IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZTogdHMgPDwgImRyYXctaW1hZ2Ui
OyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3VGlsZWRJbWFnZTogdHMgPDwgImRyYXct
dGlsZWQtaW1hZ2UiOyBicmVhazsKQEAgLTE0ODMsNiArMTUxMiw5IEBAIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEl0ZW0mIGl0ZW0pCiAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHRzIDw8IGRvd25jYXN0PENsaXBQYXRoPihpdGVtKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
OgorICAgICAgICB0cyA8PCBkb3duY2FzdDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0pOwor
ICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAgICAgICB0
cyA8PCBkb3duY2FzdDxEcmF3R2x5cGhzPihpdGVtKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBiNDVlNzk3NzI1OGNlNGNhYzE1YWE3NjdiOTNi
NmVmZGIyNDhlNmVkLi4wYTJhZGFjMjMwYTZhYmJiMWM4MjE3OGM4NWFhMTViZjMyMzExNGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEwNDMsNiArMTA0Myw2MSBAQCBP
cHRpb25hbDxSZWY8Q2xpcFBhdGg+PiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgcmV0dXJuIENsaXBQYXRoOjpjcmVhdGUoKnBhdGgsICp3aW5kUnVsZSk7CiB9CiAKK2Ns
YXNzIENsaXBUb0RyYXdpbmdDb21tYW5kcyA6IHB1YmxpYyBJdGVtIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPENsaXBUb0RyYXdpbmdDb21tYW5kcz4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlzcGxheUxpc3QmJiBkcmF3aW5n
Q29tbWFuZHMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGlwVG9EcmF3
aW5nQ29tbWFuZHMoZGVzdGluYXRpb24sIGNvbG9yU3BhY2UsIFdURk1vdmUoZHJhd2luZ0NvbW1h
bmRzKSkpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JUIH5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoKTsKKworICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGlzcGxheUxpc3QmIGRyYXdpbmdDb21t
YW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd2luZ0NvbW1hbmRzOyB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxDbGlwVG9EcmF3aW5nQ29tbWFu
ZHM+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIENs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBDb2xvclNw
YWNlLCBEaXNwbGF5TGlzdCYmIGRyYXdpbmdDb21tYW5kcyk7CisKKyAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRmxvYXRSZWN0IG1fZGVzdGlu
YXRpb247CisgICAgQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CisgICAgRGlzcGxheUxpc3QgbV9k
cmF3aW5nQ29tbWFuZHM7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBDbGlw
VG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsK
KyAgICBlbmNvZGVyIDw8IG1fZHJhd2luZ0NvbW1hbmRzOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8UmVmPENsaXBUb0RyYXdpbmdDb21tYW5kcz4+IENsaXBUb0RyYXdp
bmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRp
b25hbDxDb2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsK
KyAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICBPcHRpb25hbDxEaXNwbGF5TGlzdD4gZHJhd2luZ0NvbW1hbmRzOworICAgIGRlY29kZXIgPj4g
ZHJhd2luZ0NvbW1hbmRzOworICAgIGlmICghZHJhd2luZ0NvbW1hbmRzKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kczo6Y3Jl
YXRlKCpkZXN0aW5hdGlvbiwgKmNvbG9yU3BhY2UsIFdURk1vdmUoKmRyYXdpbmdDb21tYW5kcykp
OworfQorCiBjbGFzcyBEcmF3R2x5cGhzIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPERyYXdHbHlwaHM+IGNyZWF0ZShjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBj
b25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdN
b2RlKQpAQCAtMjg1Niw2ICsyOTExLDkgQEAgdm9pZCBJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgZW5jb2Rl
ciA8PCBkb3duY2FzdDxDbGlwUGF0aD4oKnRoaXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIGVuY29kZXIgPDwgZG93
bmNhc3Q8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPigqdGhpcyk7CisgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmNhc3Q8
RHJhd0dseXBocz4oKnRoaXMpOwogICAgICAgICBicmVhazsKQEAgLTMwMzYsNiArMzA5NCwxMCBA
QCBPcHRpb25hbDxSZWY8SXRlbT4+IEl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICBpZiAoYXV0byBpdGVtID0gQ2xpcFBhdGg6OmRlY29kZShkZWNvZGVyKSkKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4oV1RGTW92ZSgqaXRlbSkpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CisgICAgICAgIGlmIChhdXRvIGl0ZW0gPSBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShk
ZWNvZGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8SXRlbT4o
V1RGTW92ZSgqaXRlbSkpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgogICAgICAgICBpZiAoYXV0byBpdGVtID0gRHJhd0dseXBoczo6ZGVjb2RlKGRlY29k
ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxJdGVtPihXVEZN
b3ZlKCppdGVtKSk7CkBAIC0zMjA1LDYgKzMyNjcsNyBAQCBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0RJU1BMQVlMSVNUX0lURU0oQ2xpcCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRElTUExBWUxJ
U1RfSVRFTShDbGlwT3V0KQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KENsaXBPdXRUb1BhdGgpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0o
Q2xpcFBhdGgpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVN
KERyYXdHbHlwaHMpCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0RJU1BMQVlMSVNUX0lURU0oRHJh
d0ltYWdlKQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19ESVNQTEFZTElTVF9JVEVNKERyYXdUaWxl
ZEltYWdlKQpAQCAtMzI2NSw2ICszMzI4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwT3V0VG9QYXRoLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
Q2xpcFBhdGgsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3
aW5nQ29tbWFuZHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5
cGhzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlLAogICAg
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1RpbGVkSW1hZ2UsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggYjJiNmY2MTc2ZThlNDU4MWUw
NjgxYzJkMDA5ZGZlNGY1ZTdhNTcwZi4uMTdkZjE1MWRlMzRlYmQ4NjdiNmE2MTYzMjkxZmYwNzVm
MGZkZjhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
MzgxLDYgKzM4MSwxMyBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpCiAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggRGlzcGxheUxpc3Q6
OlJlY29yZGVyLiIpOwogfQogCit2b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3sKKyAgICBh
dXRvIHJlY29yZGluZ0NvbnRleHQgPSBtYWtlVW5pcXVlPERyYXdpbmdDb250ZXh0PihkZXN0aW5h
dGlvbi5zaXplKCkpOworICAgIGRyYXdpbmdGdW5jdGlvbihyZWNvcmRpbmdDb250ZXh0LT5jb250
ZXh0KCkpOworICAgIGFwcGVuZEl0ZW0oQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpjcmVhdGUoZGVz
dGluYXRpb24sIGNvbG9yU3BhY2UsIHJlY29yZGluZ0NvbnRleHQtPnRha2VEaXNwbGF5TGlzdCgp
KSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgLy8gRklYTUU6IHRoaXMgY2hhbmdlcyB0aGUgYmFzZUNU
TSwgd2hpY2ggd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiBvdXIgY2FjaGVkIGV4dGVudHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBlNGViN2EzMDhlYzUzYzQ0NmFj
MWQyNmQ5NTJkOTIzNWRjZTkwZmE1Li5kMjcwYzVkOTA4YWM2OGQ3ODA4MzYzYmJhOTFiMmU3NjFh
ZWRjOTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTEzNiw2
ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFj
dG9yKGZsb2F0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAwMGJlOGU5MWQzNTU3N2JiNDY4Yjgz
ODgzMjU2YjdlZDk5YWZjNjgwLi5jZWEyYTZlYTA0NDUzNGZmNDU0NGVhMjEwOWMyNjE3ZDc5N2Nh
MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmNwcApAQCAtMTA5MCw0ICsxMDkwLDkgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjphcHBlbmQoc3RkOjp1bmlxdWVfcHRyPFBhaW50aW5nT3BlcmF0aW9uPiYmIGNvbW1h
bmQKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQpKTsKIH0KIAordm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiwgQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikK
K3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBO
aWNvc2lhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmgKaW5kZXggODI2MGM0OGFkNzk4Njg0YzZlNTdjMWQ2NmRmYmU2ZDAxMDFjMWY0MS4u
ZGUyNGFiOGJkNTI0MzJjZTI5M2E4MGY2YjRmOTg2MGYyMjJmYTdmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtOTksNiAr
OTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYs
IFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgV2ViQ29yZTo6Q29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCmluZGV4IGQ2NDQ1ZDcwY2IzMDM3ZTcyYWUyOTA2ZDY2MzZlZmZiNDQ4MWQ3NTguLjU4OTQw
YTNiODEzNGRiMTk1MDVlNjkyMWQ1YTU2MzA5NTkxZTgzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC00MzYsNiArNDM2LDExIEBAIEZsb2F0UmVjdCBHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxvYXRS
ZWN0JiByZWN0CiAgICAgcmV0dXJuIERpcmVjdDJEOjpTdGF0ZTo6cm91bmRUb0RldmljZVBpeGVs
cyhtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3sKKyAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBVU0UoRElSRUNUMkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5k
ZXggNDQyNWZkMjZhYmU4NTQ1MWQyYzAzMmYzNmEyNmE1N2VlMzFlMmIwZS4uOGYxMTE3NzY5M2E4
YmIxMGJjYjQ4NDc5ZjE5YTg4OTExMjgzY2FlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBs
RGlyZWN0MkQuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBQYXRo
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIENvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgYXBwbHlEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>