<?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>232814</bug_id>
          
          <creation_ts>2021-11-08 05:35:00 -0800</creation_ts>
          <short_desc>Cocoa GraphicsContext copies ImageBuffer data to temporary buffer when accelerated ImageBuffer is drawn to bitmap context</short_desc>
          <delta_ts>2022-02-19 08:17:25 -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>NEW</bug_status>
          <resolution></resolution>
          
          
          <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>
          <dependson>231471</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812577</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-08 05:35:00 -0800</bug_when>
    <thetext>Cocoa GraphicsContext copies ImageBuffer data to temporary buffer when accelerated ImageBuffer is drawn to bitmap context


This happens for example when a ImageBitmap is transferred from GPUP to WP.

IOSurface::createImage creates an image that will always copy the image data, even though it should be accessible from the IOSurface in most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812584</commentid>
    <comment_count>1</comment_count>
      <attachid>443539</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-08 06:03:23 -0800</bug_when>
    <thetext>Created attachment 443539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815027</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-15 05:35:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/85408510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843848</commentid>
    <comment_count>3</comment_count>
      <attachid>443539</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-19 08:17:25 -0800</bug_when>
    <thetext>Comment on attachment 443539
Patch

Is this still needed?

Clearing old review flag. Please rebase and mark for review if necessary.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443539</attachid>
            <date>2021-11-08 06:03:23 -0800</date>
            <delta_ts>2022-02-19 08:17:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232814-20211108160321.patch</filename>
            <type>text/plain</type>
            <size>68621</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY5ZTBhZjM4ODU0MDM4
