<?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>219666</bug_id>
          
          <creation_ts>2020-12-08 21:30:21 -0800</creation_ts>
          <short_desc>[GPU Process]: Cache WebFonts in GPUP</short_desc>
          <delta_ts>2020-12-16 09:22:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>219672</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219672</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713020</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-08 21:30:21 -0800</bug_when>
    <thetext>The WebFont will be cached the same way we cache and reference the NativeImage.

When recording DrawGlyphs, we will ensure the Font is cached by GPUP and we will use its RemoteResourceIdentifier in the DL item.

When replaying back the DL in GPUP, we are going to pass the FontHashMap to DisplayList::Replayer so its replay() method can resolve the RemoteResourceIdentifier back to a Font.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713021</commentid>
    <comment_count>1</comment_count>
      <attachid>415710</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-08 21:34:18 -0800</bug_when>
    <thetext>Created attachment 415710
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713026</commentid>
    <comment_count>2</comment_count>
      <attachid>415712</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-08 21:57:12 -0800</bug_when>
    <thetext>Created attachment 415712
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715018</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-15 21:31:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/72370811&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715130</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-16 09:22:59 -0800</bug_when>
    <thetext>Caching Web fonts in the GPU Process should be fixed by bug 219672.

*** This bug has been marked as a duplicate of bug 219672 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415710</attachid>
            <date>2020-12-08 21:34:18 -0800</date>
            <delta_ts>2020-12-08 21:57:10 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-219666-20201208213417.patch</filename>
            <type>text/plain</type>
            <size>44405</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg4YWQ3N2FjMzA5NTJi
