<?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>133325</bug_id>
          
          <creation_ts>2014-05-27 14:50:27 -0700</creation_ts>
          <short_desc>Move constructTextRun() from RenderBlock to RenderBox</short_desc>
          <delta_ts>2015-11-13 10:26:45 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012068</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-05-27 14:50:27 -0700</bug_when>
    <thetext>Move constructTextRun() from RenderBlock to RenderBox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012069</commentid>
    <comment_count>1</comment_count>
      <attachid>232150</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-05-27 14:53:36 -0700</bug_when>
    <thetext>Created attachment 232150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014627</commentid>
    <comment_count>2</comment_count>
      <attachid>232150</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-10 18:59:31 -0700</bug_when>
    <thetext>Comment on attachment 232150
Patch

Is there a reason why we keep these stateless functions around in a render class instead of a separate file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1014919</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-06-11 14:32:35 -0700</bug_when>
    <thetext>I am not 100% sure but my guess would be to keep relevant pieces nearby</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141765</commentid>
    <comment_count>4</comment_count>
      <attachid>232150</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-12 21:37:48 -0800</bug_when>
    <thetext>Comment on attachment 232150
Patch

Does this patch still make sense?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232150</attachid>
            <date>2014-05-27 14:53:36 -0700</date>
            <delta_ts>2015-11-13 10:26:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133325-20140527145312.patch</filename>
            <type>text/plain</type>
            <size>37637</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMzNjY2ZWEyMWY1ZmM0