NTNhNDgzMzgzZDUyYjM1YjQ5MTQwZTdiOS4uMDY1MzcwNzlkMTM2MzM3NGEyMzIzNWIxNTM4ZjY1
OTMyMTJmMjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDIxLTExLTA4ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ29jb2EgR3JhcGhp
Y3NDb250ZXh0IGNvcGllcyBJbWFnZUJ1ZmZlciBkYXRhIHRvIHRlbXBvcmFyeSBidWZmZXIgd2hl
biBhY2NlbGVyYXRlZCBJbWFnZUJ1ZmZlciBpcyBkcmF3biB0byBiaXRtYXAgY29udGV4dAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBlbnVtIEJh
Y2tpbmdTdG9yZUNvcHkgZnJvbSBJbWFnZUJ1ZmZlckJhY2tlbmQuaCB0bworICAgICAgICBlbnVt
IGNsYXNzIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciBpbiBpdHMgb3duIGhlYWRlciBmaWxlLgor
ICAgICAgICBVc2UgQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yIGluIElPU3VyZmFjZSB0byBsZXQg
Y2FsbGVyIHNwZWNpZnkKKyAgICAgICAgZG9lcyBpdCB3YW50IHRoZSBDR0ltYWdlIHRvIGJlIGRl
dGFjaGVkIGZyb20gdGhlIElPU3VyZmFjZQorICAgICAgICBvciBub3QuCisgICAgICAgIFVzaW5n
IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlIGF2b2lkcyBhIGZ1bGwgY29weQor
ICAgICAgICB3aGVuIGEgSU9TdXJmYWNlLWJhY2tlZCBJbWFnZUJ1ZmZlciBpcyBkcmF3biB0byBh
IGJpdG1hcCBjb250ZXh0LgorICAgICAgICBUaGlzIGlzIGJlY2F1c2UgQmFja2luZ1N0b3JlQ29w
eUJlaGF2aW9yOjpDb3B5IHdvdWxkIG5lZWQgdG8gc3RvcmUKKyAgICAgICAgdGhlIGJ5dGVzIGlu
IGEgaW50ZXJtZWRpYXRlIGJ1ZmZlciwgd2hlcmUgYXMgdGhlIAorICAgICAgICBCYWNraW5nU3Rv
cmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSBpcyBhYmxlIHRvIG1hcCB0aGUgY29udGVudHMuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBzbWFsbCBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IHBlYWsg
dXNlIGNoYW5nZS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZElt
YWdlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50Ojpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAg
ICAgICogaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2Ny
ZWVuQ2FudmFzOjpjb3BpZWRJbWFnZSBjb25zdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZVNvdXJjZUhlbHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJbnRvQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZpZGVvRnJhbWVUb0ltYWdl
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yLmg6IEFk
ZCBuZXcgZmlsZSBmb3IgdGhlIGVudW0uCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJ
bnRvTmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpk
cmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFk
b3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFNoYWRvd0J1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Q2Fpcm86OmNsaXBUb0ltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
Y2xpcFRvTWFzayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VD
b2VyY2VUb0ltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y29weUltYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQ0dCYWNrZW5kOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
Q0dCYWNrZW5kOjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
QmFja2VuZDo6Y2xpcFRvTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6Y29weUNHSW1hZ2VGb3JFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNvcHlOYXRpdmVJbWFnZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjb3B5SW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlSW1hZ2UpOiBEZWxldGVkLgorICAgICAgICBSZW5h
bWUgY3JlYXRlSW1hZ2UgdG8gY29weUltYWdlIHRvIG1hdGNoIEltYWdlQml0bWFwOjpjb3B5SW1h
Z2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcDoKKyAgICAgICAgKE5pY29z
aWE6OkdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHREaXJlY3QyRDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpjb3B5
SW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tl
bmQ6OnNpbmtJbnRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEaXJlY3Qy
REJhY2tlbmQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0
ZW1QcmV2aWV3QmFkZ2UpOgorCiAyMDIxLTExLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5l
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1LCBHUFUgUHJvY2Vzcyk6
IEZhaWxzIHRvIGxvYWQgdGV4dHVyZSBtYXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGU4MTk5NmZhM2RmMWFmMmJl
NDcwYWVmZDJlYmViODlhZGFlZDg3My4uNzFkNmE4Mjk3NTliODU5ZDkyZGYxZmI1ZGYxOGEwNjBm
NGRjOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMS0wOCAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIENvY29hIEdyYXBoaWNzQ29u
dGV4dCBjb3BpZXMgSW1hZ2VCdWZmZXIgZGF0YSB0byB0ZW1wb3JhcnkgYnVmZmVyIHdoZW4gYWNj
ZWxlcmF0ZWQgSW1hZ2VCdWZmZXIgaXMgZHJhd24gdG8gYml0bWFwIGNvbnRleHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjgxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBlbnVtIEJhY2tp
bmdTdG9yZUNvcHkgY2hhbmdlZCB0byBlbnVtIGNsYXNzIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlv
ciBpbiAKKyAgICAgICAgaXRzIG93biBoZWFkZXIgZmlsZSB0byBzdXBwb3J0IHBhc3NpbmcgaXQg
dG8gYWRkZWQgZnVuY3Rpb24gSU9TdXJmYWNlOjpjb3B5SW1hZ2UuCisKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb3B5TmF0
aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNw
bGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmll
d1NuYXBzaG90U3RvcmVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6YXNJ
bWFnZUZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZSBjb25zdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjb3B5
SW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oOgorCiAyMDIxLTExLTA1ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
aU9TIDE1LCBHUFUgUHJvY2Vzcyk6IEZhaWxzIHRvIGxvYWQgdGV4dHVyZSBtYXAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDUxNmIwNGU0Mzg1YTZjZmM2NjM3YWM1MjI1ZWM4YjE2YmM2NDYyZTcuLjE2
ZGRkMDYwZGUwM2FkOWY5MzdmMDJhMDVhYjIyYWRlMWMyYWYwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTIzNyw2ICsxMjM3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0F1ZGlvVHJhY2tQcml2YXRlQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9CYWNraW5n
U3RvcmVDb3B5QmVoYXZpb3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFw
aGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTk5NjM3MjM4YWFmNDZhNzk5N2MyYzhkZTQx
NmI0Y2FjZDQ2NTkxMS4uOGRjODI4Y2U4NzlkNzk3OWEwYTkzOTNjMDE5YjMzNjFlODVlOTg1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjM1Nyw2ICsyMzU3LDcgQEAKIAkJN0FGOUIyMEYxOENGQjVGNDAwQzY0QkVGIC8qIEpT
VlRUUmVnaW9uTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGOUIyMEIxOENGQjVGMzAwQzY0QkVGIC8qIEpTVlRUUmVnaW9uTGlzdC5oICovOyB9
OwogCQk3QjEwMzM5RTI1NDk3MjE3MDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxMDMzOUQyNTQ5
NzIwMTAwQzhDMUFDIC8qIEdyYXBoaWNzQ29udGV4dEdMQ1YuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QjEwMzM5RjI1NDk3MjFFMDBDOEMxQUMg
LyogR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyogR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJN0IyMTBBMkEyNzM1QzM0NjAwQ0IwRjVFIC8qIEJhY2tpbmdTdG9yZUNvcHlC
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IyMTBBMjgyNzM1QzM0NTAwQ0IwRjVFIC8qIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCNjA5NERE
MjcwQzQ0QkQwMDY0ODM1QyAvKiBBTkdMRVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0JCMzRBMTYyNTM0NUNCMjAwMDI5RDA4IC8qIEFO
R0xFVXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJN0I2REM4MTkyNTcxMkU5MjAwMzgwQzcwIC8qIEdyYXBoaWNzQ29udGV4dEdMSU9T
dXJmYWNlU3dhcENoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjZEQzgxNzI1NzEyRTkyMDAzODBDNzAgLyogR3JhcGhpY3NDb250ZXh0R0xJT1N1
cmZhY2VTd2FwQ2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3QjczMTFGQjI1QzA5MkI3MDAzQjI3OTYgLyogU2NvcGVkSGlnaFBlcmZvcm1h
bmNlR1BVUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0I3MzExRkEyNUMwOTJCNzAwM0IyNzk2IC8qIFNjb3BlZEhpZ2hQZXJmb3JtYW5jZUdQ
VVJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTA3MDgsNiArMTA3MDksNyBAQAogCQk3QjEwMzM5QzI1NDk3MjAxMDBDOEMxQUMgLyog
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4
dEdMQ1ZBTkdMRS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjEwMzM5RDI1NDk3
MjAxMDBDOEMxQUMgLyogR3JhcGhpY3NDb250ZXh0R0xDVi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHcmFw
aGljc0NvbnRleHRHTENWLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMTYxOTEw
MjcxOTg4MEUwMEM0MEVBQyAvKiBXZWJQcm9jZXNzR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjIxMEEyODI3MzVD
MzQ1MDBDQjBGNUUgLyogQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjY0QzBCNDI1NEMzQjE2MDAwNkI0QUYgLyogUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUJhc2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlCYXNlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdCNkRDODE1MjU3MTJFOTEwMDM4MEM3MCAvKiBHcmFwaGljc0NvbnRleHRH
TElPU3VyZmFjZVN3YXBDaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCNkRDODE3MjU3MTJFOTIwMDM4MEM3MCAvKiBHcmFwaGljc0Nv
bnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHcmFwaGljc0NvbnRleHRHTElPU3VyZmFjZVN3YXBDaGFpbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg2MTEsMTEgKzE4NjEzLDExIEBACiAJCTFBNTY5Q0M0MEQ3RTJC
NjAwMDdDMzk4MyAvKiBicmlkZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTU5QjU5NzcxMTEwODY1NTYwMDcxNTlFOCAvKiBqc2MgKi8sCisJCQkJMUE1
NjlDRTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamMgKi8sCiAJCQkJNTk5RTc1OEYxMTA1NUExRjAw
RDkwNEZBIC8qIEJyaWRnZS5oICovLAogCQkJCTFBNzFENTc5MEYzMzgxOTAwMEY5Q0U0RSAvKiBJ
ZGVudGlmaWVyUmVwLmNwcCAqLywKIAkJCQkxQTcxRDU3QTBGMzM4MTkwMDBGOUNFNEUgLyogSWRl
bnRpZmllclJlcC5oICovLAotCQkJCTU5QjU5NzcxMTEwODY1NTYwMDcxNTlFOCAvKiBqc2MgKi8s
Ci0JCQkJMUE1NjlDRTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamMgKi8sCiAJCQkJMUE1NjlDRUYw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovLAogCQkJCTFBNTY5Q0YwMEQ3
RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggKi8sCiAJCQkJMUE1NjlDRjEwRDdFMkI4
MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCAqLywKQEAgLTI3MTM1LDYgKzI3MTM3LDcg
QEAKIAkJCQk3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmgg
Ki8sCiAJCQkJQkVGMjlFRTkxNzE1REQwOTAwQzRCNEM5IC8qIEF1ZGlvVHJhY2tQcml2YXRlLmgg
Ki8sCiAJCQkJQ0QxRjlCMTUyNzAyMzYwRTAwNjE3RUI2IC8qIEF1ZGlvVHJhY2tQcml2YXRlQ2xp
ZW50LmggKi8sCisJCQkJN0IyMTBBMjgyNzM1QzM0NTAwQ0IwRjVFIC8qIEJhY2tpbmdTdG9yZUNv
cHlCZWhhdmlvci5oICovLAogCQkJCTJERDg3MTQ3MjY1RjQzNjQwMDVGOTk3QyAvKiBCaWZ1cmNh
dGVkR3JhcGhpY3NDb250ZXh0LmNwcCAqLywKIAkJCQkyREQ4NzE0OTI2NUY0MzY1MDA1Rjk5N0Mg
LyogQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCUE4OTk0MzI3MEI0MjMzODcw
MEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCkBAIC0zMTg0MSw2ICszMTg0NCw3IEBACiAJ
CQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUExQjg3RDIwODdDNEMwMDA5NzlBNzUgLyog
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IyMTBBMkEy
NzM1QzM0NjAwQ0IwRjVFIC8qIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxMjRFRTgwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzMTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9D
b250ZXh0LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q3VzdG9tUGFpbnRDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENh
bnZhcy5jcHAKaW5kZXggMmMxYTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4u
YTFlZDJmNTU5Mzk3ZmJmZGFlYzcxMGYxNzgyOWE0N2U0YTQ1YjEwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBJbWFnZSog
Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlKCkgY29uc3QKICAgICAgICAgbV9jb250ZXh0
LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogICAgIG1fZGVzdGluYXRpb25HcmFw
aGljc0NvbnRleHQgPSBudWxscHRyOwogCi0gICAgbV9jb3BpZWRJbWFnZSA9IG1fY29waWVkQnVm
ZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6
WWVzKTsKKyAgICBtX2NvcGllZEltYWdlID0gbV9jb3BpZWRCdWZmZXItPmNvcHlJbWFnZShCYWNr
aW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSwgUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
OwogICAgIHJldHVybiBtX2NvcGllZEltYWdlLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDZjYWY3OGJlZjJlYjA2Y2YwYTY3ZDFhMWM4
MTE3NWYzNjRhOTA1NzUuLjhhMGJlMDI0MGE1MGJkN2EzNTc3OWZhZWU0MWIxY2E4YjQ5MDM4MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC05MjEsNyAr
OTIxLDcgQEAgSW1hZ2UqIEhUTUxDYW52YXNFbGVtZW50Ojpjb3BpZWRJbWFnZSgpIGNvbnN0CiAg
ICAgaWYgKCFtX2NvcGllZEltYWdlICYmIGJ1ZmZlcigpKSB7CiAgICAgICAgIGlmIChtX2NvbnRl
eHQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCk7Ci0gICAgICAgIG1fY29waWVkSW1hZ2UgPSBidWZmZXIoKS0+Y29weUltYWdlKENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKKyAgICAgICAgbV9jb3BpZWRJbWFn
ZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5LCBQ
cmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgfQogICAgIHJldHVybiBtX2NvcGllZEltYWdl
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRk
MTY1OTY4NGQxYjYxN2M3NmRmODFhNGIwMGYwNWI3YzdmNTBkOWYuLmUxODgyMjk1OGIyYzI0Yjk4
MGVlYTlmMjc3MDI4MGM1NzNjMjgxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCBJbWFnZSogT2Zmc2NyZWVuQ2FudmFzOjpjb3Bp
ZWRJbWFnZSgpIGNvbnN0CiAgICAgaWYgKCFtX2NvcGllZEltYWdlICYmIGJ1ZmZlcigpKSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCk7Ci0gICAgICAgIG1fY29waWVkSW1hZ2UgPSBidWZmZXIoKS0+
Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKKyAg
ICAgICAgbV9jb3BpZWRJbWFnZSA9IGJ1ZmZlcigpLT5jb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29w
eUJlaGF2aW9yOjpDb3B5LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CiAgICAgfQogICAgIHJl
dHVybiBtX2NvcGllZEltYWdlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAzMzkyNWJj
NmFjOGQ4N2I0MTA2YjA2MzFlZDM0MjkwMzlhNzhhZmU0Li40YmNjZjY5ODkzZDYwOWE3NzMwMWU1
MmZhZmJlNWNkM2ViOTE0ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDg4NSw3ICs0ODg1LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VT
b3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkKICNlbmRpZiAvLyAhVVNFKEFOR0xFKQogCiAgICAg
ICAgIC8vIEZhbGxiYWNrIHB1cmUgU1cgcGF0aC4KLSAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IGJ1ZmZlci0+Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhh
dmlvcjo6UmVmZXJlbmNlKTsKICAgICAgICAgLy8gVGhlIHByZW11bHRpcGx5QWxwaGEgYW5kIGZs
aXBZIHBpeGVsIHVucGFjayBwYXJhbWV0ZXJzIGFyZSBpZ25vcmVkIGZvciBJbWFnZUJpdG1hcHMu
CiAgICAgICAgIGlmIChpbWFnZSkKICAgICAgICAgICAgIHRleEltYWdlSW1wbChmdW5jdGlvbklE
LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNl
dCwgZm9ybWF0LCB0eXBlLCBpbWFnZS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkRPTVNvdXJj
ZTo6SW1hZ2UsIGZhbHNlLCBiaXRtYXAtPnByZW11bHRpcGx5QWxwaGEoKSwgYml0bWFwLT5mb3Jj
aWJseVByZW11bHRpcGx5QWxwaGEoKSwgc291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1h
Z2VIZWlnaHQpOwpAQCAtNTA2NSw3ICs1MDY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VTb3VyY2VIZWxwZXIoVGV4SW1hZ2VGdW5jdGkK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIEZhbGxiYWNrIHB1cmUgU1cgcGF0aC4KLSAgICAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLmdldCgpLCBEb250
Q29weUJhY2tpbmdTdG9yZSwgZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IHZpZGVvRnJhbWVUb0ltYWdlKHZpZGVvLmdldCgpLCBCYWNraW5nU3RvcmVDb3B5QmVo
YXZpb3I6OlJlZmVyZW5jZSwgZnVuY3Rpb25OYW1lKTsKICAgICAgICAgaWYgKCFpbWFnZSkKICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIHRleEltYWdlSW1wbChmdW5jdGlvbklELCB0
YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwg
Zm9ybWF0LCB0eXBlLCBpbWFnZS5nZXQoKSwgR3JhcGhpY3NDb250ZXh0R0w6OkRPTVNvdXJjZTo6
VmlkZW8sIG1fdW5wYWNrRmxpcFksIG1fdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgZmFsc2UsIGlu
cHV0U291cmNlSW1hZ2VSZWN0LCBkZXB0aCwgdW5wYWNrSW1hZ2VIZWlnaHQpOwpAQCAtNTg5NCwx
MiArNTg5NCwxMiBAQCBSZWZQdHI8SW1hZ2U+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRy
YXdJbWFnZUludG9CdWZmZXIoSW1hZ2UmIGltYWdlLCBpbnQgdwogICAgIEZsb2F0UmVjdCBzcmNS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKTsKICAgICBidWYtPmNvbnRleHQoKS5kcmF3SW1hZ2UoaW1hZ2Us
IGRlc3RSZWN0LCBzcmNSZWN0KTsKLSAgICByZXR1cm4gYnVmLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOworICAgIHJldHVybiBidWYtPmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5
QmVoYXZpb3I6OlJlZmVyZW5jZSk7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCiAKLVJlZlB0cjxJ
bWFnZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZp
ZGVvRWxlbWVudCogdmlkZW8sIEJhY2tpbmdTdG9yZUNvcHkgYmFja2luZ1N0b3JlQ29weSwgY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lKQorUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjp2aWRlb0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgQmFja2lu
Z1N0b3JlQ29weUJlaGF2aW9yIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciwgY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lKQogewogICAgIC8vIEZJWE1FOiBXaGVuIHRleEltYWdlMkQgaXMgcGFzc2Vk
IGFuIEhUTUxWaWRlb0VsZW1lbnQsIGltcGxlbWVudGF0aW9ucwogICAgIC8vIGludGVyb3BlcmFi
bHkgdXNlIHRoZSBuYXRpdmUgUkdCIGNvbG9yIHZhbHVlcyBvZiB0aGUgdmlkZW8gZnJhbWUgKGUu
Zy4KQEAgLTU5NDQsNyArNTk0NCw3IEBAIFJlZlB0cjxJbWFnZT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6dmlkZW9GcmFtZVRvSW1hZ2UoSFRNTFZpZGVvRWxlbWVudCogdmlkCiAgICAgfQog
ICAgIHZpZGVvLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLCB7IHsgfSwgdmlkZW9TaXplIH0pOwogI2VuZGlmCi0gICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoYmFja2luZ1N0b3JlQ29weSk7CisgICAgUmVmUHRy
PEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weUJl
aGF2aW9yKTsKICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdy
YXBoaWNzQ29udGV4dEdMOjpPVVRfT0ZfTUVNT1JZLCBmdW5jdGlvbk5hbWUsICJvdXQgb2YgbWVt
b3J5Iik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDY1MjRjOTE3
Mzc1NzA5YTJjNjUwZTJhYjgxNjEzOWRmNTA1ODE2MDguLjBiYWI5MDgxZjYyMmM1OTc4MzA5MTQ0
NGJlNjYwNGUwMTlhYjRiMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUyOSw3ICs1MjksNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPEltYWdlPiBkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlJiwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgZGV2aWNlU2NhbGVGYWN0b3IsIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSk7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgUmVmUHRyPEltYWdlPiB2aWRl
b0ZyYW1lVG9JbWFnZShIVE1MVmlkZW9FbGVtZW50KiwgQmFja2luZ1N0b3JlQ29weSwgY29uc3Qg
Y2hhciogZnVuY3Rpb25OYW1lKTsKKyAgICBSZWZQdHI8SW1hZ2U+IHZpZGVvRnJhbWVUb0ltYWdl
KEhUTUxWaWRlb0VsZW1lbnQqLCBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IsIGNvbnN0IGNoYXIq
IGZ1bmN0aW9uTmFtZSk7CiAjZW5kaWYKIAogICAgIFdlYkdMVGV4dHVyZTo6VGV4dHVyZUV4dGVu
c2lvbkZsYWcgdGV4dHVyZUV4dGVuc2lvbkZsYWdzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHlCZWhhdmlv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVjODVjNTkxYTZhNDk5ZGNkYWZjYWNkODNiYjg0OGUyM2I5NTA5MmYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CYWNr
aW5nU3RvcmVDb3B5QmVoYXZpb3IuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
c3RkaW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQmFja2luZyBzdG9yZSBjb3B5
IGJlaGF2aW9yIGRlZmluZXMgaG93IHRoZSBiYWNraW5nIHN0b3JlIGlzIHJlZmVyZW5jZWQgd2hl
bgorLy8gYSBiaXRtYXAgaW1hZ2UgdHlwZSBpcyBjb3BpZWQgdG8gb3IgdHJhbnNmb3JtZWQgdG8g
b3RoZXIgYml0bWFwIGltYWdlIHR5cGUuCitlbnVtIGNsYXNzIEJhY2tpbmdTdG9yZUNvcHlCZWhh
dmlvciA6IHVpbnQ4X3QgeworICAgIENvcHkgPSAwLCAvLyBHdWFyYW50ZWUgb3JpZ2luYWwgaW1h
Z2UgYW5kIHRoZSBjb3B5IGFyZSBpbmRlcGVuZGVudC4gTW9kaWZ5aW5nIG9uZSBkb2VzIG5vdCBt
b2RpZnkgdGhlIG90aGVyLgorICAgIFJlZmVyZW5jZSA9IDEgLy8gQmFja2luZyBzdG9yZSBtYXkg
YmUgcmVmZXJlbmNlZCBieSB0aGUgY29waWVkIGltYWdlLiBUaGUgY29udGVudHMgb2YgYm90aCBv
ZiB0aGUgaW1hZ2VzIGFyZSB1bmRlZmluZWQgaWYgZWl0aGVyIG9mIHRoZSBpbWFnZXMgYXJlIG1v
ZGlmaWVkLgorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4IDk1MWFlOWJlMzgyYzEzZmQ5NzI4OWVi
NDMyM2JhZTQzOWM2MzIzZTYuLjIzNzI4MGEzYjQ4ZGNmOGJhZWZmNmU2YzUzZjgyZTM2NTU4OTli
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRl
SW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1l
dGVycyk7CiAgICAgfQogCi0gICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZQorICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHlCZWhhdmlvciBjb3B5QmVoYXZpb3IgPSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6
OkNvcHkpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9
IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q29uY3Jl
dGVJbWFnZUJ1ZmZlciY+KCp0aGlzKS5mbHVzaERyYXdpbmdDb250ZXh0KCk7CkBAIC0xMjgsNyAr
MTI4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9
IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24g
PSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZQorICAgIFJlZlB0cjxJbWFn
ZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciBjb3B5QmVoYXZpb3IgPSBCYWNr
aW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHksIFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJl
c29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAg
ICAgICAgICAgICBjb25zdF9jYXN0PENvbmNyZXRlSW1hZ2VCdWZmZXImPigqdGhpcykuZmx1c2hE
cmF3aW5nQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKaW5kZXggZjNmZDJmYjY0NjhjZmI3OTM0NTdmYzMwMTg0NzE5MDM3YjBiOGY1
ZC4uYmE1NTZhOWYxYzQxMWMzMGJjMjg2ZWQ4MmZkMmQ0YmI4ZDEzZDMxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlQ29weUJlaGF2aW9y
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Rmx1c2hJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXJCYWNrZW5kLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nTW9kZS5oIgpAQCAt
MTA1LDggKzEwNiw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFRo
cmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IGNyZWF0ZUZsdXNoZXIoKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SW1h
Z2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2Vy
dmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eUJlaGF2aW9yID0gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5KSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZp
b3IgPSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHksIFByZXNlcnZlUmVzb2x1dGlvbiA9
IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBp
bWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJv
bSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAppbmRleCBjNjhk
MzE4ZDNmMzllN2M0NmE0NTMyMGI4ODhlYzFiYWRjMTQ0ODhhLi42MTNjMjk4OGUxYjM0OTg3Njc2
MzEwZjE4ZWYwYTExYmI4Nzc3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAgLTU3LDEyICs1NywxMiBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmQ6On5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CiAK
IFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUlt
YWdlKCkKIHsKLSAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKKyAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6
UmVmZXJlbmNlKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJ
bnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikKIHsKLSAgICBy
ZXR1cm4gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCBwcmVzZXJ2ZVJlc29sdXRpb24p
OworICAgIHJldHVybiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpSZWZlcmVu
Y2UsIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpk
cmF3Q29uc3VtaW5nKEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggYTIwZjQ0
YTNiYmFmNmU5NWJmMjExNDYzN2I5NzJkNDI2YjE1MWU4MC4uZmYzYWFhODU1Mjg2ZjAyOTc1ZmM4
NTg3MzM1OTBjYjc0YWY3MTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IuaCIKICNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKQEAgLTQ1LDExICs0Niw2IEBAIGNsYXNzIEltYWdl
OwogY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQaXhlbEJ1ZmZlcjsKIAotZW51bSBCYWNraW5n
U3RvcmVDb3B5IHsKLSAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBHdWFyYW50ZWUgc3Vic2VxdWVu
dCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCi0gICAgRG9udENvcHlCYWNraW5nU3RvcmUg
Ly8gU3Vic2VxdWVudCBkcmF3cyBtYXkgYWZmZWN0IHRoZSBjb3B5LgotfTsKLQogZW51bSBjbGFz
cyBQcmVzZXJ2ZVJlc29sdXRpb24gOiB1aW50OF90IHsKICAgICBObywKICAgICBZZXMsCkBAIC05
MCw4ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBiYWNrZW5kU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+
IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5KSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcikgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yLCBQcmVz
ZXJ2ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDE1NTIzNTZhMjNhNWZkZmIx
MGFmZWNhMmNjOTJhNzI3OTQ1ODEwMmUuLjhhOTRlZWVkNmExYmNiMGNiMGNhMDMwODQ1OTFiODJm
ZmE4ZGMzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIGVudW0g
UGF0aERyYXdpbmdTdHlsZSB7CiAKIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihH
cmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYgbGF5ZXJJ
bWFnZSwgY29uc3QgRmxvYXRQb2ludCYgbGF5ZXJPcmlnaW4sIGNvbnN0IEZsb2F0U2l6ZSYgbGF5
ZXJTaXplLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8g
bmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSkpIHsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlKSkgewogICAgICAgICBk
cmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXll
clNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRl
Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFk
b3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIHZvaWQgZHJh
d1NoYWRvd0xheWVyQnVmZmVyKEdyYXBoaWNzQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IEltYWdlQnUKIC8vIEZJWE1FOiBUaGlzIGlzIG1vc3RseSBzYW1lIGFzIGRyYXdTaGFkb3dMYXll
ckJ1ZmZlciwgc28gd2Ugc2hvdWxkIG1lcmdlIHR3by4KIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJ
bWFnZShHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYg
bGF5ZXJJbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7Ci0gICAgaWYgKGF1dG8g
bmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSkpIHsKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGxheWVySW1hZ2UuY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlKSkgewogICAgICAgICBk
cmF3UGxhdGZvcm1JbWFnZShwbGF0Zm9ybUNvbnRleHQsIG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBv
c2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsK
ICAgICB9CiB9CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHZvaWQgZmlsbFNoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYKIHsK
ICAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZSgpOwogCi0gICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2Ug
PSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAg
aWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBsYXllckltYWdlLmNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSkpCiAgICAgICAgIGNsaXBUb0ltYWdlQnVmZmVy
KHBsYXRmb3JtQ29udGV4dCwgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgRmxv
YXRSZWN0KGxheWVyT3JpZ2luLCBleHBhbmRlZEludFNpemUobGF5ZXJTaXplKSkpOwogCiAgICAg
RmlsbFNvdXJjZSBmaWxsU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDE2NWM2ZGJmZTIwMjIzMTczOTNmZTU0NjdiOTIyMDI2YjUyYWE4OWIuLmJhMjRlMjVmZjFiNWQ2
NGUzZDlhODc1NGZkZGQ0MTY0M2EyNzExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5j
cHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBJbnRSZWN0IEdyYXBoaWNzQ29udGV4dENhaXJvOjpjbGlw
Qm91bmRzKCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHRDYWlybzo6Y2xpcFRvSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKIHsK
LSAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IGJ1ZmZlci5jb3B5TmF0aXZlSW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpKQorICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gYnVmZmVyLmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSkpCiAgICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqdGhpcywgbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1h
Z2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZC5jcHAKaW5kZXggOTZjNzYxMzU0MWJkYzY1OGE3ODdhYjAzZTc3ODE4ODM0ZDMxODVjNC4uNWMx
MGU3MmM5ODAxMWU1YWMwNWYwMWQxZDNjZDEyNWQwNWMxMzlmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kLmNwcApAQCAtNDUsNyArNDUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAor
UmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHlCZWhhdmlvciBjb3B5QmVoYXZpb3IsIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QK
IHsKICAgICAvLyBCaXRtYXBJbWFnZSB3aWxsIHJlbGVhc2UgdGhlIHBhc3NlZCBpbiBzdXJmYWNl
IG9uIGRlc3RydWN0aW9uCiAgICAgcmV0dXJuIEJpdG1hcEltYWdlOjpjcmVhdGUoY29weU5hdGl2
ZUltYWdlKGNvcHlCZWhhdmlvcikpOwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdAogICAgIGlmICghZGVzdENvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKICAg
ICAgICAgLy8gSWYgdGhlcmUncyBubyBwbGF0Zm9ybUNvbnRleHQsIHdlJ3JlIHVzaW5nIHRocmVh
ZGVkIHJlbmRlcmluZywgYW5kIGFsbCB0aGUgb3BlcmF0aW9ucyBtdXN0IGJlIGRvbmUKICAgICAg
ICAgLy8gdGhyb3VnaCB0aGUgR3JhcGhpY3NDb250ZXh0LgotICAgICAgICBhdXRvIGltYWdlID0g
Y29weUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6
IERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgm
ZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6Q29w
eSA6IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlKTsKICAgICAgICAgZGVzdENv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZShkZXN0Q29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKICAgICBjb25zdCBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHRTdGF0ZSA9IGRlc3RDb250
ZXh0LnN0YXRlKCk7CiAKLSAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVz
dENvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tp
bmdTdG9yZSkpCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250
ZXh0ID09ICZjb250ZXh0KCkgPyBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHkgOiBCYWNr
aW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSkpCiAgICAgICAgIGRyYXdQbGF0Zm9ybUlt
YWdlKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgZGVzdGluYXRpb25Db250ZXh0
U3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBkZXN0aW5hdGlvbkNvbnRleHRTdGF0
ZS5hbHBoYSwgV2ViQ29yZTo6Q2Fpcm86OlNoYWRvd1N0YXRlKGRlc3RpbmF0aW9uQ29udGV4dFN0
YXRlKSk7CiB9CiAKQEAgLTczLDE4ICs3MywxOCBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbAog
ICAgIGlmICghZGVzdENvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsKICAgICAgICAgLy8g
SWYgdGhlcmUncyBubyBwbGF0Zm9ybUNvbnRleHQsIHdlJ3JlIHVzaW5nIHRocmVhZGVkIHJlbmRl
cmluZywgYW5kIGFsbCB0aGUgb3BlcmF0aW9ucyBtdXN0IGJlIGRvbmUKICAgICAgICAgLy8gdGhy
b3VnaCB0aGUgR3JhcGhpY3NDb250ZXh0LgotICAgICAgICBhdXRvIGltYWdlID0gY29weUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKKyAgICAgICAgYXV0byBpbWFnZSA9IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSk7CiAgICAgICAgIGltYWdlLT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlKSkKKyAgICBpZiAo
YXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/
IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6Q29weSA6IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlv
cjo6UmVmZXJlbmNlKSkKICAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpkZXN0Q29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgbG9naWNhbFNp
emUoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25z
KTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAg
IGlmIChhdXRvIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkK
KyAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVo
YXZpb3I6OlJlZmVyZW5jZSkpCiAgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqZGVz
dENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCks
IGRlc3RSZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKaW5kZXggMjRi
M2M0ZGM1NmZjZTcxMTZiYjg0MzkxYWIzMTAzNjM4YTM1NjJmMy4uM2VmNDdkNzA0MzI2MmI4ZTc5
ODNiYjcxZTViNGU4NzBkY2JjMTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
CkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKLSAg
ICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdT
dG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weUJl
aGF2aW9yID0gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5LCBQcmVzZXJ2ZVJlc29sdXRp
b24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGVhMDQ5
YTk5NTMyMTdjNjNiYmU3ZDQxM2NkYTdkYWE5NzI2MjIwZjEuLmMxOTVjZTc4M2M0ZDg0NDExNzU0
NzFiZDZlNGY5MTk1NmUxNzBmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kLmNwcApAQCAtNjUsMTAgKzY1LDEwIEBAIHVuc2lnbmVkIEltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZDo6Ynl0ZXNQZXJSb3coKSBjb25zdAogICAgIHJldHVybiBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9zdHJpZGUobV9zdXJmYWNlLmdldCgpKTsKIH0KIAotUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tlbmQ6OmNvcHlOYXRpdmVJ
bWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJ
bWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weUJlaGF2aW9yIGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBzd2l0Y2gg
KGNvcHlCZWhhdmlvcikgewotICAgIGNhc2UgQ29weUJhY2tpbmdTdG9yZTogeworICAgIGNhc2Ug
QmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5OiB7CiAgICAgICAgIGF1dG8gY29weSA9IGFk
b3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlKENBSVJPX0ZPUk1BVF9BUkdCMzIsCiAg
ICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKG1fc3VyZmFjZS5nZXQoKSksCiAg
ICAgICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChtX3N1cmZhY2UuZ2V0KCkpKSk7
CkBAIC04MSw3ICs4MSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlCiAgICAgICAgIHJldHVy
biBOYXRpdmVJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY29weSkpOwogICAgIH0KIAotICAgIGNhc2Ug
RG9udENvcHlCYWNraW5nU3RvcmU6CisgICAgY2FzZSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6
OlJlZmVyZW5jZToKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoUmVmUHRyIHsg
bV9zdXJmYWNlLmdldCgpIH0pOwogICAgIH0KIApAQCAtOTEsMTEgKzkxLDExIEBAIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlCiAKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDYWlyb1N1
cmZhY2VCYWNrZW5kOjpjYWlyb1N1cmZhY2VDb2VyY2VUb0ltYWdlKCkgY29uc3QKIHsKLSAgICBC
YWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcjsKKyAgICBCYWNraW5nU3RvcmVDb3B5QmVoYXZp
b3IgY29weUJlaGF2aW9yOwogICAgIGlmIChjYWlyb19zdXJmYWNlX2dldF90eXBlKG1fc3VyZmFj
ZS5nZXQoKSkgPT0gQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFICYmIGNhaXJvX3N1cmZhY2VfZ2V0
X2NvbnRlbnQobV9zdXJmYWNlLmdldCgpKSA9PSBDQUlST19DT05URU5UX0NPTE9SX0FMUEhBKQot
ICAgICAgICBjb3B5QmVoYXZpb3IgPSBEb250Q29weUJhY2tpbmdTdG9yZTsKKyAgICAgICAgY29w
eUJlaGF2aW9yID0gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpSZWZlcmVuY2U7CiAgICAgZWxz
ZQotICAgICAgICBjb3B5QmVoYXZpb3IgPSBDb3B5QmFja2luZ1N0b3JlOworICAgICAgICBjb3B5
QmVoYXZpb3IgPSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHk7CiAgICAgcmV0dXJuIGNv
cHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvU3VyZmFjZUJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGI2YjU2ZDg2NmJkZjBjZTczNmM3Y2ZlMGIxM2Fh
YjU1YTI2ZDk4Y2QuLjUyYjY1NmE5NDhmZGM5YTVlM2ExZWQyZWVmM2ZiODZkYzgxZDU4NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNlQmFja2VuZC5oCkBAIC00Miw3ICs0
Miw3IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHkpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2
ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBz
dGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZl
ckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwdXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlciYsIGNvbnN0IEludFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKaW5kZXggOGI4
OWU3ZmMyODQ5YjUwNjllNDcxMjc5NzM3YjBiNjBjMTEyMjA4YS4uMGJjMWU2M2JkZTk4NzljMDJj
MWY5MGRjMGJjZjdmM2Y5ZTE2NmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcApAQCAtMTE0
LDEzICsxMTQsMTMgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4gY3JlYXRlQml0bWFwSW1hZ2VBZnRl
clNjYWxpbmdJZk5lZWRlZChSZWZQdHI8TmF0aXZlSW1hZ2U+JiYKICAgICByZXR1cm4gQml0bWFw
SW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSk7CiB9CiAKLVJlZlB0cjxJbWFnZT4gSW1hZ2VC
dWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciwg
UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKK1JlZlB0cjxJbWFn
ZT4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZp
b3IgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdAogewogICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gaW1hZ2U7CiAgICAgaWYgKHJlc29sdXRp
b25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlv
bjo6WWVzKQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShjb3B5QmVoYXZpb3IpOwog
ICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
QmVoYXZpb3I6OlJlZmVyZW5jZSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdlQWZ0ZXJT
Y2FsaW5nSWZOZWVkZWQoV1RGTW92ZShpbWFnZSksIGxvZ2ljYWxTaXplKCksIGJhY2tlbmRTaXpl
KCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24pOwogfQogCkBAIC0xMzgs
NyArMTM4LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBGbG9hdFJlY3Qgc3JjUmVj
dFNjYWxlZCA9IHNyY1JlY3Q7CiAgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShyZXNvbHV0aW9uU2Nh
bGUoKSk7CiAKLSAgICBpZiAoYXV0byBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZSgmZGVzdENvbnRl
eHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9y
ZSkpCisgICAgaWYgKGF1dG8gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoJmRlc3RDb250ZXh0ID09
ICZjb250ZXh0KCkgPyBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHkgOiBCYWNraW5nU3Rv
cmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSkpCiAgICAgICAgIGRlc3RDb250ZXh0LmRyYXdOYXRp
dmVJbWFnZSgqaW1hZ2UsIGJhY2tlbmRTaXplKCksIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBv
cHRpb25zKTsKIH0KIApAQCAtMTQ5LDEzICsxNDksMTMgQEAgdm9pZCBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXQKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3Rl
ZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNjYWxlKCkpOwogCi0gICAgaWYgKGF1dG8gaW1hZ2Ug
PSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3Jl
IDogRG9udENvcHlCYWNraW5nU3RvcmUpKQorICAgIGlmIChhdXRvIGltYWdlID0gY29weUltYWdl
KCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpID8gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpD
b3B5IDogQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpSZWZlcmVuY2UpKQogICAgICAgICBpbWFn
ZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewotICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBj
b3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpSZWZlcmVuY2Up
OwogICAgIGlmICghbmF0aXZlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAKQEAgLTE5OCwx
MyArMTk4LDEzIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6
Y29weUNHSW1hZ2VGb3JFbmNvZGluZyhDRlN0cmluZ1JlZiBkCiAgICAgfQogCiAgICAgaWYgKHJl
c29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKSB7Ci0gICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjb3B5TmF0aXZlSW1h
Z2UoQ29weUJhY2tpbmdTdG9yZSk7CisgICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjb3B5TmF0
aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5KTsKICAgICAgICAgaWYgKCFu
YXRpdmVJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
Y3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkobmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgYmFja2VuZFNpemUoKSk7CiAgICAgfQotICAgIAotICAgIGF1dG8gbmF0aXZlSW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworCisgICAgYXV0byBu
YXRpdmVJbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJl
ZmVyZW5jZSk7CiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JhY2tlbmQuaAppbmRleCA1OGRhMTc5ODE4MDUyNGE4OTE4NWQ4ODM4NWU2YTk4MmRlN2ZlY2Fm
Li45NWE3MjliNWY1YTE0NzM4NzU2ZjQwMDdkNGM2OGY0MjI4MTMxYWY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQgOiBwdWJsaWMgSW1hZ2VCdWZmZXJCYWNrZW5kIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgdW5zaWduZWQgY2FsY3VsYXRlQnl0ZXNQZXJSb3coY29uc3QgSW50U2l6ZSYgYmFja2Vu
ZFNpemUpOwogCi0gICAgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlv
bjo6Tm8pIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHlCZWhhdmlvciA9IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6Q29weSwgUHJl
c2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IDAwNWE3ZWYzNzNjYjljNDIxMGMzNDkxM2ViY2Y0NDdhODIyZjIzZmYuLmRjMDAwMzY5OGNi
Y2YxODhkNmRhODEwNjA4YWM3YWQ2YmI1MGYzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTEzNSwxMyArMTM1LDEzIEBAIHVuc2lnbmVkIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpieXRlc1BlclJvdygpIGNvbnN0CiAgICAgcmV0dXJuIGNhbGN1bGF0ZUJ5
dGVzUGVyUm93KGJhY2tlbmRTaXplKTsKIH0KIAotUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29w
eUJlaGF2aW9yKSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciBjb3B5QmVo
YXZpb3IpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChjb3B5QmVoYXZpb3IpIHsKLSAgICBjYXNlIENv
cHlCYWNraW5nU3RvcmU6CisgICAgY2FzZSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHk6
CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKSkpOwogCi0gICAgY2Fz
ZSBEb250Q29weUJhY2tpbmdTdG9yZToKKyAgICBjYXNlIEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlv
cjo6UmVmZXJlbmNlOgogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNp
emUoKTsKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdl
Q3JlYXRlKAogICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVp
Z2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmgKaW5kZXggMDdmMjhlNDU1ZTdiNDNhNTQxNDQxNzQ5OTBiN2QxYjdiYTZjNGUzMi4uYjJlNWVk
MDgxZjAwM2ZkMjVlY2E0NDIzZjA5ZjRhYzY0ZTk4Mzc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgYmFj
a2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5QmVoYXZpb3IgPSBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHkpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gZ2V0UGl4ZWxCdWZm
ZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZm
ZXImLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggY2ZkYmE1YjE3ODU2ZTVmODhhODFkNTNiYzMy
ZWQxYmIzNTBmOTIwNC4uZTY5Nzc0OTZiODUzNzM0ZGJlMzRhODk0ZGU3OTk5NmM0MjJjZjNjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCkBAIC0xNjUsOSArMTY1LDkg
QEAgdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmludmFsaWRhdGVDYWNoZWROYXRp
dmVJbWFnZSgpIGNvbnN0CiAgICAgY29udGV4dCgpLmZpbGxSZWN0KHsgfSk7CiB9CiAKLVJlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1h
Z2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2
aW9yIGNvcHlCZWhhdmlvcikgY29uc3QKIHsKLSAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShtX3N1cmZhY2UtPmNyZWF0ZUltYWdlKCkpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKG1fc3VyZmFjZS0+Y29weUltYWdlKGNvcHlCZWhhdmlvcikpOwogfQogCiBSZWZQdHI8TmF0
aXZlSW1hZ2U+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2lua0ludG9OYXRpdmVJbWFn
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IDMxMzg4YjRlYjE1MmQx
OGY5NzQ3ODA3ZWU3ZDdiMzE5YmE5NThjOGQuLmI2ZWI5ZmMwNmY0OWM3YjEwN2ZiYjU4YmMzZGJh
M2M3MWZhNTk0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC01NCw4
ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCiAg
ICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIAotICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFj
a2luZ1N0b3JlKSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciA9IEJhY2tpbmdTdG9yZUNvcHlC
ZWhhdmlvcjo6Q29weSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBz
aW5rSW50b05hdGl2ZUltYWdlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
aAppbmRleCA1NjUyNDc4MjJkYmEyOWY3NjAwYjk0MDdlNmY0YWNiOGMxYTA2YWFjLi4yYzE2Y2Vl
ZDYzNjRjYWE0ZjdkMTY0ZjYxMjU0MjE3MTE5ZWJlZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVDb3B5QmVo
YXZpb3IuaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJ
bnRTaXplLmgiCiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CkBAIC0xMjAsNyArMTIxLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gQW55IGltYWdlcyBjcmVhdGVkIGZyb20gYSBzdXJmYWNlIG5lZWQgdG8g
YmUgcmVsZWFzZWQgYmVmb3JlIHJlbGVhc2luZwogICAgIC8vIHRoZSBzdXJmYWNlLCBvciBhbiBl
eHBlbnNpdmUgR1BVIHJlYWRiYWNrIGNhbiByZXN1bHQuCi0gICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IgPSBC
YWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHkpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc2lua0ludG9JbWFnZShzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPik7CiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCmluZGV4IDAxMTE2NWNlMTFhYmNlNjc1
YzRiNDdiZjkxNWQ0YzgxZTZjZWU5OTUuLjYzODA4MzJmMmUwYWI4NmMwZDJmMzgzZDBjY2FlNDNm
YzE3ZThlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2UubW0KQEAgLTI3MywxNCArMjczLDE2IEBAIE1hY2hTZW5kUmlnaHQgSU9T
dXJmYWNlOjpjcmVhdGVTZW5kUmlnaHQoKSBjb25zdAogICAgIHJldHVybiBNYWNoU2VuZFJpZ2h0
OjphZG9wdChJT1N1cmZhY2VDcmVhdGVNYWNoUG9ydChtX3N1cmZhY2UuZ2V0KCkpKTsKIH0KIAot
UmV0YWluUHRyPENHSW1hZ2VSZWY+IElPU3VyZmFjZTo6Y3JlYXRlSW1hZ2UoKQorUmV0YWluUHRy
PENHSW1hZ2VSZWY+IElPU3VyZmFjZTo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlv
ciBjb3B5QmVoYXZpb3IpCiB7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlSW1hZ2UoZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICBpZiAoY29weUJlaGF2
aW9yID09IEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6Q29weSkKKyAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UoZW5zdXJlUGxhdGZvcm1Db250ZXh0
KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGVJbWFnZVJl
ZmVyZW5jZShlbnN1cmVQbGF0Zm9ybUNvbnRleHQoKSkpOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IHN1cmZhY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRl
SW1hZ2VSZWZlcmVuY2Uoc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICBy
ZXR1cm4gc3VyZmFjZS0+Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJl
bmNlKTsKIH0KIAogdm9pZCBJT1N1cmZhY2U6OnNldENvbnRleHRTaXplKEludFNpemUgY29udGV4
dFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCmluZGV4IDk5MGM3MWZhNDc0MzBmNTkzZTJjMjRjMGI3OWQ3OTU4YzQ4Zjdm
ZWQuLmIzNzgwOTZhMmYyYzNhNTFiMTIwZjIwNzJlYTMwMTE5MzRkYTZjNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBA
IC0xMDg0LDcgKzEwODQsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEZsb2F0UgogICAgICAgICB9CiAg
ICAgfTsKIAotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXIuY29weUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKTsKKyAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLmNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSk7CiAgICAgaWYgKCFpbWFn
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIu
Y3BwCmluZGV4IDAzNTc5NDU5MmQxNmZiY2RkYjExZDE1NzFjNjNmY2QzYzhjNjRhYTUuLmZiYTI3
YTVkMTI1YmJmMzY0Nzg0MDlhNjg3NjEyZTA0ODQzNDdhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQ0dMTGF5ZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgR0NHTExheWVyOjpz
d2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb250ZXh0LnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCppbWFnZUJ1ZmZlci5nZXQoKSk7Ci0gICAgUmVm
UHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5n
U3RvcmUpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlKTsKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm47CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDY2ZDgzMjgxN2Yz
NTIzOTc5NjFjMmQxNmVhMzc2MGM5ZGM2MTM1MTkuLmIyNTkwYmFhMDNmNjhmYjJhZDhmYTc3Y2Y2
ZmFlMjc2ODVhYTY3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhHcmFwaGljc0xheWVyKiBzb3VyY2VMYXll
ciwgY29uc3QgSW50UmVjdCYgdGEKICAgICBjb250ZXh0LmVuZERyYXcoKTsKICNlbmRpZgogCi0g
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29w
eUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6UmVmZXJlbmNlKTsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQuY3BwCmlu
ZGV4IGQ0ODBkYjczZDQzMjI1NWU5MmUzZDBjNzk5ZTFkOTRkZDcyMzU0MTguLmI5ODNiNmNjOGUx
MzJkNzQ1YTkzN2NjMmU2MzBmNjc3MmZkMWI5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHREaXJlY3QyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcApAQCAtODk5LDcgKzg5OSw3IEBAIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dERpcmVjdDJEOjpjbGlwVG9EcmF3CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0RGlyZWN0MkQ6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiBidWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IGJ1ZmZlci5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOworICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXIuY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhh
dmlvcjo6UmVmZXJlbmNlKTsKICAgICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZl
ckRpcmVjdDJEQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuY3BwCmluZGV4IDc2OGY2MTdiZDE3MGNiOGJk
MTc5YWQxYmEyZTkyOTUzYzk1ODUxMGQuLjEzMTRhNTQ5MjhlZDc2MmZhN2Y4NzViYTM3NWM1ZTNj
YzE3MmZjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kLmNwcApAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmZsdXNoQ29udGV4
dCgpCiAgICAgY29udGV4dCgpLmZsdXNoKCk7CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4gSW1h
Z2VCdWZmZXJEaXJlY3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
IGNvcHlCZWhhdmlvcikgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJl
Y3QyREJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IgY29w
eUJlaGF2aW9yKSBjb25zdAogewogICAgIENPTVB0cjxJRDJEMUJpdG1hcFJlbmRlclRhcmdldD4g
Yml0bWFwVGFyZ2V0OwogICAgIEhSRVNVTFQgaHIgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCktPnJlbmRlclRhcmdldCgpLT5RdWVyeUludGVyZmFjZSgmYml0bWFwVGFyZ2V0KTsKQEAgLTEy
MCwxNyArMTIwLDE2IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5CiAgICAgQVNTRVJUKFNVQ0NF
RURFRChocikpOwogCiAgICAgLy8gRklYTUU6IG1fZGF0YS5kYXRhIGlzIG51bGxwdHIgZXZlbiB3
aGVuIGFza2luZyB0byBjb3B5IGJhY2tpbmcgc3RvcmUgbGVhZGluZyB0byB0ZXN0IGZhaWx1cmVz
LgotICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSAmJiBtX2RhdGEuZGF0
YS5pc0VtcHR5KCkpCi0gICAgICAgIGNvcHlCZWhhdmlvciA9IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5
ICYmIG1fZGF0YS5kYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgY29weUJlaGF2aW9yID0gQmFja2lu
Z1N0b3JlQ29weUJlaGF2aW9yOjpSZWZlcmVuY2U7CiAKICAgICBDaGVja2VkU2l6ZSBudW1CeXRl
cyA9IENoZWNrZWRVaW50MzIobV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpICogbV9k
YXRhLmJ5dGVzUGVyUm93OwogICAgIGlmIChudW1CeXRlcy5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2lu
Z1N0b3JlKSB7CisgICAgaWYgKGNvcHlCZWhhdmlvciA9PSBCYWNraW5nU3RvcmVDb3B5QmVoYXZp
b3I6OkNvcHkpIHsKICAgICAgICAgRDJEMV9SRUNUX1UgYmFja2luZ1N0b3JlRGltZW5zdGlvbnMg
PSBJbnRSZWN0KEludFBvaW50KCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplKTsKICAgICAgICAg
aW1hZ2UtPkNvcHlGcm9tTWVtb3J5KCZiYWNraW5nU3RvcmVEaW1lbnN0aW9ucywgbV9kYXRhLmRh
dGEuZGF0YSgpLCAzMik7Ci0KICAgICB9CiAKICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShXVEZNb3ZlKGltYWdlKSk7CkBAIC0xNjgsMTMgKzE2NywxMyBAQCBzdGF0aWMgUmVmUHRyPElt
YWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVkKElEMkQxQml0bWFwUmVu
ZGVyVGFyZwogICAgIHJldHVybiBCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpKTsK
IH0KIAotUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZDo6Y29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdAorUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlckRpcmVjdDJEQmFj
a2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciBjb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAgICAgUGxhdGZv
cm1JbWFnZVB0ciBpbWFnZTsKICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVz
ZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpCiAgICAgICAgIGltYWdl
ID0gY29weU5hdGl2ZUltYWdlKGNvcHlCZWhhdmlvciktPnBsYXRmb3JtSW1hZ2UoKTsKICAgICBl
bHNlCi0gICAgICAgIGltYWdlID0gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KS0+cGxhdGZvcm1JbWFnZSgpOworICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSktPnBsYXRmb3JtSW1hZ2UoKTsKIAogICAg
IGF1dG8gYml0bWFwVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxJRDJEMUJpdG1hcFJlbmRlclRh
cmdldCo+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGNyZWF0ZUJp
dG1hcEltYWdlQWZ0ZXJTY2FsaW5nSWZOZWVkZWQoYml0bWFwVGFyZ2V0LCBXVEZNb3ZlKGltYWdl
KSwgaW50ZXJuYWxTaXplKCksIHJlc29sdXRpb25TY2FsZSgpLCBwcmVzZXJ2ZVJlc29sdXRpb24p
OwpAQCAtMTg3LDcgKzE4Niw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJEaXJlY3QyREJh
Y2tlbmQ6OnNpbmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uIHByZXNlCiAgICAgaWYgKCFT
VUNDRUVERUQoaHIpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFBsYXRmb3JtSW1h
Z2VQdHIgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpLT5wbGF0
Zm9ybUltYWdlKCk7CisgICAgUGxhdGZvcm1JbWFnZVB0ciBpbWFnZSA9IGNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5jZSktPnBsYXRmb3JtSW1hZ2UoKTsK
ICAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChiaXRtYXBU
YXJnZXQuZ2V0KCksIFdURk1vdmUoaW1hZ2UpLCBpbnRlcm5hbFNpemUoKSwgcmVzb2x1dGlvblNj
YWxlKCksIHByZXNlcnZlUmVzb2x1dGlvbik7CiB9CiAKQEAgLTI4NSw3ICsyODQsNyBAQCB2b2lk
IEltYWdlQnVmZmVyRGlyZWN0MkRCYWNrZW5kOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUoKSk7CiAKLSAg
ICBpZiAoYXV0byBpbWFnZSA9IGNvcHlJbWFnZSgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSA/
IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZSkpCisgICAgaWYgKGF1dG8g
aW1hZ2UgPSBjb3B5SW1hZ2UoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgPyBCYWNraW5nU3Rv
cmVDb3B5QmVoYXZpb3I6OkNvcHkgOiBCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OlJlZmVyZW5j
ZSkpCiAgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VCdWZmZXJEaXJlY3QyREJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCmluZGV4IDU0MmVjYmVhZjBj
MWU4NTg5Y2IyYmUyNTlkMzUyZmM2ODBjNDU3MGMuLjA2NzJkOTdkMjRkMmQ1YTMwZmZlODgxYjg5
NjFlNDBhZGM0ZjNmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRpcmVjdDJEQmFja2VuZC5oCkBAIC00
Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIG92ZXJyaWRlOwogCi0gICAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxJbWFnZT4gY29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weUJl
aGF2aW9yID0gQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5KSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IsIFBy
ZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8SW1hZ2U+IHNp
bmtJbnRvSW1hZ2UoUHJlc2VydmVSZXNvbHV0aW9uKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGNkYjJiMGEyZDFiNzQwZWM3MjE4
NTBjYzY3NzM3Y2M0YzkxODE0NmEuLjZlNzAyMjQxZWNhN2ZhMmMwNzBlMGFlYmFjNTk5MjY2MzBj
MWMwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAg
LTIxNTksNyArMjE1OSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmll
d0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFpbnRJbmZvJiBwYWluCiAgICAgICAgIHN1cmZh
Y2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogICAgIFttX2NpQ29u
dGV4dCByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJh
ZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwotICAgIGNnSW1hZ2UgPSB1
c2VTbWFsbEJhZGdlID8gbV9zbWFsbEJhZGdlU3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSA6IG1fbGFy
Z2VCYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CisgICAgY2dJbWFnZSA9IHVzZVNtYWxsQmFk
Z2UgPyBtX3NtYWxsQmFkZ2VTdXJmYWNlLT5jb3B5SW1hZ2UoKSA6IG1fbGFyZ2VCYWRnZVN1cmZh
Y2UtPmNvcHlJbWFnZSgpOwogI2Vsc2UKICAgICBjZ0ltYWdlID0gYWRvcHRDRihbbV9jaUNvbnRl
eHQgY3JlYXRlQ0dJbWFnZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21SZWN0OmZs
aXBwZWRJbnNldEJhZGdlUmVjdF0pOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggZTlhNTEzYTMwNWVkZDY1YmRmYTM3NGUxYmQwZTNm
ZWFiMWY2YjgyNC4uZTIyYTVhNThhMTcwMTIzNmM0OGQyZDgzNjIxOGIxMTU2OWM4YWI1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTIzLDcg
KzEyMyw3IEBAIHVuc2lnbmVkIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ6OmJ5dGVz
UGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gY2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNp
emUoKSk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gQ0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IENHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5
QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL0NHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRl
eCAwNDgwNmZjMzUxYTdiNTA1YTU3YzE4MzdhMTgzMzA4ZTA1ODZhODgxLi4xNzA5ZWQzZWY5NDU0
MmEyNzU2MWY2MzY5N2I3Y2NlZTg3Y2U1YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvQ0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9DR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6
OkludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE5PVEU6IFRo
ZXNlIGFsbCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4KLSAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29y
ZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weUJl
aGF2aW9yID0gV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weUJlaGF2aW9yOjpDb3B5KSBjb25zdCBv
dmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBpeGVsQnVmZmVyPiBnZXRQaXhl
bEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBwdXRQaXhl
bEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZXN0UG9pbnQsIFdlYkNvcmU6
OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1hYy5tbQppbmRl
eCAyMjNhNDQ0ZjgwYjViMTlkNTM5N2RkOTNmZjczYzIwM2E2YTA5OTk5Li42MWY3YWY2N2U2ODcz
YzQ5NWRjOWNlZWI4YzEzOWMzZTI5Yjg2ZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IFZpZXdTbmFwc2hvdDo6YXNJbWFnZUZvclRlc3RpbmcoKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEFTU0VSVChWaWV3U25hcHNob3RTdG9yZTo6
c2luZ2xldG9uKCkuZGlzYWJsZVNuYXBzaG90Vm9sYXRpbGl0eUZvclRlc3RpbmcoKSk7Ci0gICAg
cmV0dXJuIG1fc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5j
b3B5SW1hZ2UoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5kZXggMjdlY2I2YjFlZjg1ZWFj
NjNjODMxMzI1YzA1MTRiNTQxNWZkNmEyYy4uMzI4NzNhMmQ3NTJkMTk2ZTFkN2RlOTFmMjE5MDFi
NzlhZWMyOGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcApAQCAtMTE5LDYgKzExOSw3IEBAIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtCiAg
ICAgLCBtX2JpdG1hcChXVEZNb3ZlKGJpdG1hcCkpCiAgICAgLCBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIktJTU1PSyBTSEFSRUFCTEVCSVRNQVAgJWQg
JWQiLCBtX2JpdG1hcC0+c2l6ZSgpLndpZHRoKCksIG1fYml0bWFwLT5zaXplKCkuaGVpZ2h0KCkp
OwogICAgIC8vIFNoYXJlYWJsZUJpdG1hcCBlbnN1cmVzIHRoYXQgdGhlIGNvb3JkaW5hdGUgc3Bh
Y2UgaW4gdGhlIGNvbnRleHQgdGhhdCB3ZSdyZSBhZG9wdGluZwogICAgIC8vIGhhcyBhIHRvcC1s
ZWZ0IG9yaWdpbiwgc28gd2UgZG9uJ3QgZXZlciBuZWVkIHRvIGZsaXAgaGVyZSwgc28gd2UgZG9u
J3QgY2FsbCBzZXR1cENvbnRleHQoKS4KICAgICAvLyBIb3dldmVyLCBTaGFyZWFibGVCaXRtYXAg
ZG9lcyBub3QgaGF2ZSBhIG5vdGlvbiBvZiBzY2FsZSwgc28gd2UgbXVzdCBhcHBseSB0aGUgZGV2
aWNlCkBAIC0xNDMsMTIgKzE0NCwxMiBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gbV9iaXRtYXAtPmJ5
dGVzUGVyUm93KCk7CiB9CiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QK
K1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weUJlaGF2aW9yKSBjb25zdAogewogICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkp
OwogfQogCi1SZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKK1Jl
ZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weUJlaGF2aW9yLCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYml0bWFwLT5jcmVhdGVJbWFnZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1h
cEJhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmgKaW5kZXggMTg0N2ZhNmZiZGU0MDZlZDZhNmFk
MDYwNDk4Yjg4NWM1ZTM2YmIzZC4uZWYzNjI1YzE3NzM1Mjk5YTg4MDcyYjZmMDUxMzhlY2RlY2Fi
YjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5o
CkBAIC01NSw4ICs1NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBXZWJDb3JlOjpJbnRTaXplIGJh
Y2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29y
ZTo6Q29weUJhY2tpbmdTdG9yZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6
OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNv
cHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiA9IFdlYkNvcmU6OlBy
ZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHlC
ZWhhdmlvciA9IFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvcjo6Q29weSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weUJlaGF2aW9yID0gV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weUJlaGF2
aW9yOjpDb3B5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVm
ZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVm
ZmVyJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9y
bWF0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMDk1NTdhNzVi
MGVkNGUxMGY1NmJiNDg5ZWYwM2Q3OGJlYzNmYmFlMC4uMGYxY2I4MTJhMDgwZmE1YjEwYTM0Mzky
MGYyZGIyY2RkZjljMjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTE3Niw3
ICsxNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS0+Z2V0RGF0YUZvckltYWdlQnVmZmVyKG1pbWVUeXBlLCBxdWFsaXR5LCBtX3Jl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6
Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9
IFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6OkNvcHlCYWNraW5nU3RvcmUpIGNvbnN0IGZpbmFs
CisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29y
ZTo6QmFja2luZ1N0b3JlQ29weUJlaGF2aW9yID0gV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weUJl
aGF2aW9yOjpDb3B5KSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpA
QCAtMTg3LDcgKzE4Nyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5h
dGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkpOwogICAgIH0K
IAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdT
dG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlLCBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IgPSBXZWJD
b3JlOjpCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3I6OkNvcHksIFdlYkNvcmU6OlByZXNlcnZlUmVz
b2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246
Ok5vKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGI3MjkzZThjZGI5MTBhZGY0ZTg5ZTU4NjBkMWFhMzRiM2YzZTBhZDMuLmJjM2M0
ZTlhMzUxNGNjYzMwYzJhMjQwMjExMWZiOGExMTUyNjBiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJ
T1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAg
LTg1LDEzICs4NSwxMyBAQCB1bnNpZ25lZCBJbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQ6OmJ5dGVzUGVyUm93KCkgY29uc3QKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjYWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSk7CiB9CiAKLVJlZlB0
cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFj
a2luZ1N0b3JlQ29weUJlaGF2aW9yKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CitSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVh
YmxlSU9TdXJmYWNlQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHlCZWhhdmlvciwg
UHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdl
QnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGViY2NjYjc5NjZkNzhiODhl
YTJjOTAyZjE1MmRmZGM4M2Q0MWNkY2QuLmQ1MDM0Yjc3ZjIwOTcwODFmMTUwYmQ1MmNlNDM0MDk4
N2NmMGM4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAKICAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKICAgICBX
ZWJDb3JlOjpJbnRTaXplIGJhY2tlbmRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0
b3JlQ29weSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5
SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNv
cHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5QmVoYXZpb3IpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHlCZWhhdmlvciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGRyYXcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBjNTQzZjRhYzQzNjgwZTBiZGRmOGQxMDI2MGQ1MjUwNGFjMjE1MGEzLi44NmI2MDFl
ZDIxNGU5OWQ5NTcwNmQyYTg4Y2MyOWZlMTU3ZmEzZmM2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMTEtMDgg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KKworICAgICAgICBDb2NvYSBH
cmFwaGljc0NvbnRleHQgY29waWVzIEltYWdlQnVmZmVyIGRhdGEgdG8gdGVtcG9yYXJ5IGJ1ZmZl
ciB3aGVuIGFjY2VsZXJhdGVkIEltYWdlQnVmZmVyIGlzIGRyYXduIHRvIGJpdG1hcCBjb250ZXh0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
SU9TdXJmYWNlIHJlbGF0ZWQgY29kZSwgaXQgd2FzIGRyYXdpbmcgYW4gZW1wdHkgSU9TdXJmYWNl
CisgICAgICAgIHRvIGEgbmV3IGJpdG1hcCBjb250ZXh0LgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW06CisgICAgICAgIChjcmVhdGVCaXRtYXBD
b250ZXh0RnJvbVdlYlZpZXcpOgorCiAyMDIxLTExLTA1ICBLaW1tbyBLaW5udW5lbiAgPGtraW5u
dW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoaU9TIDE1LCBHUFUgUHJvY2Vz
cyk6IEZhaWxzIHRvIGxvYWQgdGV4dHVyZSBtYXAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0KaW5kZXggNGQ5OTFjNzIxNDgxNGIyZWU2OGMwZDU2
M2Q4OTFlYjg3Yzg4ZGFlNy4uNTQwOTcxNTc1NjAyM2YzYTBlZDVhOWU1NjJhMzM3MTQ1NmNlMzhl
YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJ
T1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0KQEAgLTYzLDI0ICs2MywxMCBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFw
Q29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZQogICAgIENHU2l6
ZSB2aWV3U2l6ZSA9IFtbbWFpbkZyYW1lIHdlYlZpZXddIGZyYW1lXS5zaXplOwogICAgIGludCBi
dWZmZXJXaWR0aCA9IGNlaWwodmlld1NpemUud2lkdGggKiBkZXZpY2VTY2FsZUZhY3Rvcik7CiAg
ICAgaW50IGJ1ZmZlckhlaWdodCA9IGNlaWwodmlld1NpemUuaGVpZ2h0ICogZGV2aWNlU2NhbGVG
YWN0b3IpOwotCi0gICAgV2ViQ29yZTo6RmxvYXRTaXplIHNuYXBzaG90U2l6ZSh2aWV3U2l6ZSk7
Ci0gICAgc25hcHNob3RTaXplLnNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsKLQotI2lmIEhBVkUo
SU9TVVJGQUNFX1JHQjEwKQotICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90
Rm9ybWF0ID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKCkgPyBXZWJDb3Jl
OjpJT1N1cmZhY2U6OkZvcm1hdDo6UkdCMTAgOiBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6
QkdSQTsKLSNlbHNlCi0gICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25hcHNob3RGb3Jt
YXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKLSNlbmRpZgotICAgIGF1dG8g
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50
U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgc25hcHNob3RGb3JtYXQpOwotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0g
c3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKLQogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxw
dHI7CiAgICAgc2l6ZV90IGJpdG1hcFJvd0J5dGVzID0gMDsKICAgICBhdXRvIGJpdG1hcENvbnRl
eHQgPSBjcmVhdGVCaXRtYXBDb250ZXh0KGJ1ZmZlcldpZHRoLCBidWZmZXJIZWlnaHQsIGJpdG1h
cFJvd0J5dGVzLCBiaXRtYXBCdWZmZXIpOwogICAgIGlmICghYml0bWFwQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoYml0bWFwQ29udGV4
dC0+Y2dDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgYnVmZmVyV2lkdGgsIGJ1ZmZlckhlaWdo
dCksIGNnSW1hZ2UuZ2V0KCkpOwogICAgIHJldHVybiBiaXRtYXBDb250ZXh0OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>