<?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>21132</bug_id>
          
          <creation_ts>2008-09-25 22:29:00 -0700</creation_ts>
          <short_desc>Cleanup the methods that scroll in ScrollView</short_desc>
          <delta_ts>2008-09-25 22:41:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          <blocked>21083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92860</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 22:29:00 -0700</bug_when>
    <thetext>Clean up the methods that actually do the scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92861</commentid>
    <comment_count>1</comment_count>
      <attachid>23837</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 22:29:58 -0700</bug_when>
    <thetext>Created attachment 23837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92862</commentid>
    <comment_count>2</comment_count>
      <attachid>23838</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 22:34:30 -0700</bug_when>
    <thetext>Created attachment 23838
Patch #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92863</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-25 22:41:14 -0700</bug_when>
    <thetext>Fixed in r36929.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23837</attachid>
            <date>2008-09-25 22:29:58 -0700</date>
            <delta_ts>2008-09-25 22:34:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19835</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2OTI4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDgtMDkt
MjUgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMgorCisgICAgICAgIENsZWFuIHVwIHRo
ZSBtZXRob2RzIHRoYXQgYWN0dWFsbHkgZG8gdGhlIHNjcm9sbGluZyBpbiBTY3JvbGxWaWV3Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50Ojpz
ZXRTY3JvbGxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Ny
b2xsVG9wKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6Cisg
ICAgICAgICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEb2N1bWVudDo6aW1hZ2VDbGlja2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6c2Nyb2xsVG8pOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29udGVudHNX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpjb250ZW50c0hlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbFZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVseSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
UmVjdEludG9WaWV3UmVjdXJzaXZlbHkpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbFZp
ZXdXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKwogMjAwOC0wOS0yNSAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gYXR0ZW1wdGVkIFdpbmRvd3Mg
YnVpbGQgZml4CkluZGV4OiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIGh0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgSFRN
TEJvZHlFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCAKICAgICBpZiAoc3ZpZXcpIHsKICAgICAg
ICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVudCdzIGxheW91dAogICAgICAgICBkb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAgICAgc3ZpZXctPnNl
dENvbnRlbnRzUG9zKHNjcm9sbExlZnQsIHN2aWV3LT5zY3JvbGxZKCkpOworICAgICAgICBzdmll
dy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsTGVmdCwgc3ZpZXctPnNjcm9sbFko
KSkpOwogICAgIH0gICAgCiB9CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEhUTUxCb2R5RWxl
bWVudDo6c2V0U2Nyb2xsVG9wKGludCBzCiAgICAgaWYgKHN2aWV3KSB7CiAgICAgICAgIC8vIFVw
ZGF0ZSB0aGUgZG9jdW1lbnQncyBsYXlvdXQKICAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgICAgIHN2aWV3LT5zZXRDb250ZW50
c1Bvcyhzdmlldy0+c2Nyb2xsWCgpLCBzY3JvbGxUb3ApOworICAgICAgICBzdmlldy0+c2V0U2Ny
b2xsUG9zaXRpb24oSW50UG9pbnQoc3ZpZXctPnNjcm9sbFgoKSwgc2Nyb2xsVG9wKSk7CiAgICAg
fSAgICAgICAgCiB9CiAKSW5kZXg6IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzY5MjUpCisrKyBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTY5LDEwICs0MTY5LDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQQogICAgIG1fY2xpZW50LT5yZXN0b3Jl
Vmlld1N0YXRlKCk7CiAgICAgCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZp
ZXcoKSkKLSAgICAgICAgaWYgKCF2aWV3LT53YXNTY3JvbGxlZEJ5VXNlcigpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQgPSBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+
c2Nyb2xsUG9pbnQoKTsKLSAgICAgICAgICAgIHZpZXctPnNldENvbnRlbnRzUG9zKHNjcm9sbFBv
aW50LngoKSwgc2Nyb2xsUG9pbnQueSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXZpZXct
Pndhc1Njcm9sbGVkQnlVc2VyKCkpCisgICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlv
bihtX2N1cnJlbnRIaXN0b3J5SXRlbS0+c2Nyb2xsUG9pbnQoKSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKQpJbmRleDogbG9hZGVyL0lt
YWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmltYWdlQ2xpY2tlZChp
bnQgeCwgCiAgICAgICAgIGludCBzY3JvbGxYID0gc3RhdGljX2Nhc3Q8aW50Pih4IC8gc2NhbGUg
LSAoZmxvYXQpZnJhbWUoKS0+dmlldygpLT53aWR0aCgpIC8gMik7CiAgICAgICAgIGludCBzY3Jv
bGxZID0gc3RhdGljX2Nhc3Q8aW50Pih5IC8gc2NhbGUgLSAoZmxvYXQpZnJhbWUoKS0+dmlldygp
LT5oZWlnaHQoKSAvIDIpOwogICAgICAgICAKLSAgICAgICAgZnJhbWUoKS0+dmlldygpLT5zZXRD
b250ZW50c1BvcyhzY3JvbGxYLCBzY3JvbGxZKTsKKyAgICAgICAgZnJhbWUoKS0+dmlldygpLT5z
ZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzY3JvbGxYLCBzY3JvbGxZKSk7CiAgICAgfQogfQog
CkluZGV4OiBwYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9ET01XaW5kb3cu
Y3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIHBhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShpbnQgeCwgaW50
IHkpIGMKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpZXctPnNjcm9s
bEJ5KHgsIHkpOworICAgIHZpZXctPnNjcm9sbEJ5KEludFNpemUoeCwgeSkpOwogfQogCiB2b2lk
IERPTVdpbmRvdzo6c2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdApAQCAtODM2LDcgKzgzNiw3
IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGMKIAogICAgIGludCB6
b29tZWRYID0gc3RhdGljX2Nhc3Q8aW50Pih4ICogbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7
CiAgICAgaW50IHpvb21lZFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHkgKiBtX2ZyYW1lLT5wYWdlWm9v
bUZhY3RvcigpKTsKLSAgICB2aWV3LT5zZXRDb250ZW50c1Bvcyh6b29tZWRYLCB6b29tZWRZKTsK
KyAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh6b29tZWRYLCB6b29tZWRZKSk7
CiB9CiAKIHZvaWQgRE9NV2luZG93Ojptb3ZlQnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKSW5k
ZXg6IHBhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDM2OTI1KQorKysgcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTYsNyArNjE2LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFJlY3Qm
IAogICAgIGVsc2UgaWYgKGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBzY3Jv
bGxZKCkgPCBuZXdTY3JvbGxZKQogICAgICAgICBuZXdTY3JvbGxZID0gY29udGVudHNIZWlnaHQo
KSAtIHZpc2libGVIZWlnaHQoKSAtIHNjcm9sbFkoKTsKIAotICAgIHNjcm9sbEJ5KG5ld1Njcm9s
bFgsIG5ld1Njcm9sbFkpOworICAgIHNjcm9sbEJ5KEludFNpemUobmV3U2Nyb2xsWCwgbmV3U2Ny
b2xsWSkpOwogCiAgICAgLy8gZ2VuZXJhdGUgYWJzKHNjcm9sbC4pCiAgICAgaWYgKG5ld1Njcm9s
bFggPCAwKQpAQCAtNzAyLDEzICs3MDIsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFJlY3RJ
bnRvVmlld1JlY3VycwogICAgIGQtPm1faW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB3YXNJblByb2dy
YW1tYXRpY1Njcm9sbDsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldENvbnRlbnRzUG9zKGludCB4
LCBpbnQgeSkKK3ZvaWQgRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgaWYgKGZyYW1lKCktPnByb2hpYml0c1Njcm9sbGluZygp
KQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCB3YXNJblByb2dyYW1tYXRpY1Njcm9sbCA9IGQt
Pm1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiAgICAgZC0+bV9pblByb2dyYW1tYXRpY1Njcm9sbCA9
IHRydWU7Ci0gICAgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3MoeCwgeSk7CisgICAgU2Nyb2xs
Vmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9pbnQpOwogICAgIGQtPm1faW5Qcm9ncmFt
bWF0aWNTY3JvbGwgPSB3YXNJblByb2dyYW1tYXRpY1Njcm9sbDsKIH0KIApJbmRleDogcGFnZS9G
cmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAzNjkw
MikKKysrIHBhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBA
QCBwdWJsaWM6CiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckxheWVyKGNvbnN0IFJlbmRl
ckxheWVyKiwgYm9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVseShjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzUG9zKGludCB4LCBpbnQgeSk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKICAgICBTdHJpbmcgbWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7Cklu
ZGV4OiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAkocmV2aXNpb24gMzY5MjUpCisrKyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTMgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojpjb250
ZW50c1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzU2l6ZTsKIH0KIAorSW50UG9p
bnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBJbnRT
aXplIGRlbHRhID0gKGNvbnRlbnRzU2l6ZSgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuc2l6ZSgp
KSAtIHNjcm9sbE9mZnNldCgpOworICAgIGRlbHRhLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAg
ICByZXR1cm4gSW50UG9pbnQoZGVsdGEud2lkdGgoKSwgZGVsdGEuaGVpZ2h0KCkpOworfQorCiAj
aWYgIVBMQVRGT1JNKE1BQykKIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRDYW5CbGl0T25T
Y3JvbGwoKQogewpJbmRleDogcGxhdGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBs
YXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMzY5MjUpCisrKyBwbGF0Zm9ybS9TY3JvbGxW
aWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDMzICs2MSw0NSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFNjcm9sbFZpZXcoKTsKICAgICAgICAgflNjcm9sbFZpZXcoKTsKIAorICAg
ICAgICAvLyBNZXRob2RzIGZvciBjaGlsZCBtYW5pcHVsYXRpb24gYW5kIGluc3BlY3Rpb24uCiAg
ICAgICAgIGNvbnN0IEhhc2hTZXQ8V2lkZ2V0Kj4qIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KICAgICAgICAgdm9pZCBhZGRDaGlsZChXaWRnZXQqKTsKICAgICAgICAg
dm9pZCByZW1vdmVDaGlsZChXaWRnZXQqKTsKIAorICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsIHZp
ZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhhdmUgY3Jvc3Mt
cGxhdGZvcm0gU2Nyb2xsYmFycy4gIFRoZXNlIG1ldGhvZHMKKyAgICAgICAgLy8gY2FuIGJlIHVz
ZWQgdG8gb2J0YWluIHRob3NlIHNjcm9sbGJhcnMuCiAgICAgICAgIFNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhcigpIGNvbnN0OwogICAgICAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xs
YmFyKCkgY29uc3Q7CiAKKyAgICAgICAgLy8gV2hldGhlciBvciBub3QgYSBzY3JvbGwgdmlldyB3
aWxsIGJsaXQgdmlzaWJsZSBjb250ZW50cyB3aGVuIGl0IGlzIHNjcm9sbGVkLiAgQmxpdHRpbmcg
aXMgZGlzYWJsZWQgaW4gc2l0dWF0aW9ucworICAgICAgICAvLyB3aGVyZSBpdCB3b3VsZCBjYXVz
ZSByZW5kZXJpbmcgZ2xpdGNoZXMgKHN1Y2ggYXMgd2l0aCBmaXhlZCBiYWNrZ3JvdW5kcyBvciB3
aGVuIHRoZSB2aWV3IGlzIHBhcnRpYWxseSB0cmFuc3BhcmVudCkuCiAgICAgICAgIHZvaWQgc2V0
Q2FuQmxpdE9uU2Nyb2xsKGJvb2wpOwogICAgICAgICBib29sIGNhbkJsaXRPblNjcm9sbCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FuQmxpdE9uU2Nyb2xsOyB9CiAKKyAgICAgICAgLy8gVGhlIHZpc2li
bGUgY29udGVudCByZWN0IGhncyBhIGxvY2F0aW9uIHRoYXQgaXMgdGhlIHNjcm9sbGVkIG9mZnNl
dCBvZiB0aGUgZG9jdW1lbnQuIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSB0aGUgdmlld3BvcnQg
d2lkdGgKKyAgICAgICAgLy8gYW5kIGhlaWdodC4gIEJ5IGRlZmF1bHQgdGhlIHNjcm9sbGJhcnMg
dGhlbXNlbHZlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGlzIHJlY3RhbmdsZSwgYnV0IGFuIG9wdGlv
bmFsIGJvb2xlYW4gYWxsb3dzIHRoZW0gdG8gYmUKKyAgICAgICAgLy8gaW5jbHVkZWQuCiAgICAg
ICAgIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMgPSBm
YWxzZSkgY29uc3Q7CiAgICAgICAgIGludCB2aXNpYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiB2
aXNpYmxlQ29udGVudFJlY3QoKS53aWR0aCgpOyB9CiAgICAgICAgIGludCB2aXNpYmxlSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCk7IH0KICAgICAg
ICAgCisgICAgICAgIC8vIE1ldGhvZHMgZm9yIG9idGFpbmluZyB0aGUgc2l6ZSBvZiB0aGUgZG9j
dW1lbnQgY29udGFpbmVkIGluc2lkZSB0aGUgU2Nyb2xsVmlldyAoYXMgYW4gSW50U2l6ZSBvciBh
cyBpbmRpdmlkdWFsIHdpZHRoIGFuZCBoZWlnaHQKKyAgICAgICAgLy8gdmFsdWVzKS4KKyAgICAg
ICAgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdDsKKyAgICAgICAgaW50IGNvbnRlbnRzV2lk
dGgoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUoKS53aWR0aCgpOyB9CisgICAgICAgIGlu
dCBjb250ZW50c0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgp
OyB9CisKKyAgICAgICAgLy8gTWV0aG9kcyBmb3IgcXVlcnlpbmcgdGhlIGN1cnJlbnQgc2Nyb2xs
ZWQgcG9zaXRpb24gKGJvdGggYXMgYSBwb2ludCwgYSBzaXplLCBvciBhcyBpbmRpdmlkdWFsIFgg
YW5kIFkgdmFsdWVzKS4KICAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpOyB9CiAgICAgICAgIEludFNp
emUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9j
YXRpb24oKSAtIEludFBvaW50KCk7IH0gLy8gR2V0cyB0aGUgc2Nyb2xsZWQgcG9zaXRpb24gYXMg
YW4gSW50U2l6ZS4gQ29udmVuaWVudCBmb3IgYWRkaW5nIHRvIG90aGVyIHNpemVzLgorICAgICAg
ICBJbnRQb2ludCBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsgLy8gVGhlIG1heGltdW0g
cG9zaXRpb24gd2UgY2FuIGJlIHNjcm9sbGVkIHRvLgogICAgICAgICBpbnQgc2Nyb2xsWCgpIGNv
bnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueCgpOyB9CiAgICAgICAgIGludCBzY3JvbGxZ
KCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCk7IH0KICAgICAgICAgCi0gICAg
ICAgIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Q7Ci0gICAgICAgIGludCBjb250ZW50c1dp
ZHRoKCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsgfQotICAgICAgICBp
bnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1NpemUoKS5oZWlnaHQo
KTsgfQotCi0gICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3UmVjdXJzaXZlbHkoY29uc3QgSW50UmVjdCYp
OwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1BvcyhpbnQgeCwgaW50IHkpOwor
ICAgICAgICAvLyBNZXRob2RzIGZvciBzY3JvbGxpbmcgdGhlIHZpZXcuCisgICAgICAgIHZvaWQg
c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKKyAgICAgICAgdm9pZCBzY3JvbGxC
eShjb25zdCBJbnRTaXplJiBzKSB7IHJldHVybiBzZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3Np
dGlvbigpICsgcyk7IH0KKyAgICAgICAgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVs
eShjb25zdCBJbnRSZWN0Jik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFZTY3JvbGxiYXJN
b2RlKFNjcm9sbGJhck1vZGUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0SFNjcm9sbGJhck1v
ZGUoU2Nyb2xsYmFyTW9kZSk7CkluZGV4OiBwbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCShyZXZpc2lvbiAz
NjkyNykKKysrIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzM2LDExICszMzYsMTUgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGUoKQogICAgIGdka193
aW5kb3dfaW52YWxpZGF0ZV9yZWN0KEdUS19XSURHRVQoY29udGFpbmluZ1dpbmRvdygpKS0+d2lu
ZG93LCAmcmVjdCwgdHJ1ZSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3Mo
aW50IG5ld1gsIGludCBuZXdZKQordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7Ci0gICAgaW50IGR4ID0gbmV3WCAtIGNvbnRl
bnRzWCgpOwotICAgIGludCBkeSA9IG5ld1kgLSBjb250ZW50c1koKTsKLSAgICBzY3JvbGxCeShk
eCwgZHkpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hy
dW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNs
YW1wTmVnYXRpdmVUb1plcm8oKTsKKworICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3Jv
bGxQb3NpdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTY3JvbGxiYXJzKElu
dFNpemUobmV3U2Nyb2xsUG9zaXRpb24ueCgpLCBuZXdTY3JvbGxQb3NpdGlvbi55KCkpKTsKIH0K
IAogdm9pZCBTY3JvbGxWaWV3OjpyZXNpemVDb250ZW50cyhpbnQgdywgaW50IGgpCkBAIC0zNTMs
NTAgKzM1Nyw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cmVzaXplQ29udGVudHMoaW50IHcsIGkKICAg
ICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAotaW50IFNjcm9sbFZpZXc6
OmNvbnRlbnRzWCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbE9mZnNldCgpLndpZHRoKCk7
Ci19Ci0KLWludCBTY3JvbGxWaWV3Ojpjb250ZW50c1koKSBjb25zdAotewotICAgIHJldHVybiBz
Y3JvbGxPZmZzZXQoKS5oZWlnaHQoKTsKLX0KLQotaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzV2lk
dGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzU2l6ZS53aWR0aCgpOwotfQotCi1p
bnQgU2Nyb2xsVmlldzo6Y29udGVudHNIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtX2Nv
bnRlbnRzU2l6ZS5oZWlnaHQoKTsKLX0KLQotSW50U2l6ZSBTY3JvbGxWaWV3OjpzY3JvbGxPZmZz
ZXQoKSBjb25zdAotewotICAgIHJldHVybiBtX3Njcm9sbE9mZnNldDsKLX0KLQotSW50U2l6ZSBT
Y3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsKCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGRlbHRhID0g
KG1fY29udGVudHNTaXplIC0gSW50U2l6ZSh2aXNpYmxlV2lkdGgoKSwgdmlzaWJsZUhlaWdodCgp
KSkgLSBzY3JvbGxPZmZzZXQoKTsKLSAgICBkZWx0YS5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0g
ICAgcmV0dXJuIGRlbHRhOwotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNjcm9sbEJ5KGludCBkeCwg
aW50IGR5KQotewotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7Ci0g
ICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQgKyBJbnRTaXplKGR4LCBk
eSkuc2hydW5rVG8obWF4aW11bVNjcm9sbCgpKTsKLSAgICBuZXdTY3JvbGxPZmZzZXQuY2xhbXBO
ZWdhdGl2ZVRvWmVybygpOwotCi0gICAgaWYgKG5ld1Njcm9sbE9mZnNldCA9PSBzY3JvbGxPZmZz
ZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNjcm9sbGJhcnMobmV3U2Nyb2xsT2Zm
c2V0KTsKLX0KLQogU2Nyb2xsYmFyTW9kZSBTY3JvbGxWaWV3OjpoU2Nyb2xsYmFyTW9kZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0YS0+aFNjcm9sbGJhck1vZGU7CkluZGV4OiBwbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9tYWMvU2Nyb2xs
Vmlld01hYy5tbQkocmV2aXNpb24gMzY5MjUpCisrKyBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDExICsxMzIsNiBAQCBJbnRTaXplIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtQ29udGVudHNTaXplCiAgICAgcmV0dXJuIEludFNpemUoKTsKIH0KIAotdm9p
ZCBTY3JvbGxWaWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeSkKLXsKLSAgICBzZXRDb250ZW50
c1BvcyhzY3JvbGxYKCkgKyBkeCwgc2Nyb2xsWSgpICsgZHkpOwotfQotCiB2b2lkIFNjcm9sbFZp
ZXc6OnNjcm9sbFJlY3RJbnRvVmlld1JlY3Vyc2l2ZWx5KGNvbnN0IEludFJlY3QmIHIpCiB7IAog
ICAgIE5TUmVjdCByZWN0ID0gcjsKQEAgLTE2MSwxMCArMTU2LDEwIEBAIGJvb2wgU2Nyb2xsVmll
dzo6aXNTY3JvbGxhYmxlKCkgCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsVmll
dzo6c2V0Q29udGVudHNQb3MoaW50IHgsIGludCB5KQordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwotICAgIE5TUG9pbnQgdGVtcFBvaW50ID0geyBtYXgoMCwgeCks
IG1heCgwLCB5KSB9OyAvLyBEb24ndCB1c2UgTlNNYWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIx
MzMxNC4KKyAgICBOU1BvaW50IHRlbXBQb2ludCA9IHsgbWF4KDAsIHNjcm9sbFBvaW50LngoKSks
IG1heCgwLCBzY3JvbGxQb2ludC55KCkpIH07IC8vIERvbid0IHVzZSBOU01ha2VQb2ludCB0byB3
b3JrIGFyb3VuZCA0MjEzMzE0LgogICAgIFtkb2N1bWVudFZpZXcoKSBzY3JvbGxQb2ludDp0ZW1w
UG9pbnRdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CkluZGV4OiBwbGF0Zm9y
bS9xdC9TY3JvbGxWaWV3UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3F0L1Njcm9sbFZp
ZXdRdC5jcHAJKHJldmlzaW9uIDM2OTI1KQorKysgcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDExICsyMjYsMTUgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1
cGRhdGUoKQogICAgIHVwZGF0ZUNvbnRlbnRzKEludFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0
KCkpKTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1BvcyhpbnQgbmV3WCwgaW50
IG5ld1kpCit2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
JiBzY3JvbGxQb2ludCkKIHsKLSAgICBpbnQgZHggPSBuZXdYIC0gY29udGVudHNYKCk7Ci0gICAg
aW50IGR5ID0gbmV3WSAtIGNvbnRlbnRzWSgpOwotICAgIHNjcm9sbEJ5KGR4LCBkeSk7CisgICAg
SW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtUbyhtYXhpbXVt
U2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBOZWdhdGl2ZVRv
WmVybygpOworCisgICAgaWYgKG5ld1Njcm9sbFBvc2l0aW9uID09IHNjcm9sbFBvc2l0aW9uKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZVNjcm9sbGJhcnMoSW50U2l6ZShuZXdTY3Jv
bGxQb3NpdGlvbi54KCksIG5ld1Njcm9sbFBvc2l0aW9uLnkoKSkpOwogfQogCiB2b2lkIFNjcm9s
bFZpZXc6OnJlc2l6ZUNvbnRlbnRzKGludCB3LCBpbnQgaCkKQEAgLTI4NCwzNiArMjg4LDEyIEBA
IGJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGMKICAgICByZXR1cm4gbV9k
YXRhLT5tX2hCYXIgPT0gY2hpbGQgfHwgbV9kYXRhLT5tX3ZCYXIgPT0gY2hpbGQ7CiB9CiAKLUlu
dFNpemUgU2Nyb2xsVmlldzo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9z
Y3JvbGxPZmZzZXQ7Ci19Ci0KLUludFNpemUgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbCgpIGNv
bnN0Ci17Ci0gICAgSW50U2l6ZSBkZWx0YSA9IChtX2NvbnRlbnRzU2l6ZSAtIEludFNpemUodmlz
aWJsZVdpZHRoKCksIHZpc2libGVIZWlnaHQoKSkpIC0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgZGVs
dGEuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgIHJldHVybiBkZWx0YTsKLX0KLQotdm9pZCBT
Y3JvbGxWaWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeSkKLXsKLSAgICBJbnRTaXplIHNjcm9s
bE9mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0OwotICAgIEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0g
c2Nyb2xsT2Zmc2V0ICsgSW50U2l6ZShkeCwgZHkpLnNocnVua1RvKG1heGltdW1TY3JvbGwoKSk7
Ci0gICAgbmV3U2Nyb2xsT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLQotICAgIGlmIChu
ZXdTY3JvbGxPZmZzZXQgPT0gc2Nyb2xsT2Zmc2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICB1
cGRhdGVTY3JvbGxiYXJzKG5ld1Njcm9sbE9mZnNldCk7Ci19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6
c2Nyb2xsUmVjdEludG9WaWV3UmVjdXJzaXZlbHkoY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBJ
bnRQb2ludCBwKG1heCgwLCByLngoKSksIG1heCgwLCByLnkoKSkpOwogICAgIFNjcm9sbFZpZXcq
IHZpZXcgPSB0aGlzOwogICAgIHdoaWxlICh2aWV3KSB7Ci0gICAgICAgIHZpZXctPnNldENvbnRl
bnRzUG9zKHAueCgpLCBwLnkoKSk7CisgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHAp
OwogICAgICAgICBwLm1vdmUodmlldy0+eCgpIC0gdmlldy0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgo
KSwgdmlldy0+eSgpIC0gdmlldy0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCkpOwogICAgICAgICB2
aWV3ID0gc3RhdGljX2Nhc3Q8U2Nyb2xsVmlldyo+KHBhcmVudCgpKTsKICAgICB9CkluZGV4OiBw
bGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd2lu
L1Njcm9sbFZpZXdXaW4uY3BwCShyZXZpc2lvbiAzNjkyOCkKKysrIHBsYXRmb3JtL3dpbi9TY3Jv
bGxWaWV3V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgzLDEyICsyODMsMTUgQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGUoKQogICAgIDo6VXBkYXRlV2luZG93KGNvbnRhaW5pbmdXaW5kb3co
KSk7CiB9CiAKLQotdm9pZCBTY3JvbGxWaWV3OjpzZXRDb250ZW50c1BvcyhpbnQgbmV3WCwgaW50
IG5ld1kpCit2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
JiBzY3JvbGxQb2ludCkKIHsKLSAgICBpbnQgZHggPSBuZXdYIC0gc2Nyb2xsWCgpOwotICAgIGlu
dCBkeSA9IG5ld1kgLSBzY3JvbGxZKCk7Ci0gICAgc2Nyb2xsQnkoZHgsIGR5KTsKKyAgICBJbnRQ
b2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3Jv
bGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3JvbGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJv
KCk7CisKKyAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlU2Nyb2xsYmFycyhJbnRTaXplKG5ld1Njcm9sbFBv
c2l0aW9uLngoKSwgbmV3U2Nyb2xsUG9zaXRpb24ueSgpKSk7CiB9CiAKIHZvaWQgU2Nyb2xsVmll
dzo6cmVzaXplQ29udGVudHMoaW50IHcsIGludCBoKQpAQCAtMzMzLDMxICszMzYsMTIgQEAgYm9v
bCBTY3JvbGxWaWV3Ojppc1Njcm9sbFZpZXdTY3JvbGxiYXIoYwogICAgIHJldHVybiBtX2RhdGEt
Pm1faEJhciA9PSBjaGlsZCB8fCBtX2RhdGEtPm1fdkJhciA9PSBjaGlsZDsKIH0KIAotSW50U2l6
ZSBTY3JvbGxWaWV3OjptYXhpbXVtU2Nyb2xsKCkgY29uc3QKLXsKLSAgICBJbnRTaXplIGRlbHRh
ID0gKG1fY29udGVudHNTaXplIC0gSW50U2l6ZSh2aXNpYmxlV2lkdGgoKSwgdmlzaWJsZUhlaWdo
dCgpKSkgLSBzY3JvbGxPZmZzZXQoKTsKLSAgICBkZWx0YS5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci0gICAgcmV0dXJuIGRlbHRhOwotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNjcm9sbEJ5KGludCBk
eCwgaW50IGR5KQotewotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxPZmZzZXQ7
Ci0gICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQgKyBJbnRTaXplKGR4
LCBkeSkuc2hydW5rVG8obWF4aW11bVNjcm9sbCgpKTsKLSAgICBuZXdTY3JvbGxPZmZzZXQuY2xh
bXBOZWdhdGl2ZVRvWmVybygpOwotCi0gICAgaWYgKG5ld1Njcm9sbE9mZnNldCA9PSBzY3JvbGxP
ZmZzZXQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNjcm9sbGJhcnMobmV3U2Nyb2xs
T2Zmc2V0KTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNp
dmVseShjb25zdCBJbnRSZWN0JiByKQogewogICAgIEludFBvaW50IHAobWF4KDAsIHIueCgpKSwg
bWF4KDAsIHIueSgpKSk7CiAgICAgU2Nyb2xsVmlldyogdmlldyA9IHRoaXM7CiAgICAgd2hpbGUg
KHZpZXcpIHsKLSAgICAgICAgdmlldy0+c2V0Q29udGVudHNQb3MocC54KCksIHAueSgpKTsKKyAg
ICAgICAgdmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ocCk7CiAgICAgICAgIHAubW92ZSh2aWV3LT54
KCkgLSB2aWV3LT5zY3JvbGxPZmZzZXQoKS53aWR0aCgpLCB2aWV3LT55KCkgLSB2aWV3LT5zY3Jv
bGxPZmZzZXQoKS5oZWlnaHQoKSk7CiAgICAgICAgIHZpZXcgPSBzdGF0aWNfY2FzdDxTY3JvbGxW
aWV3Kj4odmlldy0+cGFyZW50KCkpOwogICAgIH0KSW5kZXg6IHBsYXRmb3JtL3d4L1Njcm9sbFZp
ZXdXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcAkocmV2
aXNpb24gMzY5MjUpCisrKyBwbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsMTQgKzE4MSw3IEBAIEludFNpemUgU2Nyb2xsVmlldzo6cGxhdGZvcm1Db250
ZW50c1NpemUKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAotdm9pZCBT
Y3JvbGxWaWV3OjpzZXRDb250ZW50c1BvcyhpbnQgbmV3WCwgaW50IG5ld1kpCi17Ci0gICAgaW50
IGR4ID0gbmV3WCAtIGNvbnRlbnRzWCgpOwotICAgIGludCBkeSA9IG5ld1kgLSBjb250ZW50c1ko
KTsKLSAgICBzY3JvbGxCeShkeCwgZHkpOwotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNjcm9sbEJ5
KGludCBkeCwgaW50IGR5KQordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25z
dCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgd3hXaW5kb3cqIHdpbiA9IHBsYXRmb3Jt
V2lkZ2V0KCk7CiAgICAgaWYgKCF3aW4pCkBAIC0xOTYsNyArMTg5LDcgQEAgdm9pZCBTY3JvbGxW
aWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeQogCiAgICAgd3hQb2ludCBzY3JvbGxPZmZzZXQg
PSBtX2RhdGEtPnZpZXdTdGFydDsKICAgICB3eFBvaW50IG9yaWcoc2Nyb2xsT2Zmc2V0KTsKLSAg
ICB3eFBvaW50IG5ld1Njcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCArIHd4UG9pbnQoZHgsIGR5
KTsKKyAgICB3eFBvaW50IG5ld1Njcm9sbE9mZnNldChzY3JvbGxQb2ludCk7CiAKICAgICB3eFJl
Y3QgdlJlY3Qod2luLT5HZXRWaXJ0dWFsU2l6ZSgpKTsKICAgICB3eFJlY3QgY1JlY3Qod2luLT5H
ZXRDbGllbnRTaXplKCkpOwpAQCAtMjU0LDExICsyNDcsNiBAQCBib29sIFNjcm9sbFZpZXc6Omlz
U2Nyb2xsVmlld1Njcm9sbGJhcihjCiAgICAgcmV0dXJuIHdpbi0+SXNLaW5kT2YoQ0xBU1NJTkZP
KHd4U2Nyb2xsQmFyKSk7CiB9CiAKLUludFNpemUgU2Nyb2xsVmlldzo6c2Nyb2xsT2Zmc2V0KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gSW50U2l6ZShjb250ZW50c1goKSwgY29udGVudHNZKCkpOwot
fQotCiB2b2lkIFNjcm9sbFZpZXc6OmFkanVzdFNjcm9sbGJhcnMoaW50IHgsIGludCB5LCBib29s
IHJlZnJlc2gpCiB7CiAgICAgd3hXaW5kb3cqIHdpbiA9IHBsYXRmb3JtV2lkZ2V0KCk7CkluZGV4
OiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHJldmlzaW9uIDM2OTI1KQorKysgcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNj
cm9sbEJ5UmVjdXJzaXZlbHkoaW4KICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
IChtX29iamVjdC0+dmlldygpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAgbV9vYmplY3QtPnZpZXco
KS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KHhEZWx0YSwgeURlbHRhKTsKKyAgICAgICAgbV9vYmpl
Y3QtPnZpZXcoKS0+ZnJhbWVWaWV3KCktPnNjcm9sbEJ5KEludFNpemUoeERlbHRhLCB5RGVsdGEp
KTsKIH0KIAogCkBAIC04OTEsNyArODkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVj
dFRvVmlzaWJsZShjbwogICAgICAgICAgICAgICAgIHhPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1l
Vmlldy0+Y29udGVudHNXaWR0aCgpLCB4T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgeU9mZnNl
dCA9IG1heCgwLCBtaW4oZnJhbWVWaWV3LT5jb250ZW50c0hlaWdodCgpLCB5T2Zmc2V0KSk7CiAK
LSAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldENvbnRlbnRzUG9zKHhPZmZzZXQsIHlPZmZz
ZXQpOworICAgICAgICAgICAgICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9p
bnQoeE9mZnNldCwgeU9mZnNldCkpOwogICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0gbV9v
YmplY3QtPmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdM
YXllcigpOwogICAgICAgICAgICAgICAgIG5ld1JlY3Quc2V0WChyZWN0LngoKSAtIGZyYW1lVmll
dy0+c2Nyb2xsWCgpICsgZnJhbWVWaWV3LT54KCkpOwogICAgICAgICAgICAgICAgIG5ld1JlY3Qu
c2V0WShyZWN0LnkoKSAtIGZyYW1lVmlldy0+c2Nyb2xsWSgpICsgZnJhbWVWaWV3LT55KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23838</attachid>
            <date>2008-09-25 22:34:30 -0700</date>
            <delta_ts>2008-09-25 22:40:03 -0700</delta_ts>
            <desc>Patch #2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19848</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2OTI4
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDgtMDkt
MjUgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzMgorCisgICAgICAgIENsZWFuIHVwIHRo
ZSBtZXRob2RzIHRoYXQgYWN0dWFsbHkgZG8gdGhlIHNjcm9sbGluZyBpbiBTY3JvbGxWaWV3Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50Ojpz
ZXRTY3JvbGxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6c2V0U2Ny
b2xsVG9wKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZSk6Cisg
ICAgICAgICogbG9hZGVyL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEb2N1bWVudDo6aW1hZ2VDbGlja2VkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVdpbmRvdzo6c2Nyb2xsVG8pOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Nyb2xsVG8pOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9GcmFtZVZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29udGVudHNX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpjb250ZW50c0hlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxCeSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbFZpZXdRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVseSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xs
UmVjdEludG9WaWV3UmVjdXJzaXZlbHkpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbFZp
ZXdXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKwogMjAwOC0wOS0yNSAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIC0gYXR0ZW1wdGVkIFdpbmRvd3Mg
YnVpbGQgZml4CkluZGV4OiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
aHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIGh0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgSFRN
TEJvZHlFbGVtZW50OjpzZXRTY3JvbGxMZWZ0KGludCAKICAgICBpZiAoc3ZpZXcpIHsKICAgICAg
ICAgLy8gVXBkYXRlIHRoZSBkb2N1bWVudCdzIGxheW91dAogICAgICAgICBkb2N1bWVudCgpLT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICAgICAgc3ZpZXctPnNl
dENvbnRlbnRzUG9zKHNjcm9sbExlZnQsIHN2aWV3LT5zY3JvbGxZKCkpOworICAgICAgICBzdmll
dy0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQoc2Nyb2xsTGVmdCwgc3ZpZXctPnNjcm9sbFko
KSkpOwogICAgIH0gICAgCiB9CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIEhUTUxCb2R5RWxl
bWVudDo6c2V0U2Nyb2xsVG9wKGludCBzCiAgICAgaWYgKHN2aWV3KSB7CiAgICAgICAgIC8vIFVw
ZGF0ZSB0aGUgZG9jdW1lbnQncyBsYXlvdXQKICAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Ci0gICAgICAgIHN2aWV3LT5zZXRDb250ZW50
c1Bvcyhzdmlldy0+c2Nyb2xsWCgpLCBzY3JvbGxUb3ApOworICAgICAgICBzdmlldy0+c2V0U2Ny
b2xsUG9zaXRpb24oSW50UG9pbnQoc3ZpZXctPnNjcm9sbFgoKSwgc2Nyb2xsVG9wKSk7CiAgICAg
fSAgICAgICAgCiB9CiAKSW5kZXg6IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMzY5MjUpCisrKyBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTY5LDEwICs0MTY5LDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uQQogICAgIG1fY2xpZW50LT5yZXN0b3Jl
Vmlld1N0YXRlKCk7CiAgICAgCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZp
ZXcoKSkKLSAgICAgICAgaWYgKCF2aWV3LT53YXNTY3JvbGxlZEJ5VXNlcigpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQgPSBtX2N1cnJlbnRIaXN0b3J5SXRlbS0+
c2Nyb2xsUG9pbnQoKTsKLSAgICAgICAgICAgIHZpZXctPnNldENvbnRlbnRzUG9zKHNjcm9sbFBv
aW50LngoKSwgc2Nyb2xsUG9pbnQueSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIXZpZXct
Pndhc1Njcm9sbGVkQnlVc2VyKCkpCisgICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlv
bihtX2N1cnJlbnRIaXN0b3J5SXRlbS0+c2Nyb2xsUG9pbnQoKSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKQpJbmRleDogbG9hZGVyL0lt
YWdlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9JbWFnZURvY3VtZW50LmNwcAko
cmV2aXNpb24gMzY5MDIpCisrKyBsb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEltYWdlRG9jdW1lbnQ6OmltYWdlQ2xpY2tlZChp
bnQgeCwgCiAgICAgICAgIGludCBzY3JvbGxYID0gc3RhdGljX2Nhc3Q8aW50Pih4IC8gc2NhbGUg
LSAoZmxvYXQpZnJhbWUoKS0+dmlldygpLT53aWR0aCgpIC8gMik7CiAgICAgICAgIGludCBzY3Jv
bGxZID0gc3RhdGljX2Nhc3Q8aW50Pih5IC8gc2NhbGUgLSAoZmxvYXQpZnJhbWUoKS0+dmlldygp
LT5oZWlnaHQoKSAvIDIpOwogICAgICAgICAKLSAgICAgICAgZnJhbWUoKS0+dmlldygpLT5zZXRD
b250ZW50c1BvcyhzY3JvbGxYLCBzY3JvbGxZKTsKKyAgICAgICAgZnJhbWUoKS0+dmlldygpLT5z
ZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChzY3JvbGxYLCBzY3JvbGxZKSk7CiAgICAgfQogfQog
CkluZGV4OiBwYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9ET01XaW5kb3cu
Y3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIHBhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxCeShpbnQgeCwgaW50
IHkpIGMKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpZXctPnNjcm9s
bEJ5KHgsIHkpOworICAgIHZpZXctPnNjcm9sbEJ5KEludFNpemUoeCwgeSkpOwogfQogCiB2b2lk
IERPTVdpbmRvdzo6c2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdApAQCAtODM2LDcgKzgzNiw3
IEBAIHZvaWQgRE9NV2luZG93OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGMKIAogICAgIGludCB6
b29tZWRYID0gc3RhdGljX2Nhc3Q8aW50Pih4ICogbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7
CiAgICAgaW50IHpvb21lZFkgPSBzdGF0aWNfY2FzdDxpbnQ+KHkgKiBtX2ZyYW1lLT5wYWdlWm9v
bUZhY3RvcigpKTsKLSAgICB2aWV3LT5zZXRDb250ZW50c1Bvcyh6b29tZWRYLCB6b29tZWRZKTsK
KyAgICB2aWV3LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh6b29tZWRYLCB6b29tZWRZKSk7
CiB9CiAKIHZvaWQgRE9NV2luZG93Ojptb3ZlQnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKSW5k
ZXg6IHBhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDM2OTI1KQorKysgcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTYsNyArNjE2LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvKGNvbnN0IEludFJlY3Qm
IAogICAgIGVsc2UgaWYgKGNvbnRlbnRzSGVpZ2h0KCkgLSB2aXNpYmxlSGVpZ2h0KCkgLSBzY3Jv
bGxZKCkgPCBuZXdTY3JvbGxZKQogICAgICAgICBuZXdTY3JvbGxZID0gY29udGVudHNIZWlnaHQo
KSAtIHZpc2libGVIZWlnaHQoKSAtIHNjcm9sbFkoKTsKIAotICAgIHNjcm9sbEJ5KG5ld1Njcm9s
bFgsIG5ld1Njcm9sbFkpOworICAgIHNjcm9sbEJ5KEludFNpemUobmV3U2Nyb2xsWCwgbmV3U2Ny
b2xsWSkpOwogCiAgICAgLy8gZ2VuZXJhdGUgYWJzKHNjcm9sbC4pCiAgICAgaWYgKG5ld1Njcm9s
bFggPCAwKQpAQCAtNzAyLDEzICs3MDIsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFJlY3RJ
bnRvVmlld1JlY3VycwogICAgIGQtPm1faW5Qcm9ncmFtbWF0aWNTY3JvbGwgPSB3YXNJblByb2dy
YW1tYXRpY1Njcm9sbDsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnNldENvbnRlbnRzUG9zKGludCB4
LCBpbnQgeSkKK3ZvaWQgRnJhbWVWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2lu
dCYgc2Nyb2xsUG9pbnQpCiB7CiAgICAgaWYgKGZyYW1lKCktPnByb2hpYml0c1Njcm9sbGluZygp
KQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCB3YXNJblByb2dyYW1tYXRpY1Njcm9sbCA9IGQt
Pm1faW5Qcm9ncmFtbWF0aWNTY3JvbGw7CiAgICAgZC0+bV9pblByb2dyYW1tYXRpY1Njcm9sbCA9
IHRydWU7Ci0gICAgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3MoeCwgeSk7CisgICAgU2Nyb2xs
Vmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9pbnQpOwogICAgIGQtPm1faW5Qcm9ncmFt
bWF0aWNTY3JvbGwgPSB3YXNJblByb2dyYW1tYXRpY1Njcm9sbDsKIH0KIApJbmRleDogcGFnZS9G
cmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAzNjkw
MikKKysrIHBhZ2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBA
QCBwdWJsaWM6CiAgICAgSW50UmVjdCB3aW5kb3dDbGlwUmVjdEZvckxheWVyKGNvbnN0IFJlbmRl
ckxheWVyKiwgYm9vbCBjbGlwVG9MYXllckNvbnRlbnRzKSBjb25zdDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVseShjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzUG9zKGludCB4LCBpbnQgeSk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKICAgICBTdHJpbmcgbWVk
aWFUeXBlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7Cklu
ZGV4OiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcAkocmV2aXNpb24gMzY5MjUpCisrKyBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsMTMgQEAgSW50U2l6ZSBTY3JvbGxWaWV3Ojpjb250
ZW50c1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2NvbnRlbnRzU2l6ZTsKIH0KIAorSW50UG9p
bnQgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBJbnRT
aXplIG1heGltdW1PZmZzZXQgPSBjb250ZW50c1NpemUoKSAtIHZpc2libGVDb250ZW50UmVjdCgp
LnNpemUoKTsKKyAgICBtYXhpbXVtT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKKyAgICBy
ZXR1cm4gSW50UG9pbnQobWF4aW11bU9mZnNldC53aWR0aCgpLCBtYXhpbXVtT2Zmc2V0LmhlaWdo
dCgpKTsKK30KKwogI2lmICFQTEFURk9STShNQUMpCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0Q2FuQmxpdE9uU2Nyb2xsKCkKIHsKSW5kZXg6IHBsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJldmlzaW9uIDM2OTI1KQorKysgcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwzMyArNjEsNDUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTY3JvbGxWaWV3KCk7CiAgICAgICAgIH5TY3JvbGxW
aWV3KCk7CiAKKyAgICAgICAgLy8gTWV0aG9kcyBmb3IgY2hpbGQgbWFuaXB1bGF0aW9uIGFuZCBp
bnNwZWN0aW9uLgogICAgICAgICBjb25zdCBIYXNoU2V0PFdpZGdldCo+KiBjaGlsZHJlbigpIGNv
bnN0IHsgcmV0dXJuICZtX2NoaWxkcmVuOyB9CiAgICAgICAgIHZvaWQgYWRkQ2hpbGQoV2lkZ2V0
Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Kik7CiAKKyAgICAgICAgLy8gSWYg
dGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQgd2ls
bCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuICBUaGVzZSBtZXRob2RzCisgICAgICAg
IC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgogICAgICAgICBTY3Jv
bGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdDsKICAgICAgICAgU2Nyb2xsYmFyKiB2
ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OwogCisgICAgICAgIC8vIFdoZXRoZXIgb3Igbm90IGEg
c2Nyb2xsIHZpZXcgd2lsbCBibGl0IHZpc2libGUgY29udGVudHMgd2hlbiBpdCBpcyBzY3JvbGxl
ZC4gIEJsaXR0aW5nIGlzIGRpc2FibGVkIGluIHNpdHVhdGlvbnMKKyAgICAgICAgLy8gd2hlcmUg
aXQgd291bGQgY2F1c2UgcmVuZGVyaW5nIGdsaXRjaGVzIChzdWNoIGFzIHdpdGggZml4ZWQgYmFj
a2dyb3VuZHMgb3Igd2hlbiB0aGUgdmlldyBpcyBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQpLgogICAg
ICAgICB2b2lkIHNldENhbkJsaXRPblNjcm9sbChib29sKTsKICAgICAgICAgYm9vbCBjYW5CbGl0
T25TY3JvbGwoKSBjb25zdCB7IHJldHVybiBtX2NhbkJsaXRPblNjcm9sbDsgfQogCisgICAgICAg
IC8vIFRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCBoZ3MgYSBsb2NhdGlvbiB0aGF0IGlzIHRoZSBz
Y3JvbGxlZCBvZmZzZXQgb2YgdGhlIGRvY3VtZW50LiBUaGUgd2lkdGggYW5kIGhlaWdodCBhcmUg
dGhlIHZpZXdwb3J0IHdpZHRoCisgICAgICAgIC8vIGFuZCBoZWlnaHQuICBCeSBkZWZhdWx0IHRo
ZSBzY3JvbGxiYXJzIHRoZW1zZWx2ZXMgYXJlIGV4Y2x1ZGVkIGZyb20gdGhpcyByZWN0YW5nbGUs
IGJ1dCBhbiBvcHRpb25hbCBib29sZWFuIGFsbG93cyB0aGVtIHRvIGJlCisgICAgICAgIC8vIGlu
Y2x1ZGVkLgogICAgICAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1ZGVT
Y3JvbGxiYXJzID0gZmFsc2UpIGNvbnN0OwogICAgICAgICBpbnQgdmlzaWJsZVdpZHRoKCkgY29u
c3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKTsgfQogICAgICAgICBpbnQg
dmlzaWJsZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdCgpLmhlaWdo
dCgpOyB9CiAgICAgICAgIAorICAgICAgICAvLyBNZXRob2RzIGZvciBvYnRhaW5pbmcgdGhlIHNp
emUgb2YgdGhlIGRvY3VtZW50IGNvbnRhaW5lZCBpbnNpZGUgdGhlIFNjcm9sbFZpZXcgKGFzIGFu
IEludFNpemUgb3IgYXMgaW5kaXZpZHVhbCB3aWR0aCBhbmQgaGVpZ2h0CisgICAgICAgIC8vIHZh
bHVlcykuCisgICAgICAgIEludFNpemUgY29udGVudHNTaXplKCkgY29uc3Q7CisgICAgICAgIGlu
dCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsg
fQorICAgICAgICBpbnQgY29udGVudHNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb250ZW50c1Np
emUoKS5oZWlnaHQoKTsgfQorCisgICAgICAgIC8vIE1ldGhvZHMgZm9yIHF1ZXJ5aW5nIHRoZSBj
dXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQsIGEgc2l6ZSwgb3IgYXMg
aW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCiAgICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKTsgfQog
ICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVDb250
ZW50UmVjdCgpLmxvY2F0aW9uKCkgLSBJbnRQb2ludCgpOyB9IC8vIEdldHMgdGhlIHNjcm9sbGVk
IHBvc2l0aW9uIGFzIGFuIEludFNpemUuIENvbnZlbmllbnQgZm9yIGFkZGluZyB0byBvdGhlciBz
aXplcy4KKyAgICAgICAgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7IC8v
IFRoZSBtYXhpbXVtIHBvc2l0aW9uIHdlIGNhbiBiZSBzY3JvbGxlZCB0by4KICAgICAgICAgaW50
IHNjcm9sbFgoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsgfQogICAgICAg
ICBpbnQgc2Nyb2xsWSgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbFBvc2l0aW9uKCkueSgpOyB9CiAg
ICAgICAgIAotICAgICAgICBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0OwotICAgICAgICBp
bnQgY29udGVudHNXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLndpZHRoKCk7
IH0KLSAgICAgICAgaW50IGNvbnRlbnRzSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudHNT
aXplKCkuaGVpZ2h0KCk7IH0KLQotICAgICAgICB2b2lkIHNjcm9sbEJ5KGludCBkeCwgaW50IGR5
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlld1JlY3Vyc2l2ZWx5KGNv
bnN0IEludFJlY3QmKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNQb3MoaW50
IHgsIGludCB5KTsKKyAgICAgICAgLy8gTWV0aG9kcyBmb3Igc2Nyb2xsaW5nIHRoZSB2aWV3Lgor
ICAgICAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CisgICAgICAg
IHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgcykgeyByZXR1cm4gc2V0U2Nyb2xsUG9zaXRp
b24oc2Nyb2xsUG9zaXRpb24oKSArIHMpOyB9CisgICAgICAgIHZvaWQgc2Nyb2xsUmVjdEludG9W
aWV3UmVjdXJzaXZlbHkoY29uc3QgSW50UmVjdCYpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRWU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHNl
dEhTY3JvbGxiYXJNb2RlKFNjcm9sbGJhck1vZGUpOwpJbmRleDogcGxhdGZvcm0vZ3RrL1Njcm9s
bFZpZXdHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNw
cAkocmV2aXNpb24gMzY5MjcpCisrKyBwbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiwxMSArMzM2LDE1IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRl
KCkKICAgICBnZGtfd2luZG93X2ludmFsaWRhdGVfcmVjdChHVEtfV0lER0VUKGNvbnRhaW5pbmdX
aW5kb3coKSktPndpbmRvdywgJnJlY3QsIHRydWUpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNl
dENvbnRlbnRzUG9zKGludCBuZXdYLCBpbnQgbmV3WSkKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewotICAgIGludCBkeCA9
IG5ld1ggLSBjb250ZW50c1goKTsKLSAgICBpbnQgZHkgPSBuZXdZIC0gY29udGVudHNZKCk7Ci0g
ICAgc2Nyb2xsQnkoZHgsIGR5KTsKKyAgICBJbnRQb2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvaW50LnNocnVua1RvKG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBuZXdTY3Jv
bGxQb3NpdGlvbi5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisKKyAgICBpZiAobmV3U2Nyb2xsUG9z
aXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRl
U2Nyb2xsYmFycyhJbnRTaXplKG5ld1Njcm9sbFBvc2l0aW9uLngoKSwgbmV3U2Nyb2xsUG9zaXRp
b24ueSgpKSk7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6cmVzaXplQ29udGVudHMoaW50IHcsIGlu
dCBoKQpAQCAtMzUzLDUwICszNTcsNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnJlc2l6ZUNvbnRlbnRz
KGludCB3LCBpCiAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7CiB9CiAKLWlu
dCBTY3JvbGxWaWV3Ojpjb250ZW50c1goKSBjb25zdAotewotICAgIHJldHVybiBzY3JvbGxPZmZz
ZXQoKS53aWR0aCgpOwotfQotCi1pbnQgU2Nyb2xsVmlldzo6Y29udGVudHNZKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCk7Ci19Ci0KLWludCBTY3JvbGxWaWV3
Ojpjb250ZW50c1dpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb250ZW50c1NpemUud2lk
dGgoKTsKLX0KLQotaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzSGVpZ2h0KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jb250ZW50c1NpemUuaGVpZ2h0KCk7Ci19Ci0KLUludFNpemUgU2Nyb2xsVmll
dzo6c2Nyb2xsT2Zmc2V0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxPZmZzZXQ7Ci19
Ci0KLUludFNpemUgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbCgpIGNvbnN0Ci17Ci0gICAgSW50
U2l6ZSBkZWx0YSA9IChtX2NvbnRlbnRzU2l6ZSAtIEludFNpemUodmlzaWJsZVdpZHRoKCksIHZp
c2libGVIZWlnaHQoKSkpIC0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgZGVsdGEuY2xhbXBOZWdhdGl2
ZVRvWmVybygpOwotICAgIHJldHVybiBkZWx0YTsKLX0KLQotdm9pZCBTY3JvbGxWaWV3OjpzY3Jv
bGxCeShpbnQgZHgsIGludCBkeSkKLXsKLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IG1fc2Ny
b2xsT2Zmc2V0OwotICAgIEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0ICsg
SW50U2l6ZShkeCwgZHkpLnNocnVua1RvKG1heGltdW1TY3JvbGwoKSk7Ci0gICAgbmV3U2Nyb2xs
T2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLQotICAgIGlmIChuZXdTY3JvbGxPZmZzZXQg
PT0gc2Nyb2xsT2Zmc2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICB1cGRhdGVTY3JvbGxiYXJz
KG5ld1Njcm9sbE9mZnNldCk7Ci19Ci0KIFNjcm9sbGJhck1vZGUgU2Nyb2xsVmlldzo6aFNjcm9s
bGJhck1vZGUoKSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGEtPmhTY3JvbGxiYXJNb2RlOwpJ
bmRleDogcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZv
cm0vbWFjL1Njcm9sbFZpZXdNYWMubW0JKHJldmlzaW9uIDM2OTI1KQorKysgcGxhdGZvcm0vbWFj
L1Njcm9sbFZpZXdNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiwxMSArMTMyLDYgQEAgSW50
U2l6ZSBTY3JvbGxWaWV3OjpwbGF0Zm9ybUNvbnRlbnRzU2l6ZQogICAgIHJldHVybiBJbnRTaXpl
KCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpCi17Ci0g
ICAgc2V0Q29udGVudHNQb3Moc2Nyb2xsWCgpICsgZHgsIHNjcm9sbFkoKSArIGR5KTsKLX0KLQog
dm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxSZWN0SW50b1ZpZXdSZWN1cnNpdmVseShjb25zdCBJbnRS
ZWN0JiByKQogeyAKICAgICBOU1JlY3QgcmVjdCA9IHI7CkBAIC0xNjEsMTAgKzE1NiwxMCBAQCBi
b29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSgpIAogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnNldENvbnRlbnRzUG9zKGludCB4LCBpbnQgeSkKK3ZvaWQgU2Nyb2xs
Vmlldzo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBOU1BvaW50IHRlbXBQb2ludCA9
IHsgbWF4KDAsIHgpLCBtYXgoMCwgeSkgfTsgLy8gRG9uJ3QgdXNlIE5TTWFrZVBvaW50IHRvIHdv
cmsgYXJvdW5kIDQyMTMzMTQuCisgICAgTlNQb2ludCB0ZW1wUG9pbnQgPSB7IG1heCgwLCBzY3Jv
bGxQb2ludC54KCkpLCBtYXgoMCwgc2Nyb2xsUG9pbnQueSgpKSB9OyAvLyBEb24ndCB1c2UgTlNN
YWtlUG9pbnQgdG8gd29yayBhcm91bmQgNDIxMzMxNC4KICAgICBbZG9jdW1lbnRWaWV3KCkgc2Ny
b2xsUG9pbnQ6dGVtcFBvaW50XTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQpJ
bmRleDogcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwbGF0Zm9y
bS9xdC9TY3JvbGxWaWV3UXQuY3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIHBsYXRmb3JtL3F0L1Nj
cm9sbFZpZXdRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNiwxMSArMjI2LDE1IEBAIHZvaWQg
U2Nyb2xsVmlldzo6dXBkYXRlKCkKICAgICB1cGRhdGVDb250ZW50cyhJbnRSZWN0KDAsIDAsIHdp
ZHRoKCksIGhlaWdodCgpKSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3Mo
aW50IG5ld1gsIGludCBuZXdZKQordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7Ci0gICAgaW50IGR4ID0gbmV3WCAtIGNvbnRl
bnRzWCgpOwotICAgIGludCBkeSA9IG5ld1kgLSBjb250ZW50c1koKTsKLSAgICBzY3JvbGxCeShk
eCwgZHkpOworICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9pbnQuc2hy
dW5rVG8obWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIG5ld1Njcm9sbFBvc2l0aW9uLmNs
YW1wTmVnYXRpdmVUb1plcm8oKTsKKworICAgIGlmIChuZXdTY3JvbGxQb3NpdGlvbiA9PSBzY3Jv
bGxQb3NpdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVTY3JvbGxiYXJzKElu
dFNpemUobmV3U2Nyb2xsUG9zaXRpb24ueCgpLCBuZXdTY3JvbGxQb3NpdGlvbi55KCkpKTsKIH0K
IAogdm9pZCBTY3JvbGxWaWV3OjpyZXNpemVDb250ZW50cyhpbnQgdywgaW50IGgpCkBAIC0yODQs
MzYgKzI4OCwxMiBAQCBib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcihjCiAg
ICAgcmV0dXJuIG1fZGF0YS0+bV9oQmFyID09IGNoaWxkIHx8IG1fZGF0YS0+bV92QmFyID09IGNo
aWxkOwogfQogCi1JbnRTaXplIFNjcm9sbFZpZXc6OnNjcm9sbE9mZnNldCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0OwotfQotCi1JbnRTaXplIFNjcm9sbFZpZXc6Om1heGlt
dW1TY3JvbGwoKSBjb25zdAotewotICAgIEludFNpemUgZGVsdGEgPSAobV9jb250ZW50c1NpemUg
LSBJbnRTaXplKHZpc2libGVXaWR0aCgpLCB2aXNpYmxlSGVpZ2h0KCkpKSAtIHNjcm9sbE9mZnNl
dCgpOwotICAgIGRlbHRhLmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLSAgICByZXR1cm4gZGVsdGE7
Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkpCi17Ci0gICAg
SW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX3Njcm9sbE9mZnNldDsKLSAgICBJbnRTaXplIG5ld1Nj
cm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCArIEludFNpemUoZHgsIGR5KS5zaHJ1bmtUbyhtYXhp
bXVtU2Nyb2xsKCkpOwotICAgIG5ld1Njcm9sbE9mZnNldC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7
Ci0KLSAgICBpZiAobmV3U2Nyb2xsT2Zmc2V0ID09IHNjcm9sbE9mZnNldCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdXBkYXRlU2Nyb2xsYmFycyhuZXdTY3JvbGxPZmZzZXQpOwotfQotCiB2b2lk
IFNjcm9sbFZpZXc6OnNjcm9sbFJlY3RJbnRvVmlld1JlY3Vyc2l2ZWx5KGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgSW50UG9pbnQgcChtYXgoMCwgci54KCkpLCBtYXgoMCwgci55KCkpKTsKICAg
ICBTY3JvbGxWaWV3KiB2aWV3ID0gdGhpczsKICAgICB3aGlsZSAodmlldykgewotICAgICAgICB2
aWV3LT5zZXRDb250ZW50c1BvcyhwLngoKSwgcC55KCkpOworICAgICAgICB2aWV3LT5zZXRTY3Jv
bGxQb3NpdGlvbihwKTsKICAgICAgICAgcC5tb3ZlKHZpZXctPngoKSAtIHZpZXctPnNjcm9sbE9m
ZnNldCgpLndpZHRoKCksIHZpZXctPnkoKSAtIHZpZXctPnNjcm9sbE9mZnNldCgpLmhlaWdodCgp
KTsKICAgICAgICAgdmlldyA9IHN0YXRpY19jYXN0PFNjcm9sbFZpZXcqPihwYXJlbnQoKSk7CiAg
ICAgfQpJbmRleDogcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHBsYXRmb3JtL3dpbi9TY3JvbGxWaWV3V2luLmNwcAkocmV2aXNpb24gMzY5MjgpCisrKyBwbGF0
Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MywxMiArMjgz
LDE1IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlKCkKICAgICA6OlVwZGF0ZVdpbmRvdyhjb250
YWluaW5nV2luZG93KCkpOwogfQogCi0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3Mo
aW50IG5ld1gsIGludCBuZXdZKQordm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9pbnQpCiB7Ci0gICAgaW50IGR4ID0gbmV3WCAtIHNjcm9s
bFgoKTsKLSAgICBpbnQgZHkgPSBuZXdZIC0gc2Nyb2xsWSgpOwotICAgIHNjcm9sbEJ5KGR4LCBk
eSk7CisgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb2ludC5zaHJ1bmtU
byhtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgbmV3U2Nyb2xsUG9zaXRpb24uY2xhbXBO
ZWdhdGl2ZVRvWmVybygpOworCisgICAgaWYgKG5ld1Njcm9sbFBvc2l0aW9uID09IHNjcm9sbFBv
c2l0aW9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZVNjcm9sbGJhcnMoSW50U2l6
ZShuZXdTY3JvbGxQb3NpdGlvbi54KCksIG5ld1Njcm9sbFBvc2l0aW9uLnkoKSkpOwogfQogCiB2
b2lkIFNjcm9sbFZpZXc6OnJlc2l6ZUNvbnRlbnRzKGludCB3LCBpbnQgaCkKQEAgLTMzMywzMSAr
MzM2LDEyIEBAIGJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGMKICAgICBy
ZXR1cm4gbV9kYXRhLT5tX2hCYXIgPT0gY2hpbGQgfHwgbV9kYXRhLT5tX3ZCYXIgPT0gY2hpbGQ7
CiB9CiAKLUludFNpemUgU2Nyb2xsVmlldzo6bWF4aW11bVNjcm9sbCgpIGNvbnN0Ci17Ci0gICAg
SW50U2l6ZSBkZWx0YSA9IChtX2NvbnRlbnRzU2l6ZSAtIEludFNpemUodmlzaWJsZVdpZHRoKCks
IHZpc2libGVIZWlnaHQoKSkpIC0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgZGVsdGEuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOwotICAgIHJldHVybiBkZWx0YTsKLX0KLQotdm9pZCBTY3JvbGxWaWV3Ojpz
Y3JvbGxCeShpbnQgZHgsIGludCBkeSkKLXsKLSAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IG1f
c2Nyb2xsT2Zmc2V0OwotICAgIEludFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0
ICsgSW50U2l6ZShkeCwgZHkpLnNocnVua1RvKG1heGltdW1TY3JvbGwoKSk7Ci0gICAgbmV3U2Ny
b2xsT2Zmc2V0LmNsYW1wTmVnYXRpdmVUb1plcm8oKTsKLQotICAgIGlmIChuZXdTY3JvbGxPZmZz
ZXQgPT0gc2Nyb2xsT2Zmc2V0KQotICAgICAgICByZXR1cm47Ci0KLSAgICB1cGRhdGVTY3JvbGxi
YXJzKG5ld1Njcm9sbE9mZnNldCk7Ci19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsUmVjdElu
dG9WaWV3UmVjdXJzaXZlbHkoY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBJbnRQb2ludCBwKG1h
eCgwLCByLngoKSksIG1heCgwLCByLnkoKSkpOwogICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB0aGlz
OwogICAgIHdoaWxlICh2aWV3KSB7Ci0gICAgICAgIHZpZXctPnNldENvbnRlbnRzUG9zKHAueCgp
LCBwLnkoKSk7CisgICAgICAgIHZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHApOwogICAgICAgICBw
Lm1vdmUodmlldy0+eCgpIC0gdmlldy0+c2Nyb2xsT2Zmc2V0KCkud2lkdGgoKSwgdmlldy0+eSgp
IC0gdmlldy0+c2Nyb2xsT2Zmc2V0KCkuaGVpZ2h0KCkpOwogICAgICAgICB2aWV3ID0gc3RhdGlj
X2Nhc3Q8U2Nyb2xsVmlldyo+KHZpZXctPnBhcmVudCgpKTsKICAgICB9CkluZGV4OiBwbGF0Zm9y
bS93eC9TY3JvbGxWaWV3V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL3d4L1Njcm9sbFZp
ZXdXeC5jcHAJKHJldmlzaW9uIDM2OTI1KQorKysgcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDE0ICsxODEsNyBAQCBJbnRTaXplIFNjcm9sbFZpZXc6
OnBsYXRmb3JtQ29udGVudHNTaXplCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7
CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0Q29udGVudHNQb3MoaW50IG5ld1gsIGludCBuZXdZ
KQotewotICAgIGludCBkeCA9IG5ld1ggLSBjb250ZW50c1goKTsKLSAgICBpbnQgZHkgPSBuZXdZ
IC0gY29udGVudHNZKCk7Ci0gICAgc2Nyb2xsQnkoZHgsIGR5KTsKLX0KLQotdm9pZCBTY3JvbGxW
aWV3OjpzY3JvbGxCeShpbnQgZHgsIGludCBkeSkKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIHd4V2luZG93KiB3
aW4gPSBwbGF0Zm9ybVdpZGdldCgpOwogICAgIGlmICghd2luKQpAQCAtMTk2LDcgKzE4OSw3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQnkoaW50IGR4LCBpbnQgZHkKIAogICAgIHd4UG9pbnQg
c2Nyb2xsT2Zmc2V0ID0gbV9kYXRhLT52aWV3U3RhcnQ7CiAgICAgd3hQb2ludCBvcmlnKHNjcm9s
bE9mZnNldCk7Ci0gICAgd3hQb2ludCBuZXdTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQgKyB3
eFBvaW50KGR4LCBkeSk7CisgICAgd3hQb2ludCBuZXdTY3JvbGxPZmZzZXQoc2Nyb2xsUG9pbnQp
OwogCiAgICAgd3hSZWN0IHZSZWN0KHdpbi0+R2V0VmlydHVhbFNpemUoKSk7CiAgICAgd3hSZWN0
IGNSZWN0KHdpbi0+R2V0Q2xpZW50U2l6ZSgpKTsKQEAgLTI1NCwxMSArMjQ3LDYgQEAgYm9vbCBT
Y3JvbGxWaWV3Ojppc1Njcm9sbFZpZXdTY3JvbGxiYXIoYwogICAgIHJldHVybiB3aW4tPklzS2lu
ZE9mKENMQVNTSU5GTyh3eFNjcm9sbEJhcikpOwogfQogCi1JbnRTaXplIFNjcm9sbFZpZXc6OnNj
cm9sbE9mZnNldCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEludFNpemUoY29udGVudHNYKCksIGNv
bnRlbnRzWSgpKTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjphZGp1c3RTY3JvbGxiYXJzKGludCB4
LCBpbnQgeSwgYm9vbCByZWZyZXNoKQogewogICAgIHd4V2luZG93KiB3aW4gPSBwbGF0Zm9ybVdp
ZGdldCgpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAzNjkyNSkKKysrIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGluCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT51cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPnZpZXcoKS0+ZnJhbWVWaWV3KCkpCi0gICAgICAgIG1f
b2JqZWN0LT52aWV3KCktPmZyYW1lVmlldygpLT5zY3JvbGxCeSh4RGVsdGEsIHlEZWx0YSk7Cisg
ICAgICAgIG1fb2JqZWN0LT52aWV3KCktPmZyYW1lVmlldygpLT5zY3JvbGxCeShJbnRTaXplKHhE
ZWx0YSwgeURlbHRhKSk7CiB9CiAKIApAQCAtODkxLDcgKzg5MSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY28KICAgICAgICAgICAgICAgICB4T2Zmc2V0ID0gbWF4
KDAsIG1pbihmcmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSwgeE9mZnNldCkpOwogICAgICAgICAg
ICAgICAgIHlPZmZzZXQgPSBtYXgoMCwgbWluKGZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSwg
eU9mZnNldCkpOwogCi0gICAgICAgICAgICAgICAgZnJhbWVWaWV3LT5zZXRDb250ZW50c1Bvcyh4
T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBmcmFtZVZpZXctPnNldFNjcm9sbFBv
c2l0aW9uKEludFBvaW50KHhPZmZzZXQsIHlPZmZzZXQpKTsKICAgICAgICAgICAgICAgICBwYXJl
bnRMYXllciA9IG1fb2JqZWN0LT5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKS0+cmVuZGVyZXIo
KS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgICAgICAgICBuZXdSZWN0LnNldFgocmVjdC54
KCkgLSBmcmFtZVZpZXctPnNjcm9sbFgoKSArIGZyYW1lVmlldy0+eCgpKTsKICAgICAgICAgICAg
ICAgICBuZXdSZWN0LnNldFkocmVjdC55KCkgLSBmcmFtZVZpZXctPnNjcm9sbFkoKSArIGZyYW1l
Vmlldy0+eSgpKTsK
</data>
<flag name="review"
          id="10732"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>