CN101853071A - 基于视觉的手势识别方法及系统 - Google Patents
基于视觉的手势识别方法及系统 Download PDFInfo
- Publication number
- CN101853071A CN101853071A CN201010171960A CN201010171960A CN101853071A CN 101853071 A CN101853071 A CN 101853071A CN 201010171960 A CN201010171960 A CN 201010171960A CN 201010171960 A CN201010171960 A CN 201010171960A CN 101853071 A CN101853071 A CN 101853071A
- Authority
- CN
- China
- Prior art keywords
- gesture
- image
- images
- gestures
- finger
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000000007 visual effect Effects 0.000 title abstract 2
- 238000000605 extraction Methods 0.000 claims abstract description 17
- 239000004744 fabric Substances 0.000 claims description 13
- 230000001808 coupling Effects 0.000 claims description 11
- 238000010168 coupling process Methods 0.000 claims description 11
- 238000005859 coupling reaction Methods 0.000 claims description 11
- 230000003068 static Effects 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 7
- 210000003491 Skin Anatomy 0.000 claims description 6
- 238000000034 method Methods 0.000 claims description 5
- 239000006002 Pepper Substances 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- ATHVAWFAEPLPPQ-VRDBWYNSSA-O 1-stearoyl-2-oleoyl-sn-glycero-3-phosphocholine(1+) Chemical compound data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pgo8c3ZnIHZlcnNpb249JzEuMScgYmFzZVByb2ZpbGU9J2Z1bGwnCiAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6cmRraXQ9J2h0dHA6Ly93d3cucmRraXQub3JnL3htbCcKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJwogICAgICAgICAgICAgICAgICB4bWw6c3BhY2U9J3ByZXNlcnZlJwp3aWR0aD0nMzAwcHgnIGhlaWdodD0nMzAwcHgnIHZpZXdCb3g9JzAgMCAzMDAgMzAwJz4KPCEtLSBFTkQgT0YgSEVBREVSIC0tPgo8cmVjdCBzdHlsZT0nb3BhY2l0eToxLjA7ZmlsbDojRkZGRkZGO3N0cm9rZTpub25lJyB3aWR0aD0nMzAwLjAnIGhlaWdodD0nMzAwLjAnIHg9JzAuMCcgeT0nMC4wJz4gPC9yZWN0Pgo8cGF0aCBjbGFzcz0nYm9uZC0wIGF0b20tMCBhdG9tLTEnIGQ9J00gMTMuNiwxNzAuNyBMIDIxLjcsMTc0LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEgYXRvbS0xIGF0b20tMicgZD0nTSAyMS43LDE3NC4zIEwgMjguOSwxNjkuMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMiBhdG9tLTIgYXRvbS0zJyBkPSdNIDI4LjksMTY5LjIgTCAzNy4wLDE3Mi44JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zIGF0b20tMyBhdG9tLTQnIGQ9J00gMzcuMCwxNzIuOCBMIDQ0LjEsMTY3LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQgYXRvbS00IGF0b20tNScgZD0nTSA0NC4xLDE2Ny42IEwgNTIuMiwxNzEuMycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNSBhdG9tLTUgYXRvbS02JyBkPSdNIDUyLjIsMTcxLjMgTCA1OS40LDE2Ni4xJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC02IGF0b20tNiBhdG9tLTcnIGQ9J00gNTkuNCwxNjYuMSBMIDY3LjUsMTY5LjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTcgYXRvbS03IGF0b20tOCcgZD0nTSA2Ny41LDE2OS43IEwgNzQuNywxNjQuNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOCBhdG9tLTggYXRvbS05JyBkPSdNIDc0LjcsMTY0LjYgTCA4Mi43LDE2OC4yJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC05IGF0b20tOSBhdG9tLTEwJyBkPSdNIDgyLjcsMTY4LjIgTCA4OS45LDE2My4wJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMCBhdG9tLTEwIGF0b20tMTEnIGQ9J00gODkuOSwxNjMuMCBMIDk4LjAsMTY2LjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTExIGF0b20tMTEgYXRvbS0xMicgZD0nTSA5OC4wLDE2Ni43IEwgMTA1LjIsMTYxLjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyIGF0b20tMTIgYXRvbS0xMycgZD0nTSAxMDUuMiwxNjEuNSBMIDExMy4yLDE2NS4xJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xMyBhdG9tLTEzIGF0b20tMTQnIGQ9J00gMTEzLjIsMTY1LjEgTCAxMjAuNCwxNTkuOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTQgYXRvbS0xNCBhdG9tLTE1JyBkPSdNIDEyMC40LDE1OS45IEwgMTI4LjUsMTYzLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE1IGF0b20tMTUgYXRvbS0xNicgZD0nTSAxMjguNSwxNjMuNiBMIDEzNS43LDE1OC40JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xNiBhdG9tLTE2IGF0b20tMTcnIGQ9J00gMTM1LjcsMTU4LjQgTCAxNDMuNywxNjIuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTcgYXRvbS0xNyBhdG9tLTE4JyBkPSdNIDE0Mi45LDE2Mi4xIEwgMTQzLjEsMTY0LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3IGF0b20tMTcgYXRvbS0xOCcgZD0nTSAxNDMuMSwxNjQuNiBMIDE0My40LDE2Ny4yJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xNyBhdG9tLTE3IGF0b20tMTgnIGQ9J00gMTQ0LjYsMTYyLjAgTCAxNDQuOSwxNjQuNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTcgYXRvbS0xNyBhdG9tLTE4JyBkPSdNIDE0NC45LDE2NC41IEwgMTQ1LjEsMTY3LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4IGF0b20tMTcgYXRvbS0xOScgZD0nTSAxNDMuNywxNjIuMCBMIDE0NS42LDE2MC43JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0xOCBhdG9tLTE3IGF0b20tMTknIGQ9J00gMTQ1LjYsMTYwLjcgTCAxNDcuNSwxNTkuNCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMTkgYXRvbS0xOSBhdG9tLTIwJyBkPSdNIDE1NC42LDE1OC41IEwgMTU2LjgsMTU5LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE5IGF0b20tMTkgYXRvbS0yMCcgZD0nTSAxNTYuOCwxNTkuNSBMIDE1OS4wLDE2MC41JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMCBhdG9tLTIxIGF0b20tMjAnIGQ9J00gMTYzLjYsMTU2LjggTCAxNjQuMCwxNTcuMycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjAgYXRvbS0yMSBhdG9tLTIwJyBkPSdNIDE2MS4xLDE1OC4zIEwgMTYxLjcsMTU5LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIwIGF0b20tMjEgYXRvbS0yMCcgZD0nTSAxNTguNSwxNTkuOCBMIDE1OS41LDE2MS4yJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMSBhdG9tLTIxIGF0b20tMjInIGQ9J00gMTY2LjIsMTU1LjMgTCAxNjUuMywxNDYuNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzMgYXRvbS0yMSBhdG9tLTM0JyBkPSdNIDE2Ni4yLDE1NS4zIEwgMTY4LjQsMTU2LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMzIGF0b20tMjEgYXRvbS0zNCcgZD0nTSAxNjguNCwxNTYuMyBMIDE3MC42LDE1Ny4zJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMiBhdG9tLTIyIGF0b20tMjMnIGQ9J00gMTY1LjMsMTQ2LjUgTCAxNjMuMSwxNDUuNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjIgYXRvbS0yMiBhdG9tLTIzJyBkPSdNIDE2My4xLDE0NS41IEwgMTYwLjksMTQ0LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIzIGF0b20tMjMgYXRvbS0yNCcgZD0nTSAxNTYuOCwxMzkuMSBMIDE1Ni44LDEzOS4wJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yMyBhdG9tLTIzIGF0b20tMjQnIGQ9J00gMTU2LjgsMTM5LjAgTCAxNTYuOCwxMzkuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0ZGNjBCNztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjQgYXRvbS0yNCBhdG9tLTI1JyBkPSdNIDE2MC4xLDEzMy43IEwgMTYwLjgsMTMzLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI0IGF0b20tMjQgYXRvbS0yNScgZD0nTSAxNjAuOCwxMzMuNiBMIDE2MS41LDEzMy42JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNSBhdG9tLTI0IGF0b20tMjYnIGQ9J00gMTUyLjUsMTMzLjYgTCAxNTEuOCwxMzMuNycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0ZGNjBCNztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjUgYXRvbS0yNCBhdG9tLTI2JyBkPSdNIDE1MS44LDEzMy43IEwgMTUxLjEsMTMzLjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI1IGF0b20tMjQgYXRvbS0yNicgZD0nTSAxNTIuNiwxMzUuMyBMIDE1Mi4wLDEzNS40JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRkY2MEI3O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNSBhdG9tLTI0IGF0b20tMjYnIGQ9J00gMTUyLjAsMTM1LjQgTCAxNTEuMywxMzUuNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjYgYXRvbS0yNCBhdG9tLTI3JyBkPSdNIDE1Ni4wLDEzMC4zIEwgMTU2LjAsMTMwLjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI2IGF0b20tMjQgYXRvbS0yNycgZD0nTSAxNTYuMCwxMzAuMiBMIDE1NS45LDEzMC4yJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojRTg0MjM1O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yNyBhdG9tLTI3IGF0b20tMjgnIGQ9J00gMTU4LjksMTIyLjggTCAxNjAuOCwxMjEuNCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjcgYXRvbS0yNyBhdG9tLTI4JyBkPSdNIDE2MC44LDEyMS40IEwgMTYyLjYsMTIwLjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI4IGF0b20tMjggYXRvbS0yOScgZD0nTSAxNjIuNiwxMjAuMSBMIDE2MS43LDExMS4zJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0yOSBhdG9tLTI5IGF0b20tMzAnIGQ9J00gMTYxLjcsMTExLjMgTCAxNjMuNiwxMTAuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMjkgYXRvbS0yOSBhdG9tLTMwJyBkPSdNIDE2My42LDExMC4wIEwgMTY1LjUsMTA4LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMwIGF0b20tMzAgYXRvbS0zMScgZD0nTSAxNjYuNCwxMDIuNyBMIDE2NS4xLDEwMC44JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMCBhdG9tLTMwIGF0b20tMzEnIGQ9J00gMTY1LjEsMTAwLjggTCAxNjMuOCw5OC45JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMSBhdG9tLTMwIGF0b20tMzInIGQ9J00gMTcyLjAsMTEwLjQgTCAxNzMuMCwxMTEuOCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzQyODRGNDtzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzEgYXRvbS0zMCBhdG9tLTMyJyBkPSdNIDE3My4wLDExMS44IEwgMTc0LjEsMTEzLjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMyIGF0b20tMzAgYXRvbS0zMycgZD0nTSAxNzMuMSwxMDMuMSBMIDE3NC42LDEwMi4wJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojNDI4NEY0O3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zMiBhdG9tLTMwIGF0b20tMzMnIGQ9J00gMTc0LjYsMTAyLjAgTCAxNzYuMSwxMDEuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzQgYXRvbS0zNCBhdG9tLTM1JyBkPSdNIDE3Ny43LDE1Ni41IEwgMTc5LjYsMTU1LjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM0IGF0b20tMzQgYXRvbS0zNScgZD0nTSAxNzkuNiwxNTUuMSBMIDE4MS40LDE1My44JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNSBhdG9tLTM1IGF0b20tMzYnIGQ9J00gMTgyLjMsMTUzLjcgTCAxODIuMSwxNTEuOCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzUgYXRvbS0zNSBhdG9tLTM2JyBkPSdNIDE4Mi4xLDE1MS44IEwgMTgxLjksMTQ5LjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM1IGF0b20tMzUgYXRvbS0zNicgZD0nTSAxODAuNiwxNTMuOSBMIDE4MC40LDE1Mi4wJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zNSBhdG9tLTM1IGF0b20tMzYnIGQ9J00gMTgwLjQsMTUyLjAgTCAxODAuMiwxNTAuMScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6I0U4NDIzNTtzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzYgYXRvbS0zNSBhdG9tLTM3JyBkPSdNIDE4MS40LDE1My44IEwgMTg5LjUsMTU3LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM3IGF0b20tMzcgYXRvbS0zOCcgZD0nTSAxODkuNSwxNTcuNCBMIDE5Ni43LDE1Mi4zJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC0zOCBhdG9tLTM4IGF0b20tMzknIGQ9J00gMTk2LjcsMTUyLjMgTCAyMDQuOCwxNTUuOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMzkgYXRvbS0zOSBhdG9tLTQwJyBkPSdNIDIwNC44LDE1NS45IEwgMjExLjksMTUwLjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQwIGF0b20tNDAgYXRvbS00MScgZD0nTSAyMTEuOSwxNTAuNyBMIDIyMC4wLDE1NC40JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00MSBhdG9tLTQxIGF0b20tNDInIGQ9J00gMjIwLjAsMTU0LjQgTCAyMjcuMiwxNDkuMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDIgYXRvbS00MiBhdG9tLTQzJyBkPSdNIDIyNy4yLDE0OS4yIEwgMjM1LjMsMTUyLjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQzIGF0b20tNDMgYXRvbS00NCcgZD0nTSAyMzUuMywxNTIuOCBMIDI0Mi41LDE0Ny43JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NCBhdG9tLTQ0IGF0b20tNDUnIGQ9J00gMjQyLjUsMTQ3LjcgTCAyNTAuNSwxNTEuMycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDQgYXRvbS00NCBhdG9tLTQ1JyBkPSdNIDI0Mi45LDE0OS44IEwgMjQ4LjYsMTUyLjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ1IGF0b20tNDUgYXRvbS00NicgZD0nTSAyNTAuNSwxNTEuMyBMIDI1MS40LDE2MC4xJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00NiBhdG9tLTQ2IGF0b20tNDcnIGQ9J00gMjUxLjQsMTYwLjEgTCAyNTkuNSwxNjMuNycgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNDcgYXRvbS00NyBhdG9tLTQ4JyBkPSdNIDI1OS41LDE2My43IEwgMjYwLjQsMTcyLjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ4IGF0b20tNDggYXRvbS00OScgZD0nTSAyNjAuNCwxNzIuNSBMIDI2OC40LDE3Ni4yJyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC00OSBhdG9tLTQ5IGF0b20tNTAnIGQ9J00gMjY4LjQsMTc2LjIgTCAyNjkuMywxODUuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNTAgYXRvbS01MCBhdG9tLTUxJyBkPSdNIDI2OS4zLDE4NS4wIEwgMjc3LjQsMTg4LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjIuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUxIGF0b20tNTEgYXRvbS01MicgZD0nTSAyNzcuNCwxODguNiBMIDI3OC4zLDE5Ny40JyBzdHlsZT0nZmlsbDpub25lO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojM0I0MTQzO3N0cm9rZS13aWR0aDoyLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxJyAvPgo8cGF0aCBjbGFzcz0nYm9uZC01MiBhdG9tLTUyIGF0b20tNTMnIGQ9J00gMjc4LjMsMTk3LjQgTCAyODYuNCwyMDEuMScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6Mi4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHRleHQgeD0nMTQyLjgnIHk9JzE3My45JyBjbGFzcz0nYXRvbS0xOCcgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTQ5LjEnIHk9JzE1OS45JyBjbGFzcz0nYXRvbS0xOScgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTU1LjQnIHk9JzE0NS45JyBjbGFzcz0nYXRvbS0yMycgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTU0LjUnIHk9JzEzNy4xJyBjbGFzcz0nYXRvbS0yNCcgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRkY2MEI3JyA+UDwvdGV4dD4KPHRleHQgeD0nMTYzLjMnIHk9JzEzNi4yJyBjbGFzcz0nYXRvbS0yNScgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTY3LjUnIHk9JzEzNi4yJyBjbGFzcz0nYXRvbS0yNScgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+SDwvdGV4dD4KPHRleHQgeD0nMTQ1LjcnIHk9JzEzOC4wJyBjbGFzcz0nYXRvbS0yNicgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTUzLjcnIHk9JzEyOC4zJyBjbGFzcz0nYXRvbS0yNycgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTY3LjEnIHk9JzEwOS4xJyBjbGFzcz0nYXRvbS0zMCcgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojNDI4NEY0JyA+TjwvdGV4dD4KPHRleHQgeD0nMTcxLjMnIHk9JzEwNi43JyBjbGFzcz0nYXRvbS0zMCcgc3R5bGU9J2ZvbnQtc2l6ZTozcHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojNDI4NEY0JyA+KzwvdGV4dD4KPHRleHQgeD0nMTcyLjUnIHk9JzE2Mi4wJyBjbGFzcz0nYXRvbS0zNCcgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nMTc4LjgnIHk9JzE0OC4wJyBjbGFzcz0nYXRvbS0zNicgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPC9zdmc+Cg== data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pgo8c3ZnIHZlcnNpb249JzEuMScgYmFzZVByb2ZpbGU9J2Z1bGwnCiAgICAgICAgICAgICAgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJwogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6cmRraXQ9J2h0dHA6Ly93d3cucmRraXQub3JnL3htbCcKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJwogICAgICAgICAgICAgICAgICB4bWw6c3BhY2U9J3ByZXNlcnZlJwp3aWR0aD0nODVweCcgaGVpZ2h0PSc4NXB4JyB2aWV3Qm94PScwIDAgODUgODUnPgo8IS0tIEVORCBPRiBIRUFERVIgLS0+CjxyZWN0IHN0eWxlPSdvcGFjaXR5OjEuMDtmaWxsOiNGRkZGRkY7c3Ryb2tlOm5vbmUnIHdpZHRoPSc4NS4wJyBoZWlnaHQ9Jzg1LjAnIHg9JzAuMCcgeT0nMC4wJz4gPC9yZWN0Pgo8cGF0aCBjbGFzcz0nYm9uZC0wIGF0b20tMCBhdG9tLTEnIGQ9J00gMy40LDQ3LjkgTCA1LjcsNDguOScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMSBhdG9tLTEgYXRvbS0yJyBkPSdNIDUuNyw0OC45IEwgNy43LDQ3LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIgYXRvbS0yIGF0b20tMycgZD0nTSA3LjcsNDcuNCBMIDEwLjAsNDguNScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtMyBhdG9tLTMgYXRvbS00JyBkPSdNIDEwLjAsNDguNSBMIDEyLjAsNDcuMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNCBhdG9tLTQgYXRvbS01JyBkPSdNIDEyLjAsNDcuMCBMIDE0LjMsNDguMCcgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNSBhdG9tLTUgYXRvbS02JyBkPSdNIDE0LjMsNDguMCBMIDE2LjMsNDYuNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNiBhdG9tLTYgYXRvbS03JyBkPSdNIDE2LjMsNDYuNiBMIDE4LjYsNDcuNicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtNyBhdG9tLTcgYXRvbS04JyBkPSdNIDE4LjYsNDcuNiBMIDIwLjcsNDYuMScgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOCBhdG9tLTggYXRvbS05JyBkPSdNIDIwLjcsNDYuMSBMIDIyLjksNDcuMicgc3R5bGU9J2ZpbGw6bm9uZTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzNCNDE0MztzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MScgLz4KPHBhdGggY2xhc3M9J2JvbmQtOSBhdG9tLTkgYXRvbS0xMCcgZD0nTSAyMi45LDQ3LjIgTCAyNS4wLDQ1LjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEwIGF0b20tMTAgYXRvbS0xMScgZD0nTSAyNS4wLDQ1LjcgTCAyNy4zLDQ2LjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTExIGF0b20tMTEgYXRvbS0xMicgZD0nTSAyNy4zLDQ2LjcgTCAyOS4zLDQ1LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEyIGF0b20tMTIgYXRvbS0xMycgZD0nTSAyOS4zLDQ1LjMgTCAzMS42LDQ2LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTEzIGF0b20tMTMgYXRvbS0xNCcgZD0nTSAzMS42LDQ2LjMgTCAzMy42LDQ0LjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE0IGF0b20tMTQgYXRvbS0xNScgZD0nTSAzMy42LDQ0LjggTCAzNS45LDQ1LjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE1IGF0b20tMTUgYXRvbS0xNicgZD0nTSAzNS45LDQ1LjggTCAzNy45LDQ0LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE2IGF0b20tMTYgYXRvbS0xNycgZD0nTSAzNy45LDQ0LjQgTCA0MC4yLDQ1LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3IGF0b20tMTcgYXRvbS0xOCcgZD0nTSA0MC4wLDQ1LjQgTCA0MC4wLDQ1LjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3IGF0b20tMTcgYXRvbS0xOCcgZD0nTSA0MC4wLDQ1LjggTCA0MC4wLDQ2LjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3IGF0b20tMTcgYXRvbS0xOCcgZD0nTSA0MC41LDQ1LjQgTCA0MC41LDQ1LjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE3IGF0b20tMTcgYXRvbS0xOCcgZD0nTSA0MC41LDQ1LjcgTCA0MC41LDQ2LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4IGF0b20tMTcgYXRvbS0xOScgZD0nTSA0MC4yLDQ1LjQgTCA0MC4zLDQ1LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE4IGF0b20tMTcgYXRvbS0xOScgZD0nTSA0MC4zLDQ1LjQgTCA0MC40LDQ1LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE5IGF0b20tMTkgYXRvbS0yMCcgZD0nTSA0NC4xLDQ0LjggTCA0NC4zLDQ0LjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTE5IGF0b20tMTkgYXRvbS0yMCcgZD0nTSA0NC4zLDQ0LjkgTCA0NC42LDQ1LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIwIGF0b20tMjEgYXRvbS0yMCcgZD0nTSA0NS45LDQzLjkgTCA0Ni4wLDQ0LjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIwIGF0b20tMjEgYXRvbS0yMCcgZD0nTSA0NS4xLDQ0LjQgTCA0NS4zLDQ0LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIwIGF0b20tMjEgYXRvbS0yMCcgZD0nTSA0NC40LDQ0LjggTCA0NC43LDQ1LjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIxIGF0b20tMjEgYXRvbS0yMicgZD0nTSA0Ni42LDQzLjUgTCA0Ni4zLDQxLjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMzIGF0b20tMjEgYXRvbS0zNCcgZD0nTSA0Ni42LDQzLjUgTCA0Ni44LDQzLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMzIGF0b20tMjEgYXRvbS0zNCcgZD0nTSA0Ni44LDQzLjYgTCA0Ny4wLDQzLjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIyIGF0b20tMjIgYXRvbS0yMycgZD0nTSA0Ni4zLDQxLjAgTCA0Ni4xLDQwLjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIyIGF0b20tMjIgYXRvbS0yMycgZD0nTSA0Ni4xLDQwLjkgTCA0NS45LDQwLjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIzIGF0b20tMjMgYXRvbS0yNCcgZD0nTSA0My45LDM4LjEgTCA0My44LDM3LjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTIzIGF0b20tMjMgYXRvbS0yNCcgZD0nTSA0My44LDM3LjggTCA0My44LDM3LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI0IGF0b20tMjQgYXRvbS0yNScgZD0nTSA0NS43LDM3LjMgTCA0Ni4wLDM3LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI0IGF0b20tMjQgYXRvbS0yNScgZD0nTSA0Ni4wLDM3LjMgTCA0Ni4zLDM3LjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI1IGF0b20tMjQgYXRvbS0yNicgZD0nTSA0MS45LDM3LjQgTCA0MS42LDM3LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI1IGF0b20tMjQgYXRvbS0yNicgZD0nTSA0MS42LDM3LjUgTCA0MS4zLDM3LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI1IGF0b20tMjQgYXRvbS0yNicgZD0nTSA0Mi4wLDM3LjkgTCA0MS42LDM4LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI1IGF0b20tMjQgYXRvbS0yNicgZD0nTSA0MS42LDM4LjAgTCA0MS4zLDM4LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI2IGF0b20tMjQgYXRvbS0yNycgZD0nTSA0My42LDM1LjYgTCA0My42LDM1LjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNGRjYwQjc7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI2IGF0b20tMjQgYXRvbS0yNycgZD0nTSA0My42LDM1LjMgTCA0My41LDM1LjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI3IGF0b20tMjcgYXRvbS0yOCcgZD0nTSA0NS40LDMzLjcgTCA0NS41LDMzLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI3IGF0b20tMjcgYXRvbS0yOCcgZD0nTSA0NS41LDMzLjYgTCA0NS42LDMzLjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI4IGF0b20tMjggYXRvbS0yOScgZD0nTSA0NS42LDMzLjUgTCA0NS4zLDMxLjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI5IGF0b20tMjkgYXRvbS0zMCcgZD0nTSA0NS4zLDMxLjAgTCA0NS40LDMxLjAnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTI5IGF0b20tMjkgYXRvbS0zMCcgZD0nTSA0NS40LDMxLjAgTCA0NS41LDMwLjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMwIGF0b20tMzAgYXRvbS0zMScgZD0nTSA0Ni4wLDI3LjcgTCA0Ni4wLDI3LjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMwIGF0b20tMzAgYXRvbS0zMScgZD0nTSA0Ni4wLDI3LjYgTCA0NS45LDI3LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMxIGF0b20tMzAgYXRvbS0zMicgZD0nTSA0Ny40LDI5LjYgTCA0OC4xLDMwLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMxIGF0b20tMzAgYXRvbS0zMicgZD0nTSA0OC4xLDMwLjYgTCA0OC44LDMxLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMyIGF0b20tMzAgYXRvbS0zMycgZD0nTSA0OS4yLDI4LjIgTCA0OS4zLDI4LjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiM0Mjg0RjQ7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTMyIGF0b20tMzAgYXRvbS0zMycgZD0nTSA0OS4zLDI4LjIgTCA0OS40LDI4LjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM0IGF0b20tMzQgYXRvbS0zNScgZD0nTSA1MC43LDQzLjIgTCA1MC44LDQzLjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM0IGF0b20tMzQgYXRvbS0zNScgZD0nTSA1MC44LDQzLjEgTCA1MC45LDQzLjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM1IGF0b20tMzUgYXRvbS0zNicgZD0nTSA1MS4yLDQzLjEgTCA1MS4wLDQxLjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM1IGF0b20tMzUgYXRvbS0zNicgZD0nTSA1MS4wLDQxLjggTCA1MC45LDQwLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM1IGF0b20tMzUgYXRvbS0zNicgZD0nTSA1MC43LDQzLjEgTCA1MC41LDQxLjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM1IGF0b20tMzUgYXRvbS0zNicgZD0nTSA1MC41LDQxLjkgTCA1MC40LDQwLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiNFODQyMzU7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM2IGF0b20tMzUgYXRvbS0zNycgZD0nTSA1MC45LDQzLjEgTCA1My4yLDQ0LjEnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM3IGF0b20tMzcgYXRvbS0zOCcgZD0nTSA1My4yLDQ0LjEgTCA1NS4yLDQyLjYnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM4IGF0b20tMzggYXRvbS0zOScgZD0nTSA1NS4yLDQyLjYgTCA1Ny41LDQzLjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTM5IGF0b20tMzkgYXRvbS00MCcgZD0nTSA1Ny41LDQzLjcgTCA1OS42LDQyLjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQwIGF0b20tNDAgYXRvbS00MScgZD0nTSA1OS42LDQyLjIgTCA2MS44LDQzLjInIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQxIGF0b20tNDEgYXRvbS00MicgZD0nTSA2MS44LDQzLjIgTCA2My45LDQxLjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQyIGF0b20tNDIgYXRvbS00MycgZD0nTSA2My45LDQxLjggTCA2Ni4yLDQyLjgnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQzIGF0b20tNDMgYXRvbS00NCcgZD0nTSA2Ni4yLDQyLjggTCA2OC4yLDQxLjMnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ0IGF0b20tNDQgYXRvbS00NScgZD0nTSA2OC4yLDQxLjMgTCA3MC41LDQyLjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ0IGF0b20tNDQgYXRvbS00NScgZD0nTSA2OC4zLDQxLjkgTCA2OS45LDQyLjcnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ1IGF0b20tNDUgYXRvbS00NicgZD0nTSA3MC41LDQyLjQgTCA3MC43LDQ0LjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ2IGF0b20tNDYgYXRvbS00NycgZD0nTSA3MC43LDQ0LjkgTCA3My4wLDQ1LjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ3IGF0b20tNDcgYXRvbS00OCcgZD0nTSA3My4wLDQ1LjkgTCA3My4zLDQ4LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ4IGF0b20tNDggYXRvbS00OScgZD0nTSA3My4zLDQ4LjQgTCA3NS42LDQ5LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTQ5IGF0b20tNDkgYXRvbS01MCcgZD0nTSA3NS42LDQ5LjQgTCA3NS44LDUxLjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUwIGF0b20tNTAgYXRvbS01MScgZD0nTSA3NS44LDUxLjkgTCA3OC4xLDUyLjknIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUxIGF0b20tNTEgYXRvbS01MicgZD0nTSA3OC4xLDUyLjkgTCA3OC4zLDU1LjQnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+CjxwYXRoIGNsYXNzPSdib25kLTUyIGF0b20tNTIgYXRvbS01MycgZD0nTSA3OC4zLDU1LjQgTCA4MC42LDU2LjUnIHN0eWxlPSdmaWxsOm5vbmU7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMzQjQxNDM7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEnIC8+Cjx0ZXh0IHg9JzM4LjcnIHk9JzUwLjknIGNsYXNzPSdhdG9tLTE4JyBzdHlsZT0nZm9udC1zaXplOjZweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWFuY2hvcjpzdGFydDtmaWxsOiNFODQyMzUnID5PPC90ZXh0Pgo8dGV4dCB4PSc0MC41JyB5PSc0Ni45JyBjbGFzcz0nYXRvbS0xOScgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nNDIuMicgeT0nNDMuMCcgY2xhc3M9J2F0b20tMjMnIHN0eWxlPSdmb250LXNpemU6NnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO3RleHQtYW5jaG9yOnN0YXJ0O2ZpbGw6I0U4NDIzNScgPk88L3RleHQ+Cjx0ZXh0IHg9JzQyLjAnIHk9JzQwLjUnIGNsYXNzPSdhdG9tLTI0JyBzdHlsZT0nZm9udC1zaXplOjZweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWFuY2hvcjpzdGFydDtmaWxsOiNGRjYwQjcnID5QPC90ZXh0Pgo8dGV4dCB4PSc0NC41JyB5PSc0MC4yJyBjbGFzcz0nYXRvbS0yNScgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nNDguNicgeT0nNDAuMicgY2xhc3M9J2F0b20tMjUnIHN0eWxlPSdmb250LXNpemU6NnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO3RleHQtYW5jaG9yOnN0YXJ0O2ZpbGw6I0U4NDIzNScgPkg8L3RleHQ+Cjx0ZXh0IHg9JzM5LjUnIHk9JzQwLjcnIGNsYXNzPSdhdG9tLTI2JyBzdHlsZT0nZm9udC1zaXplOjZweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWFuY2hvcjpzdGFydDtmaWxsOiNFODQyMzUnID5PPC90ZXh0Pgo8dGV4dCB4PSc0MS43JyB5PSczOC4wJyBjbGFzcz0nYXRvbS0yNycgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nNDUuNicgeT0nMzIuNicgY2xhc3M9J2F0b20tMzAnIHN0eWxlPSdmb250LXNpemU6NnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO3RleHQtYW5jaG9yOnN0YXJ0O2ZpbGw6IzQyODRGNCcgPk48L3RleHQ+Cjx0ZXh0IHg9JzQ5LjcnIHk9JzMwLjInIGNsYXNzPSdhdG9tLTMwJyBzdHlsZT0nZm9udC1zaXplOjNweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmU7Zm9udC1mYW1pbHk6c2Fucy1zZXJpZjt0ZXh0LWFuY2hvcjpzdGFydDtmaWxsOiM0Mjg0RjQnID4rPC90ZXh0Pgo8dGV4dCB4PSc0Ny4xJyB5PSc0Ny41JyBjbGFzcz0nYXRvbS0zNCcgc3R5bGU9J2ZvbnQtc2l6ZTo2cHg7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7dGV4dC1hbmNob3I6c3RhcnQ7ZmlsbDojRTg0MjM1JyA+TzwvdGV4dD4KPHRleHQgeD0nNDguOScgeT0nNDMuNicgY2xhc3M9J2F0b20tMzYnIHN0eWxlPSdmb250LXNpemU6NnB4O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtmb250LWZhbWlseTpzYW5zLXNlcmlmO3RleHQtYW5jaG9yOnN0YXJ0O2ZpbGw6I0U4NDIzNScgPk88L3RleHQ+CjxwYXRoIGQ9J00gMy4yLDQ4LjAgTCAzLjIsNDcuNyBMIDMuNSw0Ny43IEwgMy41LDQ4LjAgTCAzLjIsNDguMCcgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gNy41LDQ3LjYgTCA3LjUsNDcuMyBMIDcuOSw0Ny4zIEwgNy45LDQ3LjYgTCA3LjUsNDcuNicgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gMTEuOCw0Ny4yIEwgMTEuOCw0Ni44IEwgMTIuMiw0Ni44IEwgMTIuMiw0Ny4yIEwgMTEuOCw0Ny4yJyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSAxNi4yLDQ2LjcgTCAxNi4yLDQ2LjQgTCAxNi41LDQ2LjQgTCAxNi41LDQ2LjcgTCAxNi4yLDQ2LjcnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDIwLjUsNDYuMyBMIDIwLjUsNDYuMCBMIDIwLjgsNDYuMCBMIDIwLjgsNDYuMyBMIDIwLjUsNDYuMycgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gMjQuOCw0NS45IEwgMjQuOCw0NS41IEwgMjUuMSw0NS41IEwgMjUuMSw0NS45IEwgMjQuOCw0NS45JyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSAyOS4xLDQ1LjQgTCAyOS4xLDQ1LjEgTCAyOS41LDQ1LjEgTCAyOS41LDQ1LjQgTCAyOS4xLDQ1LjQnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDMzLjUsNDUuMCBMIDMzLjUsNDQuNyBMIDMzLjgsNDQuNyBMIDMzLjgsNDUuMCBMIDMzLjUsNDUuMCcgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gMzcuOCw0NC41IEwgMzcuOCw0NC4yIEwgMzguMSw0NC4yIEwgMzguMSw0NC41IEwgMzcuOCw0NC41JyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSA0Mi4xLDQ0LjEgTCA0Mi4xLDQzLjggTCA0Mi40LDQzLjggTCA0Mi40LDQ0LjEgTCA0Mi4xLDQ0LjEnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDQ2LjQsNDMuNyBMIDQ2LjQsNDMuMyBMIDQ2LjgsNDMuMyBMIDQ2LjgsNDMuNyBMIDQ2LjQsNDMuNycgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gNDMuOSw0MC4yIEwgNDMuOSwzOS44IEwgNDQuMiwzOS44IEwgNDQuMiw0MC4yIEwgNDMuOSw0MC4yJyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSA0My40LDM1LjIgTCA0My40LDM0LjggTCA0My43LDM0LjggTCA0My43LDM1LjIgTCA0My40LDM1LjInIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDQ1LjIsMzEuMiBMIDQ1LjIsMzAuOSBMIDQ1LjUsMzAuOSBMIDQ1LjUsMzEuMiBMIDQ1LjIsMzEuMicgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gNDguNyw0NC43IEwgNDguNyw0NC40IEwgNDkuMCw0NC40IEwgNDkuMCw0NC43IEwgNDguNyw0NC43JyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSA1My4wLDQ0LjMgTCA1My4wLDQzLjkgTCA1My40LDQzLjkgTCA1My40LDQ0LjMgTCA1My4wLDQ0LjMnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDU3LjMsNDMuOCBMIDU3LjMsNDMuNSBMIDU3LjcsNDMuNSBMIDU3LjcsNDMuOCBMIDU3LjMsNDMuOCcgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gNjEuNyw0My40IEwgNjEuNyw0My4xIEwgNjIuMCw0My4xIEwgNjIuMCw0My40IEwgNjEuNyw0My40JyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSA2Ni4wLDQzLjAgTCA2Ni4wLDQyLjYgTCA2Ni4zLDQyLjYgTCA2Ni4zLDQzLjAgTCA2Ni4wLDQzLjAnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDcwLjMsNDIuNSBMIDcwLjMsNDIuMiBMIDcwLjcsNDIuMiBMIDcwLjcsNDIuNSBMIDcwLjMsNDIuNScgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+CjxwYXRoIGQ9J00gNzIuOSw0Ni4xIEwgNzIuOSw0NS43IEwgNzMuMiw0NS43IEwgNzMuMiw0Ni4xIEwgNzIuOSw0Ni4xJyBzdHlsZT0nZmlsbDpub25lO3N0cm9rZTojRkYwMDAwO3N0cm9rZS13aWR0aDoxLjBweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxOycgLz4KPHBhdGggZD0nTSA3NS40LDQ5LjYgTCA3NS40LDQ5LjIgTCA3NS43LDQ5LjIgTCA3NS43LDQ5LjYgTCA3NS40LDQ5LjYnIHN0eWxlPSdmaWxsOm5vbmU7c3Ryb2tlOiNGRjAwMDA7c3Ryb2tlLXdpZHRoOjEuMHB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjE7JyAvPgo8cGF0aCBkPSdNIDc3LjksNTMuMSBMIDc3LjksNTIuOCBMIDc4LjMsNTIuOCBMIDc4LjMsNTMuMSBMIDc3LjksNTMuMScgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6I0ZGMDAwMDtzdHJva2Utd2lkdGg6MS4wcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTsnIC8+Cjwvc3ZnPgo= CCCCCCCCCCCCCCCCCC(=O)OC[C@H](COP(O)(=O)OCC[N+](C)(C)C)OC(=O)CCCCCCC\C=C/CCCCCCCC ATHVAWFAEPLPPQ-VRDBWYNSSA-O 0.000 claims description 2
- 230000003139 buffering Effects 0.000 claims description 2
- 238000010606 normalization Methods 0.000 claims description 2
- 230000011218 segmentation Effects 0.000 claims description 2
- 230000000875 corresponding Effects 0.000 abstract description 4
- 241001417524 Pomacanthidae Species 0.000 abstract 1
- 230000003993 interaction Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001537 neural Effects 0.000 description 1
Abstract
本发明提出了一种基于视觉的手势识别的操作方法及系统,系统包括手势图像采集装置和控制器,实现主要功能包括手势图像采集、图像数据录入、手势图像识别、操作指令执行。所述手势图像识别包括:图像二值化、手势分割、特征提取、特征匹配。本发明具有实时性,通过提取用户手势图像的特征并匹配得出识别结果,再根据识别结果执行相应指令。本发明直接用人手作为输入工具,只要采集的图像包含完整的手势,可容忍手势的平移和尺度变化以及一定角度的旋转,大大增强了设备的易用性。
Description
基于视觉的手势识别方法及系统
技术领域
[0001] 本发明属于手势识别领域,尤其涉及一种基于视觉的手势识别方法及系统。 背景技术
[0002] 在人机交互技术中,键盘、鼠标、游戏杆目前是主要的输入工具,人们必须借助这 些工具才能实现人机交互,而人的手势可以说是最为自然、直观、易于学习的交流手段,更 是人机交互中最好的输入工具,但是由于人手是复杂的变形体,无法用简单的模型加以表
7J\ o
[0003] 最初的研究主要集中在做一种专用硬件设备来进行输入,例如数据手套等。最后 人们终于把注意力集中到自然手上,通过专用的加速硬件和脱机训练,一些研究者成功地 研制了手势识别系统,但其识别的手势仅限于几种。例如,Freeman和Roth等人提出的基 于方向直方图的手势识别系统。1994年,高文等人提出了一种静态复杂背景手势目标的捕 获与识别,1995年又提出了动态复杂背景中实施目标的捕获与识别方法。1999年常红等人 提出了基于计算机视觉技术的手形手位跟踪方法。2002年邹伟提出了一种基于双信息源的 人手空间跟踪方法,其利用视觉输入提取手的平面位置信息,借助于安装于肘部的弯曲传 感器获取手臂的弯曲角度,根据所建模型由二者通过模糊计算确定手的深度信息。
[0004] 基于视觉的手势识别以人手直接作为计算机的输入设备,人机之间的通讯不再需 要中间媒体,用户可以简单地定义一种适当的手势来对周围的机器进行控制。目前基于视 觉的手势识别技术多采用人工神经网络(ANN)、隐Markov模型(HMM)等方法,但这些方法存 在算法复杂、实时性不高等缺陷。
发明内容
[0005] 为克服现有技术中的不足,本发明公开了一种基于视觉的手势识别方法及系统, 在由FPGA作为主控芯片,与所述手势图像采集装置构成的系统上通过手势图像采集、图像 数据录入、手势图像识别、操作指令执行四个步骤实现一种直接使用人手作为输入工具的 简单实时的人机交互方法。
[0006] 本发明的技术方案如下:
[0007] —种基于视觉的手势识别方法,其包括以下步骤:
[0008] (1)手势图像采集:通过手势图像采集装置不断采集图像数据更新数据缓存,用 于获取用户手势图像数据,作为待识别手势。
[0009] (2)图像数据录入:从数据缓存中读取当前两幅连续手势图像数据,每次录入两 幅连续RGB图像数据,将这两幅图像的像素值即R分量做差,差值大于15的像素点个数小 于阈值,则认为图像静止,若静止进入步骤(3),否则返回步骤(1)。其中阈值的确定是将开 机后的连续两幅图像像素值R分量做差,差值大于15的像素点个数加50作为阈值。
[0010] (3)手势图像识别:处理手势图像数据、提取特征并与特征库中的模板匹配得出 识别结果;所述手势图像识别包括以下步骤:[0011] (31)图像二值化:将彩色图像进行颜色空间转换之后用全局阈值法将图像划分 为前景和背景两个区域,根据前景在整幅图像中所占比例判断图像中是否有手势,有手势 进行所述手势分割,否则重新采集图像数据并录入;
[0012] (32)手势分割:从经所述手势图像二值化之后的图像中分割出完整的手势图像;
[0013] (33)特征提取:根据经所述手势分割后的手势图像得出手指个数、手指长度及指 尖距离、图像几何矩和图像转动惯量作为手势特征向量;
[0014] (34)特征匹配:将待识别手势特征与特征库中模板的特征进行匹配,得出识别结
:^ o
[0015] 通过将两幅连续图像分别进行上述的图像二值化、手势分割、特征提取、特征匹配 得出两个识别结果,若识别结果一致则根据该识别结果执行后续相应指令,否则重新采集 手势图像进行识别。
[0016] 本发明直接用人手作为输入工具,只要采集的图像包含完整的手势,可容忍手势 的平移和尺度变化以及一定角度的旋转,大大增强了设备的易用性。
[0017] 本发明还根据所述基于视觉的手势识别方法,提出了一种基于视觉的手势识别系 统,所述系统包括:
[0018] 手势图像采集装置:用于采集手势图像数据;
[0019] 控制器:用于录入手势图像数据,并对所述录入图像进行手势识别得出识别结果 并发送到嵌入手势识别系统的机器使其执行相应指令。
[0020] 所述手势图像采集装置将采集到的图像数据写入外接SRAM中,然后控制器则在 SRAM中读回图像数据进行后续处理,采用片上RAM作为缓冲。本发明利用Nios II软核,嵌 入FPGA内部,与用户自定义逻辑结合构成一个基于FPGA的片上系统。
[0021] 本发明利用FPGA的并行处理能力提高系统性能,采用定制自定义模块用硬件实 现耗时大的软件算法模块提高系统性能,采用Mos II处理器的自定义指令方式用硬件实 现部分复杂算法片段,方便的在软件程序中调用,大大提高了程序执行效率,另外还利用新 推出的C2H工具直接将一些软件程序进行硬件化,提高系统性能,这些都好的保证了本发 明的高速的处理速度,具有很好实时性,并具有高可靠性。
附图说明
[0022] 图1为基于视觉的手势识别操作方法及系统的总体框图
[0023] 图2为基于视觉的手势识别操作方法及系统的软件结构框图
[0024] 图3为基于视觉的手势识别操作方法及系统的软件流程图
[0025] 图4为八方向freeman链码图
具体实施方式
[0026] 如图1所示,基于视觉的手势识别方法包括以下步骤:
[0027] 1)手势图像采集:用于获取用户手势图像数据,作为待识别手势。
[0028] 手势图像采集是通过手势图像采集装置不断采集图像数据更新数据缓存,为了得 到具有一定清晰度且大小适中的手势,本发明采用的图像分辨率为120女160个像素。
[0029] 2)图像数据录入:为了得到更加准确的识别结果,避免对用户还未摆放好手势时采集到的图像进行处理得出错误的结果,需要录入两幅连续图像数据,对应像素点的值做 差判断图像是否静止,若静止进入步骤3),否则返回步骤1)。
[0030] 3)手势图像识别:处理手势图像数据、提取特征并与模板匹配得出识别结果。
[0031] 4)操作指令执行:根据所述手势图像识别得出的识别结果执行相应指令。
[0032] 结合图2和图3所示:
[0033] 本发明中首先对步骤2)中采集的其中一幅图像进行所述手势识别,若未得出正 常识别结果,则返回步骤1),反之若得出正常识别结果,则转入步骤31),对步骤2)中读取 的另一幅图像进行步骤3)中所述的操作得出另一识别结果,若判定图中手势为未定义手 势则返回步骤1),若得出正常识别结果且两幅图像识别结果一致则转入步骤4)。步骤4) 中根据步骤3)中得出的识别结果执行相应指令,转入步骤1)。
[0034] 本方法的步骤3)具体包括以下步骤:
[0035] 31)图像二值化:将彩色图像进行颜色空间转换之后用全局阈值法将图像划分为 前景和背景两个区域。根据前景在整幅图像中所占比例判断图像中是否有手势,有手势则 进入步骤32),否则返回步骤1)。
[0036] 32)手势分割:从经所述手势图像二值化之后的图像中分割出完整的手势。
[0037] 33)特征提取:根据经所述手势分割后的手势图像得出手指个数、手指长度及指 尖距离、图像几何矩和图像转动惯量作为手势特征。
[0038] 34)特征匹配:将待识别手势特征与特征库中模板的特征进行匹配,得出识别结
:^ o
[0039] 进一步地,步骤31)中,所述图像二值化是指先将采集的RGB彩色图像转化到HLC 颜色空间,然后用全局阈值法将图像划分为前景和背景两个区域。
[0040] 在所述HLC空间中,H分量描述着物体的颜色类型,即色调;L为亮度;C为色彩的 浓度。通过对大量肤色和非肤色在H空间分布的分析,建立的肤色分割公式如下:
[0041]
—|255......如果Hd < H < Hu
H={ 0......其它
[0042] 其中:H为像素点的色调值,Hu、Hd为H的上限和下限。根据上述公式分割HLC空 间的H分量,得到肤色为前景的二值化图像。
[0043] 所述的二值化图像中还存在许多噪声干扰,包括椒盐噪声和非手势的小连通域。 因此本方法还进一步采用空域滤波的方式去除椒盐噪声,将图像中8邻域内白色像素的个 数大于等于5的像素判定为前景(白色),否则判定为背景(黑色)。计算前景在整幅图像 中所占的比例,若该比例在一定阈值范围内(本发明中所取阈值范围为[20%,70%])则认 为图像中有手势,进入步骤32),否则返回步骤1)。
[0044] 进一步地,在步骤32)中,所述手势分割的目的就是去除二值化图像中存在的非 手势的小连通域。经所述图像二值化处理后的图像中前景(白色)不仅包括手势还存在一 些小连通域,因此本发明采用区域生长的方式对手势区域作进一步分割。
[0045] 由于手势区域的面积在整幅图像中占有一定比例,对图像进行逐行(或逐列)扫 描,若白色像素点的个数大于图像每行像素点个数的20%则以该行(或该列)白色像素点 个数过半的点为种子点,将图像以种子点为起始进行3次不同方向的全屏扫描,在种子点的8邻域内搜索白色像素点,纳入手势区域并作为种子继续搜索。
[0046] 所述手势分割在分割出完整手势后,图像中前景包括手和手臂。为更准确的提 取手势特征,采用一个42X40的框框定手势(去除手臂部分)之后,进入步骤33)。因为 用户通常用右手操作,此时手臂在手的右边,通过扫描图像找出图像前景中左侧第一个白 色点坐标(xl,yl),上方第一个白色点坐标(x2, y2),将图像中坐标在([x2, x2+39], [yl, yl+41])范围内的点取出作为所述手势分割后的手势图像。
[0047] 进一步地,步骤33)中,所述特征提取中包括提取手指个数,手指长度及指尖距 离。可用方向链码(Freeman链码)表示一条数字化二值轮廓曲线,如图4所示。八方向 Freeman链码是相邻两像素连线的八种可能的方向值。一条曲线被网格离散化后形成n条 链,此曲线链码可表示为{ai}n,每条链指向八个方向中的一个方向,〜e {0,1,…了丨,土为 像素的索引值,a,是由像素i指向像素(i+1)的方向链码。
[0048] 本发明先提取手势边缘,然后以逆时针方向搜索求得手势边缘的freeman链码。 边缘点中前后10个点的freeman链码对应按模8相减所得差值中有5个或5个以上大于 等于2的点作为可疑指尖点,并计算该点作为指尖的手指长度及宽度,若手指长度大于12 个像素且宽度在1到5个像素之间则将该点作为指尖,得到指尖坐标,并将手指个数加1以 求得图像中手指个数。计算手指的长度时首先找出该指尖与相邻指尖之间弯曲程度最大的 点,然后计算该点与该指尖的距离作为手指的长度。
[0049] 本发明中将指尖坐标的欧式距离的平方作为指尖距离,公式如下:
[0050] dij = (xi-xJ)2+(yi-yJ)2
[0051] 其中:、为第i个手指与第j个手指之间的距离(0 <= i,j < 5),(Xi,Yi)、(Xj, yj)分别为第i个手指与第j个手指的指尖坐标。
[0052] 所述特征提取还包括图像几何矩和整体转动惯量。考虑到实验效果和计算复杂 度,本发明使用前4个几何矩特征量,公式如下:
[0053] Oj = n 20+ n 02
[0054] o2 = (n2o-no2)2+4nn2
[0055] o3 = (n30-3 n 12)2+ (3 n21- n03)2
[0056] ①4 = (n30+n12)2+( n03+n21)2
[0057] 其中:①丨、①2、①3、0)4为4个几何矩,npq为归一化中心矩
为图像位移不变中心矩
, f (x, y)为点(x,y)的像素
值,(Xi,yi)为图像的质心,p、q为中心矩的阶次。
[0058] 根据经所述手势分割得到的手势图像计算得到前4个几何矩特征量作为手势的4 个特征值。
[0059] 采用整个图形的前四个几何矩和整体匪I (转动惯量)值未能将本发明定义的手 势完全区分,因此除了将图像整体的匪I值作为特征外,还将图像四等分后分别求出其匪I 作为图像的另外4个特征,也就是再求取图像的二阶匪I值。最后由手指长度,指尖距离, 图像的四个几何矩,一个整体转动惯量,以及四个图像二阶转动惯量共同构成手势的特征 向量,计算出所有特征后进入步骤34)。[0060] 进一步地,步骤34)中,所述特征匹配分为粗匹配和细匹配两个步骤。粗匹配是指 根据手指个数将静态手势分为几大类。细匹配是指在经所述粗匹配的基础上,通过计算待 识别手势特征向量(除手指个数外的特征)与特征库中所有模板的欧式距离,若最小距离 小于阈值则将其手势判定为与其距离最小的模板,否则判定为未定义手势(不正常结果)。
[0061] 采用整个图形的前四个几何矩和整体匪I (转动惯量)值未能将本发明定义的手 势完全区分,因此除了将图像整体的匪I值作为特征外,还将图像四等分后分别求出其匪I 作为图像的另外4个特征,也就是再求取图像的二阶匪I值。最后由手指长度,指尖距离, 图像的四个几何矩,一个整体转动惯量,以及四个图像二阶转动惯量共同构成手势的特征 向量。
[0062] 由于基于freeman链码求出指尖坐标及手指个数的方法并不要求用户将手势完 全按标准手势放置,即允许手势平移、旋转、尺度的变化,而图像几何矩和整体转动惯量同 样具有平移、旋转和尺度不变性,虽然二阶转动惯量将图像四等分在一定程度上破坏了特 征的旋转不变性,但本发明仍然可容忍手势的平移和尺度变化以及一定角度的旋转。
[0063] 其中,所述步骤3)中包括一手势图像特征库,可采集一定量的手势样本,通特征 提取得出需定义手势的特征,将其写入特征库便可完成手势的定义。该特征库中存储已定 义手势的特征向量及对应操作指令,该特征向量未包括手指个数,因为手指个数已用于粗 匹配。比如手握成拳头表示开机,五指张开表示关机等,还可按照用户需要定义其他手势, 这些手势的特征向量需预先采集多个样本计算其特征向量得到。
[0064] 实现上述方法的手势识别系统包括:
[0065] 手势图像采集装置:用于采集手势图像数据;
[0066] 控制器:用于录入手势图像数据,并对所述录入图像进行手势识别得出识别结果 并发送到嵌入手势识别系统的机器使其执行相应指令。
[0067] 本发明的硬件部分采用S0PC技术构建,所述控制器核心芯片为现场可编程门阵 列(FPGA)芯片,内嵌Nios II软核处理器,具有结构简单,开发成本低,开发周期短等特点, 并可方便灵活的进行软硬件升级、移植。
[0068] 参见图2,在FPGA芯片上嵌入NiosII处理器作为主控器录入手势图像、判断手势 是否静止,若静止则进行图像二值化、手势分割、进而提取手势特征与存储在特征库中的模 板匹配得出识别结果发送相应红外信号控制周围的机器。在对一定量的手势样本进行特征 提取后,可通过特征录入定义新的手势,并通过特征库管理设置与其对应的红外信号。
[0069] 本系统具有学习功能,所述红外信号收发装置可接收红外信号,同时可通过设置 所述已定义手势发送该红外信号,实现用户所需的各种功能,更加方便的进行人机交互。
[0070] 本发明对于系统中比较复杂耗时的部分,比如图像二值化、手势分割部分等,使用 自定义模块进行加速。另外本发明还采用了 C2H进行硬件加速,将算法中有大量循环的程 序,封装成函数,采用C2H进行加速,简单高效,极大提高了本发明的实时性,使本发明可实 时采集并识别手势图像,手势识别时间仅需0. 7s。
9
Claims (9)
- 一种基于视觉的手势识别方法,其特征在于包括以下步骤:(1)手势图像采集:通过手势图像采集装置不断采集图像数据更新数据缓存,用于获取用户手势图像数据,作为待识别手势;(2)图像数据录入:从数据缓存中读取当前两幅连续手势图像数据,每次录入两幅连续RGB图像数据,将这两幅图像的像素点的R分量做差,差值大于15的像素点个数小于阈值,则认为图像静止,若静止进入步骤(3),否则返回步骤(1);所述阈值是将开机后的连续两幅图像像素值R分量做差,差值大于15的像素点个数加50作为阈值;(3)手势图像识别:处理手势图像数据,提取特征并与特征库中的模板匹配得出识别结果;所述手势图像识别包括以下步骤:(31)图像二值化:将彩色图像进行颜色空间转换之后用全局阈值法将图像划分为前景和背景两个区域,根据前景在整幅图像中所占比例判断图像中是否有手势,若前景在整幅图像中所占比例在设定阈值范围内,则认为图像中有手势,即进行下一步手势分割,否则重新采集图像数据并录入;(32)手势分割:从经所述手势图像二值化之后的图像中分割出完整的手势图像;(33)特征提取:根据经所述手势分割后的手势图像得出手指个数、手指长度及指尖距离、图像几何矩和图像转动惯量作为手势特征向量;(34)特征匹配:将待识别手势特征与特征库中模板的特征进行匹配,得出识别结果;通过将两幅连续图像分别进行上述的图像二值化、手势分割、特征提取、特征匹配过程得出两个识别结果,若识别结果一致则根据该识别结果执行后续相应指令,否则重新采集手势图像进行识别。
- 2.根据权利要求1所述基于视觉的手势识别方法,其特征在于:所述步骤(31)的图像二值化是指先将采集的RGB彩色图像转化到HLC颜色空间,然后 用全局阈值法将图像划分为前景和背景两个区域;在所述HLC颜色空间中,H分量描述着物体的颜色类型,即色调;L为亮度;C为色彩的 浓度,采用肤色分割公式如下:_ J255......如果Hd < H < HuΗ={ 0......其它其中:H为像素点的色调值,Hu、Hd为H的上限和下限,根据上述公式分割HLC空间的H 分量,得到肤色为前景的二值化图像。
- 3.根据权利要求2所述基于视觉的手势识别方法,其特征在于:在所述步骤(31)的图像二值化处理中,直接由所述全局阈值法分割得到的二值化图 像中还存在许多噪声干扰包括椒盐噪声和非手势的小连通域,采用空域滤波的方式去除椒 盐噪声,将图像中8邻域内白色像素的个数大于等于5的像素判定为前景即白色,否则判定 为背景即黑色。
- 4.根据权利要求3所述的基于视觉的手势识别方法,其特征在于:所述步骤(32)的手势分割是对图像二值化处理后的图像进行逐行或逐列扫描,若白 色像素点的个数大于图像每行或每列像素点个数的20%,则以该行或该列白色像素点个数 过半的点为种子点,将图像以种子点为起始进行3次不同方向的全屏扫描,在种子点的8邻 域内搜索白色像素点,纳入手势区域并作为种子继续搜索,最终分割出完整的手势。
- 5.根据权利要求4所述的基于视觉的手势识别方法,其特征在于:所述步骤(32)的手势分割在分割出完整手势后,采用一个42X40的框框定手势,去除 手臂部分,具体是通过扫描图像找出图像前景中左侧第一个白色点坐标(xl,yl),上方第一 个白色点坐标(x2,y2),将图像中坐标在([x2,x2+39], [yl,yl+41])范围内的点取出作为 所述手势分割后的手势图像。
- 6.根据权利要求1所述的基于视觉的手势识别方法,其特征在于:所述特征提取中包括提取手指个数,手指长度、指尖距离、图像几何矩和图像转动惯量;所述提取手指个数是先提取手势边缘,然后以逆时针方向搜索求得手势边缘的 freeman链码,边缘点中前后10个点的freeman链码对应按模8相减所得差值中有5个或 5个以上大于等于2的点作为可疑指尖点,并计算该点作为指尖的手指长度及宽度,若手指 长度大于12个像素且宽度在1到5个像素之间则将该点作为指尖,得到指尖坐标,并将手 指个数加1以求得图像中手指个数;所述提取手指长度是首先找出该指尖与相邻指尖之间弯曲程度最大的点,然后计算该 点与该指尖的距离作为手指的长度;所述提取指尖距离是将指尖坐标的欧式距离的平方作为指尖距离; 所述提取图像几何矩是根据经所述手势分割得到的手势图像计算得到前4个几何矩 特征量作为手势的4个特征值,公式如下: φι = η 20+ η 02 φ2 = (n20-n02)2+4nn2φ 3 = (η3ο-3η12)2+(3η21-η03)2 φ 4 = (η3ο+η12)2+(η03+η21)2其中:①丨、φ2、φ3、(54为4个几何矩,η Ρί为归一化中心矩, f (χ, y)为点(x,y)的像素值,(Xi,yi)为图像的质 心;所述提取图像转动惯量是将图像整体的匪I值作为特征。
- 7.根据权利要求6所述基于视觉的手势识别方法,其特征在于:所述特征提取还将图像四等分后分别求出其匪I作为图像的另外4个特征,即再求取 图像的二阶匪I值。
- 8.根据权利要求1所述基于视觉的手势识别方法,其特征在于: 所述步骤(33)的特征匹配分为粗匹配和细匹配两个步骤; 所述粗匹配是指根据手指个数将静态手势分为几大类;所述细匹配是指在经所述粗匹配的基础上,通过计算待识别除手指个数外的手势特征 向量与特征库中所有模板的欧式距离,若最小距离小于阈值则将其手势判定为与其距离最 小的模板,否则判定为未定义手势;所述手势图像特征库中存储已定义手势的特征向量及对应操作指令。
- 9. 一种利用权利要求1至8之任意一项所述的基于视觉的手势识别方法的手势识别系统,其特征在于所述系统包括:手势图像采集装置:用于采集手势图像数据;控制器:用于录入手势图像数据,并对所述录入图像进行手势识别得出识别结果并发送到嵌入手势识别系统的机器使其执行相应指令;所述手势图像采集装置将采集到的图像数据写入外接SRAM中,然后控制器则在SRAM 中读回图像数据进行后续处理,采用片上RAM作为缓冲;所述系统硬件部分采用SOPC技术构建,所述控制器核心芯片为现场可编程门阵列 FPGA芯片,内嵌Nios II软核处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010171960 CN101853071B (zh) | 2010-05-13 | 2010-05-13 | 基于视觉的手势识别方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010171960 CN101853071B (zh) | 2010-05-13 | 2010-05-13 | 基于视觉的手势识别方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101853071A true CN101853071A (zh) | 2010-10-06 |
CN101853071B CN101853071B (zh) | 2012-12-05 |
Family
ID=42804594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010171960 Expired - Fee Related CN101853071B (zh) | 2010-05-13 | 2010-05-13 | 基于视觉的手势识别方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101853071B (zh) |
Cited By (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102142084A (zh) * | 2011-05-06 | 2011-08-03 | 北京网尚数字电影院线有限公司 | 一种手势识别的方法 |
CN102184021A (zh) * | 2011-05-27 | 2011-09-14 | 华南理工大学 | 一种基于手写输入和指尖鼠标的电视人机交互方法 |
CN102200834A (zh) * | 2011-05-26 | 2011-09-28 | 华南理工大学 | 面向电视控制的指尖鼠标交互方法 |
CN102368290A (zh) * | 2011-09-02 | 2012-03-07 | 华南理工大学 | 一种基于手指高级特征的手势识别方法 |
CN102662465A (zh) * | 2012-03-26 | 2012-09-12 | 北京国铁华晨通信信息技术有限公司 | 基于动态轨迹的视觉字符输入方法及系统 |
CN102693522A (zh) * | 2012-04-28 | 2012-09-26 | 中国矿业大学 | 一种彩色图像区域复制篡改检测方法 |
CN102710908A (zh) * | 2012-05-31 | 2012-10-03 | 无锡商业职业技术学院 | 一种基于手势控制电视机的装置 |
CN102760198A (zh) * | 2011-04-27 | 2012-10-31 | 德信互动科技(北京)有限公司 | 近距离体感互动装置和方法 |
CN102831372A (zh) * | 2011-03-03 | 2012-12-19 | 手持产品公司 | 具有手势接口的成像器读取器 |
CN102854983A (zh) * | 2012-09-10 | 2013-01-02 | 中国电子科技集团公司第二十八研究所 | 一种基于手势识别的人机交互方法 |
CN102868811A (zh) * | 2012-09-04 | 2013-01-09 | 青岛大学 | 一种基于实时视频处理的手机屏幕操控方法 |
CN102945362A (zh) * | 2012-10-18 | 2013-02-27 | 中国科学院计算技术研究所 | 基于异构数据融合的传感器协同手势识别方法及系统 |
CN102968177A (zh) * | 2011-08-31 | 2013-03-13 | 敦南科技股份有限公司 | 手势感测方法及装置 |
CN103034333A (zh) * | 2012-12-18 | 2013-04-10 | 福建华映显示科技有限公司 | 手势辨识装置及方法 |
CN103034322A (zh) * | 2011-09-30 | 2013-04-10 | 德信互动科技(北京)有限公司 | 人机互动系统和方法 |
CN103065312A (zh) * | 2012-12-26 | 2013-04-24 | 四川虹微技术有限公司 | 一种手势跟踪过程中的前景提取法 |
WO2013056431A1 (en) * | 2011-10-18 | 2013-04-25 | Nokia Corporation | Methods and apparatuses for gesture recognition |
CN103176603A (zh) * | 2013-03-08 | 2013-06-26 | 广东工业大学 | 计算机手势输入系统 |
WO2013104316A1 (zh) * | 2012-01-09 | 2013-07-18 | 西安智意能电子科技有限公司 | 一种对发射光源的成像信息进行筛选处理的方法与设备 |
CN103218601A (zh) * | 2013-04-03 | 2013-07-24 | 华为技术有限公司 | 检测手势的方法及装置 |
CN103250166A (zh) * | 2010-10-18 | 2013-08-14 | 诺基亚公司 | 用于提供手部检测的方法和装置 |
CN103376890A (zh) * | 2012-04-16 | 2013-10-30 | 富士通株式会社 | 基于视觉的手势遥控系统 |
CN103814343A (zh) * | 2011-07-20 | 2014-05-21 | 谷歌公司 | 在可穿戴计算系统上操纵和显示图像 |
CN103903318A (zh) * | 2013-11-29 | 2014-07-02 | 广州中大电讯科技有限公司 | 一种基于手势识别的居家养老中的身份认证系统及方法 |
CN103914684A (zh) * | 2012-12-28 | 2014-07-09 | 现代自动车株式会社 | 利用选择性照明来识别手势的方法和系统 |
CN104035547A (zh) * | 2013-03-06 | 2014-09-10 | 联想(北京)有限公司 | 一种输入方法和电子设备 |
CN104063059A (zh) * | 2014-07-13 | 2014-09-24 | 华东理工大学 | 一种基于手指分割的实时手势识别方法 |
CN104424634A (zh) * | 2013-08-23 | 2015-03-18 | 株式会社理光 | 对象跟踪方法和装置 |
CN104636495A (zh) * | 2015-03-05 | 2015-05-20 | 四川智羽软件有限公司 | 一种基于内容的视频检索方法 |
CN104636497A (zh) * | 2015-03-05 | 2015-05-20 | 四川智羽软件有限公司 | 一种视频数据智能检索方法 |
CN104657490A (zh) * | 2015-03-05 | 2015-05-27 | 四川智羽软件有限公司 | 一种信息检索方法 |
CN104699243A (zh) * | 2015-02-12 | 2015-06-10 | 长春理工大学 | 一种基于单目视觉的无实体虚拟鼠标方法 |
CN104699233A (zh) * | 2014-04-14 | 2015-06-10 | 杭州海康威视数字技术股份有限公司 | 一种对屏幕进行操作控制的方法和系统 |
CN104808799A (zh) * | 2015-05-20 | 2015-07-29 | 成都通甲优博科技有限责任公司 | 一种能够识别手势的无人机及其识别方法 |
TWI494792B (zh) * | 2012-09-07 | 2015-08-01 | Pixart Imaging Inc | 手勢辨識系統及方法 |
CN104835231A (zh) * | 2015-05-25 | 2015-08-12 | 郭萌 | 一种人脸识别锁具 |
CN104866825A (zh) * | 2015-05-17 | 2015-08-26 | 华南理工大学 | 一种基于Hu矩的手语视频帧序列分类方法 |
CN104916025A (zh) * | 2015-06-25 | 2015-09-16 | 郭萌 | 一种门控装置 |
CN104915009A (zh) * | 2015-06-25 | 2015-09-16 | 深圳先进技术研究院 | 手势预判的方法及系统 |
CN104978551A (zh) * | 2014-04-08 | 2015-10-14 | 香港理工大学深圳研究院 | 握姿人手图像识别系统及其识别方法 |
CN104992492A (zh) * | 2015-08-04 | 2015-10-21 | 郭萌 | 一种锁具 |
CN105064810A (zh) * | 2015-08-04 | 2015-11-18 | 郭萌 | 一种智能门控锁具 |
CN105133956A (zh) * | 2015-08-04 | 2015-12-09 | 郭萌 | 一种屏显锁具 |
CN105224089A (zh) * | 2015-10-23 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 手势操作方法及装置、移动终端 |
CN105426107A (zh) * | 2015-11-30 | 2016-03-23 | 北京拉酷网络科技有限公司 | 基于触控板的手势识别方法 |
CN105607831A (zh) * | 2015-12-17 | 2016-05-25 | 珠海市君天电子科技有限公司 | 弹窗的控制方法及装置 |
CN105701806A (zh) * | 2016-01-11 | 2016-06-22 | 上海交通大学 | 基于深度图像的帕金森震颤运动特征检测方法及系统 |
CN105718037A (zh) * | 2014-12-05 | 2016-06-29 | 乐视致新电子科技(天津)有限公司 | 一种识别目标对象状态的方法及其装置 |
CN106203299A (zh) * | 2016-06-30 | 2016-12-07 | 北京二郎神科技有限公司 | 一种可操控设备的控制方法和装置 |
CN106295612A (zh) * | 2016-08-23 | 2017-01-04 | 广西科技大学 | 一种手部康复训练中手指运动的视觉监测方法 |
CN103729628B (zh) * | 2014-01-10 | 2017-01-11 | 西安电子科技大学宁波信息技术研究院 | 一种单步手势识别方法 |
CN106326860A (zh) * | 2016-08-23 | 2017-01-11 | 武汉闪图科技有限公司 | 基于视觉的手势识别方法 |
CN106503619A (zh) * | 2016-09-23 | 2017-03-15 | 南京理工大学 | 基于bp神经网络的手势识别方法 |
CN106503650A (zh) * | 2016-10-21 | 2017-03-15 | 上海未来伙伴机器人有限公司 | 一种手势图像的识别方法及系统 |
CN106548133A (zh) * | 2016-10-17 | 2017-03-29 | 歌尔科技有限公司 | 一种模板匹配方法和装置以及手势识别方法和装置 |
CN107430680A (zh) * | 2015-03-24 | 2017-12-01 | 英特尔公司 | 多层皮肤检测和融合手势匹配 |
CN107578023A (zh) * | 2017-09-13 | 2018-01-12 | 华中师范大学 | 人机交互手势识别方法、装置及系统 |
CN107598924A (zh) * | 2017-09-07 | 2018-01-19 | 南京昱晟机器人科技有限公司 | 一种机器人手势识别控制方法 |
CN107992184A (zh) * | 2016-10-25 | 2018-05-04 | 北京东软医疗设备有限公司 | 一种图像处理方法、装置及设备 |
CN108229318A (zh) * | 2017-11-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 手势识别和手势识别网络的训练方法及装置、设备、介质 |
CN108255298A (zh) * | 2017-12-29 | 2018-07-06 | 安徽慧视金瞳科技有限公司 | 一种投影交互系统中的红外手势识别方法及设备 |
CN108462842A (zh) * | 2018-05-14 | 2018-08-28 | 恒玄科技(上海)有限公司 | 一种高准确度、低功耗的视屏监控方法及监控系统 |
CN108921048A (zh) * | 2018-06-14 | 2018-11-30 | 深圳码隆科技有限公司 | 一种购物结算方法、装置和用户终端 |
CN109002811A (zh) * | 2018-08-07 | 2018-12-14 | 北醒(北京)光子科技有限公司 | 一种静态手势的识别方法及装置 |
CN109299743A (zh) * | 2018-10-18 | 2019-02-01 | 京东方科技集团股份有限公司 | 手势识别方法及装置、终端 |
CN109635750A (zh) * | 2018-12-14 | 2019-04-16 | 广西师范大学 | 一种复杂背景下的复合卷积神经网络手势图像识别方法 |
CN109634300A (zh) * | 2018-11-23 | 2019-04-16 | 中国运载火箭技术研究院 | 基于隔空手势和超声波触觉反馈的多无人机操控系统及方法 |
CN109669537A (zh) * | 2018-12-03 | 2019-04-23 | 浙江万里学院 | 一种基于计算机虚拟界面的人机交互系统 |
CN112232217A (zh) * | 2020-10-16 | 2021-01-15 | 怀化新大地电脑有限公司 | 手势识别系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685343B (zh) * | 2008-09-26 | 2011-12-28 | 联想(北京)有限公司 | 一种实现手势识别的方法、装置 |
-
2010
- 2010-05-13 CN CN 201010171960 patent/CN101853071B/zh not_active Expired - Fee Related
Cited By (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103250166A (zh) * | 2010-10-18 | 2013-08-14 | 诺基亚公司 | 用于提供手部检测的方法和装置 |
CN102831372B (zh) * | 2011-03-03 | 2017-05-24 | 手持产品公司 | 具有手势接口的成像器读取器 |
CN102831372A (zh) * | 2011-03-03 | 2012-12-19 | 手持产品公司 | 具有手势接口的成像器读取器 |
CN102760198A (zh) * | 2011-04-27 | 2012-10-31 | 德信互动科技(北京)有限公司 | 近距离体感互动装置和方法 |
CN102142084B (zh) * | 2011-05-06 | 2012-12-26 | 北京网尚数字电影院线有限公司 | 一种手势识别的方法 |
CN102142084A (zh) * | 2011-05-06 | 2011-08-03 | 北京网尚数字电影院线有限公司 | 一种手势识别的方法 |
CN102200834A (zh) * | 2011-05-26 | 2011-09-28 | 华南理工大学 | 面向电视控制的指尖鼠标交互方法 |
CN102200834B (zh) * | 2011-05-26 | 2012-10-31 | 华南理工大学 | 面向电视控制的指尖鼠标交互方法 |
CN102184021A (zh) * | 2011-05-27 | 2011-09-14 | 华南理工大学 | 一种基于手写输入和指尖鼠标的电视人机交互方法 |
CN103814343B (zh) * | 2011-07-20 | 2016-09-14 | 谷歌公司 | 在可穿戴计算系统上操纵和显示图像 |
CN103814343A (zh) * | 2011-07-20 | 2014-05-21 | 谷歌公司 | 在可穿戴计算系统上操纵和显示图像 |
CN102968177B (zh) * | 2011-08-31 | 2015-10-28 | 敦宏科技股份有限公司 | 手势感测方法 |
CN102968177A (zh) * | 2011-08-31 | 2013-03-13 | 敦南科技股份有限公司 | 手势感测方法及装置 |
CN102368290A (zh) * | 2011-09-02 | 2012-03-07 | 华南理工大学 | 一种基于手指高级特征的手势识别方法 |
CN102368290B (zh) * | 2011-09-02 | 2012-12-26 | 华南理工大学 | 一种基于手指高级特征的手势识别方法 |
CN103034322A (zh) * | 2011-09-30 | 2013-04-10 | 德信互动科技(北京)有限公司 | 人机互动系统和方法 |
WO2013056431A1 (en) * | 2011-10-18 | 2013-04-25 | Nokia Corporation | Methods and apparatuses for gesture recognition |
US9251409B2 (en) | 2011-10-18 | 2016-02-02 | Nokia Technologies Oy | Methods and apparatuses for gesture recognition |
CN103890782B (zh) * | 2011-10-18 | 2018-03-09 | 诺基亚技术有限公司 | 用于手势识别的方法和设备 |
WO2013104316A1 (zh) * | 2012-01-09 | 2013-07-18 | 西安智意能电子科技有限公司 | 一种对发射光源的成像信息进行筛选处理的方法与设备 |
CN102662465A (zh) * | 2012-03-26 | 2012-09-12 | 北京国铁华晨通信信息技术有限公司 | 基于动态轨迹的视觉字符输入方法及系统 |
CN103376890B (zh) * | 2012-04-16 | 2016-08-31 | 富士通株式会社 | 基于视觉的手势遥控系统 |
CN103376890A (zh) * | 2012-04-16 | 2013-10-30 | 富士通株式会社 | 基于视觉的手势遥控系统 |
CN102693522A (zh) * | 2012-04-28 | 2012-09-26 | 中国矿业大学 | 一种彩色图像区域复制篡改检测方法 |
CN102710908A (zh) * | 2012-05-31 | 2012-10-03 | 无锡商业职业技术学院 | 一种基于手势控制电视机的装置 |
CN102868811B (zh) * | 2012-09-04 | 2015-05-06 | 青岛大学 | 一种基于实时视频处理的手机屏幕操控方法 |
CN102868811A (zh) * | 2012-09-04 | 2013-01-09 | 青岛大学 | 一种基于实时视频处理的手机屏幕操控方法 |
TWI494792B (zh) * | 2012-09-07 | 2015-08-01 | Pixart Imaging Inc | 手勢辨識系統及方法 |
CN102854983B (zh) * | 2012-09-10 | 2015-12-02 | 中国电子科技集团公司第二十八研究所 | 一种基于手势识别的人机交互方法 |
CN102854983A (zh) * | 2012-09-10 | 2013-01-02 | 中国电子科技集团公司第二十八研究所 | 一种基于手势识别的人机交互方法 |
CN102945362A (zh) * | 2012-10-18 | 2013-02-27 | 中国科学院计算技术研究所 | 基于异构数据融合的传感器协同手势识别方法及系统 |
CN102945362B (zh) * | 2012-10-18 | 2016-01-27 | 中国科学院计算技术研究所 | 基于异构数据融合的传感器协同手势识别方法及系统 |
CN103034333A (zh) * | 2012-12-18 | 2013-04-10 | 福建华映显示科技有限公司 | 手势辨识装置及方法 |
CN103065312A (zh) * | 2012-12-26 | 2013-04-24 | 四川虹微技术有限公司 | 一种手势跟踪过程中的前景提取法 |
CN103065312B (zh) * | 2012-12-26 | 2015-05-13 | 四川虹微技术有限公司 | 一种手势跟踪过程中的前景提取法 |
CN103914684B (zh) * | 2012-12-28 | 2019-06-28 | 现代自动车株式会社 | 利用选择性照明来识别手势的方法和系统 |
CN103914684A (zh) * | 2012-12-28 | 2014-07-09 | 现代自动车株式会社 | 利用选择性照明来识别手势的方法和系统 |
CN104035547A (zh) * | 2013-03-06 | 2014-09-10 | 联想(北京)有限公司 | 一种输入方法和电子设备 |
CN103176603A (zh) * | 2013-03-08 | 2013-06-26 | 广东工业大学 | 计算机手势输入系统 |
CN103218601B (zh) * | 2013-04-03 | 2016-08-03 | 华为技术有限公司 | 检测手势的方法及装置 |
CN103218601A (zh) * | 2013-04-03 | 2013-07-24 | 华为技术有限公司 | 检测手势的方法及装置 |
CN104424634A (zh) * | 2013-08-23 | 2015-03-18 | 株式会社理光 | 对象跟踪方法和装置 |
CN104424634B (zh) * | 2013-08-23 | 2017-05-03 | 株式会社理光 | 对象跟踪方法和装置 |
CN103903318A (zh) * | 2013-11-29 | 2014-07-02 | 广州中大电讯科技有限公司 | 一种基于手势识别的居家养老中的身份认证系统及方法 |
CN103729628B (zh) * | 2014-01-10 | 2017-01-11 | 西安电子科技大学宁波信息技术研究院 | 一种单步手势识别方法 |
CN104978551A (zh) * | 2014-04-08 | 2015-10-14 | 香港理工大学深圳研究院 | 握姿人手图像识别系统及其识别方法 |
CN104699233B (zh) * | 2014-04-14 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种对屏幕进行操作控制的方法和系统 |
CN104699233A (zh) * | 2014-04-14 | 2015-06-10 | 杭州海康威视数字技术股份有限公司 | 一种对屏幕进行操作控制的方法和系统 |
CN104063059B (zh) * | 2014-07-13 | 2017-01-04 | 华东理工大学 | 一种基于手指分割的实时手势识别方法 |
CN104063059A (zh) * | 2014-07-13 | 2014-09-24 | 华东理工大学 | 一种基于手指分割的实时手势识别方法 |
CN105718037A (zh) * | 2014-12-05 | 2016-06-29 | 乐视致新电子科技(天津)有限公司 | 一种识别目标对象状态的方法及其装置 |
CN104699243A (zh) * | 2015-02-12 | 2015-06-10 | 长春理工大学 | 一种基于单目视觉的无实体虚拟鼠标方法 |
CN104699243B (zh) * | 2015-02-12 | 2017-10-13 | 长春理工大学 | 一种基于单目视觉的无实体虚拟鼠标方法 |
CN104636495B (zh) * | 2015-03-05 | 2017-11-03 | 四川智羽软件有限公司 | 一种基于内容的视频检索方法 |
CN104657490A (zh) * | 2015-03-05 | 2015-05-27 | 四川智羽软件有限公司 | 一种信息检索方法 |
CN104636497A (zh) * | 2015-03-05 | 2015-05-20 | 四川智羽软件有限公司 | 一种视频数据智能检索方法 |
CN104636495A (zh) * | 2015-03-05 | 2015-05-20 | 四川智羽软件有限公司 | 一种基于内容的视频检索方法 |
CN107430680A (zh) * | 2015-03-24 | 2017-12-01 | 英特尔公司 | 多层皮肤检测和融合手势匹配 |
CN104866825A (zh) * | 2015-05-17 | 2015-08-26 | 华南理工大学 | 一种基于Hu矩的手语视频帧序列分类方法 |
CN104866825B (zh) * | 2015-05-17 | 2019-01-29 | 华南理工大学 | 一种基于Hu矩的手语视频帧序列分类方法 |
CN104808799A (zh) * | 2015-05-20 | 2015-07-29 | 成都通甲优博科技有限责任公司 | 一种能够识别手势的无人机及其识别方法 |
CN104835231A (zh) * | 2015-05-25 | 2015-08-12 | 郭萌 | 一种人脸识别锁具 |
CN104915009A (zh) * | 2015-06-25 | 2015-09-16 | 深圳先进技术研究院 | 手势预判的方法及系统 |
CN104916025B (zh) * | 2015-06-25 | 2018-04-03 | 安恒世通(北京)网络科技有限公司 | 一种门控装置 |
CN104916025A (zh) * | 2015-06-25 | 2015-09-16 | 郭萌 | 一种门控装置 |
CN104915009B (zh) * | 2015-06-25 | 2018-04-13 | 深圳先进技术研究院 | 手势预判的方法及系统 |
CN105133956A (zh) * | 2015-08-04 | 2015-12-09 | 郭萌 | 一种屏显锁具 |
CN104992492B (zh) * | 2015-08-04 | 2018-02-27 | 安恒世通(北京)网络科技有限公司 | 一种锁具 |
CN105064810A (zh) * | 2015-08-04 | 2015-11-18 | 郭萌 | 一种智能门控锁具 |
CN104992492A (zh) * | 2015-08-04 | 2015-10-21 | 郭萌 | 一种锁具 |
CN105224089A (zh) * | 2015-10-23 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 手势操作方法及装置、移动终端 |
CN105426107A (zh) * | 2015-11-30 | 2016-03-23 | 北京拉酷网络科技有限公司 | 基于触控板的手势识别方法 |
CN105607831B (zh) * | 2015-12-17 | 2019-08-27 | 珠海豹趣科技有限公司 | 弹窗的控制方法及装置 |
CN105607831A (zh) * | 2015-12-17 | 2016-05-25 | 珠海市君天电子科技有限公司 | 弹窗的控制方法及装置 |
CN105701806A (zh) * | 2016-01-11 | 2016-06-22 | 上海交通大学 | 基于深度图像的帕金森震颤运动特征检测方法及系统 |
CN105701806B (zh) * | 2016-01-11 | 2018-08-03 | 上海交通大学 | 基于深度图像的帕金森震颤运动特征检测方法及系统 |
US10710244B2 (en) | 2016-06-30 | 2020-07-14 | Beijing Airlango Technology Co., Ltd. | Robot control using gestures |
CN106203299A (zh) * | 2016-06-30 | 2016-12-07 | 北京二郎神科技有限公司 | 一种可操控设备的控制方法和装置 |
CN106326860A (zh) * | 2016-08-23 | 2017-01-11 | 武汉闪图科技有限公司 | 基于视觉的手势识别方法 |
CN106295612A (zh) * | 2016-08-23 | 2017-01-04 | 广西科技大学 | 一种手部康复训练中手指运动的视觉监测方法 |
CN106503619A (zh) * | 2016-09-23 | 2017-03-15 | 南京理工大学 | 基于bp神经网络的手势识别方法 |
CN106548133B (zh) * | 2016-10-17 | 2019-04-23 | 歌尔科技有限公司 | 一种模板匹配方法和装置以及手势识别方法和装置 |
CN106548133A (zh) * | 2016-10-17 | 2017-03-29 | 歌尔科技有限公司 | 一种模板匹配方法和装置以及手势识别方法和装置 |
CN106503650B (zh) * | 2016-10-21 | 2019-09-24 | 上海未来伙伴机器人有限公司 | 一种手势图像的识别方法及系统 |
CN106503650A (zh) * | 2016-10-21 | 2017-03-15 | 上海未来伙伴机器人有限公司 | 一种手势图像的识别方法及系统 |
CN107992184A (zh) * | 2016-10-25 | 2018-05-04 | 北京东软医疗设备有限公司 | 一种图像处理方法、装置及设备 |
CN107598924B (zh) * | 2017-09-07 | 2018-10-12 | 南京昱晟机器人科技有限公司 | 一种机器人手势识别控制方法 |
CN107598924A (zh) * | 2017-09-07 | 2018-01-19 | 南京昱晟机器人科技有限公司 | 一种机器人手势识别控制方法 |
CN107578023A (zh) * | 2017-09-13 | 2018-01-12 | 华中师范大学 | 人机交互手势识别方法、装置及系统 |
CN108229318A (zh) * | 2017-11-28 | 2018-06-29 | 北京市商汤科技开发有限公司 | 手势识别和手势识别网络的训练方法及装置、设备、介质 |
CN108255298A (zh) * | 2017-12-29 | 2018-07-06 | 安徽慧视金瞳科技有限公司 | 一种投影交互系统中的红外手势识别方法及设备 |
CN108255298B (zh) * | 2017-12-29 | 2021-02-19 | 安徽慧视金瞳科技有限公司 | 一种投影交互系统中的红外手势识别方法及设备 |
CN108462842A (zh) * | 2018-05-14 | 2018-08-28 | 恒玄科技(上海)有限公司 | 一种高准确度、低功耗的视屏监控方法及监控系统 |
CN108921048A (zh) * | 2018-06-14 | 2018-11-30 | 深圳码隆科技有限公司 | 一种购物结算方法、装置和用户终端 |
CN109002811A (zh) * | 2018-08-07 | 2018-12-14 | 北醒(北京)光子科技有限公司 | 一种静态手势的识别方法及装置 |
CN109002811B (zh) * | 2018-08-07 | 2021-07-13 | 北醒(北京)光子科技有限公司 | 一种静态手势的识别方法及装置 |
CN109299743A (zh) * | 2018-10-18 | 2019-02-01 | 京东方科技集团股份有限公司 | 手势识别方法及装置、终端 |
CN109634300A (zh) * | 2018-11-23 | 2019-04-16 | 中国运载火箭技术研究院 | 基于隔空手势和超声波触觉反馈的多无人机操控系统及方法 |
CN109669537A (zh) * | 2018-12-03 | 2019-04-23 | 浙江万里学院 | 一种基于计算机虚拟界面的人机交互系统 |
CN109635750A (zh) * | 2018-12-14 | 2019-04-16 | 广西师范大学 | 一种复杂背景下的复合卷积神经网络手势图像识别方法 |
CN112232217A (zh) * | 2020-10-16 | 2021-01-15 | 怀化新大地电脑有限公司 | 手势识别系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101853071B (zh) | 2012-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853071B (zh) | 基于视觉的手势识别方法及系统 | |
Tian et al. | Apple detection during different growth stages in orchards using the improved YOLO-V3 model | |
CN106682598B (zh) | 一种基于级联回归的多姿态的人脸特征点检测方法 | |
CN102831404B (zh) | 手势检测方法及系统 | |
CN102402289B (zh) | 一种基于机器视觉的手势鼠标识别方法 | |
CN101344816B (zh) | 基于视线跟踪和手势识别的人机交互方法及装置 | |
CN107168527A (zh) | 基于区域卷积神经网络的第一视角手势识别与交互方法 | |
CN104361313B (zh) | 一种基于多核学习异构特征融合的手势识别方法 | |
CN103971102A (zh) | 基于手指轮廓和决策树的静态手势识别方法 | |
Dhawan et al. | Implementation of hand detection based techniques for human computer interaction | |
Yin et al. | Finger identification and hand posture recognition for human–robot interaction | |
CN102999152A (zh) | 一种手势动作识别方法和系统 | |
CN102981742A (zh) | 基于计算机视觉的手势交互系统 | |
CN103870071A (zh) | 一种触摸源识别方法及系统 | |
CN113033398B (zh) | 一种手势识别方法、装置、计算机设备及存储介质 | |
CN104751141A (zh) | 基于特征图像全像素灰度值的elm手势识别算法 | |
Wang et al. | Real-time visual static hand gesture recognition system and its FPGA-based hardware implementation | |
Zhang et al. | HandSense: smart multimodal hand gesture recognition based on deep neural networks | |
Li et al. | A new automatic real-time crop row recognition based on SoC-FPGA | |
Setiawan et al. | Deep Belief Networks for Recognizing Handwriting Captured by Leap Motion Controller. | |
Ko et al. | Finger mouse and gesture recognition system as a new human computer interface | |
Zou et al. | Deformable part model based hand detection against complex backgrounds | |
CN110286825B (zh) | 一种基于机器视觉的机械式全自动鼠标操作装置 | |
CN110286777B (zh) | 一种基于机器视觉的机电式全自动键盘操作装置 | |
Luo et al. | Multi-scale face detection based on convolutional neural network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C06 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C10 | Entry into substantive examination | ||
GR01 | Patent grant | ||
C14 | Grant of patent or utility model | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121205 Termination date: 20180513 |
|
CF01 | Termination of patent right due to non-payment of annual fee |