YWYxMGMxMjFjY2NlYzVjYWMzNzA3NTY5ZS4uODczOTE4M2Y2MTAwODE2ZTQxZTdhZWM0ODM3ZmUy
NGFjMzlkZGU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEyLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106
IENhY2hlIFdlYkZvbnRzIGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OkZvbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSZWZlcmVuY2UuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmZvbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6RHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmNv
bXB1dGVCb3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoczo6Zm9udElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHM6OmxvY2FsQW5jaG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphbmNob3JQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNhY2hl
Rm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
OjpSZXBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaDoKKwogMjAyMC0xMi0wOCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgYXNwZWN0LXJhdGlvIG9uIG5vbi1yZXBsYWNlZCBlbGVtZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwOTQyMGZmNWNkOTBlZjI4MjNkOGY1NmEwMGYxN2I1YmNiZjMzZDIyLi4zZTJjNTMy
NTE3Y2M2YmYyMGRmNmI3OWVhYTczNTA3M2UyMTQxMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDIwLTEyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIFtHUFUgUHJvY2Vzc106IENhY2hlIFdlYkZvbnRzIGluIEdQVVAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6c3VibWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVGb250KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Zm9udHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Ogor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVG
b250KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaDoKKwogMjAyMC0xMi0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBDcmVhdGUgc2FuZGJveCBleHRlbnNpb24gZm9yIGF1
ZGlvIHNlcnZpY2Ugd2hlbiBNZWRpYSBpbiBHUFUgcHJvY2VzcyBpcyBub3QgZW5hYmxlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDRhYWVjNTc1NDk3MThlZDUxNmQ5NzY5YzAyZGNkYTI4N2MzZDQ3MmYuLjRmNTNkYzZhOGY5Njlm
NzEyZGMwOWE5OTNlYjdkMTNlMDJkZjBmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxODgsNiArMjE4OCw3IEBACiAJCTcy
NEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURD
N0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjZENTZFMjI1M0FFMjhE
MDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1h
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAv
KiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTcyNzRGRTA3MjU3RjdEOUYwMDMyNzA5RSAvKiBGb250UmVmZXJlbmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjc0RkUwNTI1N0Y3
Q0Q0MDAzMjcwOUUgLyogRm9udFJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5
OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZB
NTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmlu
Z01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTAxMDQsNiArMTAxMDUsNyBAQAogCQk3MjY2RjAyOTIyNDMxMkIxMDA4MzM5NzUgLyogU1ZH
QW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0
aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzI3NEZFMDUyNTdGN0NENDAwMzI3MDlFIC8qIEZvbnRSZWZlcmVuY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRm9udFJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjUyOSw2ICsyNjUzMSw3IEBACiAJCQkJQjUzMjBENjkxMjJBMjRFOTAwMkQxNDQwIC8qIEZvbnRQ
bGF0Zm9ybURhdGEuaCAqLywKIAkJCQkzNzFGNEZGQjBEMjVFN0YzMDBFQ0UwRDUgLyogRm9udFJh
bmdlcy5jcHAgKi8sCiAJCQkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1IC8qIEZvbnRSYW5nZXMu
aCAqLywKKwkJCQk3Mjc0RkUwNTI1N0Y3Q0Q0MDAzMjcwOUUgLyogRm9udFJlZmVyZW5jZS5oICov
LAogCQkJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2VsZWN0aW9uQWxnb3JpdGht
LmNwcCAqLywKIAkJCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyogRm9udFNlbGVjdGlvbkFs
Z29yaXRobS5oICovLAogCQkJCUIyQzNEQTVBMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0
b3IuaCAqLywKQEAgLTMyMDM2LDYgKzMyMDM5LDcgQEAKIAkJCQkwODQ1NjgwODEyQjkwREE2MDA5
NjBBOUYgLyogRm9udE1ldHJpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MzIwRDZCMTIyQTI0
RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzFG
NEZGQzBEMjVFN0YzMDBFQ0UwRDUgLyogRm9udFJhbmdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzI3NEZFMDcyNTdGN0Q5RjAwMzI3MDlFIC8qIEZvbnRSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNEE1MzM5MjU2MDYzOTgwMDI4QzU5MiAvKiBGb250UmVuZGVyaW5nTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzJBQjBBRjcxRTZCM0M2QzAwMTM0OEM1IC8qIEZvbnRTZWxlY3Rp
b25BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZCMEQwMDZDRDYwMEVGNkYy
NiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA1NGI5Yjc1ZWY3MWNjNjJiOThhZmRmNThiMTAzODQw
ZGFmZjQ3Y2ZlLi43NjdkNTkzMzMyNmE5MWEyYjIwYWE3OTQxMjRhNTAxMjg0MjU2ZmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtNTcsMTYgKzU3LDE3
IEBAIGNvbnN0IGZsb2F0IGVtcGhhc2lzTWFya0ZvbnRTaXplTXVsdGlwbGllciA9IDAuNWY7CiAK
IERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoRm9udCk7CiAKLVJlZjxGb250
PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9y
aWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRpY0JvbGQsIGJvb2wgc3lu
dGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYm
IGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wg
c3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgYm9vbCB3cmFwcGlu
ZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6Y3JlYXRlQ3VzdG9tRm9u
dERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsKICAgICBGb250RGVzY3Jp
cHRpb24gZGVzY3JpcHRpb247CiAgICAgZGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGZvbnRT
aXplKTsKLSAgICByZXR1cm4gRm9udDo6Y3JlYXRlKENhY2hlZEZvbnQ6OnBsYXRmb3JtRGF0YUZy
b21DdXN0b21EYXRhKCpjdXN0b21Gb250RGF0YSwgZGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQs
IHN5bnRoZXRpY0l0YWxpYywgeyB9LCB7IH0pLCBvcmlnaW4pOworICAgIAorICAgIHJldHVybiBG
b250OjpjcmVhdGUoQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURhdGEoKmN1c3Rv
bUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCB7
IH0sIHsgfSksIG9yaWdpbiwgSW50ZXJzdGl0aWFsOjpObywgVmlzaWJpbGl0eTo6VmlzaWJsZSwg
T3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9
CiAKLUZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxp
dHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaykKK0ZvbnQ6OkZvbnQo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRl
cnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9u
RmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxhdGZvcm1EYXRhKHBsYXRm
b3JtRGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fdmlzaWJpbGl0eSh2aXNp
YmlsaXR5KQpAQCAtODAsNiArODEsNyBAQCBGb250OjpGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0aWFsIGludAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3Nob3VsZE5vdEJlVXNlZEZvckFyYWJpYyhmYWxz
ZSkKICNlbmRpZgorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIocmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHBsYXRmb3JtSW5pdCgpOwogICAgIHBsYXRmb3Jt
R2x5cGhJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXgg
ZWFmNzc2MDI3NzRjMTM0YzFlYzY4ODcyYjYxYmM0ZTZmNTIwYjEwMi4uYjUyYjg5YTAzYWI4NDYy
MmM0YWMxYTMyODIzYWM5YjUzYjYyNTRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNB
TCkKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogI2VuZGlmCisjaW5jbHVkZSAi
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAg
LTcwLDcgKzcxLDggQEAgYm9vbCBmb250SGFzRWl0aGVyVGFibGUoQ1RGb250UmVmLCB1bnNpZ25l
ZCB0YWJsZVRhZzEsIHVuc2lnbmVkIHRhYmxlVGFnMik7CiAjZW5kaWYKIAogREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoRm9udCk7Ci1jbGFzcyBGb250IDogcHVibGljIFJl
ZkNvdW50ZWQ8Rm9udD4geworCitjbGFzcyBGb250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4g
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Rm9udD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEZvbnQpOwogcHVibGljOgogICAgIC8vIFVzZWQgdG8g
Y3JlYXRlIHBsYXRmb3JtIGZvbnRzLgpAQCAtOTAsMTEgKzkyLDExIEBAIHB1YmxpYzoKICAgICAg
ICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgc3RhdGljIFJlZjxGb250PiBjcmVhdGUo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luID0gT3Jp
Z2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCA9IEludGVyc3RpdGlhbDo6Tm8s
IFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2libGUsIE9yaWVudGF0aW9u
RmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9uRmFsbGJhY2s6Ok5vKQor
ICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRm
b3JtRGF0YSwgT3JpZ2luIG9yaWdpbiA9IE9yaWdpbjo6TG9jYWwsIEludGVyc3RpdGlhbCBpbnRl
cnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5IHZpc2liaWxpdHkgPSBWaXNp
YmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVudGF0aW9uRmFsbGJhY2sg
PSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQocGxh
dGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0eSwgb3JpZW50YXRpb25G
YWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250KHBsYXRmb3JtRGF0
YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVudGF0aW9uRmFsbGJhY2ss
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwogICAgIH0KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0
YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29s
IHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxGb250PiBj
cmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZvbnQ6Ok9yaWdpbiwgZmxv
YXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgpOwogCkBAIC0xOTYsNiAr
MTk4LDggQEAgcHVibGljOgogICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzaWJpbGl0eTsgfQogICAgIGJvb2wgYWxsb3dzQW50aWFsaWFzaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9hbGxvd3NBbnRpYWxpYXNpbmc7IH0KIAorICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIAogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgpAQCAtMjI0LDcgKzIyOCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIEZvbnQo
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5
LCBPcmllbnRhdGlvbkZhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBGb250KGNvbnN0IEZv
bnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlzaWJpbGl0eSwgT3JpZW50
YXRpb25GYWxsYmFjaywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
cGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUdseXBoSW5pdCgpOwpAQCAtMzIzLDkg
KzMyNywxMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2hvdWxkTm90QmVVc2VkRm9yQXJh
YmljIDogMTsKICNlbmRpZgogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworCiAgICAgLy8gQWRkaW5nIGFueSBub24tZGVyaXZl
ZCBpbmZvcm1hdGlvbiB0byBGb250IG5lZWRzIGEgcGFyYWxsZWwgY2hhbmdlIGluIFdlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAuCiB9OwogCit1c2luZyBGb250SGFzaE1hcCA9IEhhc2hNYXA8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4+OworCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIGJvb2wgZm9udEZhbWlseVNob3VsZE5vdEJlVXNlZEZvckFyYWJpYyhDRlN0cmlu
Z1JlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWY2ZTY0NGIyODQ5YjdiY2U3ZWQ1MzFlZGI1NDNh
OTc1YzdiYmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJG
b250LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgRm9udFJlZmVyZW5jZSA9IFJl
ZjxGb250PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApp
bmRleCAxNmIxOTdmOWVlMmQyOGRiZTkyMWQ5MzA5NDNkNDMwNDYxZGZjZDg2Li5hZmYyMDllZjBi
NWYxZTMzNDQyODQ5ZWM4ODljZjY0MjY1YTBlZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaApA
QCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAm
IGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUltYWdlczsgfQorICAgIGNvbnN0IEZvbnRIYXNoTWFwJiBmb250cygpIGNvbnN0IHsgcmV0
dXJuIG1fZm9udHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlckNs
aWVudChJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVudCopOwpAQCAtMTc3LDEx
ICsxNzgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGltYWdlKTsK
ICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjYWNoZUZvbnQoRm9udCYgZm9u
dCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKGZvbnQpOwor
ICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGREdW1wRm9yRmxhZ3Mo
QXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1h
Z2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBG
b250SGFzaE1hcCBtX2ZvbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0
ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50
czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVy
Q29yZVRleHQuY3BwCmluZGV4IDhiYzAwMTQyODIwZTk3Mzk2NWViYTVhOTNkMDZhMDMwOWI4Njk1
ZDMuLjhhMTVlNGVjMDRkNmE5NmJmODRjNWM1YmIyNzk3YzUxZjhmODAyYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdAog
ICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoZ3N0YXRlKSk7CiAg
ICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKLSAgICBtX293bmVy
LmFwcGVuZDxEcmF3R2x5cGhzPigqbV9vcmlnaW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFu
Y2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0
YSgpLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9z
bW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmRyYXdHbHlwaHMoKm1fb3JpZ2luYWxGb250LCBn
bHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3Vy
cmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50
KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CiAKICAgICBtX293bmVyLmNvbmNhdENU
TShpbnZlcnNlQ1RNRml4dXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IGJkYmQyMzlmNzMzNzg0MDE1Mjc3MWEyZjQ1N2JjNDY5NTEwZDBlMjYuLjg4MjIzNWQw
ODk2Y2FhZDNlZDZmNTUwZmY3N2M5YWE2ODdiMjcxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKQEAgLTM1NywxOCArMzU3LDggQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRl
bSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdHbHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxH
bHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRQb2ludCYgbG9j
YWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCi0gICAgOiBtX2ZvbnQo
bWFrZVJlZlB0cihjb25zdF9jYXN0PEZvbnQmPihmb250KSkpCi0gICAgLCBtX2dseXBocyhXVEZN
b3ZlKGdseXBocykpCi0gICAgLCBtX2FkdmFuY2VzKFdURk1vdmUoYWR2YW5jZXMpKQotICAgICwg
bV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKLSAgICAsIG1fc21vb3RoaW5nTW9kZShzbW9vdGhp
bmdNb2RlKQotewotICAgIGNvbXB1dGVCb3VuZHMoKTsKLX0KLQogRHJhd0dseXBoczo6RHJhd0ds
eXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNv
bnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkK
LSAgICA6IG1fZm9udChtYWtlUmVmUHRyKGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKSkKKyAgICA6
IG1fZm9udElkZW50aWZpZXIoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSkKICAg
ICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Ntb290aGluZ01vZGUoc21v
b3RoaW5nTW9kZSkKIHsKQEAgLTM3OCwyOCArMzY4LDQyIEBAIERyYXdHbHlwaHM6OkRyYXdHbHlw
aHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25z
dCBHCiAgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFwcGVuZChnbHlwaHNbaV0pOwogICAgICAg
ICBtX2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZhbmNlc1tpXSk7CiAgICAgfQotICAgIGNv
bXB1dGVCb3VuZHMoKTsKKyAgICBjb21wdXRlQm91bmRzKGZvbnQpOworfQorCitEcmF3R2x5cGhz
OjpEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250SWRlbnRpZmllciwg
VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZl
ckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCisgICAgOiBtX2ZvbnRJZGVudGlmaWVy
KGZvbnRJZGVudGlmaWVyKQorICAgICwgbV9nbHlwaHMoV1RGTW92ZShnbHlwaHMpKQorICAgICwg
bV9hZHZhbmNlcyhXVEZNb3ZlKGFkdmFuY2VzKSkKKyAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxB
bmNob3IpCisgICAgLCBtX3Ntb290aGluZ01vZGUoc21vb3RoaW5nTW9kZSkKK3sKIH0KIAotaW5s
aW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoKSBjb25zdAor
aW5saW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3Qg
Rm9udCYgZm9udCkgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciByZXN1bHQ7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdWx0LmFk
ZChtX2dseXBoc1tpXSwgKm1fZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zm
c2V0KTsKKyAgICAgICAgcmVzdWx0LmFkZChtX2dseXBoc1tpXSwgZm9udCwgbV9hZHZhbmNlc1tp
XSwgR2x5cGhCdWZmZXI6Om5vT2Zmc2V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK05PX1JF
VFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgRHJhd0dseXBoczo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBEcmF3R2x5
cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZvbnQmIGZvbnQpIGNvbnN0CiB7
Ci0gICAgY29udGV4dC5kcmF3R2x5cGhzKCptX2ZvbnQsIGdlbmVyYXRlR2x5cGhCdWZmZXIoKSwg
MCwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290aGluZ01vZGUpOworICAg
IGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVmZmVyKGZvbnQpLCAwLCBt
X2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5nTW9kZSk7CiB9CiAKLXZv
aWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCit2b2lkIERyYXdHbHlwaHM6OmNvbXB1dGVC
b3VuZHMoY29uc3QgRm9udCYgZm9udCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIGRvZXNu
J3QgYWN0dWFsbHkgdGFrZSB0aGUgZXh0ZW50cyBvZiB0aGUgZ2x5cGhzIGludG8gY29uc2lkZXJh
dGlvbi4gSXQgYXNzdW1lcyB0aGF0CiAgICAgLy8gdGhlIGdseXBoIGxpZXMgZW50aXJlbHkgd2l0
aGluIGl0cyBbKGFzY2VudCArIGRlc2NlbnQpLCBhZHZhbmNlXSByZWN0LgotICAgIGZsb2F0IGFz
Y2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpOwotICAgIGZsb2F0IGRl
c2NlbnQgPSBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXREZXNjZW50KCk7CisgICAgZmxvYXQg
YXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7CisgICAgZmxvYXQgZGVz
Y2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsKICAgICBGbG9hdFBvaW50
IGN1cnJlbnQgPSBsb2NhbEFuY2hvcigpOwogICAgIHNpemVfdCBudW1HbHlwaHMgPSBtX2dseXBo
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYzdhOWEyMGQ5YmEwOWU3NzgxNDZk
NDhkMTM5N2QzMTZhNTFmZjRkMS4uMmMwNzg2YWNhZDcyYTM4OGE3MWYxODNhZjM2NDViODQxNDFi
OWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC05MzcsMjggKzkzNywy
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZh
bHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gdHJ1ZTsKIAot
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
bEFuY2hvcjsgfQotCi0gICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYWxBbmNob3I7IH0KKyAgICBEcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQs
IGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZm9u
dElkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxHbHlw
aEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZv
bnRTbW9vdGhpbmdNb2RlKTsKIAorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmb250
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udElkZW50aWZpZXI7IH0KICAgICBjb25z
dCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkgY29uc3QgeyByZXR1cm4g
bV9nbHlwaHM7IH0KKyAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvcigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KKyAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3R2x5cGhzPiBkZWNvZGUoRGVjb2RlciYpOwotCi0gICAg
RHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYXdHbHlw
aHMoY29uc3QgRm9udCYsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+JiYsIFZlY3RvcjxH
bHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3Is
IEZvbnRTbW9vdGhpbmdNb2RlKTsKLQotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Q7CisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIEZvbnQmKSBj
b25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5k
cyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBtX2JvdW5kczsgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3R2x5cGhzPiBk
ZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIHZvaWQgY29tcHV0ZUJvdW5kcygpOwot
ICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoKSBjb25zdDsKKyAgICB2b2lkIGNv
bXB1dGVCb3VuZHMoY29uc3QgRm9udCYpOworICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhC
dWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwogCi0gICAgUmVmUHRyPEZvbnQ+IG1fZm9udDsKKyAg
ICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250SWRlbnRpZmllcjsKICAgICBWZWN0
b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiBtX2dseXBoczsKICAgICBWZWN0b3I8R2x5cGhCdWZm
ZXJBZHZhbmNlLCAxMjg+IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRSZWN0IG1fYm91bmRzOwpAQCAt
OTY5LDcgKzk2OSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBE
cmF3R2x5cGhzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IG1ha2VSZWYoKm1fZm9udCk7CisgICAgZW5jb2RlciA8PCBtX2ZvbnRJZGVudGlmaWVyOwog
ICAgIGVuY29kZXIgPDwgbV9nbHlwaHM7CiAgICAgZW5jb2RlciA8PCBtX2FkdmFuY2VzOwogICAg
IGVuY29kZXIgPDwgbV9sb2NhbEFuY2hvcjsKQEAgLTk3OSw5ICs5NzksOSBAQCB2b2lkIERyYXdH
bHlwaHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlZjxGb250Pj4gZm9udDsKLSAgICBkZWNvZGVyID4+
IGZvbnQ7Ci0gICAgaWYgKCFmb250KQorICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gZm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsK
KyAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4+IGdseXBoczsKQEAg
LTEwMDcsNyArMTAwNyw3IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc21vb3RoaW5nTW9kZSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBmb250LT5nZXQoKSwgV1RGTW92ZSgq
Z2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3IsICpzbW9vdGhpbmdNb2Rl
IH19OworICAgIHJldHVybiB7eyAqZm9udElkZW50aWZpZXIsIFdURk1vdmUoKmdseXBocyksIFdU
Rk1vdmUoKmFkdmFuY2VzKSwgKmxvY2FsQW5jaG9yLCAqc21vb3RoaW5nTW9kZSB9fTsKIH0KIAog
Y2xhc3MgRHJhd0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAppbmRleCBmNTAwMDVhNDU0YjM5ZjQ1Y2QwZmY3MWFkN2QxOWNhMWNkN2M3MGVlLi42
ZGJlOGRmZmYxMTM5OWUyNzc5NmI0MTIwY2QwYjE0ODBhZDY2ZjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNjcsNiArMTY3LDE0IEBAIHZvaWQgUmVj
b3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGds
eXBoQnVmZmVyLCB1bnNpCiAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBocyhmb250
LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2Rl
KTsKIH0KIAordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25z
dCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2
YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9u
dFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAg
ICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9udCY+KGZvbnQpKTsKKyAg
ICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChjb25zdF9jYXN0PEZvbnQmPihmb250KSk7CisgICAg
YXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIGNvdW50LCBsb2NhbEFu
Y2hvciwgc21vb3RoaW5nTW9kZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgaW1hZ2VCdWZmZXIuZmx1c2hEcmF3
aW5nQ29udGV4dCgpIHdoZW4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODc3Mz4gaXMgZml4ZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCBhMzlkNzJiYzE4Y2M4
NmVhNjQwZjE0NWJlYzZlYzEzYWJkNDg2YzM5Li5hOGIzYjIxYWNhODM4NjQ3Yjc3MTYyYzVmY2Nl
NTA5MTQ3MjlkYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAg
LTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0
ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRl
bU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKE5hdGl2ZUltYWdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZUZvbnQoRm9u
dCYpIHsgfQogICAgIH07CiAKICAgICB2b2lkIGZsdXNoQ29udGV4dChGbHVzaElkZW50aWZpZXIg
aWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlmaWVyKTsgfQpAQCAtMTAz
LDYgKzEwNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgZHJhd0dseXBocyhjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CiAKICAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRl
eCA0ZGE4ZTFkN2ZkMmQ5Y2JmODA0MDcxMTRmNWY1ZDYwODA1OWFlMzgyLi5kYmQ4YTA0YmZiMTE4
ZTZhYzNjOWEzZTllNjliNDQ2MDA4NmFiNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1h
Z2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCog
bmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNv
bnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhh
c2hNYXAqIG5hdGl2ZUltYWdlcywgY29uc3QgRm9udEhhc2hNYXAqIGZvbnRzLCBEZWxlZ2F0ZSog
ZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3Qo
ZGlzcGxheUxpc3QpCiAgICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VC
dWZmZXJzIDogbV9kaXNwbGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1h
Z2VzKG5hdGl2ZUltYWdlcyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUlt
YWdlcygpKQorICAgICwgbV9mb250cyhmb250cyA/ICpmb250cyA6IG1fZGlzcGxheUxpc3QuZm9u
dHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02Nyw2ICs2OCwxNiBA
QCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IGFwcGx5TmF0aXZlSW1h
Z2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgYwogICAgIHJldHVybiBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2U7CiB9CiAKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8U3RvcFJl
cGxheVJlYXNvbj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZvbnRIYXNoTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGF1dG8mIGZvbnRJ
dGVtID0gaXRlbS5nZXQ8RHJhd0dseXBocz4oKTsKKyAgICBpZiAoYXV0byogZm9udCA9IGZvbnRz
LmdldChmb250SXRlbS5mb250SWRlbnRpZmllcigpKSkgeworICAgICAgICBmb250SXRlbS5hcHBs
eShjb250ZXh0LCAqZm9udCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQor
ICAgIHJldHVybiBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2U7Cit9CisK
IE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRs
ZSBpdGVtKQogewogICAgIGlmIChtX2RlbGVnYXRlICYmIG1fZGVsZWdhdGUtPmFwcGx5KGl0ZW0s
IG1fY29udGV4dCkpCkBAIC04NCw2ICs5NSw5IEBAIE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+
IFJlcGxheWVyOjphcHBseUl0ZW0oSXRlbUhhbmRsZSBpdGVtKQogICAgIGlmIChpdGVtLmlzPERy
YXdQYXR0ZXJuPigpKQogICAgICAgICByZXR1cm4gYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1Bh
dHRlcm4+KG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pOwogCisgICAgaWYgKGl0ZW0u
aXM8RHJhd0dseXBocz4oKSkKKyAgICAgICAgcmV0dXJuIGFwcGx5Rm9udEl0ZW0obV9jb250ZXh0
LCBtX2ZvbnRzLCBpdGVtKTsKKwogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgK
aW5kZXggMTM3NDZhYmJmOGNhYzY5MzYzMmUxNTRjNTI5ZmQ2NzgzYTZkYjNkMS4uMDYxM2EwMTll
NzgyMDViMTQ3NDE5NTc3YmQwOWVkY2U2NzRmNzA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5oCkBAIC01Niw3ICs1Niw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdh
dGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3Qg
TmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlM
aXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUlt
YWdlSGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBGb250SGFzaE1hcCogPSBudWxscHRyLCBEZWxl
Z2F0ZSogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UmVwbGF5ZXIoKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFJlcGxheVJlc3VsdCByZXBsYXkoY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxzZSk7CkBAIC03NCw2ICs3
NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1fZGlzcGxheUxpc3Q7CiAg
ICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVyczsKICAgICBjb25zdCBO
YXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOworICAgIGNvbnN0IEZvbnRIYXNoTWFw
JiBtX2ZvbnRzOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCmluZGV4IDEzMWU5NTU1N2E5Y2UyMGMzYWNhYjAyZTJkOGI3MmU3ZGZmZGRiM2Uu
LjU4MDFhYzgwNjhlNDY5MDg3OTgzYTMyNDQxODc2ZjQxNGQzOTVmZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAKQEAgLTE0NSw2ICsxNDUsNyBAQCBEaXNwbGF5TGlzdDo6UmVwbGF5UmVzdWx0
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnN1Ym1pdChjb25zdCBEaXNwbGF5TGlzdDo6RGlzcAog
ICAgICAgICBkaXNwbGF5TGlzdCwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5pbWFn
ZUJ1ZmZlcnMoKSwKICAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5uYXRpdmVJbWFnZXMo
KSwKKyAgICAgICAgJnJlbW90ZVJlc291cmNlQ2FjaGUoKS5mb250cygpLAogICAgICAgICByZXBs
YXllckRlbGVnYXRlCiAgICAgfS5yZXBsYXkoKTsKIH0KQEAgLTI2Niw2ICsyNjcsMTEgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBoYW4KICAgICB9CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVGb250KFJlZjxGb250PiYmIGZvbnQpCit7CisgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlRm9udChXVEZNb3ZlKGZvbnQpKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBtX3JlbW90ZVJlc291cmNl
Q2FjaGUucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBlMWYzNTA5NmEzYmQ1Njc3YTFiZDRiMGExYjA0NzQ0
NGFlYjk2ZTZhLi5jMGQ1Mzc0N2RmMzAwYzE3YjA4NWE5OWY5NjM3MDBiYzI0ODk1NWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZl
cklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50
aWZpZXIpOwogICAgIHZvaWQgZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBXZWJDb3JlOjpJbnRSZWN0IHNyY1JlY3QsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6Oklt
YWdlRGF0YVJlZmVyZW5jZSYmKT4mJik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIGNhY2hlRm9udChSZWY8V2ViQ29yZTo6Rm9udD4mJik7CiAgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5
OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGlu
YXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgppbmRleCBmZWM5NmEyMjdkYmY1M2MwNDYxMGZlZTdlZDQwYzEzZmE0OTE0ZWI4Li5m
NWNkNDc0YjNhMDkzNmMyZGM0MDUwYTE1M2VhMGQ1YWZmYjNkYmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50ZWQgewogICAgIFdha2VVcEFuZEFwcGx5
RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlu
aXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIEdl
dEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBv
dXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6
SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2
ZUltYWdlKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
ICAgIENhY2hlRm9udChXZWJDb3JlOjpGb250UmVmZXJlbmNlIGZvbnQpCiAgICAgRGlkQ3JlYXRl
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFu
ZGxlLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZm
ZXJJZGVudGlmaWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGUuY3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMz
NjkuLjAwYWU2OTFmNjQxYzU3ZWI5ZWMwNGNkMDc5OWExMTAzNTY5YWU5ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAKQEAgLTQ4LDYgKzQ4LDEyIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2Fj
aGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAordm9pZCBSZW1vdGVSZXNv
dXJjZUNhY2hlOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKK3sKKyAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fZm9udHMuYWRkKGZvbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBX
VEZNb3ZlKGZvbnQpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJj
MDEyM2M2NTAzZWM3OTliMGIuLjE0MGQzYjBkNzc0YjlkODVhYWQwZWM5Y2Y0NDI3YTYyYThjYzlj
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgpAQCAtNDMsMTQgKzQ0LDE3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhY2hlSW1hZ2VCdWZmZXIoUmVmPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmKTsKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlciogY2FjaGVkSW1hZ2VCdWZmZXIo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlTmF0
aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lkIGNhY2hlRm9u
dChSZWY8V2ViQ29yZTo6Rm9udD4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2Uo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAKICAgICBjb25zdCBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFw
JiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQorICAgIGNv
bnN0IFdlYkNvcmU6OkZvbnRIYXNoTWFwJiBmb250cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7
IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1
ZmZlcnM7CiAgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOwor
ICAgIFdlYkNvcmU6OkZvbnRIYXNoTWFwIG1fZm9udHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNhMGFl
Mjg0MTFhODNkZTRiZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLjZmMjA2NTBiNGVjYzU0OWUwNmQ0
N2I1NjlhNjY3NmNjYzFlM2VmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQpAQCAtMjE0LDEyICsyMTQsMTIgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2Zv
cndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6Rm9udFJlZmVy
ZW5jZScsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAogICAgICAgICAnV2Vi
Q29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQbGF5
YmFja1RhcmdldENsaWVudENvbnRleHRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1l
ZGlhUGxheWVySWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVu
dGlmaWVyJywKLSAgICAgICAgJ1dlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJlbmNlJywKICAgICAg
ICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsdWdpbkxv
YWRDbGllbnRQb2xpY3knLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGU3OThlOTEy
ZTQ3YjBkOGQwZjAzOGU3Zjc2ZDcwZmMwNmFmNmVjYWUuLmNkZWE3MTMyZjFjZThlZjBjZjBhZTE5
YTM4MGJlODcwMGU0YThhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTEwOCw2ICsxMTA4LDggQEAgdm9pZCBBcmd1bWVudENvZGVy
PFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWY8V2ViQ29yZTo6
Rm9udD4KICAgICAvLyBJbnRlbnRpb25hbGx5IGRvbid0IGVuY29kZSBtX2lzQnJva2VuSWRlb2dy
YXBoRmFsbGJhY2sgYmVjYXVzZSBpdCBkb2Vzbid0IGFmZmVjdCBkcmF3R2x5cGhzKCkuCiAKICAg
ICBlbmNvZGVQbGF0Zm9ybURhdGEoZW5jb2RlciwgZm9udCk7CisKKyAgICBlbmNvZGVyIDw8IGZv
bnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOwogfQogCiBPcHRpb25hbDxSZWY8Rm9u
dD4+IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBA
IC0xMTM2LDcgKzExMzgsMTIgQEAgT3B0aW9uYWw8UmVmPEZvbnQ+PiBBcmd1bWVudENvZGVyPFJl
ZjxGb250Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghcGxhdGZvcm1EYXRh
Lmhhc1ZhbHVlKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4g
Rm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YS52YWx1ZSgpLCBvcmlnaW4udmFsdWUoKSwgaXNJbnRl
cnN0aXRpYWwudmFsdWUoKSwgdmlzaWJpbGl0eS52YWx1ZSgpLCBpc1RleHRPcmllbnRhdGlvbkZh
bGxiYWNrLnZhbHVlKCkpOworICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gZm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBmb250SWRlbnRpZmllcjsKKyAgICBp
ZiAoIWZvbnRJZGVudGlmaWVyLmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4gRm9udDo6Y3JlYXRlKHBsYXRmb3JtRGF0YS52YWx1ZSgpLCBvcmln
aW4udmFsdWUoKSwgaXNJbnRlcnN0aXRpYWwudmFsdWUoKSwgdmlzaWJpbGl0eS52YWx1ZSgpLCBp
c1RleHRPcmllbnRhdGlvbkZhbGxiYWNrLnZhbHVlKCksIGZvbnRJZGVudGlmaWVyLnZhbHVlKCkp
OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8Q3Vyc29yPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEN1cnNvciYgY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRl
eCA2MGU2NDMwYjg5OTFmM2ExZWVmY2QyY2Q3NGRjMmM3MDI3Zjg5OWU4Li45ZmI5OTViMzA4MTBi
MWEzMWVhNmY4Y2RhMjYwNGIzODBlYjg2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aApAQCAtMTg5LDYgKzE4OSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRp
dmVJbWFnZShpbWFnZSk7CiAgICAgfQogCisgICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9u
dCYgZm9udCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5y
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZUZvbnQoZm9udCk7CisgICAgfQorCiAgICAg
dm9pZCBjaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBuZXh0SW1hZ2VCdWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBib29s
IHdhc0VtcHR5ID0gbV9kcmF3aW5nQ29udGV4dC5kaXNwbGF5TGlzdCgpLmlzRW1wdHkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCAxMTRhYzY1YjE2MmZk
NTMwODhlNGU0ZWY0NTE5MDJiZGVlYjBmZjcwLi4zYjE2Y2U0ZTYwYjhlNDhjZDQzMTAwOGJlNmEx
MWI0OGMzNWM0YjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC0xNTQsNiArMTU0LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
YWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlCiAgICAgc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShoYW5kbGUs
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVGb250KEZv
bnQmIGZvbnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Q2FjaGVGb250KG1ha2VSZWYoZm9udCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsK
K30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVh
c2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmlu
Z0JhY2tlbmRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CmluZGV4IDM3YTRjZWI3YTgyOGIwNTA5N2JkMzM0OTE1MjhjYTlkNWNjMzk5YzguLjZkNTBiNDFi
NzlhNzY4ZWY5N2M3ZmE4ODlhOWM3Yjc5NTc0ODg2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaApAQCAtODIsNiArODIsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlRGF0YT4gZ2V0SW1hZ2VEYXRhKFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBjYWNoZUZvbnQoV2ViQ29yZTo6Rm9udCYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90
ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICBi
b29sIHdhaXRGb3JEaWRDcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA2YzdhNTEzNzg1NTIxZTM5MmE4YWEzNzQwNzI5YTVk
YzA3NDY4OTVlLi5jM2FiMjViMTYyMDEwM2RhYmZjYzVmYTEzMjBiYjFkMGE4OTYyZTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC0xMTAsNiArMTEwLDE1IEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlCiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
cmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZUZvbnQoRm9udCYgZm9udCkKK3sK
KyAgICBtX2ZvbnRzLmVuc3VyZShmb250LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBb
Jl0oKSB7CisgICAgICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIGNhY2hlIHRoaXMgcmVz
b3VyY2UuCisgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlRm9udChm
b250KTsKKyAgICAgICAgcmV0dXJuIG1ha2VXZWFrUHRyKGZvbnQpOworICAgIH0pOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCmluZGV4IDY4OGYzMzUxODFjNGU1NDAyMGFjYzk4
ZDViN2NmNDJkYTUyODY4MmQuLmMzNzZmOWNiNDA4ZmNmZGFlN2U3Y2ZlZDYxZGFiNDIyY2VmYmE1
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMjcsMTEgKzI3LDEzIEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL05hdGl2ZUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGb250OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiB9CiAK
QEAgLTQ5LDE3ICs1MSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIo
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOworICAgIHZvaWQgY2FjaGVGb250KFdl
YkNvcmU6OkZvbnQmKTsKIAogICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhhc2hNYXA8
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBwcml2YXRlOgogICAgIHVzaW5n
IE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47CisgICAgdXNpbmcgRm9u
dEhhc2hNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V2Vha1B0cjxXZWJDb3JlOjpGb250Pj47CiAgICAgCiAgICAgdm9pZCByZWxlYXNlTmF0aXZlSW1h
Z2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAg
IEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hN
YXAgbV9uYXRpdmVJbWFnZXM7CisgICAgRm9udEhhc2hNYXAgbV9mb250czsKICAgICBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogfTsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415712</attachid>
            <date>2020-12-08 21:57:12 -0800</date>
            <delta_ts>2020-12-08 22:08:04 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-219666-20201208215711.patch</filename>
            <type>text/plain</type>
            <size>44461</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWFmOGFiNjFlMDhiMTA2
ZTU0N2UyN2U2ODdiMTlmMjlmMzUwMjAzMS4uY2QwNTk1MjFiOWIyMTZkMzZlMjRlM2NkNjQ3ZTk2
ODdmYjQzY2M4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTEyLTA4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106
IENhY2hlIFdlYkZvbnRzIGluIEdQVVAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OkZvbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSZWZlcmVuY2UuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmZvbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6Y2FjaGVGb250
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RE
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6RHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6Z2VuZXJhdGVHbHlwaEJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdHbHlwaHM6OmNv
bXB1dGVCb3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ds
eXBoczo6Zm9udElkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdHbHlwaHM6OmxvY2FsQW5jaG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3R2x5cGhzOjphbmNob3JQb2ludCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBoczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNhY2hl
Rm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVy
OjpSZXBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6YXBwbHlGb250SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaDoKKwogMjAyMC0xMi0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBXS0NvbnRlbnRS
dWxlTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA1ZmY5NzE3NjhiODg3NzMyZjU2MWFiMzZhYWU3N2I0MDdkNTdh
MmJmLi5iNDg2MzYwNTUxMzRmZDA3NzJhNWI4YzkzOTdmYjIyNGNjYzRjZDBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMxIEBACisyMDIwLTEyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBw
bGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc106IENhY2hlIFdlYkZvbnRzIGluIEdQVVAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTY2Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3VibWl0KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVGb250KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVGb250KToKKyAgICAgICAgKiBHUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
UmVzb3VyY2VDYWNoZTo6Zm9udHMgY29uc3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6Y2FjaGVGb250KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKwogMjAyMC0xMi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29uY3VycmVudCBEaXNwbGF5IExpc3Rz
XSBBZGQgYSBuZXcgdHlwZSB0byByZXByZXNlbnQgYSBzZXQgb2YgR1BVIHByb2Nlc3Mgd2FrZXVw
IGFyZ3VtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDJjN2NkODdjODNiMjMwYWU5NGM3Y2UzMDFhY2UxNTAzYTlmYzZiODIu
LmRiOTlhOWQwN2VkOTRjMjNjNWE1YzBkOThjNTU1NjZkZGM2NzQ2Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxODksNiAr
MjE4OSw3IEBACiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hh
bmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MjZENTZFMjI1M0FFMjhEMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkw
IC8qIFBsYXRmb3JtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1QTMzNkY2MUQ4
MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyNzRGRTA3MjU3RjdEOUYwMDMyNzA5RSAvKiBGb250
UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Mjc0RkUwNTI1N0Y3Q0Q0MDAzMjcwOUUgLyogRm9udFJlZmVyZW5jZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyN0E3RjNBMjQwNzhCODQw
MDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAv
KiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2
ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTAxMDYsNiArMTAxMDcsNyBAQAogCQk3MjY2RjAyOTIyNDMxMkIx
MDA4MzM5NzUgLyogU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVkUHJv
cGVydHlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQ
bGF0Zm9ybUltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtSW1hZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI3NEZFMDUyNTdGN0NENDAwMzI3MDlFIC8qIEZvbnRSZWZl
cmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MjdBRkVEMTFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRzUkdCLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDIxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRVhUc1JHQi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNjUzMiw2ICsyNjUzNCw3IEBACiAJCQkJQjUzMjBENjkxMjJBMjRFOTAw
MkQxNDQwIC8qIEZvbnRQbGF0Zm9ybURhdGEuaCAqLywKIAkJCQkzNzFGNEZGQjBEMjVFN0YzMDBF
Q0UwRDUgLyogRm9udFJhbmdlcy5jcHAgKi8sCiAJCQkJMzcxRjRGRkEwRDI1RTdGMzAwRUNFMEQ1
IC8qIEZvbnRSYW5nZXMuaCAqLywKKwkJCQk3Mjc0RkUwNTI1N0Y3Q0Q0MDAzMjcwOUUgLyogRm9u
dFJlZmVyZW5jZS5oICovLAogCQkJCUMyQUIwQUY0MUU2QjNDNkMwMDEzNDhDNSAvKiBGb250U2Vs
ZWN0aW9uQWxnb3JpdGhtLmNwcCAqLywKIAkJCQlDMkFCMEFGNTFFNkIzQzZDMDAxMzQ4QzUgLyog
Rm9udFNlbGVjdGlvbkFsZ29yaXRobS5oICovLAogCQkJCUIyQzNEQTVBMEQwMDZDRDYwMEVGNkYy
NiAvKiBGb250U2VsZWN0b3IuaCAqLywKQEAgLTMyMDQwLDYgKzMyMDQzLDcgQEAKIAkJCQkwODQ1
NjgwODEyQjkwREE2MDA5NjBBOUYgLyogRm9udE1ldHJpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUI1MzIwRDZCMTIyQTI0RTkwMDJEMTQ0MCAvKiBGb250UGxhdGZvcm1EYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzFGNEZGQzBEMjVFN0YzMDBFQ0UwRDUgLyogRm9udFJhbmdlcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNzI3NEZFMDcyNTdGN0Q5RjAwMzI3MDlFIC8qIEZvbnRSZWZlcmVuY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE1MzM5MjU2MDYzOTgwMDI4QzU5MiAvKiBGb250UmVu
ZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJBQjBBRjcxRTZCM0M2QzAwMTM0OEM1
IC8qIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTZC
MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA1NGI5Yjc1ZWY3MWNjNjJi
OThhZmRmNThiMTAzODQwZGFmZjQ3Y2ZlLi43NjdkNTkzMzMyNmE5MWEyYjIwYWE3OTQxMjRhNTAx
Mjg0MjU2ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApA
QCAtNTcsMTYgKzU3LDE3IEBAIGNvbnN0IGZsb2F0IGVtcGhhc2lzTWFya0ZvbnRTaXplTXVsdGlw
bGllciA9IDAuNWY7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoRm9u
dCk7CiAKLVJlZjxGb250PiBGb250OjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFj
ZURhdGEsIEZvbnQ6Ok9yaWdpbiBvcmlnaW4sIGZsb2F0IGZvbnRTaXplLCBib29sIHN5bnRoZXRp
Y0JvbGQsIGJvb2wgc3ludGhldGljSXRhbGljKQorUmVmPEZvbnQ+IEZvbnQ6OmNyZWF0ZShSZWY8
U2hhcmVkQnVmZmVyPiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luIG9yaWdpbiwgZmxvYXQg
Zm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAg
ICAgYm9vbCB3cmFwcGluZzsKICAgICBhdXRvIGN1c3RvbUZvbnREYXRhID0gQ2FjaGVkRm9udDo6
Y3JlYXRlQ3VzdG9tRm9udERhdGEoZm9udEZhY2VEYXRhLmdldCgpLCB7IH0sIHdyYXBwaW5nKTsK
ICAgICBGb250RGVzY3JpcHRpb24gZGVzY3JpcHRpb247CiAgICAgZGVzY3JpcHRpb24uc2V0Q29t
cHV0ZWRTaXplKGZvbnRTaXplKTsKLSAgICByZXR1cm4gRm9udDo6Y3JlYXRlKENhY2hlZEZvbnQ6
OnBsYXRmb3JtRGF0YUZyb21DdXN0b21EYXRhKCpjdXN0b21Gb250RGF0YSwgZGVzY3JpcHRpb24s
IHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgeyB9LCB7IH0pLCBvcmlnaW4pOworICAg
IAorICAgIHJldHVybiBGb250OjpjcmVhdGUoQ2FjaGVkRm9udDo6cGxhdGZvcm1EYXRhRnJvbUN1
c3RvbURhdGEoKmN1c3RvbUZvbnREYXRhLCBkZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3lu
dGhldGljSXRhbGljLCB7IH0sIHsgfSksIG9yaWdpbiwgSW50ZXJzdGl0aWFsOjpObywgVmlzaWJp
bGl0eTo6VmlzaWJsZSwgT3JpZW50YXRpb25GYWxsYmFjazo6Tm8sIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiB9CiAKLUZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhLCBPcmlnaW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNp
YmlsaXR5IHZpc2liaWxpdHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFj
aykKK0ZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luLCBJbnRlcnN0aXRpYWwgaW50ZXJzdGl0aWFsLCBWaXNpYmlsaXR5IHZpc2liaWxp
dHksIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjaywgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICA6IG1fcGxh
dGZvcm1EYXRhKHBsYXRmb3JtRGF0YSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1f
dmlzaWJpbGl0eSh2aXNpYmlsaXR5KQpAQCAtODAsNiArODEsNyBAQCBGb250OjpGb250KGNvbnN0
IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiwgSW50ZXJzdGl0
aWFsIGludAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgLCBtX3Nob3VsZE5vdEJlVXNl
ZEZvckFyYWJpYyhmYWxzZSkKICNlbmRpZgorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHBsYXRmb3JtSW5pdCgp
OwogICAgIHBsYXRmb3JtR2x5cGhJbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmgKaW5kZXggZWFmNzc2MDI3NzRjMTM0YzFlYzY4ODcyYjYxYmM0ZTZmNTIwYjEwMi4u
YjUyYjg5YTAzYWI4NDYyMmM0YWMxYTMyODIzYWM5YjUzYjYyNTRkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJMRShP
UEVOVFlQRV9WRVJUSUNBTCkKICNpbmNsdWRlICJPcGVuVHlwZVZlcnRpY2FsRGF0YS5oIgogI2Vu
ZGlmCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KQEAgLTcwLDcgKzcxLDggQEAgYm9vbCBmb250SGFzRWl0aGVyVGFibGUoQ1RG
b250UmVmLCB1bnNpZ25lZCB0YWJsZVRhZzEsIHVuc2lnbmVkIHRhYmxlVGFnMik7CiAjZW5kaWYK
IAogREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoRm9udCk7Ci1jbGFzcyBG
b250IDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udD4geworCitjbGFzcyBGb250IDogcHVibGljIFJl
ZkNvdW50ZWQ8Rm9udD4gLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Rm9udD4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKEZvbnQpOwogcHVibGljOgog
ICAgIC8vIFVzZWQgdG8gY3JlYXRlIHBsYXRmb3JtIGZvbnRzLgpAQCAtOTAsMTEgKzkyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgc3RhdGljIFJl
ZjxGb250PiBjcmVhdGUoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBPcmln
aW4gb3JpZ2luID0gT3JpZ2luOjpMb2NhbCwgSW50ZXJzdGl0aWFsIGludGVyc3RpdGlhbCA9IElu
dGVyc3RpdGlhbDo6Tm8sIFZpc2liaWxpdHkgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHk6OlZpc2li
bGUsIE9yaWVudGF0aW9uRmFsbGJhY2sgb3JpZW50YXRpb25GYWxsYmFjayA9IE9yaWVudGF0aW9u
RmFsbGJhY2s6Ok5vKQorICAgIHN0YXRpYyBSZWY8Rm9udD4gY3JlYXRlKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSwgT3JpZ2luIG9yaWdpbiA9IE9yaWdpbjo6TG9jYWwsIElu
dGVyc3RpdGlhbCBpbnRlcnN0aXRpYWwgPSBJbnRlcnN0aXRpYWw6Ok5vLCBWaXNpYmlsaXR5IHZp
c2liaWxpdHkgPSBWaXNpYmlsaXR5OjpWaXNpYmxlLCBPcmllbnRhdGlvbkZhbGxiYWNrIG9yaWVu
dGF0aW9uRmFsbGJhY2sgPSBPcmllbnRhdGlvbkZhbGxiYWNrOjpObywgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZvbnQocGxhdGZvcm1EYXRhLCBvcmlnaW4sIGludGVyc3RpdGlhbCwgdmlzaWJpbGl0
eSwgb3JpZW50YXRpb25GYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBG
b250KHBsYXRmb3JtRGF0YSwgb3JpZ2luLCBpbnRlcnN0aXRpYWwsIHZpc2liaWxpdHksIG9yaWVu
dGF0aW9uRmFsbGJhY2ssIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwogICAgIH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEZvbnQ+IGNyZWF0ZShSZWY8U2hhcmVkQnVmZmVy
PiYmIGZvbnRGYWNlRGF0YSwgRm9udDo6T3JpZ2luLCBmbG9hdCBmb250U2l6ZSwgYm9vbCBzeW50
aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYyk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxGb250PiBjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBmb250RmFjZURhdGEsIEZv
bnQ6Ok9yaWdpbiwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50
aGV0aWNJdGFsaWMsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+Rm9udCgp
OwogCkBAIC0xOTYsNiArMTk4LDggQEAgcHVibGljOgogICAgIFZpc2liaWxpdHkgdmlzaWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJpbGl0eTsgfQogICAgIGJvb2wgYWxsb3dzQW50aWFs
aWFzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnRpYWxpYXNpbmc7IH0KIAorICAgIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIAogI2lm
ICFMT0dfRElTQUJMRUQKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKICNlbmRpZgpA
QCAtMjI0LDcgKzIyOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIFdFQkNP
UkVfRVhQT1JUIEZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYsIE9yaWdpbiwgSW50ZXJzdGl0
aWFsLCBWaXNpYmlsaXR5LCBPcmllbnRhdGlvbkZhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBGb250KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmLCBPcmlnaW4sIEludGVyc3RpdGlhbCwgVmlz
aWJpbGl0eSwgT3JpZW50YXRpb25GYWxsYmFjaywgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0KCk7CiAgICAgdm9pZCBwbGF0Zm9ybUdseXBoSW5p
dCgpOwpAQCAtMzIzLDkgKzMyNywxMyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc2hvdWxk
Tm90QmVVc2VkRm9yQXJhYmljIDogMTsKICNlbmRpZgogCisgICAgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworCiAgICAgLy8gQWRkaW5n
IGFueSBub24tZGVyaXZlZCBpbmZvcm1hdGlvbiB0byBGb250IG5lZWRzIGEgcGFyYWxsZWwgY2hh
bmdlIGluIFdlYkNvcmVBcmd1bWVudENvZGVycy5jcHAuCiB9OwogCit1c2luZyBGb250SGFzaE1h
cCA9IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBSZWY8Rm9udD4+OworCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgZm9udEZhbWlseVNob3VsZE5vdEJlVXNlZEZv
ckFyYWJpYyhDRlN0cmluZ1JlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRSZWZlcmVuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWY2ZTY0NGIyODQ5Yjdi
Y2U3ZWQ1MzFlZGI1NDNhOTc1YzdiYmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJlZmVyZW5jZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJGb250LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgRm9u
dFJlZmVyZW5jZSA9IFJlZjxGb250PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCAxNmIxOTdmOWVlMmQyOGRiZTkyMWQ5MzA5NDNkNDMwNDYxZGZj
ZDg2Li5hZmYyMDllZjBiNWYxZTMzNDQyODQ5ZWM4ODljZjY0MjY1YTBlZGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJbWFn
ZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZm
ZXJzOyB9CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25z
dCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQorICAgIGNvbnN0IEZvbnRIYXNoTWFwJiBmb250
cygpIGNvbnN0IHsgcmV0dXJuIG1fZm9udHM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyUmVhZGluZ0NsaWVudCopOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0SXRlbUJ1ZmZlckNsaWVudChJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dCopOwpAQCAtMTc3LDExICsxNzgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBt
YWtlUmVmKGltYWdlKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjYWNo
ZUZvbnQoRm9udCYgZm9udCkKKyAgICB7CisgICAgICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlUmVmKGZvbnQpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgYm9vbCBzaG91
bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MsIEl0ZW1IYW5kbGUpOwogCiAgICAgSW1hZ2VCdWZm
ZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2
ZUltYWdlczsKKyAgICBGb250SGFzaE1hcCBtX2ZvbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
dGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2Ry
YXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsg
dHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IDhiYzAwMTQyODIwZTk3Mzk2NWViYTVh
OTNkMDZhMDMwOWI4Njk1ZDMuLjhhMTVlNGVjMDRkNmE5NmJmODRjNWM1YmIyNzk3YzUxZjhmODAy
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIERyYXdH
bHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dT
dGF0ZVJlZiBnc3RhdAogICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENHR1N0YXRlR2V0U3Ryb2tlQ29s
b3IoZ3N0YXRlKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7
CiAKLSAgICBtX293bmVyLmFwcGVuZDxEcmF3R2x5cGhzPigqbV9vcmlnaW5hbEZvbnQsIGdseXBo
cywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50
VGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9z
aXRpb25zWzBdKSwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBtX293bmVyLmRyYXdHbHlwaHMoKm1f
b3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRp
b25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0
TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CiAKICAgICBt
X293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCmluZGV4IGJkYmQyMzlmNzMzNzg0MDE1Mjc3MWEyZjQ1N2JjNDY5NTEw
ZDBlMjYuLjg4MjIzNWQwODk2Y2FhZDNlZDZmNTUwZmY3N2M5YWE2ODdiMjcxZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM1NywxOCArMzU3LDggQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0RyYXdp
bmdDb21tYW5kcyYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLURyYXdHbHlwaHM6OkRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBn
bHlwaHMsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3Qg
RmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUp
Ci0gICAgOiBtX2ZvbnQobWFrZVJlZlB0cihjb25zdF9jYXN0PEZvbnQmPihmb250KSkpCi0gICAg
LCBtX2dseXBocyhXVEZNb3ZlKGdseXBocykpCi0gICAgLCBtX2FkdmFuY2VzKFdURk1vdmUoYWR2
YW5jZXMpKQotICAgICwgbV9sb2NhbEFuY2hvcihsb2NhbEFuY2hvcikKLSAgICAsIG1fc21vb3Ro
aW5nTW9kZShzbW9vdGhpbmdNb2RlKQotewotICAgIGNvbXB1dGVCb3VuZHMoKTsKLX0KLQogRHJh
d0dseXBoczo6RHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKLSAgICA6IG1fZm9udChtYWtlUmVmUHRyKGNvbnN0X2Nhc3Q8Rm9udCY+
KGZvbnQpKSkKKyAgICA6IG1fZm9udElkZW50aWZpZXIoZm9udC5yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIoKSkKICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgLCBtX3Nt
b290aGluZ01vZGUoc21vb3RoaW5nTW9kZSkKIHsKQEAgLTM3OCwyOCArMzY4LDQyIEBAIERyYXdH
bHlwaHM6OkRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHCiAgICAgICAgIG1fZ2x5cGhzLnVuY2hlY2tlZEFwcGVuZChnbHlw
aHNbaV0pOwogICAgICAgICBtX2FkdmFuY2VzLnVuY2hlY2tlZEFwcGVuZChhZHZhbmNlc1tpXSk7
CiAgICAgfQotICAgIGNvbXB1dGVCb3VuZHMoKTsKKyAgICBjb21wdXRlQm91bmRzKGZvbnQpOwor
fQorCitEcmF3R2x5cGhzOjpEcmF3R2x5cGhzKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBm
b250SWRlbnRpZmllciwgVmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEyOD4mJiBnbHlwaHMsIFZl
Y3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiBhZHZhbmNlcywgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCisgICAgOiBt
X2ZvbnRJZGVudGlmaWVyKGZvbnRJZGVudGlmaWVyKQorICAgICwgbV9nbHlwaHMoV1RGTW92ZShn
bHlwaHMpKQorICAgICwgbV9hZHZhbmNlcyhXVEZNb3ZlKGFkdmFuY2VzKSkKKyAgICAsIG1fbG9j
YWxBbmNob3IobG9jYWxBbmNob3IpCisgICAgLCBtX3Ntb290aGluZ01vZGUoc21vb3RoaW5nTW9k
ZSkKK3sKIH0KIAotaW5saW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5cGhC
dWZmZXIoKSBjb25zdAoraW5saW5lIEdseXBoQnVmZmVyIERyYXdHbHlwaHM6OmdlbmVyYXRlR2x5
cGhCdWZmZXIoY29uc3QgRm9udCYgZm9udCkgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciByZXN1
bHQ7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2dseXBocy5zaXplKCk7ICsraSkKLSAg
ICAgICAgcmVzdWx0LmFkZChtX2dseXBoc1tpXSwgKm1fZm9udCwgbV9hZHZhbmNlc1tpXSwgR2x5
cGhCdWZmZXI6Om5vT2Zmc2V0KTsKKyAgICAgICAgcmVzdWx0LmFkZChtX2dseXBoc1tpXSwgZm9u
dCwgbV9hZHZhbmNlc1tpXSwgR2x5cGhCdWZmZXI6Om5vT2Zmc2V0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIERyYXdHbHlwaHM6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgY29uc3QKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgRHJhd0dseXBoczo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
Kwordm9pZCBEcmF3R2x5cGhzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZvbnQm
IGZvbnQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3R2x5cGhzKCptX2ZvbnQsIGdlbmVyYXRl
R2x5cGhCdWZmZXIoKSwgMCwgbV9nbHlwaHMuc2l6ZSgpLCBhbmNob3JQb2ludCgpLCBtX3Ntb290
aGluZ01vZGUpOworICAgIGNvbnRleHQuZHJhd0dseXBocyhmb250LCBnZW5lcmF0ZUdseXBoQnVm
ZmVyKGZvbnQpLCAwLCBtX2dseXBocy5zaXplKCksIGFuY2hvclBvaW50KCksIG1fc21vb3RoaW5n
TW9kZSk7CiB9CiAKLXZvaWQgRHJhd0dseXBoczo6Y29tcHV0ZUJvdW5kcygpCit2b2lkIERyYXdH
bHlwaHM6OmNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYgZm9udCkKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBjb2RlIGRvZXNuJ3QgYWN0dWFsbHkgdGFrZSB0aGUgZXh0ZW50cyBvZiB0aGUgZ2x5cGhz
IGludG8gY29uc2lkZXJhdGlvbi4gSXQgYXNzdW1lcyB0aGF0CiAgICAgLy8gdGhlIGdseXBoIGxp
ZXMgZW50aXJlbHkgd2l0aGluIGl0cyBbKGFzY2VudCArIGRlc2NlbnQpLCBhZHZhbmNlXSByZWN0
LgotICAgIGZsb2F0IGFzY2VudCA9IG1fZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgp
OwotICAgIGZsb2F0IGRlc2NlbnQgPSBtX2ZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXREZXNjZW50
KCk7CisgICAgZmxvYXQgYXNjZW50ID0gZm9udC5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCk7
CisgICAgZmxvYXQgZGVzY2VudCA9IGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdERlc2NlbnQoKTsK
ICAgICBGbG9hdFBvaW50IGN1cnJlbnQgPSBsb2NhbEFuY2hvcigpOwogICAgIHNpemVfdCBudW1H
bHlwaHMgPSBtX2dseXBocy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1H
bHlwaHM7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggYzdhOWEy
MGQ5YmEwOWU3NzgxNDZkNDhkMTM5N2QzMTZhNTFmZjRkMS4uMmMwNzg2YWNhZDcyYTM4OGE3MWYx
ODNhZjM2NDViODQxNDFiOWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC05MzcsMjggKzkzNywyOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJ
dGVtID0gdHJ1ZTsKIAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQotCi0gICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KKyAgICBEcmF3R2x5cGhzKGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwg
dW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3Ro
aW5nTW9kZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhd0dseXBocyhSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAxMjg+
JiYsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRQb2ludCYg
bG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAorICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBmb250SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udElkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiYgZ2x5cGhzKCkg
Y29uc3QgeyByZXR1cm4gbV9nbHlwaHM7IH0KKyAgICBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFu
Y2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbmNob3I7IH0KKyAgICBGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogCi0gICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEcmF3R2x5cGhzPiBkZWNvZGUoRGVj
b2RlciYpOwotCi0gICAgRHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJH
bHlwaCosIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBG
bG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIERyYXdHbHlwaHMoY29uc3QgRm9udCYsIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoLCAx
Mjg+JiYsIFZlY3RvcjxHbHlwaEJ1ZmZlckFkdmFuY2UsIDEyOD4mJiwgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlKTsKLQotICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBh
cHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYsIEZvbnQmKSBjb25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZ2xvYmFsQm91
bmRzKCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAgICAgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kczsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxEcmF3R2x5cGhzPiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgotICAgIHZvaWQgY29t
cHV0ZUJvdW5kcygpOwotICAgIEdseXBoQnVmZmVyIGdlbmVyYXRlR2x5cGhCdWZmZXIoKSBjb25z
dDsKKyAgICB2b2lkIGNvbXB1dGVCb3VuZHMoY29uc3QgRm9udCYpOworICAgIEdseXBoQnVmZmVy
IGdlbmVyYXRlR2x5cGhCdWZmZXIoY29uc3QgRm9udCYpIGNvbnN0OwogCi0gICAgUmVmUHRyPEZv
bnQ+IG1fZm9udDsKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9mb250SWRlbnRp
ZmllcjsKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMTI4PiBtX2dseXBoczsKICAgICBW
ZWN0b3I8R2x5cGhCdWZmZXJBZHZhbmNlLCAxMjg+IG1fYWR2YW5jZXM7CiAgICAgRmxvYXRSZWN0
IG1fYm91bmRzOwpAQCAtOTY5LDcgKzk2OSw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBEcmF3R2x5cGhzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IG1ha2VSZWYoKm1fZm9udCk7CisgICAgZW5jb2RlciA8PCBtX2Zv
bnRJZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgbV9nbHlwaHM7CiAgICAgZW5jb2RlciA8PCBt
X2FkdmFuY2VzOwogICAgIGVuY29kZXIgPDwgbV9sb2NhbEFuY2hvcjsKQEAgLTk3OSw5ICs5Nzks
OSBAQCB2b2lkIERyYXdHbHlwaHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPERyYXdHbHlwaHM+IERyYXdHbHlwaHM6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPFJlZjxGb250Pj4gZm9udDsK
LSAgICBkZWNvZGVyID4+IGZvbnQ7Ci0gICAgaWYgKCFmb250KQorICAgIE9wdGlvbmFsPFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZm9udElkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBm
b250SWRlbnRpZmllcjsKKyAgICBpZiAoIWZvbnRJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCiAgICAgT3B0aW9uYWw8VmVjdG9yPEdseXBoQnVmZmVyR2x5cGgsIDEy
OD4+IGdseXBoczsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIE9wdGlvbmFsPERyYXdHbHlwaHM+IERy
YXdHbHlwaHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc21vb3RoaW5nTW9k
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7eyBmb250LT5n
ZXQoKSwgV1RGTW92ZSgqZ2x5cGhzKSwgV1RGTW92ZSgqYWR2YW5jZXMpLCAqbG9jYWxBbmNob3Is
ICpzbW9vdGhpbmdNb2RlIH19OworICAgIHJldHVybiB7eyAqZm9udElkZW50aWZpZXIsIFdURk1v
dmUoKmdseXBocyksIFdURk1vdmUoKmFkdmFuY2VzKSwgKmxvY2FsQW5jaG9yLCAqc21vb3RoaW5n
TW9kZSB9fTsKIH0KIAogY2xhc3MgRHJhd0ltYWdlQnVmZmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBmNTAwMDVhNDU0YjM5ZjQ1Y2QwZmY3MWFkN2Qx
OWNhMWNkN2M3MGVlLi42ZGJlOGRmZmYxMTM5OWUyNzc5NmI0MTIwY2QwYjE0ODBhZDY2ZjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xNjcsNiArMTY3
LDE0IEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCB1bnNpCiAgICAgbV9kcmF3R2x5cGhzUmVjb3JkZXIu
ZHJhd0dseXBocyhmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBzdGFydFBvaW50
LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVm
ZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBs
b2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3sKKyAgICBpZiAo
bV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVGb250KGNvbnN0X2Nhc3Q8Rm9u
dCY+KGZvbnQpKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlRm9udChjb25zdF9jYXN0PEZvbnQm
Pihmb250KSk7CisgICAgYXBwZW5kPERyYXdHbHlwaHM+KGZvbnQsIGdseXBocywgYWR2YW5jZXMs
IGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6
OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgaW1hZ2VC
dWZmZXIuZmx1c2hEcmF3aW5nQ29udGV4dCgpIHdoZW4gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIx
ODc3Mz4gaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCBhMzlkNzJiYzE4Y2M4NmVhNjQwZjE0NWJlYzZlYzEzYWJkNDg2YzM5Li5hOGIzYjIxYWNhODM4
NjQ3Yjc3MTYyYzVmY2NlNTA5MTQ3MjlkYTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTY3LDYgKzY3LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWNoZUZvbnQoRm9udCYpIHsgfQogICAgIH07CiAKICAgICB2b2lkIGZsdXNoQ29udGV4dChG
bHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikgeyBhcHBlbmQ8Rmx1c2hDb250ZXh0PihpZGVudGlm
aWVyKTsgfQpAQCAtMTAzLDYgKzEwNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQg
ZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25lZCBmcm9t
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250
U21vb3RoaW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5z
aWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5n
TW9kZSk7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
cGxheWVyLmNwcAppbmRleCA2Y2ZmN2ExMTMxMzIwNWE2NGYzNjdmZjgxZTljZTViNTllMmZjOTFh
Li5iMTM1NWY4N2VlYWRkOWNiYzVkOTY5OWRhNjEwMjJhMjBjMzhjMmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBs
YXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2
ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXll
cjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYg
ZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25z
dCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgY29uc3QgRm9udEhhc2hNYXAqIGZv
bnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAs
IG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1
ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDogbV9kaXNwbGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKICAg
ICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2ZUltYWdlcyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3Bs
YXlMaXN0Lm5hdGl2ZUltYWdlcygpKQorICAgICwgbV9mb250cyhmb250cyA/ICpmb250cyA6IG1f
ZGlzcGxheUxpc3QuZm9udHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBA
IC02OSw2ICs3MCwxNyBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNv
dXJjZUlkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRm9udEhhc2hNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCit7CisgICAgYXV0byYg
Zm9udEl0ZW0gPSBpdGVtLmdldDxEcmF3R2x5cGhzPigpOworICAgIGF1dG8gcmVzb3VyY2VJZGVu
dGlmaWVyID0gZm9udEl0ZW0uZm9udElkZW50aWZpZXIoKTsKKyAgICBpZiAoYXV0byogZm9udCA9
IGZvbnRzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpKSB7CisgICAgICAgIGZvbnRJdGVtLmFwcGx5
KGNvbnRleHQsICpmb250KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKK30KKwogc3RkOjpwYWlyPE9wdGlvbmFsPFN0
b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBS
ZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAobV9kZWxlZ2F0
ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQpAQCAtOTgsNiArMTEwLDEy
IEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCisgICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBocz4o
KSkgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0g
YXBwbHlGb250SXRlbShtX2NvbnRleHQsIG1fZm9udHMsIGl0ZW0pKQorICAgICAgICAgICAgcmV0
dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CisgICAgICAgIHJldHVybiB7IFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfQorCiAgICAgaXRlbS5hcHBseShtX2NvbnRl
eHQpOwogICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAppbmRleCBjNDZjMWUzOTVlMDFmMDIyODI4
OTgwNjMyOTZiYmY2Nzk4NzA1ZTE3Li41NDk2NGRkMDYzMTk0MmM2ZDc0NmZmZWNmOGYxMDA2MDEz
MTFlYzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKQEAgLTU3LDcg
KzU3LDcgQEAgY2xhc3MgUmVwbGF5ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlcGxh
eWVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBS
ZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdl
QnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVs
bHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhh
c2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIGNv
bnN0IEZvbnRIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5UmVz
dWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29sIHRyYWNr
UmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTc1LDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBjb25z
dCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hN
YXAmIG1faW1hZ2VCdWZmZXJzOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbV9uYXRp
dmVJbWFnZXM7CisgICAgY29uc3QgRm9udEhhc2hNYXAmIG1fZm9udHM7CiAgICAgRGVsZWdhdGUq
IG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggN2IxM2ExYTk0
NjExOTAxN2RjYzY5YWFlYmI5MGVmNzQ1ZDM1NTNiMy4uZjNjNzgyNDQzNjg0YzExYmQ1NmJhZTMy
YmEwMjRmYjMxZDIwN2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMTQ1LDYgKzE0
NSw3IEBAIERpc3BsYXlMaXN0OjpSZXBsYXlSZXN1bHQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
c3VibWl0KGNvbnN0IERpc3BsYXlMaXN0OjpEaXNwCiAgICAgICAgIGRpc3BsYXlMaXN0LAogICAg
ICAgICAmcmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygpLAogICAgICAgICAmcmVt
b3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpLAorICAgICAgICAmcmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLmZvbnRzKCksCiAgICAgICAgIHJlcGxheWVyRGVsZWdhdGUKICAgICB9LnJlcGxh
eSgpOwogfQpAQCAtMjcyLDYgKzI3MywxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbgogICAg
IH0KIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+
JiYgZm9udCkKK3sKKyAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVGb250KFdURk1vdmUo
Zm9udCkpOworfQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCmluZGV4
IDViNGEwYmI3OTY0OGUxZWU2YjQ4NGRmYzNmMTU5ZTdlNGZiYTQ4MWYuLjViNmNkZWY2MjZmMjM1
NzBmZGEzM2M5MjYxM2QxYjE2NjNhNDg0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApAQCAtMTEw
LDYgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0
KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCBnZXRJ
bWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdl
YkNvcmU6OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYm
KTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2Fj
aGVGb250KFJlZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNv
dXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlk
Q3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IGFjZTM4NmMy
Mzg3MGRhNTkwNjk1MWIyY2U0MjAzNGJhOTQyZjlkMTMuLmQ5Y2QwYWZlYjkzYjE3NmI5ZjY0ZDhl
MjgwNDNjMDBlMTk1MDNkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2Vz
LmluCkBAIC0yNyw2ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQg
Tm90UmVmQ291bnRlZCB7CiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChzdHJ1Y3QgV2Vi
S2l0OjpHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyBhcmd1bWVudHMpCiAgICAgR2V0
SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJ
bWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwogICAgIENhY2hlTmF0aXZl
SW1hZ2UoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgQ2FjaGVGb250KFdlYkNvcmU6OkZvbnRSZWZlcmVuY2UgZm9udCkKICAgICBEaWRDcmVhdGVT
aGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5k
bGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jcHAKaW5kZXggYzMzMmQyZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2
OS4uMDBhZTY5MWY2NDFjNTdlYjllYzA0Y2QwNzk5YTExMDM1NjlhZTllMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlLmNwcApAQCAtNDgsNiArNDgsMTIgQEAgdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNo
ZU5hdGl2ZUltYWdlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSkKICAgICBBU1NFUlRfVU5VU0VE
KGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogfQogCit2b2lkIFJlbW90ZVJlc291
cmNlQ2FjaGU6OmNhY2hlRm9udChSZWY8Rm9udD4mJiBmb250KQoreworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9mb250cy5hZGQoZm9udC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFdU
Rk1vdmUoZm9udCkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNO
ZXdFbnRyeSk7Cit9CisKIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJl
c291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgaWYgKG1faW1hZ2VCdWZmZXJzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggMWYyMTA1OGUzM2ExODc1YmJkN2Y3MmMw
MTIzYzY1MDNlYzc5OWIwYi4uMTQwZDNiMGQ3NzRiOWQ4NWFhZDBlYzljZjQ0MjdhNjJhOGNjOWMx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg+CkBAIC00MywxNCArNDQsMTcg
QEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1hZ2VC
dWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAgIHZvaWQgY2FjaGVGb250
KFJlZjxXZWJDb3JlOjpGb250PiYmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIAogICAgIGNvbnN0IFdl
YkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAm
IG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CisgICAgY29u
c3QgV2ViQ29yZTo6Rm9udEhhc2hNYXAmIGZvbnRzKCkgY29uc3QgeyByZXR1cm4gbV9mb250czsg
fQogCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVm
ZmVyczsKICAgICBXZWJDb3JlOjpOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7Cisg
ICAgV2ViQ29yZTo6Rm9udEhhc2hNYXAgbV9mb250czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2EwYWUy
ODQxMWE4M2RlNGJmM2ZlMDhiMDEyZTQwNTU0OGQ4YjU3My4uNmYyMDY1MGI0ZWNjNTQ5ZTA2ZDQ3
YjU2OWE2Njc2Y2NjMWUzZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CkBAIC0yMTQsMTIgKzIxNCwxMiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9y
d2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpGb250UmVmZXJl
bmNlJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBsYXli
YWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TWVk
aWFQbGF5ZXJJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50
aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UnLAogICAgICAg
ICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UGx1Z2luTG9h
ZENsaWVudFBvbGljeScsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZTc5OGU5MTJl
NDdiMGQ4ZDBmMDM4ZTdmNzZkNzBmYzA2YWY2ZWNhZS4uY2RlYTcxMzJmMWNlOGVmMGNmMGFlMTlh
MzgwYmU4NzAwZTRhOGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCkBAIC0xMTA4LDYgKzExMDgsOCBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpG
b250PgogICAgIC8vIEludGVudGlvbmFsbHkgZG9uJ3QgZW5jb2RlIG1faXNCcm9rZW5JZGVvZ3Jh
cGhGYWxsYmFjayBiZWNhdXNlIGl0IGRvZXNuJ3QgYWZmZWN0IGRyYXdHbHlwaHMoKS4KIAogICAg
IGVuY29kZVBsYXRmb3JtRGF0YShlbmNvZGVyLCBmb250KTsKKworICAgIGVuY29kZXIgPDwgZm9u
dC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CiB9CiAKIE9wdGlvbmFsPFJlZjxGb250
Pj4gQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAg
LTExMzYsNyArMTEzOCwxMiBAQCBPcHRpb25hbDxSZWY8Rm9udD4+IEFyZ3VtZW50Q29kZXI8UmVm
PEZvbnQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwbGF0Zm9ybURhdGEu
aGFzVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiBG
b250OjpjcmVhdGUocGxhdGZvcm1EYXRhLnZhbHVlKCksIG9yaWdpbi52YWx1ZSgpLCBpc0ludGVy
c3RpdGlhbC52YWx1ZSgpLCB2aXNpYmlsaXR5LnZhbHVlKCksIGlzVGV4dE9yaWVudGF0aW9uRmFs
bGJhY2sudmFsdWUoKSk7CisgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBmb250SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGZvbnRJZGVudGlmaWVyOworICAgIGlm
ICghZm9udElkZW50aWZpZXIuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiBGb250OjpjcmVhdGUocGxhdGZvcm1EYXRhLnZhbHVlKCksIG9yaWdp
bi52YWx1ZSgpLCBpc0ludGVyc3RpdGlhbC52YWx1ZSgpLCB2aXNpYmlsaXR5LnZhbHVlKCksIGlz
VGV4dE9yaWVudGF0aW9uRmFsbGJhY2sudmFsdWUoKSwgZm9udElkZW50aWZpZXIudmFsdWUoKSk7
CiB9CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxDdXJzb3I+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4
IDYwZTY0MzBiODk5MWYzYTFlZWZjZDJjZDc0ZGMyYzcwMjdmODk5ZTguLjlmYjk5NWIzMDgxMGIx
YTMxZWE2ZjhjZGEyNjA0YjM4MGViODZiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CkBAIC0xODksNiArMTg5LDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2
ZUltYWdlKGltYWdlKTsKICAgICB9CiAKKyAgICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250
JiBmb250KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5KQorICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJl
bW90ZVJlc291cmNlQ2FjaGVQcm94eSgpLmNhY2hlRm9udChmb250KTsKKyAgICB9CisKICAgICB2
b2lkIGNoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIG5leHRJbWFnZUJ1ZmZlcikgZmluYWwKICAgICB7CiAgICAgICAgIGJvb2wg
d2FzRW1wdHkgPSBtX2RyYXdpbmdDb250ZXh0LmRpc3BsYXlMaXN0KCkuaXNFbXB0eSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IGY2MzExMzVhZmM4ZWZm
NjYxOTMwYzc1YWI1ZWQxZTExZTI1MjM1ODEuLjZkOWQ1ZjE4ZGNiZGU5MjJhMTFhMGJhNTM2OTUx
NmU4NjlkYzlhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAK
QEAgLTE1NCw2ICsxNTQsMTEgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNh
Y2hlTmF0aXZlSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUKICAgICBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKGhhbmRsZSwg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZUZvbnQoRm9u
dCYgZm9udCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpD
YWNoZUZvbnQobWFrZVJlZihmb250KSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwor
fQorCiB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVsZWFz
ZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5n
QmFja2VuZElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgK
aW5kZXggZTA4MTVkZjc1OGVhNTIyNmM4YWZhNjVjZDI2ZTY5YWRhZjk0MDA3Zi4uMTNiOGVjM2E3
NzVmZjU3NzgwM2UwMDk2OTRmYzAzYTgzMWEzNjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VEYXRhPiBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIGNhY2hlRm9udChXZWJDb3JlOjpGb250Jik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3Rl
UmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIGJv
b2wgd2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFja2VuZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDZjN2E1MTM3ODU1MjFlMzkyYThhYTM3NDA3MjlhNWRj
MDc0Njg5NWUuLmMzYWIyNWIxNjIwMTAzZGFiZmNjNWZhMTMyMGJiMWQwYTg5NjJlNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTExMCw2ICsxMTAsMTUgQEAgdm9p
ZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVJbWFnZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmUKICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5y
ZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAor
dm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlRm9udChGb250JiBmb250KQorewor
ICAgIG1fZm9udHMuZW5zdXJlKGZvbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsm
XSgpIHsKKyAgICAgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNv
dXJjZS4KKyAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY2FjaGVGb250KGZv
bnQpOworICAgICAgICByZXR1cm4gbWFrZVdlYWtQdHIoZm9udCk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggNjg4ZjMzNTE4MWM0ZTU0MDIwYWNjOThk
NWI3Y2Y0MmRhNTI4NjgyZC4uYzM3NmY5Y2I0MDhmY2ZkYWU3ZTdjZmVkNjFkYWI0MjJjZWZiYTVi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0yNywxMSArMjcsMTMgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZvbnQ7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIH0KIApA
QCAtNDksMTcgKzUxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBjYWNoZU5h
dGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBjYWNoZUZvbnQoV2Vi
Q29yZTo6Rm9udCYpOwogCiAgICAgdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+PjsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAKIHByaXZhdGU6CiAgICAgdXNpbmcg
TmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBGb250
SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBX
ZWFrUHRyPFdlYkNvcmU6OkZvbnQ+PjsKICAgICAKICAgICB2b2lkIHJlbGVhc2VOYXRpdmVJbWFn
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCiAgICAg
SW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1h
cCBtX25hdGl2ZUltYWdlczsKKyAgICBGb250SGFzaE1hcCBtX2ZvbnRzOwogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9Owog
Cg==
</data>
<flag name="commit-queue"
          id="432995"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>