MDg5OGU4YWYwMzE2NTIyYTRjODYzNTYyOC4uMTM1MDA1ZGJiY2RjOTljZGRjMDI1ZGZkNTYyNzM3
MzNhMTFmYmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDE0LTA1LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBjb25z
dHJ1Y3RUZXh0UnVuKCkgZnJvbSBSZW5kZXJCbG9jayB0byBSZW5kZXJCb3gKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzMyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzIG9mIHIxNjk0MDAsIFJlbmRl
ckxpc3RNYXJrZXIgYW5kIFJlbmRlck1lbnVMaXN0IGFyZSBjYWxsaW5nIGNvbnN0cnVjdFRleHRS
dW4oKS4KKyAgICAgICAgSG93ZXZlciwgdGhlc2UgdHdvIGNsYXNzZXMgaW5oZXJpdCBmcm9tIFJl
bmRlckJveCBpbnN0ZWFkIG9mIFJlbmRlckJsb2NrLiBSYXRoZXIKKyAgICAgICAgdGhhbiBjYWxs
aW5nIGludG8gYSBzaWJsaW5nIGNsYXNzLCBhIG1vcmUgbmF0dXJhbCBzb2x1dGlvbiBpcyB0byBt
b3ZlCisgICAgICAgIGNvbnN0cnVjdFRleHRSdW4oKSB0byB0aGUgc2hhcmVkIGJhc2UgY2xhc3Ms
IFJlbmRlckJveC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBzaG91bGQg
YmUgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0
Ojppc05lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TGF5b3V0Ojpjb25zdHJ1Y3RUZXh0
UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94
OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsbGlwc2lzQm94OjpwYWludFNl
bGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0cmlwVHJhaWxpbmdTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RUZXh0UnVuSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNob3VsZFNraXBDcmVh
dGluZ1J1bnNGb3JPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpsYXlvdXRPdmVyZmxvd1JlY3RGb3JQcm9wYWdh
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJDb21iaW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb21i
aW5lVGV4dDo6Y29tYmluZVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdE1h
cmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnVwZGF0
ZU9wdGlvbnNXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGV4dDo6dHJpbW1lZFByZWZXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6
aHlwaGVuV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6bWF4V29yZEZyYWdtZW50V2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6d2lkdGgpOgorICAgICAgICAqIHJl
bmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6Om1lYXN1cmVIeXBoZW5XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0V2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6dHJ5SHlwaGVuYXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KToKKworMjAxNC0wNS0yNyAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCiAgICAgICAgIExpc3RzIHN0eWxlZCB3aXRo
IFNWRyBmb250cyBhcmUgbm90IHJlbmRlcmVkIGFzIGV4cGVjdGVkCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMxOTgKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAppbmRleCBjMWVjZDhkYTYwMjU5ZGFiZDMwNjEwNDZlZWM1MTZhOTM2MjZmNTFi
Li5kNTYxMGU2Njc1YzQ5YmZkNmM0M2UyMWI0MmI3NTEyODQxMTNmMjE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBUZXh0TGF5b3V0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc05lZWRlZChSZW5kZXJUZXh0KiB0ZXh0LCBjb25zdCBG
b250JiBmb250KQogICAgIHsKLSAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bih0ZXh0LCBmb250LCB0ZXh0LCB0ZXh0LT5zdHlsZSgpKTsKKyAgICAgICAg
VGV4dFJ1biBydW4gPSBSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgZm9udCwgdGV4
dCwgdGV4dC0+c3R5bGUoKSk7CiAgICAgICAgIHJldHVybiBmb250LmNvZGVQYXRoKHJ1bikgPT0g
Rm9udDo6Q29tcGxleDsKICAgICB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclRleHQqIHRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGZsb2F0IHhQb3MpCiAgICAgewotICAgICAgICBUZXh0UnVuIHJ1
biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZvbnQsIHRleHQsIHRleHQt
PnN0eWxlKCkpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJveDo6Y29uc3RydWN0VGV4
dFJ1bih0ZXh0LCBmb250LCB0ZXh0LCB0ZXh0LT5zdHlsZSgpKTsKICAgICAgICAgcnVuLnNldENo
YXJhY3RlcnNMZW5ndGgodGV4dC0+dGV4dExlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUKHJ1bi5j
aGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0aCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHAKaW5kZXggODM2MTgwODQyMWFlYTg5ODc5NmVhYmJkZjRjNmUy
YmE0MDE4NjNmMy4uYjQyMTgyZmQwNDcyN2Q5OTE2MjQxMDU2MjU2NTY3NjVlZWZmMDBkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsIExhCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0
aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVs
b3cuCi0gICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRl
eHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgbGluZVN0eWxlLCBUZXh0UnVuOjpBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5
KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkp
OworICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1
bigmYmxvY2tGbG93KCksIGZvbnQsIG1fc3RyLCBsaW5lU3R5bGUsIFRleHRSdW46OkFsbG93VHJh
aWxpbmdFeHBhbnNpb24pLCBMYXlvdXRQb2ludCh4KCkgKyBwYWludE9mZnNldC54KCksIHkoKSAr
IHBhaW50T2Zmc2V0LnkoKSArIGxpbmVTdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKSk7CiAK
ICAgICAvLyBSZXN0b3JlIHRoZSByZWd1bGFyIGZpbGwgY29sb3IuCiAgICAgaWYgKHRleHRDb2xv
ciAhPSBjb250ZXh0LT5maWxsQ29sb3IoKSkKQEAgLTExNCw3ICsxMTQsNyBAQCBJbnRSZWN0IEVs
bGlwc2lzQm94OjpzZWxlY3Rpb25SZWN0KCkKICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290
Qm94ID0gcm9vdCgpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXgg
YnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAgIExheW91dFJlY3Qg
c2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpLCB5KCkgKyByb290Qm94LnNlbGVjdGlvblRv
cEFkanVzdGVkRm9yUHJlY2VkaW5nQmxvY2soKSwgMCwgcm9vdEJveC5zZWxlY3Rpb25IZWlnaHRB
ZGp1c3RlZEZvclByZWNlZGluZ0Jsb2NrKCkpOwotICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250
LCBtX3N0ciwgbGluZVN0eWxlLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgc2Vs
ZWN0aW9uUmVjdCk7CisgICAgZm9udC5hZGp1c3RTZWxlY3Rpb25SZWN0Rm9yVGV4dChSZW5kZXJC
b3g6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgbGluZVN0eWxl
LCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgc2VsZWN0aW9uUmVjdCk7CiAgICAg
Ly8gRklYTUU6IHVzZSBkaXJlY3Rpb25hbCBwaXhlbCBzbmFwcGluZyBpbnN0ZWFkLgogICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQpAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgYWx3YXlz
IExUUj8gRml4IGJ5IHBhc3NpbmcgY29ycmVjdCB0ZXh0IHJ1biBmbGFncyBiZWxvdy4KICAgICBM
YXlvdXRSZWN0IHNlbGVjdGlvblJlY3QgPSBMYXlvdXRSZWN0KHgoKSArIHBhaW50T2Zmc2V0Lngo
KSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgcm9vdEJveC5zZWxlY3Rpb25Ub3AoKSwgMCwgcm9v
dEJveC5zZWxlY3Rpb25IZWlnaHQoKSk7Ci0gICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bigmYmxvY2tGbG93KCksIGZvbnQsIG1fc3RyLCBzdHlsZSwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbik7CisgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCb3g6
OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUsIFRleHRS
dW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVj
dEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7CiAgICAgY29udGV4dC0+ZmlsbFJl
Y3QoZGlyZWN0aW9uYWxQaXhlbFNuYXBwZWRGb3JQYWludGluZyhzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCmluZGV4IDMzYmFjNzA4NmVmMjAyODQ5NTE3ZWExNWVkNjU2YzNkZjJhMzllZmQuLmMyYzdl
ODRmYmI1NGM0YzFmOGZlZDFlYWM2ZGRiOTBlMjlkYTdmODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtNjAsNyArNjAsNiBAQAogI2luY2x1ZGUgIlJlbmRl
clRleHRGcmFnbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgotI2luY2x1ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtU3RhdGUuaCIKQEAgLTI4ODYsNyArMjg4NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBz
dHJpcFRyYWlsaW5nU3BhY2UoZmxvYXQmIGlubGluZU1heCwgZmxvYXQmIGlubGluZU1pbiwKICAg
ICAgICAgUmVuZGVyVGV4dCogdCA9IHRvUmVuZGVyVGV4dCh0cmFpbGluZ1NwYWNlQ2hpbGQpOwog
ICAgICAgICBjb25zdCBVQ2hhciBzcGFjZSA9ICcgJzsKICAgICAgICAgY29uc3QgRm9udCYgZm9u
dCA9IHQtPnN0eWxlKCkuZm9udCgpOyAvLyBGSVhNRTogVGhpcyBpZ25vcmVzIGZpcnN0LWxpbmUu
Ci0gICAgICAgIGZsb2F0IHNwYWNlV2lkdGggPSBmb250LndpZHRoKFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKHQsIGZvbnQsICZzcGFjZSwgMSwgdC0+c3R5bGUoKSkpOworICAgICAgICBm
bG9hdCBzcGFjZVdpZHRoID0gZm9udC53aWR0aChSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4o
dCwgZm9udCwgJnNwYWNlLCAxLCB0LT5zdHlsZSgpKSk7CiAgICAgICAgIGlubGluZU1heCAtPSBz
cGFjZVdpZHRoICsgZm9udC53b3JkU3BhY2luZygpOwogICAgICAgICBpZiAoaW5saW5lTWluID4g
aW5saW5lTWF4KQogICAgICAgICAgICAgaW5saW5lTWluID0gaW5saW5lTWF4OwpAQCAtNDEwNCw3
NSArNDEwMyw2IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJOYW1lKCkgY29uc3QK
ICAgICByZXR1cm4gIlJlbmRlckJsb2NrIjsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFs
KFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgQ2hhcmFjdGVy
VHlwZSogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBU
ZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCi17Ci0gICAgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uID0gTFRSOwotICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IHN0
eWxlLnJ0bE9yZGVyaW5nKCkgPT0gVmlzdWFsT3JkZXI7Ci0KLSAgICBUZXh0UnVuIHJ1bihjaGFy
YWN0ZXJzLCBsZW5ndGgsIDAsIDAsIGV4cGFuc2lvbiwgdGV4dERpcmVjdGlvbiwgZGlyZWN0aW9u
YWxPdmVycmlkZSk7Ci0gICAgaWYgKGZvbnQuaXNTVkdGb250KCkpIHsKLSAgICAgICAgQVNTRVJU
KGNvbnRleHQpOyAvLyBGSVhNRTogVGhyZWFkIGEgUmVuZGVyT2JqZWN0JiB0byB0aGlzIHBvaW50
IHNvIHdlIGRvbid0IGhhdmUgdG8gZGVyZWZlcmVuY2UgYW55dGhpbmcuCi0gICAgICAgIHJ1bi5z
ZXRSZW5kZXJpbmdDb250ZXh0KFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoKmNv
bnRleHQpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcnVuOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVu
SW50ZXJuYWwoUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIFRleHRSdW46OkV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdz
IGZsYWdzKQotewotICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IExUUjsKLSAgICBi
b29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3VhbE9y
ZGVyOwotICAgIGlmIChmbGFncyAhPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKSB7Ci0gICAgICAgIGlm
IChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb24pCi0gICAgICAgICAgICB0ZXh0RGlyZWN0aW9uID0g
c3R5bGUuZGlyZWN0aW9uKCk7Ci0gICAgICAgIGlmIChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb25P
dmVycmlkZSkKLSAgICAgICAgICAgIGRpcmVjdGlvbmFsT3ZlcnJpZGUgfD0gaXNPdmVycmlkZShz
dHlsZS51bmljb2RlQmlkaSgpKTsKLSAgICB9Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycywg
bGVuZ3RoLCAwLCAwLCBleHBhbnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUpOwotICAgIGlmIChmb250LmlzU1ZHRm9udCgpKSB7Ci0gICAgICAgIEFTU0VSVChjb250ZXh0
KTsgLy8gRklYTUU6IFRocmVhZCBhIFJlbmRlck9iamVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBk
b24ndCBoYXZlIHRvIGRlcmVmZXJlbmNlIGFueXRoaW5nLgotICAgICAgICBydW4uc2V0UmVuZGVy
aW5nQ29udGV4dChTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHJ1bjsKLX0KLQotVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29u
c3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IExDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIFRleHRSdW46OkV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICByZXR1cm4g
Y29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIGNoYXJhY3RlcnMsIGxlbmd0
aCwgc3R5bGUsIGV4cGFuc2lvbik7Ci19Ci0KLVRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVj
dFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgaW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBU
ZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCi17Ci0gICAgcmV0dXJuIGNvbnN0
cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCBjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0
eWxlLCBleHBhbnNpb24pOwotfQotCi1UZXh0UnVuIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgUmVuZGVy
VGV4dCogdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBUZXh0UnVuOjpFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24pCi17Ci0gICAgaWYgKHRleHQtPmlzOEJpdCgpKQotICAgICAgICBy
ZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJh
Y3RlcnM4KCksIHRleHQtPnRleHRMZW5ndGgoKSwgc3R5bGUsIGV4cGFuc2lvbik7Ci0gICAgcmV0
dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0
ZXJzMTYoKSwgdGV4dC0+dGV4dExlbmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4
dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFJlbmRlclRleHQqIHRleHQsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFRleHRSdW46OkV4
cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbikKLXsKLSAgICBBU1NFUlQob2Zmc2V0ICsgbGVuZ3Ro
IDw9IHRleHQtPnRleHRMZW5ndGgoKSk7Ci0gICAgaWYgKHRleHQtPmlzOEJpdCgpKQotICAgICAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNo
YXJhY3RlcnM4KCkgKyBvZmZzZXQsIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbik7Ci0gICAgcmV0
dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0
ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKLX0KLQotVGV4dFJ1
biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIFRleHRSdW46OkV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdz
IGZsYWdzKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLQotICAg
IGlmICghbGVuZ3RoIHx8IHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVj
dFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVu
Z3RoLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7Ci0gICAgcmV0dXJuIGNvbnN0cnVjdFRleHRS
dW5JbnRlcm5hbChjb250ZXh0LCBmb250LCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIGxlbmd0aCwg
c3R5bGUsIGV4cGFuc2lvbiwgZmxhZ3MpOwotfQotCiBSZW5kZXJCbG9jayogUmVuZGVyQmxvY2s6
OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlckFuZERpc3BsYXkoY29uc3QgUmVuZGVy
T2JqZWN0KiBwYXJlbnQsIEVEaXNwbGF5IGRpc3BsYXkpCiB7CiAgICAgLy8gRklYTUU6IERvIHdl
IG5lZWQgdG8gY29udmVydCBhbGwgb3VyIGlubGluZSBkaXNwbGF5cyB0byBibG9jay10eXBlIGlu
IHRoZSBhbm9ueW1vdXMgbG9naWMgPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAppbmRleCA0ZjY5MjI3YzlkNWZmNTY1MWI0OGQ2NTRlOTYwN2NlYThmNjkxMWJjLi5kMDUyZWYx
ZjA1YjMxYzg2OTRlNzIyNjg4NWE4YTM2ZjM4YWZlZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaApAQCAtNDcsMTQgKzQ3LDYgQEAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8
Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4+
IFQKIGVudW0gQ2FyZXRUeXBlIHsgQ3Vyc29yQ2FyZXQsIERyYWdDYXJldCB9OwogZW51bSBDb250
YWluaW5nQmxvY2tTdGF0ZSB7IE5ld0NvbnRhaW5pbmdCbG9jaywgU2FtZUNvbnRhaW5pbmdCbG9j
ayB9OwogCi1lbnVtIFRleHRSdW5GbGFnIHsKLSAgICBEZWZhdWx0VGV4dFJ1bkZsYWdzID0gMCwK
LSAgICBSZXNwZWN0RGlyZWN0aW9uID0gMSA8PCAwLAotICAgIFJlc3BlY3REaXJlY3Rpb25PdmVy
cmlkZSA9IDEgPDwgMQotfTsKLQotdHlwZWRlZiB1bnNpZ25lZCBUZXh0UnVuRmxhZ3M7Ci0KIGNs
YXNzIFJlbmRlckJsb2NrIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CiAgICAgZnJpZW5k
IGNsYXNzIExpbmVMYXlvdXRTdGF0ZTsKQEAgLTIwMywyNCArMTk1LDYgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIG9iai0+aXNGbG9hdGluZygpIHx8IChvYmotPmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpICYmICFvYmotPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBl
KCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5lKCkpOwogICAgIH0KLQotICAg
IHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBj
b25zdCBGb250JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBU
ZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNp
b24gfCBUZXh0UnVuOjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgPSBEZWZh
dWx0VGV4dFJ1bkZsYWdzKTsKLQotICAgIHN0YXRpYyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4o
UmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiwgY29uc3QgUmVuZGVyVGV4dCosIGNv
bnN0IFJlbmRlclN0eWxlJiwKLSAgICAgICAgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3IgPSBU
ZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgVGV4dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4
cGFuc2lvbik7Ci0KLSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9i
amVjdCogY29udGV4dCwgY29uc3QgRm9udCYsIGNvbnN0IFJlbmRlclRleHQqLCB1bnNpZ25lZCBv
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAgICAgICBUZXh0
UnVuOjpFeHBhbnNpb25CZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24g
fCBUZXh0UnVuOjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQotICAgIHN0YXRpYyBUZXh0UnVu
IGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiwgY29u
c3QgUmVuZGVyVGV4dCosIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmLAotICAg
ICAgICBUZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJhaWxpbmdF
eHBhbnNpb24gfCBUZXh0UnVuOjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKLQotICAgIHN0YXRp
YyBUZXh0UnVuIGNvbnN0cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBG
b250JiwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IFJlbmRlclN0
eWxlJiwKLSAgICAgICAgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3IgPSBUZXh0UnVuOjpBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uIHwgVGV4dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbik7Ci0K
LSAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4
dCwgY29uc3QgRm9udCYsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYsCi0gICAgICAgIFRleHRSdW46OkV4cGFuc2lvbkJlaGF2aW9yID0gVGV4
dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBh
bnNpb24pOwogICAgIAogICAgIExheW91dFVuaXQgcGFnaW5hdGlvblN0cnV0KCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRQYWdpbmF0aW9uU3RydXQoTGF5b3V0VW5pdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDJjMmEzNGE4NDE1MTFhZTYzMWMwY2Y3OTEwYmFlZTI3
M2VhMDU3ZTUuLjk1YWI3MTE3Y2ViYjQzNTBlODQxOTNlNWNjODI1Mjc3N2I1MWFhMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01Myw4ICs1MywxMCBAQAogI2lu
Y2x1ZGUgIlJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorI2luY2x1ZGUgIlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
VHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KQEAgLTQ3OTgsNCArNDgwMCw3MyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6b2Zm
c2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnRhaW5l
ckJsb2NrLT5vZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKCkgKyBsb2dpY2FsVG9wKCk7
CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBU
ZXh0UnVuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5n
dGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uKQoreworICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IExUUjsKKyAg
ICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmluZygpID09IFZpc3Vh
bE9yZGVyOworCisgICAgVGV4dFJ1biBydW4oY2hhcmFjdGVycywgbGVuZ3RoLCAwLCAwLCBleHBh
bnNpb24sIHRleHREaXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUpOworICAgIGlmIChmb250
LmlzU1ZHRm9udCgpKSB7CisgICAgICAgIEFTU0VSVChjb250ZXh0KTsgLy8gRklYTUU6IFRocmVh
ZCBhIFJlbmRlck9iamVjdCYgdG8gdGhpcyBwb2ludCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRlcmVm
ZXJlbmNlIGFueXRoaW5nLgorICAgICAgICBydW4uc2V0UmVuZGVyaW5nQ29udGV4dChTVkdUZXh0
UnVuUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKCpjb250ZXh0KSk7CisgICAgfQorCisgICAgcmV0
dXJuIHJ1bjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMg
aW5saW5lIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKFJlbmRlck9iamVjdCogY29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywg
aW50IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBUZXh0UnVuOjpFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK3sKKyAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBMVFI7CisgICAgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
c3R5bGUucnRsT3JkZXJpbmcoKSA9PSBWaXN1YWxPcmRlcjsKKyAgICBpZiAoZmxhZ3MgIT0gRGVm
YXVsdFRleHRSdW5GbGFncykgeworICAgICAgICBpZiAoZmxhZ3MgJiBSZXNwZWN0RGlyZWN0aW9u
KQorICAgICAgICAgICAgdGV4dERpcmVjdGlvbiA9IHN0eWxlLmRpcmVjdGlvbigpOworICAgICAg
ICBpZiAoZmxhZ3MgJiBSZXNwZWN0RGlyZWN0aW9uT3ZlcnJpZGUpCisgICAgICAgICAgICBkaXJl
Y3Rpb25hbE92ZXJyaWRlIHw9IGlzT3ZlcnJpZGUoc3R5bGUudW5pY29kZUJpZGkoKSk7CisgICAg
fQorICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxlbmd0aCwgMCwgMCwgZXhwYW5zaW9uLCB0
ZXh0RGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJyaWRlKTsKKyAgICBpZiAoZm9udC5pc1NWR0Zv
bnQoKSkgeworICAgICAgICBBU1NFUlQoY29udGV4dCk7IC8vIEZJWE1FOiBUaHJlYWQgYSBSZW5k
ZXJPYmplY3QmIHRvIHRoaXMgcG9pbnQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZXJlZmVyZW5jZSBh
bnl0aGluZy4KKyAgICAgICAgcnVuLnNldFJlbmRlcmluZ0NvbnRleHQoU1ZHVGV4dFJ1blJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZSgqY29udGV4dCkpOworICAgIH0KKworICAgIHJldHVybiBydW47
Cit9CisKK1RleHRSdW4gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCog
Y29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIGludCBs
ZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29u
dGV4dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKK30KKyAg
ICAKK1RleHRSdW4gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29u
dGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIGludCBsZW5n
dGgsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3Ig
ZXhwYW5zaW9uKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4
dCwgZm9udCwgY2hhcmFjdGVycywgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKK30KKyAgICAK
K1RleHRSdW4gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgUmVuZGVyVGV4dCogdGV4dCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBUZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb24pCit7Cisg
ICAgaWYgKHRleHQtPmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bklu
dGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnM4KCksIHRleHQtPnRleHRMZW5n
dGgoKSwgc3R5bGUsIGV4cGFuc2lvbik7CisgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRl
cm5hbChjb250ZXh0LCBmb250LCB0ZXh0LT5jaGFyYWN0ZXJzMTYoKSwgdGV4dC0+dGV4dExlbmd0
aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKK30KKyAgICAKK1RleHRSdW4gUmVuZGVyQm94Ojpjb25z
dHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29u
c3QgUmVuZGVyVGV4dCogdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5z
aW9uKQoreworICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gdGV4dC0+dGV4dExlbmd0aCgp
KTsKKyAgICBpZiAodGV4dC0+aXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0
UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgoKSArIG9mZnNldCwg
bGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKKyAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bklu
dGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigpICsgb2Zmc2V0LCBsZW5n
dGgsIHN0eWxlLCBleHBhbnNpb24pOworfQorICAgIAorVGV4dFJ1biBSZW5kZXJCb3g6OmNvbnN0
cnVjdFRleHRSdW4oUmVuZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25z
dCBTdHJpbmcmIHN0cmluZywgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBUZXh0UnVuOjpFeHBh
bnNpb25CZWhhdmlvciBleHBhbnNpb24sIFRleHRSdW5GbGFncyBmbGFncykKK3sKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICBpZiAoIWxlbmd0aCB8fCBzdHJp
bmcuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29u
dGV4dCwgZm9udCwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lv
biwgZmxhZ3MpOworICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwg
Zm9udCwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24sIGZs
YWdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCmluZGV4IDg0MDg1ZWZhOTJjNTNjNzdmZTVjNzk4ZGU4NWEwNDFhOGFlODI0ODAu
LjJjOTdlZjhjN2QxZWE4N2M3YTc1MDhhODUwOWI0N2U1ODZkNDE4NGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTQ0LDYgKzQ0LDE0IEBAIGVudW0gT3ZlcmxheVNjcm9s
bGJhclNpemVSZWxldmFuY3kgeyBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgSW5jbHVkZU92
ZXJsYXlTCiAKIGVudW0gU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCB7IENvbXB1dGVBY3R1YWwsIENv
bXB1dGVQcmVmZXJyZWQgfTsKIAorZW51bSBUZXh0UnVuRmxhZyB7CisgICAgRGVmYXVsdFRleHRS
dW5GbGFncyA9IDAsCisgICAgUmVzcGVjdERpcmVjdGlvbiA9IDEgPDwgMCwKKyAgICBSZXNwZWN0
RGlyZWN0aW9uT3ZlcnJpZGUgPSAxIDw8IDEKK307CisKK3R5cGVkZWYgdW5zaWduZWQgVGV4dFJ1
bkZsYWdzOworCiBjbGFzcyBSZW5kZXJCb3ggOiBwdWJsaWMgUmVuZGVyQm94TW9kZWxPYmplY3Qg
ewogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckJveCgpOwpAQCAtNjE3LDYgKzYyNSwyNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBjYW5IYXZlT3V0c2lkZVJlZ2lvblJhbmdlKCkgY29uc3QgeyBy
ZXR1cm4gIWlzSW5GbG93UmVuZGVyRmxvd1RocmVhZCgpOyB9CiAgICAgdmlydHVhbCBib29sIG5l
ZWRzTGF5b3V0QWZ0ZXJSZWdpb25SYW5nZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKKyAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29u
dGV4dCwgY29uc3QgRm9udCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwKKyAg
ICAgICAgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3IgPSBUZXh0UnVuOjpBbGxvd1RyYWlsaW5n
RXhwYW5zaW9uIHwgVGV4dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgVGV4dFJ1bkZsYWdz
ID0gRGVmYXVsdFRleHRSdW5GbGFncyk7CisgICAgCisgICAgc3RhdGljIFRleHRSdW4gY29uc3Ry
dWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnQmLCBjb25zdCBSZW5k
ZXJUZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBUZXh0UnVuOjpFeHBhbnNpb25C
ZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uKTsKKyAgICAKKyAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYsIGNvbnN0IFJlbmRlclRl
eHQqLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUm
LAorICAgICAgICBUZXh0UnVuOjpFeHBhbnNpb25CZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJh
aWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uKTsKKyAgICAK
KyAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4
dCwgY29uc3QgRm9udCYsIGNvbnN0IFJlbmRlclRleHQqLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0
IFJlbmRlclN0eWxlJiwKKyAgICAgICAgVGV4dFJ1bjo6RXhwYW5zaW9uQmVoYXZpb3IgPSBUZXh0
UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgVGV4dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4cGFu
c2lvbik7CisgICAgCisgICAgc3RhdGljIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihSZW5kZXJP
YmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnQmLCBjb25zdCBMQ2hhciogY2hhcmFjdGVycywgaW50
IGxlbmd0aCwgY29uc3QgUmVuZGVyU3R5bGUmLAorICAgICAgICBUZXh0UnVuOjpFeHBhbnNpb25C
ZWhhdmlvciA9IFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uKTsKKyAgICAKKyAgICBzdGF0aWMgVGV4dFJ1biBjb25zdHJ1Y3RU
ZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYsIGNvbnN0IFVDaGFyKiBj
aGFyYWN0ZXJzLCBpbnQgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYsCisgICAgICAgIFRleHRS
dW46OkV4cGFuc2lvbkJlaGF2aW9yID0gVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8
IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBhbnNpb24pOworCiBwcm90ZWN0ZWQ6CiAgICAgUmVu
ZGVyQm94KEVsZW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPiwgdW5zaWduZWQgYmFzZVR5cGVG
bGFncyk7CiAgICAgUmVuZGVyQm94KERvY3VtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4sIHVu
c2lnbmVkIGJhc2VUeXBlRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJDb21iaW5lVGV4dC5jcHAKaW5kZXggM2YwMTNkYjkxZDdmNWM4NzU1ZTUyZDhjNDBlYzk5ZDZh
MDZjODNhOC4uODAzMGIwMzJlZmJjYzc2NTRkNmMzMDFlOWIyMGYwMjMzZjI2YmU2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbWJpbmVUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgUmVuZGVyQ29tYmluZVRleHQ6OmNvbWJpbmVUZXh0KCkKICAgICBpZiAo
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIG9yaWdp
bmFsRm9udCgpLCB0aGlzLCBzdHlsZSgpKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJveDo6
Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBvcmlnaW5hbEZvbnQoKSwgdGhpcywgc3R5bGUoKSk7CiAg
ICAgRm9udERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gb3JpZ2luYWxGb250KCkuZm9udERlc2Ny
aXB0aW9uKCk7CiAgICAgZmxvYXQgZW1XaWR0aCA9IGRlc2NyaXB0aW9uLmNvbXB1dGVkU2l6ZSgp
ICogdGV4dENvbWJpbmVNYXJnaW47CiAgICAgYm9vbCBzaG91bGRVcGRhdGVGb250ID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBlMzRmMmNjNDJh
M2RlY2YzNDlmMjEzYmFjMWU5Y2E1ZTM1ZGZlNWNjLi4zMjgwMzBhNDhkY2ZhYzVmOWQ2M2NhYWM3
ZTczOTVjOGI3ZGYzMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JB
bHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSAvKiA9IDAgKi8pCiAgICAgICAgIEZvbnRDYWNo
ZVB1cmdlUHJldmVudGVyIGZvbnRDYWNoZVB1cmdlUHJldmVudGVyOwogCiAgICAgICAgIGNvbnN0
IEZvbnQmIGZvbnQgPSBzdHlsZSgpLmZvbnQoKTsKLSAgICAgICAgSW50U2l6ZSBwYWRkZWRUZXh0
U2l6ZShwYWRkaW5nV2lkdGggKyBzdGQ6Om1pbihjZWlsZihmb250LndpZHRoKFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fYWx0VGV4dCwgc3R5bGUoKSkpKSwgbWF4
QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOworICAgICAgICBJbnRTaXplIHBhZGRlZFRl
eHRTaXplKHBhZGRpbmdXaWR0aCArIHN0ZDo6bWluKGNlaWxmKGZvbnQud2lkdGgoUmVuZGVyQm94
Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fYWx0VGV4dCwgc3R5bGUoKSkpKSwgbWF4
QWx0VGV4dFdpZHRoKSwgcGFkZGluZ0hlaWdodCArIHN0ZDo6bWluKGZvbnQuZm9udE1ldHJpY3Mo
KS5oZWlnaHQoKSwgbWF4QWx0VGV4dEhlaWdodCkpOwogICAgICAgICBpbWFnZVNpemUgPSBpbWFn
ZVNpemUuZXhwYW5kZWRUbyhwYWRkZWRUZXh0U2l6ZSk7CiAgICAgfQogCkBAIC00NTQsNyArNDU0
LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgICAgICAgICAgICAgIC8vIE9ubHkg
ZHJhdyB0aGUgYWx0IHRleHQgaWYgaXQnbGwgZml0IHdpdGhpbiB0aGUgY29udGVudCBib3gsCiAg
ICAgICAgICAgICAgICAgLy8gYW5kIG9ubHkgaWYgaXQgZml0cyBhYm92ZSB0aGUgZXJyb3IgaW1h
Z2UuCi0gICAgICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0
cnVjdFRleHRSdW4odGhpcywgZm9udCwgdGV4dCwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAg
VGV4dFJ1biB0ZXh0UnVuID0gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQs
IHRleHQsIHN0eWxlKCkpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgdGV4dFdpZHRoID0g
Zm9udC53aWR0aCh0ZXh0UnVuKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyb3JQaWN0dXJlRHJh
d24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHVzYWJsZVdpZHRoID49IHRleHRXaWR0aCAm
JiBmb250TWV0cmljcy5oZWlnaHQoKSA8PSBpbWFnZU9mZnNldC5oZWlnaHQoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCA2NzJmMzkwZDdj
NTIyNjNhOGQzOWRmMTE1N2YzM2FmYjgwYzMwMjU5Li5iYWI1MzkxMjk1YzkyZTMyNDhkNzc3YWM4
MjVhMWI3YzgzNzY1MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RNYXJrZXIuY3BwCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUoKS5mb250
KCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4o
dGhpcywgZm9udCwgbV90ZXh0LCBzdHlsZSgpKTsKKyAgICBUZXh0UnVuIHRleHRSdW4gPSBSZW5k
ZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0LCBzdHlsZSgpKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2Up
OwogICAgIGlmICghc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CkBAIC0xMzUx
LDEwICsxMzUxLDEwIEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICBpbnQg
d2lkdGggPSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgICAgICAgICBVQ2hhciBzdWZmaXhT
cGFjZVsyXSA9IHsgc3VmZml4LCAnICcgfTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUZXh0
KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHN1ZmZpeFNw
YWNlLCAyLCBzdHlsZSgpKSwgdGV4dE9yaWdpbiArIEludFNpemUod2lkdGgsIDApKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1
bih0aGlzLCBmb250LCBzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSksIHRleHRPcmlnaW4gKyBJbnRT
aXplKHdpZHRoLCAwKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBVQ2hhciBzcGFj
ZVN1ZmZpeFsyXSA9IHsgJyAnLCBzdWZmaXggfTsKLSAgICAgICAgICAgIFRleHRSdW4gc3BhY2VT
dWZmaXhSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBzcGFj
ZVN1ZmZpeCwgMiwgc3R5bGUoKSk7CisgICAgICAgICAgICBUZXh0UnVuIHNwYWNlU3VmZml4UnVu
ID0gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHNwYWNlU3VmZml4LCAy
LCBzdHlsZSgpKTsKICAgICAgICAgICAgIGludCB3aWR0aCA9IGZvbnQud2lkdGgoc3BhY2VTdWZm
aXhSdW4pOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgc3BhY2VTdWZmaXhS
dW4sIHRleHRPcmlnaW4pOwogICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4
dFJ1biwgdGV4dE9yaWdpbiArIEludFNpemUod2lkdGgsIDApKTsKQEAgLTE1MzcsNyArMTUzNyw3
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXN0ZXJpc2tzOgogICAgICAgICBj
YXNlIEZvb3Rub3RlczogewotICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX3RleHQsIHN0eWxlKCksIFRleHRSdW46OkFs
bG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBE
ZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQm94
Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fdGV4dCwgc3R5bGUoKSwgVGV4dFJ1bjo6
QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgICAgICAgICAgbG9naWNhbFdpZHRoID0gZm9udC53
aWR0aChydW4pOyAvLyBubyBzdWZmaXggZm9yIHRoZXNlIHR5cGVzCiAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTYyNCwxMCArMTYyNCwxMCBAQCB2b2lkIFJlbmRlckxpc3RNYXJr
ZXI6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgICAgIGlmIChtX3Rl
eHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0aCA9IDA7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fdGV4dCwgc3R5bGUoKSwgVGV4dFJ1bjo6QWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERl
ZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVy
Qm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fdGV4dCwgc3R5bGUoKSwgVGV4dFJ1
bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBhbnNp
b24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgaXRl
bVdpZHRoID0gZm9udC53aWR0aChydW4pOwogICAgICAgICAgICAgICAgIFVDaGFyIHN1ZmZpeFNw
YWNlWzJdID0geyBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSksICcg
JyB9OwotICAgICAgICAgICAgICAgIExheW91dFVuaXQgc3VmZml4U3BhY2VXaWR0aCA9IGZvbnQu
d2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgc3VmZml4U3Bh
Y2UsIDIsIHN0eWxlKCkpKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHN1ZmZpeFNwYWNl
V2lkdGggPSBmb250LndpZHRoKFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250
LCBzdWZmaXhTcGFjZSwgMiwgc3R5bGUoKSkpOwogICAgICAgICAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IGl0ZW1XaWR0aCArIHN1ZmZpeFNwYWNlV2lkdGg7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE3NTcsNyArMTc1Nyw3IEBAIEludFJlY3QgUmVuZGVyTGlzdE1hcmtl
cjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAgICAgICAgY2FzZSBBc3Rlcmlza3M6CiAgICAg
ICAgIGNhc2UgRm9vdG5vdGVzOiB7CiAgICAgICAgICAgICBjb25zdCBGb250JiBmb250ID0gc3R5
bGUoKS5mb250KCk7Ci0gICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fdGV4dCwgc3R5bGUoKSwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERlZmF1
bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCb3g6OmNv
bnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgbV90ZXh0LCBzdHlsZSgpLCBUZXh0UnVuOjpBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uIHwgVGV4dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgRGVm
YXVsdFRleHRSdW5GbGFncyk7CiAgICAgICAgICAgICByZWxhdGl2ZVJlY3QgPSBJbnRSZWN0KDAs
IDAsIGZvbnQud2lkdGgocnVuKSwgZm9udC5mb250TWV0cmljcygpLmhlaWdodCgpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xODUxLDEwICsxODUxLDEwIEBAIEludFJlY3Qg
UmVuZGVyTGlzdE1hcmtlcjo6Z2V0UmVsYXRpdmVNYXJrZXJSZWN0KCkKICAgICAgICAgICAgIGlm
IChtX3RleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAg
ICAgICAgICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUoKS5mb250KCk7Ci0gICAgICAgICAg
ICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQs
IG1fdGV4dCwgc3R5bGUoKSwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRS
dW46OkZvcmJpZExlYWRpbmdFeHBhbnNpb24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAg
ICAgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9u
dCwgbV90ZXh0LCBzdHlsZSgpLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uIHwgVGV4
dFJ1bjo6Rm9yYmlkTGVhZGluZ0V4cGFuc2lvbiwgRGVmYXVsdFRleHRSdW5GbGFncyk7CiAgICAg
ICAgICAgICBpbnQgaXRlbVdpZHRoID0gZm9udC53aWR0aChydW4pOwogICAgICAgICAgICAgVUNo
YXIgc3VmZml4U3BhY2VbMl0gPSB7IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52
YWx1ZSgpKSwgJyAnIH07Ci0gICAgICAgICAgICBpbnQgc3VmZml4U3BhY2VXaWR0aCA9IGZvbnQu
d2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgc3VmZml4U3Bh
Y2UsIDIsIHN0eWxlKCkpKTsKKyAgICAgICAgICAgIGludCBzdWZmaXhTcGFjZVdpZHRoID0gZm9u
dC53aWR0aChSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgc3VmZml4U3Bh
Y2UsIDIsIHN0eWxlKCkpKTsKICAgICAgICAgICAgIHJlbGF0aXZlUmVjdCA9IEludFJlY3QoMCwg
MCwgaXRlbVdpZHRoICsgc3VmZml4U3BhY2VXaWR0aCwgZm9udC5mb250TWV0cmljcygpLmhlaWdo
dCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCmluZGV4IGU2YTg1MDZlOGU2ZDE2MmYwNTJiMmQ1YTI0MWNkMmJiZWIxZWM0YmQuLjI1OGI5
YzU4ZDE4YWJmMjMzYzJhNDNjZjBmMWM5ZGU2ZmMzZjE5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMjI2LDEzICsyMjYsMTMgQEAgdm9pZCBS
ZW5kZXJNZW51TGlzdDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgICAgICAgICBvcHRp
b25XaWR0aCArPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob3B0aW9uU3R5bGUtPnRleHRJbmRlbnQo
KSwgMCk7CiAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgRm9udCYgZm9udCA9IHN0eWxlKCkuZm9udCgpOwotICAgICAgICAgICAgICAgIFRl
eHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgdGV4
dCwgc3R5bGUoKSwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IFRleHRSdW46OkZv
cmJpZExlYWRpbmdFeHBhbnNpb24sIERlZmF1bHRUZXh0UnVuRmxhZ3MpOworICAgICAgICAgICAg
ICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQs
IHRleHQsIHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVu
OjpGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKICAgICAgICAg
ICAgICAgICBvcHRpb25XaWR0aCArPSBmb250LndpZHRoKHJ1bik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtYXhPcHRpb25XaWR0aCA9IHN0ZDo6bWF4KG1heE9wdGlvbldpZHRoLCBvcHRp
b25XaWR0aCk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUoKS5mb250KCk7Ci0gICAgICAgICAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHRleHQs
IHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKKyAgICAgICAgICAgIFRl
eHRSdW4gcnVuID0gUmVuZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIHRleHQs
IHN0eWxlKCksIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBUZXh0UnVuOjpGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uLCBEZWZhdWx0VGV4dFJ1bkZsYWdzKTsKICAgICAgICAgICAgIG1h
eE9wdGlvbldpZHRoID0gc3RkOjptYXgobWF4T3B0aW9uV2lkdGgsIGZvbnQud2lkdGgocnVuKSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
aW5kZXggZWVlYzUzMzQyYjk2MjNiNTQzNDU4ZDA0M2Q2MzM4ZDEyNTkwNjJkMi4uMDJhMDlkOTg4
ZTA2OWZhMzEyMzI2OTg3ZmJmNTRkNTc0YTgxODlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcApAQCAtNDc0LDcgKzQ3NCw3IEBAIEFMV0FZU19JTkxJTkUgZmxvYXQg
UmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udCYgZiwgaW50IHN0YXJ0LCBpbnQg
bGVuCiAgICAgICAgIHJldHVybiB3OwogICAgIH0KIAotICAgIFRleHRSdW4gcnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3RfY2FzdDxSZW5kZXJUZXh0Kj4odGhpcyksIGYs
IHRoaXMsIHN0YXJ0LCBsZW4sIHN0eWxlKTsKKyAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJveDo6
Y29uc3RydWN0VGV4dFJ1bihjb25zdF9jYXN0PFJlbmRlclRleHQqPih0aGlzKSwgZiwgdGhpcywg
c3RhcnQsIGxlbiwgc3R5bGUpOwogICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKHRleHRMZW5n
dGgoKSAtIHN0YXJ0KTsKICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5ndGgoKSA+PSBydW4u
bGVuZ3RoKCkpOwogCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBSZW5kZXJUZXh0Ojp0cmltbWVk
UHJlZldpZHRocyhmbG9hdCBsZWFkV2lkdGgsCiAgICAgICAgIGNvbnN0IEZvbnQmIGZvbnQgPSBz
dHlsZS5mb250KCk7IC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgZmlyc3QtbGluZS4KICAgICAgICAg
aWYgKHN0cmlwRnJvbnRTcGFjZXMpIHsKICAgICAgICAgICAgIGNvbnN0IFVDaGFyIHNwYWNlID0g
JyAnOwotICAgICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwgJnNwYWNlLCAxLCBzdHlsZSkpOworICAg
ICAgICAgICAgZmxvYXQgc3BhY2VXaWR0aCA9IGZvbnQud2lkdGgoUmVuZGVyQm94Ojpjb25zdHJ1
Y3RUZXh0UnVuKHRoaXMsIGZvbnQsICZzcGFjZSwgMSwgc3R5bGUpKTsKICAgICAgICAgICAgIG1h
eFcgLT0gc3BhY2VXaWR0aDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtYXhXICs9IGZv
bnQud29yZFNwYWNpbmcoKTsKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCkKIHN0YXRpYyBpbmxp
bmUgZmxvYXQgaHlwaGVuV2lkdGgoUmVuZGVyVGV4dCogcmVuZGVyZXIsIGNvbnN0IEZvbnQmIGZv
bnQpCiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7
Ci0gICAgcmV0dXJuIGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4ocmVu
ZGVyZXIsIGZvbnQsIHN0eWxlLmh5cGhlblN0cmluZygpLnN0cmluZygpLCBzdHlsZSkpOworICAg
IHJldHVybiBmb250LndpZHRoKFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwg
Zm9udCwgc3R5bGUuaHlwaGVuU3RyaW5nKCkuc3RyaW5nKCksIHN0eWxlKSk7CiB9CiAKIHN0YXRp
YyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJUZXh0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250JiBmb250LCBTdHJpbmdWaWV3IHdvcmQsIGlu
dCBtaW5pbXVtUHJlZml4TGVuZ3RoLCB1bnNpZ25lZCBtaW5pbXVtU3VmZml4TGVuZ3RoLCBpbnQm
IHN1ZmZpeFN0YXJ0LCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRhKj4mIGZhbGxiYWNrRm9u
dHMsIEdseXBoT3ZlcmZsb3cmIGdseXBoT3ZlcmZsb3cpCkBAIC02MzQsNyArNjM0LDcgQEAgc3Rh
dGljIGZsb2F0IG1heFdvcmRGcmFnbWVudFdpZHRoKFJlbmRlclRleHQqIHJlbmRlcmVyLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUKICAgICAgICAgZnJhZ21lbnRXaXRoSHlwaGVuLmFwcGVuZCh3
b3JkLnN1YnN0cmluZyhzdWZmaXhTdGFydCwgZnJhZ21lbnRMZW5ndGgpKTsKICAgICAgICAgZnJh
Z21lbnRXaXRoSHlwaGVuLmFwcGVuZChzdHlsZS5oeXBoZW5TdHJpbmcoKSk7CiAKLSAgICAgICAg
VGV4dFJ1biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9u
dCwgZnJhZ21lbnRXaXRoSHlwaGVuLnRvU3RyaW5nKCksIHN0eWxlKTsKKyAgICAgICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4ocmVuZGVyZXIsIGZvbnQsIGZyYWdt
ZW50V2l0aEh5cGhlbi50b1N0cmluZygpLCBzdHlsZSk7CiAgICAgICAgIHJ1bi5zZXRDaGFyYWN0
ZXJzTGVuZ3RoKGZyYWdtZW50V2l0aEh5cGhlbi5sZW5ndGgoKSk7CiAgICAgICAgIHJ1bi5zZXRD
aGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoIXJlbmRlcmVyLT5jYW5Vc2VTaW1wbGVGb250Q29kZVBh
dGgoKSk7CiAgICAgICAgIGZsb2F0IGZyYWdtZW50V2lkdGggPSBmb250LndpZHRoKHJ1biwgJmZh
bGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93KTsKQEAgLTY4Miw3ICs2ODIsNyBAQCB2b2lkIFJl
bmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwg
SGFzaFNldDxjb25zdCBTaQogCiAgICAgLy8gTm9uLXplcm8gb25seSB3aGVuIGtlcm5pbmcgaXMg
ZW5hYmxlZCwgaW4gd2hpY2ggY2FzZSB3ZSBtZWFzdXJlIHdvcmRzIHdpdGggdGhlaXIgdHJhaWxp
bmcKICAgICAvLyBzcGFjZSwgdGhlbiBzdWJ0cmFjdCBpdHMgd2lkdGguCi0gICAgZmxvYXQgd29y
ZFRyYWlsaW5nU3BhY2VXaWR0aCA9IGZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpICYgS2Vybmlu
ZyA/IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGhpcywgZm9udCwg
JnNwYWNlLCAxLCBzdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIHdvcmRTcGFjaW5nIDogMDsKKyAg
ICBmbG9hdCB3b3JkVHJhaWxpbmdTcGFjZVdpZHRoID0gZm9udC50eXBlc2V0dGluZ0ZlYXR1cmVz
KCkgJiBLZXJuaW5nID8gZm9udC53aWR0aChSZW5kZXJCb3g6OmNvbnN0cnVjdFRleHRSdW4odGhp
cywgZm9udCwgJnNwYWNlLCAxLCBzdHlsZSksICZmYWxsYmFja0ZvbnRzKSArIHdvcmRTcGFjaW5n
IDogMDsKIAogICAgIC8vIElmIGF1dG9tYXRpYyBoeXBoZW5hdGlvbiBpcyBhbGxvd2VkLCB3ZSBr
ZWVwIHRyYWNrIG9mIHRoZSB3aWR0aCBvZiB0aGUgd2lkZXN0IHdvcmQgKG9yIHdvcmQKICAgICAv
LyBmcmFnbWVudCkgZW5jb3VudGVyZWQgc28gZmFyLCBhbmQgb25seSB0cnkgaHlwaGVuYXRpbmcg
d29yZHMgdGhhdCBhcmUgd2lkZXIuCkBAIC04NTgsNyArODU4LDcgQEAgdm9pZCBSZW5kZXJUZXh0
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgU2kKICAgICAgICAgICAgICAgICAgICAgbV9tYXhXaWR0aCA9IGN1cnJNYXhXaWR0aDsK
ICAgICAgICAgICAgICAgICBjdXJyTWF4V2lkdGggPSAwOwogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0
UnVuKHRoaXMsIGZvbnQsIHRoaXMsIGksIDEsIHN0eWxlKTsKKyAgICAgICAgICAgICAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCB0aGlzLCBp
LCAxLCBzdHlsZSk7CiAgICAgICAgICAgICAgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgobGVu
IC0gaSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0g
cnVuLmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBydW4uc2V0VGFiU2l6ZSghc3R5bGUuY29s
bGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CkBAIC0xMTkzLDcgKzExOTMsNyBA
QCBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNv
bnN0IEZvbnQmIGYsIGZsb2F0IHhQb3MsCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdyA9
IHdpZHRoRnJvbUNhY2hlKGYsIGZyb20sIGxlbiwgeFBvcywgZmFsbGJhY2tGb250cywgZ2x5cGhP
dmVyZmxvdywgc3R5bGUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVu
ZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oY29uc3RfY2FzdDxSZW5kZXJUZXh0Kj4odGhpcyks
IGYsIHRoaXMsIGZyb20sIGxlbiwgc3R5bGUpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRl
ckJveDo6Y29uc3RydWN0VGV4dFJ1bihjb25zdF9jYXN0PFJlbmRlclRleHQqPih0aGlzKSwgZiwg
dGhpcywgZnJvbSwgbGVuLCBzdHlsZSk7CiAgICAgICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3Ro
KHRleHRMZW5ndGgoKSAtIGZyb20pOwogICAgICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5n
dGgoKSA+PSBydW4ubGVuZ3RoKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxpbmVIZWFkZXJzLmgKaW5kZXggMDE2
NmE2M2M0NDA4NjFkYjVmYzg0OWQyYzczYjAwZjRkOTllZjlhMS4uODQ3ZDk2MjdiMjJhNDE1MzQ1
YTY1YTliMTk0MWVkNTI1YzQ3ZjQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5lSGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaApAQCAtNDgw
LDcgKzQ4MCw3IEBAIGlubGluZSB2b2lkIHVwZGF0ZUNvdW50ZXJJZk5lZWRlZChSZW5kZXJUZXh0
JiByZW5kZXJUZXh0KQogaW5saW5lIGZsb2F0IG1lYXN1cmVIeXBoZW5XaWR0aChSZW5kZXJUZXh0
KiByZW5kZXJlciwgY29uc3QgRm9udCYgZm9udCwgSGFzaFNldDxjb25zdCBTaW1wbGVGb250RGF0
YSo+KiBmYWxsYmFja0ZvbnRzID0gMCkKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICByZXR1cm4gZm9udC53aWR0aChSZW5kZXJCbG9jazo6
Y29uc3RydWN0VGV4dFJ1bihyZW5kZXJlciwgZm9udCwgc3R5bGUuaHlwaGVuU3RyaW5nKCkuc3Ry
aW5nKCksIHN0eWxlKSwgZmFsbGJhY2tGb250cyk7CisgICAgcmV0dXJuIGZvbnQud2lkdGgoUmVu
ZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyLCBmb250LCBzdHlsZS5oeXBoZW5TdHJp
bmcoKS5zdHJpbmcoKSwgc3R5bGUpLCBmYWxsYmFja0ZvbnRzKTsKIH0KIAogQUxXQVlTX0lOTElO
RSBmbG9hdCB0ZXh0V2lkdGgoUmVuZGVyVGV4dCogdGV4dCwgdW5zaWduZWQgZnJvbSwgdW5zaWdu
ZWQgbGVuLCBjb25zdCBGb250JiBmb250LCBmbG9hdCB4UG9zLCBib29sIGlzRml4ZWRQaXRjaCwg
Ym9vbCBjb2xsYXBzZVdoaXRlU3BhY2UsIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiYg
ZmFsbGJhY2tGb250cywgVGV4dExheW91dCogbGF5b3V0ID0gMCkKQEAgLTQ5NCw3ICs0OTQsNyBA
QCBBTFdBWVNfSU5MSU5FIGZsb2F0IHRleHRXaWR0aChSZW5kZXJUZXh0KiB0ZXh0LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGNvbgogICAgIGlmIChsYXlvdXQpCiAgICAgICAgIHJldHVy
biBGb250Ojp3aWR0aCgqbGF5b3V0LCBmcm9tLCBsZW4sICZmYWxsYmFja0ZvbnRzKTsKIAotICAg
IFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4odGV4dCwgZm9udCwg
dGV4dCwgZnJvbSwgbGVuLCBzdHlsZSk7CisgICAgVGV4dFJ1biBydW4gPSBSZW5kZXJCb3g6OmNv
bnN0cnVjdFRleHRSdW4odGV4dCwgZm9udCwgdGV4dCwgZnJvbSwgbGVuLCBzdHlsZSk7CiAgICAg
cnVuLnNldENoYXJhY3RlcnNMZW5ndGgodGV4dC0+dGV4dExlbmd0aCgpIC0gZnJvbSk7CiAgICAg
QVNTRVJUKHJ1bi5jaGFyYWN0ZXJzTGVuZ3RoKCkgPj0gcnVuLmxlbmd0aCgpKTsKIApAQCAtNTQz
LDcgKzU0Myw3IEBAIGlubGluZSB2b2lkIHRyeUh5cGhlbmF0aW5nKFJlbmRlclRleHQqIHRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEF0b21pY1N0cmluCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRleHQtPnN0eWxlKCk7Ci0gICAgVGV4dFJ1
biBydW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0ZXh0LCBmb250LCB0ZXh0LCBs
YXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFjZSwgc3R5bGUpOworICAgIFRleHRSdW4gcnVuID0gUmVu
ZGVyQm94Ojpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIGZvbnQsIHRleHQsIGxhc3RTcGFjZSwgcG9z
IC0gbGFzdFNwYWNlLCBzdHlsZSk7CiAgICAgcnVuLnNldENoYXJhY3RlcnNMZW5ndGgodGV4dC0+
dGV4dExlbmd0aCgpIC0gbGFzdFNwYWNlKTsKICAgICBBU1NFUlQocnVuLmNoYXJhY3RlcnNMZW5n
dGgoKSA+PSBydW4ubGVuZ3RoKCkpOwogCkBAIC02NDYsNyArNjQ2LDcgQEAgaW5saW5lIGJvb2wg
QnJlYWtpbmdDb250ZXh0OjpoYW5kbGVUZXh0KFdvcmRNZWFzdXJlbWVudHMmIHdvcmRNZWFzdXJl
bWVudHMsIGJvb2wKICAgICAvLyBOb24temVybyBvbmx5IHdoZW4ga2VybmluZyBpcyBlbmFibGVk
IGFuZCBUZXh0TGF5b3V0IGlzbid0IHVzZWQsIGluIHdoaWNoIGNhc2Ugd2UgbWVhc3VyZQogICAg
IC8vIHdvcmRzIHdpdGggdGhlaXIgdHJhaWxpbmcgc3BhY2UsIHRoZW4gc3VidHJhY3QgaXRzIHdp
ZHRoLgogICAgIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiBmYWxsYmFja0ZvbnRzOwot
ICAgIGZsb2F0IHdvcmRUcmFpbGluZ1NwYWNlV2lkdGggPSAoZm9udC50eXBlc2V0dGluZ0ZlYXR1
cmVzKCkgJiBLZXJuaW5nKSAmJiAhdGV4dExheW91dCA/IGZvbnQud2lkdGgoUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4ocmVuZGVyVGV4dCwgZm9udCwgJnNwYWNlLCAxLCBzdHlsZSksICZm
YWxsYmFja0ZvbnRzKSArIHdvcmRTcGFjaW5nIDogMDsKKyAgICBmbG9hdCB3b3JkVHJhaWxpbmdT
cGFjZVdpZHRoID0gKGZvbnQudHlwZXNldHRpbmdGZWF0dXJlcygpICYgS2VybmluZykgJiYgIXRl
eHRMYXlvdXQgPyBmb250LndpZHRoKFJlbmRlckJveDo6Y29uc3RydWN0VGV4dFJ1bihyZW5kZXJU
ZXh0LCBmb250LCAmc3BhY2UsIDEsIHN0eWxlKSwgJmZhbGxiYWNrRm9udHMpICsgd29yZFNwYWNp
bmcgOiAwOwogCiAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IG1fcmVuZGVyVGV4dEluZm8ubV9s
aW5lQnJlYWtJdGVyYXRvci5sYXN0Q2hhcmFjdGVyKCk7CiAgICAgVUNoYXIgc2Vjb25kVG9MYXN0
Q2hhcmFjdGVyID0gbV9yZW5kZXJUZXh0SW5mby5tX2xpbmVCcmVha0l0ZXJhdG9yLnNlY29uZFRv
TGFzdENoYXJhY3RlcigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>