From af9590feec76a963eda498949f1acda8abfe8b39 Mon Sep 17 00:00:00 2001 From: Daniel Svensson Date: Thu, 17 Mar 2016 01:58:59 +0100 Subject: [PATCH] WiP: Update ruby docs. --- src/clients/lib/ruby/.yardoc/checksums | 14 + src/clients/lib/ruby/.yardoc/object_types | Bin 0 -> 6971 bytes src/clients/lib/ruby/.yardoc/objects/root.dat | Bin 0 -> 113012 bytes src/clients/lib/ruby/.yardoc/proxy_types | Bin 0 -> 4 bytes src/clients/lib/ruby/async.rb | 96 +- src/clients/lib/ruby/doc/Xmms.html | 232 + .../lib/ruby/doc/Xmms/BroadcastResult.html | 160 + src/clients/lib/ruby/doc/Xmms/Client.html | 3550 ++++++++++++ .../lib/ruby/doc/Xmms/Client/Async.html | 230 + .../lib/ruby/doc/Xmms/Client/ClientError.html | 102 + .../doc/Xmms/Client/DisconnectedError.html | 102 + .../lib/ruby/doc/Xmms/Client/Sync.html | 230 + src/clients/lib/ruby/doc/Xmms/Collection.html | 831 +++ .../lib/ruby/doc/Xmms/Collection/Async.html | 224 + .../ruby/doc/Xmms/Collection/Attributes.html | 674 +++ .../ruby/doc/Xmms/Collection/ClientError.html | 102 + .../doc/Xmms/Collection/CollectionError.html | 102 + .../Xmms/Collection/DisconnectedError.html | 102 + .../ruby/doc/Xmms/Collection/Operands.html | 348 ++ .../doc/Xmms/Collection/PatternError.html | 102 + .../lib/ruby/doc/Xmms/Collection/Sync.html | 224 + src/clients/lib/ruby/doc/Xmms/Dict.html | 643 +++ src/clients/lib/ruby/doc/Xmms/Playlist.html | 840 +++ .../lib/ruby/doc/Xmms/Playlist/Async.html | 224 + .../ruby/doc/Xmms/Playlist/ClientError.html | 102 + .../doc/Xmms/Playlist/DisconnectedError.html | 102 + .../ruby/doc/Xmms/Playlist/PlaylistError.html | 102 + .../lib/ruby/doc/Xmms/Playlist/Sync.html | 224 + src/clients/lib/ruby/doc/Xmms/RawDict.html | 186 + src/clients/lib/ruby/doc/Xmms/Result.html | 349 ++ .../lib/ruby/doc/Xmms/Result/ResultError.html | 102 + .../lib/ruby/doc/Xmms/Result/ValueError.html | 102 + .../lib/ruby/doc/Xmms/SignalResult.html | 160 + src/clients/lib/ruby/doc/created.rid | 16 + src/clients/lib/ruby/doc/css/fonts.css | 167 + src/clients/lib/ruby/doc/css/rdoc.css | 590 ++ src/clients/lib/ruby/doc/fonts/Lato-Light.ttf | Bin 0 -> 94668 bytes .../lib/ruby/doc/fonts/Lato-LightItalic.ttf | Bin 0 -> 94196 bytes .../lib/ruby/doc/fonts/Lato-Regular.ttf | Bin 0 -> 96184 bytes .../lib/ruby/doc/fonts/Lato-RegularItalic.ttf | Bin 0 -> 95316 bytes .../lib/ruby/doc/fonts/SourceCodePro-Bold.ttf | Bin 0 -> 71200 bytes .../ruby/doc/fonts/SourceCodePro-Regular.ttf | Bin 0 -> 71692 bytes src/clients/lib/ruby/doc/images/add.png | Bin 0 -> 733 bytes src/clients/lib/ruby/doc/images/arrow_up.png | Bin 0 -> 372 bytes src/clients/lib/ruby/doc/images/brick.png | Bin 0 -> 452 bytes .../lib/ruby/doc/images/brick_link.png | Bin 0 -> 764 bytes src/clients/lib/ruby/doc/images/bug.png | Bin 0 -> 774 bytes .../lib/ruby/doc/images/bullet_black.png | Bin 0 -> 211 bytes .../ruby/doc/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../ruby/doc/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes src/clients/lib/ruby/doc/images/date.png | Bin 0 -> 626 bytes src/clients/lib/ruby/doc/images/delete.png | Bin 0 -> 715 bytes src/clients/lib/ruby/doc/images/find.png | Bin 0 -> 659 bytes .../lib/ruby/doc/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../lib/ruby/doc/images/macFFBgHack.png | Bin 0 -> 207 bytes src/clients/lib/ruby/doc/images/package.png | Bin 0 -> 853 bytes .../lib/ruby/doc/images/page_green.png | Bin 0 -> 621 bytes .../lib/ruby/doc/images/page_white_text.png | Bin 0 -> 342 bytes .../lib/ruby/doc/images/page_white_width.png | Bin 0 -> 309 bytes src/clients/lib/ruby/doc/images/plugin.png | Bin 0 -> 591 bytes src/clients/lib/ruby/doc/images/ruby.png | Bin 0 -> 592 bytes src/clients/lib/ruby/doc/images/tag_blue.png | Bin 0 -> 1880 bytes src/clients/lib/ruby/doc/images/tag_green.png | Bin 0 -> 613 bytes .../lib/ruby/doc/images/transparent.png | Bin 0 -> 97 bytes src/clients/lib/ruby/doc/images/wrench.png | Bin 0 -> 610 bytes .../lib/ruby/doc/images/wrench_orange.png | Bin 0 -> 584 bytes src/clients/lib/ruby/doc/images/zoom.png | Bin 0 -> 692 bytes src/clients/lib/ruby/doc/index.html | 145 + src/clients/lib/ruby/doc/js/darkfish.js | 161 + src/clients/lib/ruby/doc/js/jquery.js | 4 + src/clients/lib/ruby/doc/js/navigation.js | 142 + src/clients/lib/ruby/doc/js/navigation.js.gz | Bin 0 -> 1091 bytes src/clients/lib/ruby/doc/js/search.js | 109 + src/clients/lib/ruby/doc/js/search_index.js | 1 + .../lib/ruby/doc/js/search_index.js.gz | Bin 0 -> 6168 bytes src/clients/lib/ruby/doc/js/searcher.js | 228 + src/clients/lib/ruby/doc/js/searcher.js.gz | Bin 0 -> 1755 bytes .../lib/ruby/doc/table_of_contents.html | 950 ++++ src/clients/lib/ruby/doc/unknown.html | 102 + src/clients/lib/ruby/doc/wscript.html | 156 + src/clients/lib/ruby/html/Collection.html | 539 ++ .../lib/ruby/html/Collection/Attributes.html | 674 +++ .../lib/ruby/html/Collection/ClientError.html | 102 + .../ruby/html/Collection/CollectionError.html | 102 + .../html/Collection/DisconnectedError.html | 102 + .../lib/ruby/html/Collection/Operands.html | 348 ++ .../ruby/html/Collection/PatternError.html | 102 + src/clients/lib/ruby/html/Xmms.html | 232 + .../lib/ruby/html/Xmms/BroadcastResult.html | 160 + src/clients/lib/ruby/html/Xmms/Client.html | 3550 ++++++++++++ .../lib/ruby/html/Xmms/Client/Async.html | 230 + .../ruby/html/Xmms/Client/ClientError.html | 102 + .../html/Xmms/Client/DisconnectedError.html | 102 + .../lib/ruby/html/Xmms/Client/Sync.html | 230 + .../lib/ruby/html/Xmms/Collection.html | 855 +++ .../lib/ruby/html/Xmms/Collection/Async.html | 224 + .../ruby/html/Xmms/Collection/Attributes.html | 674 +++ .../html/Xmms/Collection/ClientError.html | 102 + .../html/Xmms/Collection/CollectionError.html | 102 + .../Xmms/Collection/DisconnectedError.html | 102 + .../ruby/html/Xmms/Collection/Operands.html | 348 ++ .../html/Xmms/Collection/PatternError.html | 102 + .../lib/ruby/html/Xmms/Collection/Sync.html | 224 + .../lib/ruby/html/Xmms/Collection2.html | 109 + src/clients/lib/ruby/html/Xmms/Dict.html | 643 +++ src/clients/lib/ruby/html/Xmms/Playlist.html | 840 +++ .../lib/ruby/html/Xmms/Playlist/Async.html | 238 + .../ruby/html/Xmms/Playlist/ClientError.html | 102 + .../html/Xmms/Playlist/DisconnectedError.html | 102 + .../html/Xmms/Playlist/PlaylistError.html | 102 + .../lib/ruby/html/Xmms/Playlist/Sync.html | 238 + src/clients/lib/ruby/html/Xmms/RawDict.html | 186 + src/clients/lib/ruby/html/Xmms/Result.html | 349 ++ .../ruby/html/Xmms/Result/ResultError.html | 102 + .../lib/ruby/html/Xmms/Result/ValueError.html | 102 + .../lib/ruby/html/Xmms/SignalResult.html | 160 + src/clients/lib/ruby/html/Xmms/Xmms.html | 95 + src/clients/lib/ruby/html/Xmms/Xmms/Xmms.html | 95 + .../ruby/html/Xmms/Xmms/Xmms/Collection.html | 95 + .../html/Xmms/Xmms/Xmms/Collection/Sync.html | 224 + .../ruby/html/Xmms/Xmms/Xmms/Playlist.html | 95 + .../html/Xmms/Xmms/Xmms/Playlist/Sync.html | 224 + src/clients/lib/ruby/html/_index.html | 337 ++ .../lib/ruby/html/apple-touch-icon.png | Bin 0 -> 86447 bytes src/clients/lib/ruby/html/class_list.html | 58 + src/clients/lib/ruby/html/classes/Xmms.html | 287 + .../html/classes/Xmms/BroadcastResult.html | 140 + .../lib/ruby/html/classes/Xmms/Client.html | 4010 ++++++++++++++ .../ruby/html/classes/Xmms/Client/Async.html | 211 + .../html/classes/Xmms/Client/ClientError.html | 76 + .../Xmms/Client/DisconnectedError.html | 76 + .../ruby/html/classes/Xmms/Client/Sync.html | 211 + .../ruby/html/classes/Xmms/Collection.html | 968 ++++ .../html/classes/Xmms/Collection/Async.html | 205 + .../classes/Xmms/Collection/Attributes.html | 754 +++ .../classes/Xmms/Collection/ClientError.html | 76 + .../Xmms/Collection/CollectionError.html | 76 + .../Xmms/Collection/DisconnectedError.html | 76 + .../classes/Xmms/Collection/Operands.html | 372 ++ .../classes/Xmms/Collection/PatternError.html | 76 + .../html/classes/Xmms/Collection/Sync.html | 205 + .../ruby/html/classes/Xmms/Collection2.html | 112 + .../lib/ruby/html/classes/Xmms/Dict.html | 722 +++ .../lib/ruby/html/classes/Xmms/Playlist.html | 978 ++++ .../html/classes/Xmms/Playlist/Async.html | 205 + .../classes/Xmms/Playlist/ClientError.html | 76 + .../Xmms/Playlist/DisconnectedError.html | 76 + .../classes/Xmms/Playlist/PlaylistError.html | 76 + .../ruby/html/classes/Xmms/Playlist/Sync.html | 205 + .../lib/ruby/html/classes/Xmms/RawDict.html | 164 + .../lib/ruby/html/classes/Xmms/Result.html | 390 ++ .../html/classes/Xmms/Result/ResultError.html | 76 + .../html/classes/Xmms/Result/ValueError.html | 76 + .../ruby/html/classes/Xmms/SignalResult.html | 140 + .../lib/ruby/html/classes/Xmms/Xmms.html | 83 + .../lib/ruby/html/classes/Xmms/Xmms/Xmms.html | 84 + .../classes/Xmms/Xmms/Xmms/Collection.html | 79 + .../Xmms/Xmms/Xmms/Collection/Sync.html | 205 + .../html/classes/Xmms/Xmms/Xmms/Playlist.html | 79 + .../classes/Xmms/Xmms/Xmms/Playlist/Sync.html | 205 + .../lib/ruby/html/classes/unknown.html | 76 + src/clients/lib/ruby/html/created.rid | 15 + src/clients/lib/ruby/html/css/common.css | 1 + src/clients/lib/ruby/html/css/fonts.css | 167 + src/clients/lib/ruby/html/css/full_list.css | 57 + src/clients/lib/ruby/html/css/github.css | 123 + src/clients/lib/ruby/html/css/main.css | 323 ++ src/clients/lib/ruby/html/css/panel.css | 384 ++ src/clients/lib/ruby/html/css/rdoc.css | 590 ++ src/clients/lib/ruby/html/css/reset.css | 48 + src/clients/lib/ruby/html/css/style.css | 339 ++ src/clients/lib/ruby/html/favicon.ico | Bin 0 -> 1150 bytes src/clients/lib/ruby/html/file_list.html | 57 + src/clients/lib/ruby/html/files/async_rb.html | 120 + .../lib/ruby/html/files/rb_collection_c.html | 68 + .../lib/ruby/html/files/rb_collection_h.html | 68 + .../lib/ruby/html/files/rb_playlist_c.html | 68 + .../lib/ruby/html/files/rb_playlist_h.html | 68 + .../lib/ruby/html/files/rb_result_c.html | 68 + .../lib/ruby/html/files/rb_result_h.html | 68 + .../lib/ruby/html/files/rb_xmmsclient_c.html | 68 + .../html/files/rb_xmmsclient_ecore_c.html | 68 + .../ruby/html/files/rb_xmmsclient_glib_c.html | 68 + .../lib/ruby/html/files/rb_xmmsclient_h.html | 68 + .../ruby/html/files/rb_xmmsclient_main_c.html | 68 + src/clients/lib/ruby/html/files/sync_rb.html | 135 + .../lib/ruby/html/files/xmmsclient_rb.html | 110 + .../lib/ruby/html/fonts/Lato-Light.ttf | Bin 0 -> 94668 bytes .../lib/ruby/html/fonts/Lato-LightItalic.ttf | Bin 0 -> 94196 bytes .../lib/ruby/html/fonts/Lato-Regular.ttf | Bin 0 -> 96184 bytes .../ruby/html/fonts/Lato-RegularItalic.ttf | Bin 0 -> 95316 bytes .../ruby/html/fonts/SourceCodePro-Bold.ttf | Bin 0 -> 71200 bytes .../ruby/html/fonts/SourceCodePro-Regular.ttf | Bin 0 -> 71692 bytes src/clients/lib/ruby/html/fr_class_index.html | 75 + src/clients/lib/ruby/html/fr_file_index.html | 33 + .../lib/ruby/html/fr_method_index.html | 4745 +++++++++++++++++ src/clients/lib/ruby/html/frames.html | 26 + src/clients/lib/ruby/html/i/arrows.png | Bin 0 -> 477 bytes src/clients/lib/ruby/html/i/results_bg.png | Bin 0 -> 696 bytes src/clients/lib/ruby/html/i/tree_bg.png | Bin 0 -> 207 bytes src/clients/lib/ruby/html/images/add.png | Bin 0 -> 733 bytes src/clients/lib/ruby/html/images/arrow_up.png | Bin 0 -> 372 bytes src/clients/lib/ruby/html/images/brick.png | Bin 0 -> 452 bytes .../lib/ruby/html/images/brick_link.png | Bin 0 -> 764 bytes src/clients/lib/ruby/html/images/bug.png | Bin 0 -> 774 bytes .../lib/ruby/html/images/bullet_black.png | Bin 0 -> 211 bytes .../ruby/html/images/bullet_toggle_minus.png | Bin 0 -> 207 bytes .../ruby/html/images/bullet_toggle_plus.png | Bin 0 -> 209 bytes src/clients/lib/ruby/html/images/date.png | Bin 0 -> 626 bytes src/clients/lib/ruby/html/images/delete.png | Bin 0 -> 715 bytes src/clients/lib/ruby/html/images/find.png | Bin 0 -> 659 bytes .../lib/ruby/html/images/loadingAnimation.gif | Bin 0 -> 5886 bytes .../lib/ruby/html/images/macFFBgHack.png | Bin 0 -> 207 bytes src/clients/lib/ruby/html/images/package.png | Bin 0 -> 853 bytes .../lib/ruby/html/images/page_green.png | Bin 0 -> 621 bytes .../lib/ruby/html/images/page_white_text.png | Bin 0 -> 342 bytes .../lib/ruby/html/images/page_white_width.png | Bin 0 -> 309 bytes src/clients/lib/ruby/html/images/plugin.png | Bin 0 -> 591 bytes src/clients/lib/ruby/html/images/ruby.png | Bin 0 -> 592 bytes src/clients/lib/ruby/html/images/tag_blue.png | Bin 0 -> 1880 bytes .../lib/ruby/html/images/tag_green.png | Bin 0 -> 613 bytes .../lib/ruby/html/images/transparent.png | Bin 0 -> 97 bytes src/clients/lib/ruby/html/images/wrench.png | Bin 0 -> 610 bytes .../lib/ruby/html/images/wrench_orange.png | Bin 0 -> 584 bytes src/clients/lib/ruby/html/images/zoom.png | Bin 0 -> 692 bytes src/clients/lib/ruby/html/index.html | 132 + src/clients/lib/ruby/html/js/app.js | 219 + src/clients/lib/ruby/html/js/darkfish.js | 161 + src/clients/lib/ruby/html/js/full_list.js | 181 + .../lib/ruby/html/js/highlight.pack.js | 1 + .../lib/ruby/html/js/jquery-1.3.2.min.js | 19 + src/clients/lib/ruby/html/js/jquery-effect.js | 593 ++ src/clients/lib/ruby/html/js/jquery.js | 4 + src/clients/lib/ruby/html/js/main.js | 24 + src/clients/lib/ruby/html/js/navigation.js | 142 + src/clients/lib/ruby/html/js/navigation.js.gz | Bin 0 -> 1092 bytes src/clients/lib/ruby/html/js/search.js | 109 + src/clients/lib/ruby/html/js/search_index.js | 1 + .../lib/ruby/html/js/search_index.js.gz | Bin 0 -> 6076 bytes src/clients/lib/ruby/html/js/searchdoc.js | 449 ++ src/clients/lib/ruby/html/js/searcher.js | 228 + src/clients/lib/ruby/html/js/searcher.js.gz | Bin 0 -> 1756 bytes src/clients/lib/ruby/html/method_list.html | 909 ++++ src/clients/lib/ruby/html/panel/index.html | 73 + src/clients/lib/ruby/html/panel/links.html | 34 + src/clients/lib/ruby/html/panel/tree.js | 1 + .../lib/ruby/html/table_of_contents.html | 917 ++++ .../lib/ruby/html/top-level-namespace.html | 112 + src/clients/lib/ruby/html/unknown.html | 102 + src/clients/lib/ruby/rb_collection.c | 4 + src/clients/lib/ruby/rb_playlist.c | 6 + src/clients/lib/ruby/rb_result.c | 8 +- src/clients/lib/ruby/rb_xmmsclient.c | 13 +- src/clients/lib/ruby/sync.rb | 97 +- 254 files changed, 51596 insertions(+), 101 deletions(-) create mode 100644 src/clients/lib/ruby/.yardoc/checksums create mode 100644 src/clients/lib/ruby/.yardoc/object_types create mode 100644 src/clients/lib/ruby/.yardoc/objects/root.dat create mode 100644 src/clients/lib/ruby/.yardoc/proxy_types create mode 100644 src/clients/lib/ruby/doc/Xmms.html create mode 100644 src/clients/lib/ruby/doc/Xmms/BroadcastResult.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Client.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Client/Async.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Client/ClientError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Client/DisconnectedError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Client/Sync.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/Async.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/Attributes.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/ClientError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/CollectionError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/DisconnectedError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/Operands.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/PatternError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Collection/Sync.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Dict.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist/Async.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist/ClientError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist/DisconnectedError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist/PlaylistError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Playlist/Sync.html create mode 100644 src/clients/lib/ruby/doc/Xmms/RawDict.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Result.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Result/ResultError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/Result/ValueError.html create mode 100644 src/clients/lib/ruby/doc/Xmms/SignalResult.html create mode 100644 src/clients/lib/ruby/doc/created.rid create mode 100644 src/clients/lib/ruby/doc/css/fonts.css create mode 100644 src/clients/lib/ruby/doc/css/rdoc.css create mode 100644 src/clients/lib/ruby/doc/fonts/Lato-Light.ttf create mode 100644 src/clients/lib/ruby/doc/fonts/Lato-LightItalic.ttf create mode 100644 src/clients/lib/ruby/doc/fonts/Lato-Regular.ttf create mode 100644 src/clients/lib/ruby/doc/fonts/Lato-RegularItalic.ttf create mode 100644 src/clients/lib/ruby/doc/fonts/SourceCodePro-Bold.ttf create mode 100644 src/clients/lib/ruby/doc/fonts/SourceCodePro-Regular.ttf create mode 100644 src/clients/lib/ruby/doc/images/add.png create mode 100644 src/clients/lib/ruby/doc/images/arrow_up.png create mode 100644 src/clients/lib/ruby/doc/images/brick.png create mode 100644 src/clients/lib/ruby/doc/images/brick_link.png create mode 100644 src/clients/lib/ruby/doc/images/bug.png create mode 100644 src/clients/lib/ruby/doc/images/bullet_black.png create mode 100644 src/clients/lib/ruby/doc/images/bullet_toggle_minus.png create mode 100644 src/clients/lib/ruby/doc/images/bullet_toggle_plus.png create mode 100644 src/clients/lib/ruby/doc/images/date.png create mode 100644 src/clients/lib/ruby/doc/images/delete.png create mode 100644 src/clients/lib/ruby/doc/images/find.png create mode 100644 src/clients/lib/ruby/doc/images/loadingAnimation.gif create mode 100644 src/clients/lib/ruby/doc/images/macFFBgHack.png create mode 100644 src/clients/lib/ruby/doc/images/package.png create mode 100644 src/clients/lib/ruby/doc/images/page_green.png create mode 100644 src/clients/lib/ruby/doc/images/page_white_text.png create mode 100644 src/clients/lib/ruby/doc/images/page_white_width.png create mode 100644 src/clients/lib/ruby/doc/images/plugin.png create mode 100644 src/clients/lib/ruby/doc/images/ruby.png create mode 100644 src/clients/lib/ruby/doc/images/tag_blue.png create mode 100644 src/clients/lib/ruby/doc/images/tag_green.png create mode 100644 src/clients/lib/ruby/doc/images/transparent.png create mode 100644 src/clients/lib/ruby/doc/images/wrench.png create mode 100644 src/clients/lib/ruby/doc/images/wrench_orange.png create mode 100644 src/clients/lib/ruby/doc/images/zoom.png create mode 100644 src/clients/lib/ruby/doc/index.html create mode 100644 src/clients/lib/ruby/doc/js/darkfish.js create mode 100644 src/clients/lib/ruby/doc/js/jquery.js create mode 100644 src/clients/lib/ruby/doc/js/navigation.js create mode 100644 src/clients/lib/ruby/doc/js/navigation.js.gz create mode 100644 src/clients/lib/ruby/doc/js/search.js create mode 100644 src/clients/lib/ruby/doc/js/search_index.js create mode 100644 src/clients/lib/ruby/doc/js/search_index.js.gz create mode 100644 src/clients/lib/ruby/doc/js/searcher.js create mode 100644 src/clients/lib/ruby/doc/js/searcher.js.gz create mode 100644 src/clients/lib/ruby/doc/table_of_contents.html create mode 100644 src/clients/lib/ruby/doc/unknown.html create mode 100644 src/clients/lib/ruby/doc/wscript.html create mode 100644 src/clients/lib/ruby/html/Collection.html create mode 100644 src/clients/lib/ruby/html/Collection/Attributes.html create mode 100644 src/clients/lib/ruby/html/Collection/ClientError.html create mode 100644 src/clients/lib/ruby/html/Collection/CollectionError.html create mode 100644 src/clients/lib/ruby/html/Collection/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/Collection/Operands.html create mode 100644 src/clients/lib/ruby/html/Collection/PatternError.html create mode 100644 src/clients/lib/ruby/html/Xmms.html create mode 100644 src/clients/lib/ruby/html/Xmms/BroadcastResult.html create mode 100644 src/clients/lib/ruby/html/Xmms/Client.html create mode 100644 src/clients/lib/ruby/html/Xmms/Client/Async.html create mode 100644 src/clients/lib/ruby/html/Xmms/Client/ClientError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Client/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Client/Sync.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/Async.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/Attributes.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/ClientError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/CollectionError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/Operands.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/PatternError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection/Sync.html create mode 100644 src/clients/lib/ruby/html/Xmms/Collection2.html create mode 100644 src/clients/lib/ruby/html/Xmms/Dict.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist/Async.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist/ClientError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist/PlaylistError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Playlist/Sync.html create mode 100644 src/clients/lib/ruby/html/Xmms/RawDict.html create mode 100644 src/clients/lib/ruby/html/Xmms/Result.html create mode 100644 src/clients/lib/ruby/html/Xmms/Result/ResultError.html create mode 100644 src/clients/lib/ruby/html/Xmms/Result/ValueError.html create mode 100644 src/clients/lib/ruby/html/Xmms/SignalResult.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms/Xmms.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection/Sync.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist.html create mode 100644 src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist/Sync.html create mode 100644 src/clients/lib/ruby/html/_index.html create mode 100644 src/clients/lib/ruby/html/apple-touch-icon.png create mode 100644 src/clients/lib/ruby/html/class_list.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/BroadcastResult.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Client.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Client/Async.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Client/ClientError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Client/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Client/Sync.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/Async.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/Attributes.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/ClientError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/CollectionError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/Operands.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/PatternError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection/Sync.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Collection2.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Dict.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist/Async.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist/ClientError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist/DisconnectedError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist/PlaylistError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Playlist/Sync.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/RawDict.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Result.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Result/ResultError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Result/ValueError.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/SignalResult.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection/Sync.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist.html create mode 100644 src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist/Sync.html create mode 100644 src/clients/lib/ruby/html/classes/unknown.html create mode 100644 src/clients/lib/ruby/html/created.rid create mode 100644 src/clients/lib/ruby/html/css/common.css create mode 100644 src/clients/lib/ruby/html/css/fonts.css create mode 100644 src/clients/lib/ruby/html/css/full_list.css create mode 100644 src/clients/lib/ruby/html/css/github.css create mode 100755 src/clients/lib/ruby/html/css/main.css create mode 100755 src/clients/lib/ruby/html/css/panel.css create mode 100644 src/clients/lib/ruby/html/css/rdoc.css create mode 100755 src/clients/lib/ruby/html/css/reset.css create mode 100644 src/clients/lib/ruby/html/css/style.css create mode 100644 src/clients/lib/ruby/html/favicon.ico create mode 100644 src/clients/lib/ruby/html/file_list.html create mode 100644 src/clients/lib/ruby/html/files/async_rb.html create mode 100644 src/clients/lib/ruby/html/files/rb_collection_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_collection_h.html create mode 100644 src/clients/lib/ruby/html/files/rb_playlist_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_playlist_h.html create mode 100644 src/clients/lib/ruby/html/files/rb_result_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_result_h.html create mode 100644 src/clients/lib/ruby/html/files/rb_xmmsclient_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_xmmsclient_ecore_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_xmmsclient_glib_c.html create mode 100644 src/clients/lib/ruby/html/files/rb_xmmsclient_h.html create mode 100644 src/clients/lib/ruby/html/files/rb_xmmsclient_main_c.html create mode 100644 src/clients/lib/ruby/html/files/sync_rb.html create mode 100644 src/clients/lib/ruby/html/files/xmmsclient_rb.html create mode 100644 src/clients/lib/ruby/html/fonts/Lato-Light.ttf create mode 100644 src/clients/lib/ruby/html/fonts/Lato-LightItalic.ttf create mode 100644 src/clients/lib/ruby/html/fonts/Lato-Regular.ttf create mode 100644 src/clients/lib/ruby/html/fonts/Lato-RegularItalic.ttf create mode 100644 src/clients/lib/ruby/html/fonts/SourceCodePro-Bold.ttf create mode 100644 src/clients/lib/ruby/html/fonts/SourceCodePro-Regular.ttf create mode 100644 src/clients/lib/ruby/html/fr_class_index.html create mode 100644 src/clients/lib/ruby/html/fr_file_index.html create mode 100644 src/clients/lib/ruby/html/fr_method_index.html create mode 100644 src/clients/lib/ruby/html/frames.html create mode 100755 src/clients/lib/ruby/html/i/arrows.png create mode 100755 src/clients/lib/ruby/html/i/results_bg.png create mode 100755 src/clients/lib/ruby/html/i/tree_bg.png create mode 100644 src/clients/lib/ruby/html/images/add.png create mode 100644 src/clients/lib/ruby/html/images/arrow_up.png create mode 100644 src/clients/lib/ruby/html/images/brick.png create mode 100644 src/clients/lib/ruby/html/images/brick_link.png create mode 100644 src/clients/lib/ruby/html/images/bug.png create mode 100644 src/clients/lib/ruby/html/images/bullet_black.png create mode 100644 src/clients/lib/ruby/html/images/bullet_toggle_minus.png create mode 100644 src/clients/lib/ruby/html/images/bullet_toggle_plus.png create mode 100644 src/clients/lib/ruby/html/images/date.png create mode 100644 src/clients/lib/ruby/html/images/delete.png create mode 100644 src/clients/lib/ruby/html/images/find.png create mode 100644 src/clients/lib/ruby/html/images/loadingAnimation.gif create mode 100644 src/clients/lib/ruby/html/images/macFFBgHack.png create mode 100644 src/clients/lib/ruby/html/images/package.png create mode 100644 src/clients/lib/ruby/html/images/page_green.png create mode 100644 src/clients/lib/ruby/html/images/page_white_text.png create mode 100644 src/clients/lib/ruby/html/images/page_white_width.png create mode 100644 src/clients/lib/ruby/html/images/plugin.png create mode 100644 src/clients/lib/ruby/html/images/ruby.png create mode 100644 src/clients/lib/ruby/html/images/tag_blue.png create mode 100644 src/clients/lib/ruby/html/images/tag_green.png create mode 100644 src/clients/lib/ruby/html/images/transparent.png create mode 100644 src/clients/lib/ruby/html/images/wrench.png create mode 100644 src/clients/lib/ruby/html/images/wrench_orange.png create mode 100644 src/clients/lib/ruby/html/images/zoom.png create mode 100644 src/clients/lib/ruby/html/index.html create mode 100644 src/clients/lib/ruby/html/js/app.js create mode 100644 src/clients/lib/ruby/html/js/darkfish.js create mode 100644 src/clients/lib/ruby/html/js/full_list.js create mode 100755 src/clients/lib/ruby/html/js/highlight.pack.js create mode 100755 src/clients/lib/ruby/html/js/jquery-1.3.2.min.js create mode 100755 src/clients/lib/ruby/html/js/jquery-effect.js create mode 100644 src/clients/lib/ruby/html/js/jquery.js create mode 100755 src/clients/lib/ruby/html/js/main.js create mode 100644 src/clients/lib/ruby/html/js/navigation.js create mode 100644 src/clients/lib/ruby/html/js/navigation.js.gz create mode 100644 src/clients/lib/ruby/html/js/search.js create mode 100644 src/clients/lib/ruby/html/js/search_index.js create mode 100644 src/clients/lib/ruby/html/js/search_index.js.gz create mode 100755 src/clients/lib/ruby/html/js/searchdoc.js create mode 100644 src/clients/lib/ruby/html/js/searcher.js create mode 100644 src/clients/lib/ruby/html/js/searcher.js.gz create mode 100644 src/clients/lib/ruby/html/method_list.html create mode 100755 src/clients/lib/ruby/html/panel/index.html create mode 100644 src/clients/lib/ruby/html/panel/links.html create mode 100644 src/clients/lib/ruby/html/panel/tree.js create mode 100644 src/clients/lib/ruby/html/table_of_contents.html create mode 100644 src/clients/lib/ruby/html/top-level-namespace.html create mode 100644 src/clients/lib/ruby/html/unknown.html diff --git a/src/clients/lib/ruby/.yardoc/checksums b/src/clients/lib/ruby/.yardoc/checksums new file mode 100644 index 000000000..538d42070 --- /dev/null +++ b/src/clients/lib/ruby/.yardoc/checksums @@ -0,0 +1,14 @@ +async.rb ba967bf49824bea5e096c0594e079cbcd236d889 +rb_collection.c f6116f8422d4d35094f5b011ad5eb8dcf0dfa542 +rb_collection.h 1fc25c5878c2e6c1543b750c3894863bb3e69af8 +rb_playlist.c 09a39cd2c58fd56d451eafe3dd5f05b0f38e9381 +rb_playlist.h 8be787cc7f4a9e889ed9ece89dc15fb0c4fdbc63 +rb_result.c 38a0fc799557694d42b4df98ecea76810235c536 +rb_result.h 5dc69d213fd95f929fdf50e8d28e9dafa57c3802 +rb_xmmsclient.c d1684ca5b02cf4943d0524625c33825708d3f51f +rb_xmmsclient_ecore.c de8108ed430dac27e5323a31464fb177e0da7cad +rb_xmmsclient_glib.c 0b48ccb9903a38f5701233cd52e49994ab5d6439 +rb_xmmsclient.h bb3a22855f30d7a2f04e2640a54342b0e1ae97f2 +rb_xmmsclient_main.c 1056eba3db3c1b5fafa5bd93e97b96df225d60db +sync.rb f3c2fb0486455382821e7473892b021f9b829556 +xmmsclient.rb b926424354004c479daea960790c911b1863d8cb diff --git a/src/clients/lib/ruby/.yardoc/object_types b/src/clients/lib/ruby/.yardoc/object_types new file mode 100644 index 0000000000000000000000000000000000000000..d60e07a2b2b661169445a663cd5c92e8c6dea47f GIT binary patch literal 6971 zcmb7J>u(!H5C;hbT7(b?%BwsYLwN@T->yaArfzFt>?n3ZtEgICd~4^_d-Wbk1Bkzc zKb5(inZ2F6vnih}?fmAs^Sbp*ul#w{yOO7Ad9ris1@G!I@{8i+`gr%o_FAvrOuO4o~Jp2ZgxTYR*r+) z?ZFvS9LyJ8%-yh9rbz;3>A*qW=pu(@nTMxUsS7mh<1S>D>D*5O0=$8MLtRu+i9GM) z(VaZ?gQZ`TF6|wp&BJx#M=s$bSB~c)$+7iANk8_ZN;~A&k$g8?k`Zqb-oI$h$X2{O zw3XEIed4bp_fr(Z^bLU|uNXD2lfqp72gGjg((@YPdq_Np{L3gTAe)E;xpckDhpA?y zQh*yqrY*cz<20xueX=v&y;94l&45E)o~6Obi~o#w*tL&|UJZglS4DGfs+=z5${xFw6Bpnj@?)@&FAc0eJFJaorI2SYmQ z_71n=)Z<&|hanWUGm&@ZRL5D#MMQ(boO7*`W9CejoGZJz5EpN9$rcI48@1Nu8}!HB}dWQmV9~^ySH5$)GvW zI%p6)TPz|>)ETTe5%n%3rDZ84l#GWo%5X&Rt-;3put9vRgL+jxRge$)r8Ma|d8#b%;TsBXbCVk_ zJ$~?iEz5PBp0gI-sGHnscIIwjV=(Me%^Q+rR-EHLe5amMt#u31$b$5NZuyLIsGGn7 z)Z`?8_@Lq?tj4M_Te@V3HvM`S3!iP2o!&5Ftnfm5cvoT4J0*xW@wwH=*<;90E1lD> zEBkaqg|^b$@?1o+O8fG~K=2bst@1QBea%F36>`(%1;1TZhF6pnFOG<`83?(D*^U;- zzHCtteA^#o8c2xsoaMI{Q#Tt2BeQ_y<6Ej50yax)&*KsIjukDbgz9XG7cZX29WH;BW{AI?MEl! zFk$e?OT}SPgvlCjm2b>>sHvaa9BnMAjc9A^c_A>8`n2*?vN8uyk^DN$6TBgY2_$!6 zAD22d!{=7LD8|ri(JT5~+;2qit1^F!H5B-$L8dMV-U5)s-&qaUUz-RwH(BuaFG!&Z zI1o>q9B+8%q<+$(i)aIi#$XH8i8UZaS<~~pqfQJrCbzYTs$@`~GH(7hPz-Lemt}Pz zLMi-9z_r)`b`%4clBS7=dH;3%q^Z~j2&E7$+78>Wj>?7i8WcT@fuuaS)&$wHbvjqW z$pr75N3taE&nA=6{$f0v&Jo6UAz=rT;iJiTz910iqFHO;j}xFGcZ)Dz%np#i)xaFX zqxq3Dh{nM4bR`<+bG!Q|-vn7wGJdw6el_#1L^g^?k%qs76| z0!i#Tkw(+S;UhI)3>QapH68tqpjP7(pxLj85$nC@3C!VWKARj{N5sn3f=*`(H9Q`U gC&N1&6K;fkCLWF+4CfEf0(w0=9v#l%YU{Iq0VP}+#{d8T literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/.yardoc/objects/root.dat b/src/clients/lib/ruby/.yardoc/objects/root.dat new file mode 100644 index 0000000000000000000000000000000000000000..6904bb5d2d14c8c88831679055e4958742f5c8f0 GIT binary patch literal 113012 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 J9O~};{{cS+8!-R? literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/.yardoc/proxy_types b/src/clients/lib/ruby/.yardoc/proxy_types new file mode 100644 index 0000000000000000000000000000000000000000..beefda1ae32c2cef8eb53a4f3c8407a532a22b51 GIT binary patch literal 4 LcmZSKsAd2F0U`j1 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/async.rb b/src/clients/lib/ruby/async.rb index 089c65aca..6de2616bb 100644 --- a/src/clients/lib/ruby/async.rb +++ b/src/clients/lib/ruby/async.rb @@ -15,65 +15,67 @@ require 'xmmsclient' -class Xmms::Client::Async - attr_reader(:real) +module Xmms + class Client::Async + attr_reader(:real) - def initialize(name) - @real = Xmms::Client.new(name) - end + def initialize(name) + @real = Xmms::Client.new(name) + end - def method_missing(id, *args, &block) - args.push(&block) if(id == 'on_disconnect') - ret = @real.send(id, *args) - if(block_given? && (ret.is_a?(Xmms::Result) || - ret.is_a?(Xmms::BroadcastResult) || ret.is_a?(Xmms::SignalResult))) - ret.notifier(&block) - elsif(ret.is_a?(Xmms::Client)) - self - elsif(ret.is_a?(Xmms::Collection)) - Xmms::Collection::Async.new(ret) - elsif(ret.is_a?(Xmms::Playlist)) - Xmms::Playlist::Async.new(ret) - else - ret + def method_missing(id, *args, &block) + args.push(&block) if(id == 'on_disconnect') + ret = @real.send(id, *args) + if(block_given? && (ret.is_a?(Xmms::Result) || + ret.is_a?(Xmms::BroadcastResult) || ret.is_a?(Xmms::SignalResult))) + ret.notifier(&block) + elsif(ret.is_a?(Xmms::Client)) + self + elsif(ret.is_a?(Xmms::Collection)) + Xmms::Collection::Async.new(ret) + elsif(ret.is_a?(Xmms::Playlist)) + Xmms::Playlist::Async.new(ret) + else + ret + end end end -end -class Xmms::Collection::Async - attr_reader(:real) + class Collection::Async + attr_reader(:real) - def initialize(coll) - @real = coll - end + def initialize(coll) + @real = coll + end - def method_missing(id, *args, &block) - ret = @real.send(id, *args) - if(block_given? && ret.is_a?(Xmms::Result)) - ret.notifier(&block) - elsif(ret.is_a?(Xmms::Collection)) - self - else - ret + def method_missing(id, *args, &block) + ret = @real.send(id, *args) + if(block_given? && ret.is_a?(Xmms::Result)) + ret.notifier(&block) + elsif(ret.is_a?(Xmms::Collection)) + self + else + ret + end end end -end -class Xmms::Playlist::Async - attr_reader(:real) + class Playlist::Async + attr_reader(:real) - def initialize(plist) - @real = plist - end + def initialize(plist) + @real = plist + end - def method_missing(id, *args, &block) - ret = @real.send(id, *args) - if(block_given? && ret.is_a?(Xmms::Result)) - ret.notifier(&block) - elsif(ret.is_a?(Xmms::Collection)) - self - else - ret + def method_missing(id, *args, &block) + ret = @real.send(id, *args) + if(block_given? && ret.is_a?(Xmms::Result)) + ret.notifier(&block) + elsif(ret.is_a?(Xmms::Collection)) + self + else + ret + end end end end diff --git a/src/clients/lib/ruby/doc/Xmms.html b/src/clients/lib/ruby/doc/Xmms.html new file mode 100644 index 000000000..6f5de434f --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms.html @@ -0,0 +1,232 @@ + + + + + + +module Xmms - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms +

+ +
+ +
+ + + + +
+ + + + + +
+
+

Constants

+
+
+ +
VERSION + +
+ + +
+
+ + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + decode_url(url) → String + + + click to toggle source + +
+ + + +
+ +

Decodes a url-encoded string url and returns it in UNKNOWN +ENCODING. Use with caution.

+ + + + +
+
static VALUE
+m_decode_url (VALUE self, VALUE str)
+{
+        const unsigned char *burl;
+        unsigned int blen;
+        xmmsv_t *strv, *decoded;
+        VALUE url = Qnil;
+
+        strv = xmmsv_new_string (StringValuePtr (str));
+
+        decoded = xmmsv_decode_url (strv);
+
+        if (!decoded)
+                goto out;
+
+        if (!xmmsv_get_bin (decoded, &burl, &blen))
+                goto out;
+
+        url = rb_str_new ((char *) burl, blen);
+
+out:
+        if (decoded)
+                xmmsv_unref (decoded);
+
+        xmmsv_unref (strv);
+
+        return url;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + userconfdir → String + + + click to toggle source + +
+ + + +
+ +

Returns the xmms2 configuration directory for the current user.

+ + + + +
+
static VALUE
+m_userconfdir_get (VALUE self)
+{
+        const char *p;
+        char path[XMMS_PATH_MAX];
+
+        p = xmmsc_userconfdir_get (path, XMMS_PATH_MAX);
+
+        return p ? rb_str_new2 (p) : Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/BroadcastResult.html b/src/clients/lib/ruby/doc/Xmms/BroadcastResult.html new file mode 100644 index 000000000..fe0394784 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/BroadcastResult.html @@ -0,0 +1,160 @@ + + + + + + +class Xmms::BroadcastResult - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::BroadcastResult +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ disconnect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Client.html b/src/clients/lib/ruby/doc/Xmms/Client.html new file mode 100644 index 000000000..8487858bc --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Client.html @@ -0,0 +1,3550 @@ + + + + + + +class Xmms::Client - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + Xmms::Client.new(name) → xc + + + click to toggle source + +
+ + + +
+ +

Creates an Xmms::Client object.

+ + + + +
+
static VALUE
+c_init (VALUE self, VALUE name)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        if (!(xmms->real = xmmsc_init (StringValuePtr (name)))) {
+                rb_raise (rb_eNoMemError, "failed to allocate memory");
+                return Qnil;
+        }
+
+        xmms->deleted = false;
+        xmms->result_callbacks = rb_ary_new ();
+        xmms->disconnect_cb = Qnil;
+        xmms->io_need_out_cb = Qnil;
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + bindata_add(str) → result + + + click to toggle source + +
+ + + +
+ +

Stores binary data on the server.

+ + + + +
+
static VALUE
+c_bindata_add (VALUE self, VALUE data)
+{
+        METHOD_ADD_HANDLER_BIN (bindata_add, data);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_list → result + + + click to toggle source + +
+ + + +
+ +

List all bindata hashes stored on the server.

+ + + + +
+
static VALUE
+c_bindata_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (bindata_list);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_remove(hash) → result + + + click to toggle source + +
+ + + +
+ +

Remove a datafile from the server.

+ + + + +
+
static VALUE
+c_bindata_remove (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_remove, hash);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_retrieve(hash) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the bindata entry specified by hash (hex string) from the server.

+ + + + +
+
static VALUE
+c_bindata_retrieve (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_retrieve, hash);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_coll_changed → result + + + click to toggle source + +
+ + + +
+ +

The collection_changed broadcast, if requested, is called anytime a +collection is altered.

+ + + + +
+
static VALUE
+c_broadcast_coll_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_collection_changed)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_config_value_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves configuration properties as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_config_value_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_config_value_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_mediainfo_reader_status → result + + + click to toggle source + +
+ + + +
+ +

Requests the status of the mediainfo reader.

+ + + + +
+
static VALUE
+c_broadcast_mediainfo_reader_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_mediainfo_reader_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_added → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of an added medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_added (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_added);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of a changed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_changed (VALUE self)
+{
+        RB_XMMS_DEPRECATED (broadcast_medialib_entry_changed, broadcast_medialib_entry_updated);
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_removed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of an removed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_removed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_removed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of a changed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_updated (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playback_current_id → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the media id of the currently played track as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_current_id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playback_status → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playback status as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_volume_changed → result + + + click to toggle source + +
+ + + +
+ +

Registers a broadcast handler that's evoked when the playback volume +changes.

+ + + + +
+
static VALUE
+c_broadcast_playback_volume_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_volume_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a hash describing the change to the playlist as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playlist_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_current_pos → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the current playlist position as a broadcast. See +playlist_current_pos.

+ + + + +
+
static VALUE
+c_broadcast_playlist_current_pos (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_current_pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_loaded → result + + + click to toggle source + +
+ + + +
+ +

Will be called when a playlist has been loaded.

+ + + + +
+
static VALUE
+c_broadcast_playlist_loaded (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_loaded);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_quit → result + + + click to toggle source + +
+ + + +
+ +

Will be called when the server is terminating.

+ + + + +
+
static VALUE
+c_broadcast_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_quit);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_find(id, ns) → result + + + click to toggle source + +
+ + + +
+ +

Find all collections in the given namespace ns which contain +id.

+ + + + +
+
static VALUE
+c_coll_find (VALUE self, VALUE id, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_coll_find (xmms->real, check_int32 (id),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_get(name, [ns]) + + + click to toggle source + +
+ + + +
+ +

Returns a result containing an Xmms::Collection object referencing the +collection named name. The namespace ns is searched or +all namespaces if unspecified.

+ + + + +
+
static VALUE
+c_coll_get (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_idlist_from_playlist_file(path) → result + + + click to toggle source + +
+ + + +
+ +

Returns a collection of the idlist type from the playlist file at +path. path must be an unencoded string.

+ + + + +
+
static VALUE
+c_coll_idlist_from_playlist_file (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (coll_idlist_from_playlist_file, path)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_list([ns]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array of the names of all the collections stored in the +medialib under the namespace ns. If ns is not specified, +it defaults to ALL.

+ + + + +
+
static VALUE
+c_coll_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "01", &ns);
+
+        if (NIL_P (ns))
+                ns = rb_str_new2 (XMMS_COLLECTION_NS_ALL);
+
+        res = xmmsc_coll_list (xmms->real, StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query(coll, spec) → result + + + click to toggle source + +
+ + + +
+ + + + + + +
+
static VALUE
+c_coll_query (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, spec;
+        xmmsv_t *cspec;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "2", &coll, &spec);
+
+        cspec = xmmsv_new_dict ();
+
+        VALUE args = rb_ary_new3(4, xmms, coll, spec, (VALUE) cspec);
+
+        res = (xmmsc_result_t *) rb_ensure (c_coll_query_fragile, args,
+                                            c_coll_query_cleanup, (VALUE) cspec);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query_ids(coll, [order], [start], [len]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all the ids of media matched by the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving ids and the maximum number of ids to retrieve, +respectively.

+ + + + +
+
static VALUE
+c_coll_query_ids (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len = Qnil;
+        xmmsv_t *corder = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "13", &coll, &order, &start, &len);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_coll_query_ids (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len));
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query_info(coll, fetch, [order], [start], [len], [group]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves media info of media matched by the collection. fetch +should contain an array of properties to retrieve from the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving info and the maximum number of ids to retrieve, +respectively. group defines a list of properties to group by or no +grouping if omitted.

+ + + + +
+
static VALUE
+c_coll_query_info (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len, fetch, group = Qnil;
+        xmmsv_t *cfetch = NULL, *corder = NULL, *cgroup = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "24", &coll, &fetch, &order, &start, &len,
+                      &group);
+
+        cfetch = parse_string_array2 (fetch);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        if (!NIL_P (group))
+                cgroup = parse_string_array2 (group);
+
+        res = xmmsc_coll_query_infos (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len),
+                                    cfetch,
+                                    cgroup);
+        xmmsv_unref (cfetch);
+        if (corder) {
+                xmmsv_unref (corder);
+        }
+        if (cgroup) {
+                xmmsv_unref (cgroup);
+        }
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_remove(name, [ns]) → result + + + click to toggle source + +
+ + + +
+ +

Remove the collection named name from the media library. The +collection is removed from the namespace ns or all namespaces if +unspecified.

+ + + + +
+
static VALUE
+c_coll_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_rename(old, new, [ns]) → result + + + click to toggle source + +
+ + + +
+ +

Rename the saved collection from old to new within the +namespace ns or all namespaces.

+ + + + +
+
static VALUE
+c_coll_rename (int argc, VALUE *argv, VALUE self)
+{
+        VALUE old, new, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "21", &old, &new, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_save(coll, name, ns) → result + + + click to toggle source + +
+ + + +
+ +

Save the collection coll named name under the namespace +ns to the media library.

+ + + + +
+
static VALUE
+c_coll_save (VALUE self, VALUE coll, VALUE name, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        /* FIXME: Check that we actually have a Collection object */
+
+        res = xmmsc_coll_save (xmms->real,
+                               FROM_XMMS_CLIENT_COLLECTION (coll),
+                               StringValuePtr (name),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_get_value(key) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the value of the configuration property at key.

+ + + + +
+
static VALUE
+c_config_get_value (VALUE self, VALUE key)
+{
+        METHOD_ADD_HANDLER_STR (config_get_value, key);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_list_values → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all config values.

+ + + + +
+
static VALUE
+c_config_list_values (VALUE self)
+{
+        METHOD_ADD_HANDLER (config_list_values);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_register_value(key, default_value) → result + + + click to toggle source + +
+ + + +
+ +

Registers a configuration property at key with the given default +value.

+ + + + +
+
static VALUE
+c_config_register_value (VALUE self, VALUE key, VALUE defval)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_register_value, key, defval);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_set_value(key, value) → result + + + click to toggle source + +
+ + + +
+ +

Sets the value of the configuration property at key to +value.

+ + + + +
+
static VALUE
+c_config_set_value (VALUE self, VALUE key, VALUE val)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_set_value, key, val);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + connect([path]) → self + + + click to toggle source + +
+ + + +
+ +

Connects xc to the XMMS2 daemon listening at path. If +path isn't given, the default path is used.

+ + + + +
+
static VALUE
+c_connect (int argc, VALUE *argv, VALUE self)
+{
+        VALUE path;
+        RbXmmsClient *xmms = NULL;
+        char *p = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "01", &path);
+
+        if (!NIL_P (path))
+                p = StringValuePtr (path);
+
+        if (!xmmsc_connect (xmms->real, p))
+                rb_raise (eClientError,
+                          "cannot connect to daemon (%s)",
+                          xmmsc_get_last_error (xmms->real));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ delete!() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_delete (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_unref (xmms->real);
+        xmms->deleted = true;
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_disconnect → nil + + + click to toggle source + +
+ + + +
+ +

Disconnects the IPC socket. This should only be used by event loop +implementations.

+ + + + +
+
static VALUE
+c_io_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_disconnect (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_fd → integer + + + click to toggle source + +
+ + + +
+ +

Returns the file descriptor of the Xmms::Client +IPC socket.

+ + + + +
+
static VALUE
+c_io_fd (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return INT2NUM (xmmsc_io_fd_get (xmms->real));
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_in_handle → nil + + + click to toggle source + +
+ + + +
+ +

Retrieves one incoming (from server) clientlib command if there are any in +the buffer.

+ + + + +
+
static VALUE
+c_io_in_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_in_handle (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_on_need_out { |flag| } + + + click to toggle source + +
+ + + +
+ +

Sets the block that's called when the output socket state changes.

+ + + + +
+
static VALUE
+c_io_on_need_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->io_need_out_cb = rb_block_proc ();
+
+        xmmsc_io_need_out_callback_set (xmms->real,
+                                        on_io_need_out, (void *) self);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_out_handle → nil + + + click to toggle source + +
+ + + +
+ +

Sends one outgoing (to server) clientlib command. You should check io_want_out before calling this +method.

+ + + + +
+
static VALUE
+c_io_out_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_out_handle (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_want_out → true or false + + + click to toggle source + +
+ + + +
+ +

Returns true if an outgoing (to server) clientlib command is +pending, false otherwise.

+ + + + +
+
static VALUE
+c_io_want_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return xmmsc_io_want_out (xmms->real) ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + last_error → string or nil + + + click to toggle source + +
+ + + +
+ +

Returns the last error that occured in xc or nil, if +no error occured yet.

+ + + + +
+
static VALUE
+c_last_error_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        const char *s;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        s = xmmsc_get_last_error (xmms->real);
+
+        return s ? rb_str_new2 (s) : Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + main_stats → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a hash containing statistics about the daemon.

+ + + + +
+
static VALUE
+c_main_stats (VALUE self)
+{
+        METHOD_ADD_HANDLER (main_stats);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_add_entry(url) → result + + + click to toggle source + +
+ + + +
+ +

Adds url to the medialib.

+ + + + +
+
static VALUE
+c_medialib_add_entry (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_add_entry, url);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_move(id, url) → result + + + click to toggle source + +
+ + + +
+ +

Moves the entry specified by id to a new URL without changing +mediainfo.

+ + + + +
+
static VALUE
+c_medialib_entry_move (VALUE self, VALUE id, VALUE url)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_medialib_move_entry (xmms->real, check_int32 (id),
+                                         StringValuePtr (url));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_property_remove(id, key, *source) → result + + + click to toggle source + +
+ + + +
+ +

Remove a custom field in the medialib associated with the entry +id. source is an optional argument that describes where +to write the mediainfo. If source is omitted, +“client/<yourclient>” is used, where <yourclient> is the name +you specified in ::new.

+ + + + +
+
static VALUE
+c_medialib_entry_property_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        int32_t id;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "21", &tmp, &key, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_remove (xmms->real, id,
+                                                            ckey);
+        else
+                res = xmmsc_medialib_entry_property_remove_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_property_set(id, key, value, *source) → result + + + click to toggle source + +
+ + + +
+ +

Write info to the medialib at id. source is an optional +argument that describes where to write the mediainfo. If source is +omitted, the mediainfo is written to “client/<yourclient>” where +<yourclient> is the name you specified in ::new.

+ + + + +
+
static VALUE
+c_medialib_entry_property_set (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, value, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        bool is_str = false;
+        int32_t id, ivalue;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "31", &tmp, &key, &value, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        if (!NIL_P (rb_check_string_type (value)))
+                is_str = true;
+        else
+                ivalue = check_int32 (value);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src) && is_str)
+                res = xmmsc_medialib_entry_property_set_str (xmms->real, id,
+                                                             ckey,
+                                                             StringValuePtr (value));
+        else if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_set_int (xmms->real, id,
+                                                             ckey, ivalue);
+        else if (is_str)
+                res = xmmsc_medialib_entry_property_set_str_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey,
+                        StringValuePtr (value));
+        else
+                res = xmmsc_medialib_entry_property_set_int_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey, ivalue);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_remove(id) → result + + + click to toggle source + +
+ + + +
+ +

Removes the entry specified by id from the medialib.

+ + + + +
+
static VALUE
+c_medialib_entry_remove (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_remove_entry, id)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_get_id(url) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id corresponding to url.

+ + + + +
+
static VALUE
+c_medialib_get_id (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_get_id, url);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_get_info(id) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves medialib info for id.

+ + + + +
+
static VALUE
+c_medialib_get_info (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_get_info, id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_path_import(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path to the medialib.

+ + + + +
+
static VALUE
+c_medialib_path_import (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_path_import(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under the url encoded path to +the medialib.

+ + + + +
+
static VALUE
+c_medialib_path_import_encoded (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path_encoded, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_rehash(id) → result + + + click to toggle source + +
+ + + +
+ +

Rehashes the medialib entry at id or the whole medialib if +id == 0.

+ + + + +
+
static VALUE
+c_medialib_rehash (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_rehash, id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + on_disconnect { } → self + + + click to toggle source + +
+ + + +
+ +

Sets the block that's executed when xc is disconnected from +the XMMS2 daemon.

+ + + + +
+
static VALUE
+c_on_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->disconnect_cb = rb_block_proc ();
+
+        xmmsc_disconnect_callback_set (xmms->real,
+                                       on_disconnect, (void *) self);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_current_id → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the media id of the currently played track.

+ + + + +
+
static VALUE
+c_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_current_id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_pause → result + + + click to toggle source + +
+ + + +
+ +

Pauses playback.

+ + + + +
+
static VALUE
+c_playback_pause (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_pause);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_playtime → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playtime.

+ + + + +
+
static VALUE
+c_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_playtime);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_ms(ms) → result + + + click to toggle source + +
+ + + +
+ +

Seek to the song position given in ms.

+ + + + +
+
static VALUE
+c_playback_seek_ms (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_ms_rel(ms) → result + + + click to toggle source + +
+ + + +
+ +

Seek in the song by the offset given in ms.

+ + + + +
+
static VALUE
+c_playback_seek_ms_rel (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_samples(samples) → result + + + click to toggle source + +
+ + + +
+ +

Seek to the song position given in samples.

+ + + + +
+
static VALUE
+c_playback_seek_samples (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_samples_rel(samples) → result + + + click to toggle source + +
+ + + +
+ +

Seek in the song position by the offset given in samples.

+ + + + +
+
static VALUE
+c_playback_seek_samples_rel (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_start → result + + + click to toggle source + +
+ + + +
+ +

Starts playback.

+ + + + +
+
static VALUE
+c_playback_start (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_start);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_status → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playback status.

+ + + + +
+
static VALUE
+c_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_stop → result + + + click to toggle source + +
+ + + +
+ +

Stops playback.

+ + + + +
+
static VALUE
+c_playback_stop (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_stop);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_tickle → result + + + click to toggle source + +
+ + + +
+ +

Advances to the next playlist entry.

+ + + + +
+
static VALUE
+c_playback_tickle (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_tickle);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_volume_get → result + + + click to toggle source + +
+ + + +
+ +

Gets the current playback volume.

+ + + + +
+
static VALUE
+c_playback_volume_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        res = xmmsc_playback_volume_get (xmms->real);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_volume_set(channel, volume) → result + + + click to toggle source + +
+ + + +
+ +

Sets playback volume for channel to volume.

+ + + + +
+
static VALUE
+c_playback_volume_set (VALUE self, VALUE channel, VALUE volume)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        Check_Type (channel, T_SYMBOL);
+        Check_Type (volume, T_FIXNUM);
+
+        res = xmmsc_playback_volume_set (xmms->real,
+                                         rb_id2name (SYM2ID (channel)),
+                                         NUM2INT (volume));
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist([name]) → p + + + click to toggle source + +
+ + + +
+ +

Shortcut for Xmms::Playlist.new. +Creates a new Xmms::Playlist object tied to the +current Xmms::Client instance. name is +is the name of the playlist and the active playlist will be used if it is +not specified. Raises PlaylistError if the playlist name is invalid.

+ + + + +
+
static VALUE
+c_playlist (int argc, VALUE *argv, VALUE self)
+{
+        VALUE args[2] = {self, Qnil};
+
+        rb_scan_args (argc, argv, "01", &args[1]);
+
+        return rb_class_new_instance (2, args, cPlaylist);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_current_active → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the name of the active playlist.

+ + + + +
+
static VALUE
+c_playlist_current_active (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_current_active);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_list → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all saved playlists from the medialib. Note that +clients should treat internally used playlists (marked with a leading +underscore) carefully.

+ + + + +
+
static VALUE
+c_playlist_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_list);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_set_next(pos) → result + + + click to toggle source + +
+ + + +
+ +

Sets the next song to be played to pos (an absolute position).

+ + + + +
+
static VALUE
+c_playlist_set_next (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next, pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_set_next_rel(pos) → result + + + click to toggle source + +
+ + + +
+ +

Sets the next song to be played based on the current position where +pos is a value relative to the current position.

+ + + + +
+
static VALUE
+c_playlist_set_next_rel (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next_rel, pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + plugin_list → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array containing a hash of information for each plugin.

+ + + + +
+
static VALUE
+c_plugin_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE type = Qnil;
+
+        rb_scan_args (argc, argv, "01", &type);
+
+        if (NIL_P (type))
+                type = INT2FIX (XMMS_PLUGIN_TYPE_ALL);
+
+        METHOD_ADD_HANDLER_INT (main_list_plugins, type);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + quit → result + + + click to toggle source + +
+ + + +
+ +

Shuts down the XMMS2 daemon.

+ + + + +
+
static VALUE
+c_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (quit);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + signal_mediainfo_reader_unindexed → result + + + click to toggle source + +
+ + + +
+ +

Requests the number of unindexed entries in the medialib.

+ + + + +
+
static VALUE
+c_signal_mediainfo_reader_unindexed (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_mediainfo_reader_unindexed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + signal_playback_playtime → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playtime as a signal.

+ + + + +
+
static VALUE
+c_signal_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_playback_playtime);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + xform_media_browse(url) → result + + + click to toggle source + +
+ + + +
+ +

returns a list of files from the server

+ + + + +
+
static VALUE
+c_xform_media_browse (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (xform_media_browse, url);
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Client/Async.html b/src/clients/lib/ruby/doc/Xmms/Client/Async.html new file mode 100644 index 000000000..03e647364 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Client/Async.html @@ -0,0 +1,230 @@ + + + + + + +class Xmms::Client::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::Async +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(name) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 21
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 25
+def method_missing(id, *args, &block)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(block_given? && (ret.is_a?(Xmms::Result) ||
+           ret.is_a?(Xmms::BroadcastResult) || ret.is_a?(Xmms::SignalResult)))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Async.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Async.new(ret)
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Client/ClientError.html b/src/clients/lib/ruby/doc/Xmms/Client/ClientError.html new file mode 100644 index 000000000..5848bc8c5 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Client/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Client::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Client/DisconnectedError.html b/src/clients/lib/ruby/doc/Xmms/Client/DisconnectedError.html new file mode 100644 index 000000000..ec5eefc68 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Client/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Client::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Client/Sync.html b/src/clients/lib/ruby/doc/Xmms/Client/Sync.html new file mode 100644 index 000000000..3c0b7dd64 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Client/Sync.html @@ -0,0 +1,230 @@ + + + + + + +class Xmms::Client::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(name) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 21
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 25
+def method_missing(id, *args)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result) || ret.is_a?(Xmms::BroadcastResult) ||
+           ret.is_a?(Xmms::SignalResult))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Sync.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Sync.new(ret)
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection.html b/src/clients/lib/ruby/doc/Xmms/Collection.html new file mode 100644 index 000000000..28fbb712d --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection.html @@ -0,0 +1,831 @@ + + + + + + +class Xmms::Collection - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + c = Xmms::Collection.new(type) + + + click to toggle source + +
+ + + +
+ +

Returns a new Xmms::Collection object of type +type.

+ + + + +
+
static VALUE
+c_coll_init (VALUE self, VALUE type)
+{
+        COLL_METHOD_HANDLER_HEADER
+
+        coll->real = xmmsv_new_coll (check_int32 (type));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.parse(pattern) + + + click to toggle source + +
+ + + +
+ +

Returns a collection matching a String pattern. See the wiki for +details on how to construct a pattern string.

+ + + + +
+
static VALUE
+c_coll_parse (VALUE klass, VALUE pattern)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        if (!xmmsv_coll_parse (StringValuePtr (pattern), &coll->real)) {
+                rb_raise (ePatternError, "invalid pattern");
+        }
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.universe + + + click to toggle source + +
+ + + +
+ +

Returns a collection referencing the “All Media” set.

+ + + + +
+
static VALUE
+c_coll_universe (VALUE klass)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        coll->real = xmmsv_new_coll (XMMS_COLLECTION_TYPE_UNIVERSE);
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ &(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: intersect +
+ +
+ + +
+ +
+ and(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: intersect +
+ +
+ + +
+ + +
+ + attributes + + + click to toggle source + +
+ + + +
+ +

Returns the attributes of the collection.

+ + + + +
+
static VALUE
+c_coll_attributes (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->attributes))
+                coll->attributes = rb_class_new_instance (1, &self, cAttributes);
+
+        return coll->attributes;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + complement → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical complement of c.

+ + + + +
+
# File xmmsclient.rb, line 49
+def complement
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_COMPLEMENT)
+        c.operands << self
+        c
+end
+
+ +
+ + +
+ Also aliased as: not, ~ +
+ + + +
+ + +
+ + +
+ + idlist + + + click to toggle source + +
+ + + +
+ +

Gets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_get (VALUE self)
+{
+        VALUE ary = rb_ary_new ();
+        xmmsv_t *ret = NULL;
+        xmmsv_list_iter_t *it = NULL;
+        int32_t entry;
+
+        COLL_METHOD_ADD_HANDLER_RET (idlist_get)
+
+        xmmsv_get_list_iter (ret, &it);
+        for (xmmsv_list_iter_first (it);
+             xmmsv_list_iter_valid (it);
+             xmmsv_list_iter_next (it)) {
+
+                xmmsv_list_iter_entry_int (it, &entry);
+                rb_ary_push (ary, INT2NUM (entry));
+        }
+        xmmsv_list_iter_explicit_destroy (it);
+
+        return ary;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + idlist=(_idlist_) + + + click to toggle source + +
+ + + +
+ +

Sets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_set (VALUE self, VALUE ids)
+{
+        int i;
+        int *ary = NULL;
+        VALUE *rb_ary;
+        int rb_ary_len;
+
+        Check_Type (ids, T_ARRAY);
+        COLL_METHOD_HANDLER_HEADER
+
+        rb_ary = RARRAY_PTR (ids);
+        rb_ary_len = RARRAY_LEN (ids);
+
+        ary = malloc (sizeof (int) * (rb_ary_len + 1));
+
+        for (i = 0; i < rb_ary_len; i++)
+                ary[i] = NUM2INT (rb_ary[i]);
+
+        ary[i] = 0;
+
+        xmmsv_coll_set_idlist (coll->real, ary);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + intersect(other) → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical AND of c and +other.

+ + + + +
+
# File xmmsclient.rb, line 37
+def intersect(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_INTERSECTION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+ +
+ + +
+ Also aliased as: and, & +
+ + + +
+ + +
+ +
+ not() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: complement +
+ +
+ + +
+ + +
+ + operands + + + click to toggle source + +
+ + + +
+ +

Gets a list of the operands that make up the collection.

+ + + + +
+
static VALUE
+c_coll_operands (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->operands))
+                coll->operands = rb_class_new_instance (1, &self, cOperands);
+
+        return coll->operands;
+}
+
+ +
+ + + + +
+ + +
+ +
+ or(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: union +
+ +
+ + +
+ + +
+ + type + + + click to toggle source + +
+ + + +
+ +

Returns the type of the collection as an Integer.

+ + + + +
+
static VALUE
+c_coll_type_get (VALUE self)
+{
+        xmmsc_coll_type_t ret;
+
+        COLL_METHOD_ADD_HANDLER_RET (get_type)
+
+        return INT2NUM (ret);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + union(other) → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical OR of c and +other.

+ + + + +
+
# File xmmsclient.rb, line 25
+def union(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_UNION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+ +
+ + +
+ Also aliased as: or, | +
+ + + +
+ + +
+ +
+ |(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: union +
+ +
+ + +
+ +
+ ~() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: complement +
+ +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/Async.html b/src/clients/lib/ruby/doc/Xmms/Collection/Async.html new file mode 100644 index 000000000..79fddf6a1 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/Async.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Collection::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Async +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(coll) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 46
+def initialize(coll)
+        @real = coll
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 50
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/Attributes.html b/src/clients/lib/ruby/doc/Xmms/Collection/Attributes.html new file mode 100644 index 000000000..9e018d92c --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/Attributes.html @@ -0,0 +1,674 @@ + + + + + + +class Xmms::Collection::Attributes - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Attributes +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ [](p1) + + click to toggle source + +
+ + +
+ +

HAVE_RB_PROTECT_INSPECT

+ + + + +
+
static VALUE
+c_attrs_aref (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+        const char *value;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), &value);
+        if (!s)
+                return Qnil;
+
+        return rb_str_new2 (value);
+}
+
+ +
+ + + + +
+ + +
+ +
+ []=(p1, p2) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_aset (VALUE self, VALUE key, VALUE value)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+        StringValue (value);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_set_string (coll->real, StringValuePtr (key),
+                                         StringValuePtr (value));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_delete (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_remove (coll->real, StringValuePtr (key));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_PAIR));
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: each_pair +
+ + + +
+ + +
+ +
+ each_key() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_key (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_KEY));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each_pair() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: each +
+ +
+ + +
+ +
+ each_value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_value (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_VALUE));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ has_key?(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_has_key (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), NULL);
+
+        return s ? Qtrue : Qfalse;
+}
+
+ +
+ + +
+ Also aliased as: include?, key?, member? +
+ + + +
+ + +
+ +
+ include?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ inspect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_inspect (VALUE self)
+{
+        return rb_protect_inspect (attrs_inspect, self, 0);
+}
+
+ +
+ + + + +
+ + +
+ +
+ key?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ member?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/ClientError.html b/src/clients/lib/ruby/doc/Xmms/Collection/ClientError.html new file mode 100644 index 000000000..580fa2497 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/CollectionError.html b/src/clients/lib/ruby/doc/Xmms/Collection/CollectionError.html new file mode 100644 index 000000000..599a5a082 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/CollectionError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::CollectionError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::CollectionError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/DisconnectedError.html b/src/clients/lib/ruby/doc/Xmms/Collection/DisconnectedError.html new file mode 100644 index 000000000..4e87a39f9 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/Operands.html b/src/clients/lib/ruby/doc/Xmms/Collection/Operands.html new file mode 100644 index 000000000..711ac2aa8 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/Operands.html @@ -0,0 +1,348 @@ + + + + + + +class Xmms::Collection::Operands - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Operands +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ <<(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: push +
+ +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_delete (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_remove_operand (coll->real, coll2->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *operands_list;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        operands_list = xmmsv_coll_operands_get (coll->real);
+
+        xmmsv_list_foreach (operands_list, operands_each, NULL);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ push(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_push (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_add_operand (coll->real, coll2->real);
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: << +
+ + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/PatternError.html b/src/clients/lib/ruby/doc/Xmms/Collection/PatternError.html new file mode 100644 index 000000000..8fc1f5f23 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/PatternError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::PatternError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::PatternError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Collection/Sync.html b/src/clients/lib/ruby/doc/Xmms/Collection/Sync.html new file mode 100644 index 000000000..7a6b1281c --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Collection/Sync.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Collection::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(coll) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 46
+def initialize(coll)
+        @real = coll
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 50
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Dict.html b/src/clients/lib/ruby/doc/Xmms/Dict.html new file mode 100644 index 000000000..9d42d3f28 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Dict.html @@ -0,0 +1,643 @@ + + + + + + +class Xmms::Dict - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Dict +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ [](p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_aref (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        xmmsv_t *value;
+        const char *ckey;
+        int s;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        s = xmmsv_dict_iter_find (it, ckey);
+        if (!s)
+                return Qnil;
+
+        xmmsv_dict_iter_pair (it, NULL, &value);
+
+        return extract_value (self, value);
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_pair, &self);
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: each_pair +
+ + + +
+ + +
+ +
+ each_key() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each_key (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_key, NULL);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each_pair() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: each +
+ +
+ + +
+ +
+ each_value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each_value (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_value, &self);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ empty?() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_empty (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return size == 0 ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ +
+ has_key?(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_has_key (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        const char *ckey;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        return xmmsv_dict_iter_find (it, ckey) ? Qtrue : Qfalse;
+}
+
+ +
+ + +
+ Also aliased as: include?, key?, member? +
+ + + +
+ + +
+ +
+ include?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ inspect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_inspect (VALUE self)
+{
+        return rb_protect_inspect (dict_inspect, self, 0);
+}
+
+ +
+ + + + +
+ + +
+ +
+ key?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ length() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: size +
+ +
+ + +
+ +
+ member?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ size() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_size (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return INT2NUM (size);
+}
+
+ +
+ + +
+ Also aliased as: length +
+ + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist.html b/src/clients/lib/ruby/doc/Xmms/Playlist.html new file mode 100644 index 000000000..f5d5091c8 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist.html @@ -0,0 +1,840 @@ + + + + + + +class Xmms::Playlist - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + pl = Xmms::Playlist.new(xc, [name]) + + + click to toggle source + +
+ + + +
+ +

Initializes a new Xmms::Playlist using the +playlist named name and the Xmms::Client +instance xc. Xmms::Client#playlist is a useful +shortcut. name is is the name of the playlist and the active +playlist will be used if it is not specified. Raises PlaylistError if the playlist name +is invalid.

+ + + + +
+
static VALUE
+c_init (int argc, VALUE *argv, VALUE self)
+{
+        RbPlaylist *pl = NULL;
+        VALUE name, xmms = Qnil;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        rb_scan_args (argc, argv, "11", &xmms, &name);
+
+        /* FIXME: Check type! */
+        pl->xmms = xmms;
+
+        if (NIL_P (name))
+                pl->name_value = rb_str_new2 (XMMS_ACTIVE_PLAYLIST);
+        else
+                pl->name_value = rb_str_dup (name);
+
+        OBJ_FREEZE (pl->name_value);
+
+        pl->name = StringValuePtr (pl->name_value);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + add_collection(coll [, order]) → result + + + click to toggle source + +
+ + + +
+ +

Adds the collection coll to the playlist.

+ + + + +
+
static VALUE
+c_add_collection (int argc, VALUE *argv, VALUE self)
+{
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        VALUE rbcoll, order = Qnil;
+        xmmsv_t *corder = NULL;
+        xmmsc_coll_t *coll;
+
+        rb_scan_args (argc, argv, "11", &rbcoll, &order);
+
+        coll = FROM_XMMS_CLIENT_COLLECTION (rbcoll);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_playlist_add_collection (xmms->real, pl->name,
+                                             coll, corder);
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + add_entry(arg) → result + + + click to toggle source + +
+ + + +
+ +

Adds an entry to the playlist. arg can be either a URL or an id.

+ + + + +
+
static VALUE
+c_add_entry (VALUE self, VALUE arg)
+{
+        int32_t id;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_add_url (xmms->real, pl->name,
+                                              StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_add_id (xmms->real, pl->name, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + clear → result + + + click to toggle source + +
+ + + +
+ +

Clears the playlist.

+ + + + +
+
static VALUE
+c_clear (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (clear)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + current_pos → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the current position of the playlist. May raise an Xmms::Result::ValueError exception if the +current position is undefined.

+ + + + +
+
static VALUE
+c_current_pos (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (current_pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + entries → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array containing ids for each position of the playlist.

+ + + + +
+
static VALUE
+c_list_entries (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (list_entries)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + insert_entry(pos, arg) → result + + + click to toggle source + +
+ + + +
+ +

Inserts an entry to the current playlist at position pos in the +playlist. arg can be either a URL or an id.

+ + + + +
+
static VALUE
+c_insert_entry (VALUE self, VALUE pos, VALUE arg)
+{
+        int32_t id;
+        int32_t ipos;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        ipos = check_int32 (pos);
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_insert_url (xmms->real, pl->name,
+                                                 ipos, StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_insert_id (xmms->real, pl->name,
+                                                ipos, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + load → result + + + click to toggle source + +
+ + + +
+ +

Loads the playlist as the current active playlist.

+ + + + +
+
static VALUE
+c_load (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (load);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_move_entry(current_pos, new_pos) → result + + + click to toggle source + +
+ + + +
+ +

Moves the entry at current_pos to new_pos in the +playlist.

+ + + + +
+
static VALUE
+c_move_entry (VALUE self, VALUE cur_pos, VALUE new_pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_INT (move_entry, cur_pos, new_pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + name → string + + + click to toggle source + +
+ + + +
+ +

Returns the name of the playlist in the medialib as a String.

+ + + + +
+
static VALUE
+c_name (VALUE self)
+{
+        RbPlaylist *pl = NULL;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        return pl->name_value;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + radd(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path to the playlist.

+ + + + +
+
static VALUE
+c_radd (VALUE self, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_STR (radd, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + remove → result + + + click to toggle source + +
+ + + +
+ +

Removes the playlist from the medialib.

+ + + + +
+
static VALUE
+c_remove (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (remove);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + remove_entry(pos) → result + + + click to toggle source + +
+ + + +
+ +

Removes the entry at pos from the playlist.

+ + + + +
+
static VALUE
+c_remove_entry (VALUE self, VALUE pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT (remove_entry, pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + rinsert(pos, path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path at position +pos in the playlist.

+ + + + +
+
static VALUE
+c_rinsert (VALUE self, VALUE pos, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_STR (rinsert, pos, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + shuffle → result + + + click to toggle source + +
+ + + +
+ +

Shuffles the playlist.

+ + + + +
+
static VALUE
+c_shuffle (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (shuffle)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + sort(properties) → result + + + click to toggle source + +
+ + + +
+ +

Sorts the playlist on properties, which is an array of medialib +properties such as [“title”, “artist”].

+ + + + +
+
static VALUE
+c_sort (VALUE self, VALUE props)
+{
+        xmmsv_t *cprops;
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        cprops = parse_string_array2 (props);
+        res = xmmsc_playlist_sort (xmms->real, pl->name, cprops);
+        xmmsv_unref (cprops);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist/Async.html b/src/clients/lib/ruby/doc/Xmms/Playlist/Async.html new file mode 100644 index 000000000..4bc91328c --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist/Async.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Playlist::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::Async +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(plist) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 65
+def initialize(plist)
+        @real = plist
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 69
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist/ClientError.html b/src/clients/lib/ruby/doc/Xmms/Playlist/ClientError.html new file mode 100644 index 000000000..cf3b11d96 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist/DisconnectedError.html b/src/clients/lib/ruby/doc/Xmms/Playlist/DisconnectedError.html new file mode 100644 index 000000000..53cccbeaf --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist/PlaylistError.html b/src/clients/lib/ruby/doc/Xmms/Playlist/PlaylistError.html new file mode 100644 index 000000000..319706a65 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist/PlaylistError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::PlaylistError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::PlaylistError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Playlist/Sync.html b/src/clients/lib/ruby/doc/Xmms/Playlist/Sync.html new file mode 100644 index 000000000..e02c1f6e4 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Playlist/Sync.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Playlist::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(plist) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 65
+def initialize(plist)
+        @real = plist
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 69
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/RawDict.html b/src/clients/lib/ruby/doc/Xmms/RawDict.html new file mode 100644 index 000000000..04ca10a4e --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/RawDict.html @@ -0,0 +1,186 @@ + + + + + + +class Xmms::RawDict - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::RawDict +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + to_propdict( src_prefs ) → propdict + + + click to toggle source + +
+ + + +
+ +

Transforms a RawDict (key-source-value) to a +regular key-value dict. The optional src_prefs argument restricts which +sources are considered. The value may be a string or an array of strings, +which may contain wildcards. Example: rawdict.to_propdict( +['server','plugin/*'] )

+ + + + +
+
static VALUE
+c_raw_dict_to_propdict (int argc, VALUE *argv, VALUE self)
+{
+        VALUE value, sources = Qnil;
+        RbDict *dict = NULL, *dict2 = NULL;
+        xmmsv_t *inner_dict;
+        const char **csources = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        rb_scan_args (argc, argv, "01", &sources);
+
+        if (!NIL_P (sources))
+                csources = parse_string_array (sources);
+        inner_dict = xmmsv_propdict_to_dict (dict->real, csources);
+        if (csources)
+                free (csources);
+
+        value = Data_Make_Struct (cDict, RbDict,
+                                  c_dict_mark, c_dict_free,
+                                  dict2);
+
+        // don't add a second reference here
+        dict2->real = inner_dict;
+        dict2->parent = dict->parent;
+
+        rb_obj_call_init (value, 0, NULL);
+
+        return value;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Result.html b/src/clients/lib/ruby/doc/Xmms/Result.html new file mode 100644 index 000000000..e1eebc5a7 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Result.html @@ -0,0 +1,349 @@ + + + + + + +class Xmms::Result - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ error() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_get_error (VALUE self)
+{
+        RbResult *res;
+        xmmsv_t *val;
+        const char *error;
+        int ret;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        ret = xmmsv_get_error (val, &error);
+
+        return rb_str_new2 (ret ? error : "");
+}
+
+ +
+ + + + +
+ + +
+ +
+ error?() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_is_error (VALUE self)
+{
+        RbResult *res;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        return xmmsc_result_iserror (res->real) ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + notifier { |res| } + + + click to toggle source + +
+ + + +
+ +

Sets the block that's executed when res is handled. Used by +asyncronous results only.

+ + + + +
+
static VALUE
+c_notifier_set (VALUE self)
+{
+        VALUE callback;
+        RbResult *res = NULL;
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        callback = rb_block_proc ();
+
+        Data_Get_Struct (res->xmms, RbXmmsClient, xmms);
+        rb_ary_push (xmms->result_callbacks, callback);
+
+        xmmsc_result_notifier_set (res->real, on_signal, (void *) callback);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_value_get (VALUE self)
+{
+        RbResult *res = NULL;
+        xmmsv_t *val;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        return extract_value (self, val);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + wait → self + + + click to toggle source + +
+ + + +
+ +

Waits for res to be handled.

+ + + + +
+
static VALUE
+c_wait (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_wait (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Result/ResultError.html b/src/clients/lib/ruby/doc/Xmms/Result/ResultError.html new file mode 100644 index 000000000..4b6638b9c --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Result/ResultError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Result::ResultError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result::ResultError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/Result/ValueError.html b/src/clients/lib/ruby/doc/Xmms/Result/ValueError.html new file mode 100644 index 000000000..a4813efa8 --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/Result/ValueError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Result::ValueError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result::ValueError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/Xmms/SignalResult.html b/src/clients/lib/ruby/doc/Xmms/SignalResult.html new file mode 100644 index 000000000..5ba50d2fd --- /dev/null +++ b/src/clients/lib/ruby/doc/Xmms/SignalResult.html @@ -0,0 +1,160 @@ + + + + + + +class Xmms::SignalResult - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::SignalResult +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ disconnect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/created.rid b/src/clients/lib/ruby/doc/created.rid new file mode 100644 index 000000000..8227661c3 --- /dev/null +++ b/src/clients/lib/ruby/doc/created.rid @@ -0,0 +1,16 @@ +Thu, 17 Mar 2016 00:13:13 +0100 +./wscript Thu, 02 Apr 2015 00:10:50 +0200 +./rb_result.h Sat, 30 Jan 2016 15:11:02 +0100 +./async.rb Sat, 30 Jan 2016 15:11:02 +0100 +./rb_result.c Wed, 16 Mar 2016 21:12:57 +0100 +./rb_collection.c Thu, 17 Mar 2016 00:11:19 +0100 +./rb_collection.h Sat, 30 Jan 2016 15:11:02 +0100 +./xmmsclient.rb Sat, 30 Jan 2016 15:11:02 +0100 +./rb_xmmsclient_glib.c Wed, 16 Mar 2016 21:42:22 +0100 +./rb_xmmsclient_ecore.c Sat, 30 Jan 2016 15:11:02 +0100 +./rb_xmmsclient_main.c Sat, 30 Jan 2016 15:11:02 +0100 +./rb_xmmsclient.c Wed, 16 Mar 2016 21:38:31 +0100 +./sync.rb Sat, 30 Jan 2016 15:11:02 +0100 +./rb_playlist.c Wed, 16 Mar 2016 20:44:59 +0100 +./rb_playlist.h Sat, 30 Jan 2016 15:11:02 +0100 +./rb_xmmsclient.h Sat, 30 Jan 2016 15:11:02 +0100 diff --git a/src/clients/lib/ruby/doc/css/fonts.css b/src/clients/lib/ruby/doc/css/fonts.css new file mode 100644 index 000000000..e9e721183 --- /dev/null +++ b/src/clients/lib/ruby/doc/css/fonts.css @@ -0,0 +1,167 @@ +/* + * Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + * with Reserved Font Name "Source". All Rights Reserved. Source is a + * trademark of Adobe Systems Incorporated in the United States and/or other + * countries. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 400; + src: local("Source Code Pro"), + local("SourceCodePro-Regular"), + url("fonts/SourceCodePro-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 700; + src: local("Source Code Pro Bold"), + local("SourceCodePro-Bold"), + url("fonts/SourceCodePro-Bold.ttf") format("truetype"); +} + +/* + * Copyright (c) 2010, Łukasz Dziedzic (dziedzic@typoland.com), + * with Reserved Font Name Lato. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 300; + src: local("Lato Light"), + local("Lato-Light"), + url("fonts/Lato-Light.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 300; + src: local("Lato Light Italic"), + local("Lato-LightItalic"), + url("fonts/Lato-LightItalic.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 700; + src: local("Lato Regular"), + local("Lato-Regular"), + url("fonts/Lato-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 700; + src: local("Lato Italic"), + local("Lato-Italic"), + url("fonts/Lato-RegularItalic.ttf") format("truetype"); +} + +/* + * ----------------------------------------------------------- + * SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + * ----------------------------------------------------------- + * + * PREAMBLE + * The goals of the Open Font License (OFL) are to stimulate worldwide + * development of collaborative font projects, to support the font creation + * efforts of academic and linguistic communities, and to provide a free and + * open framework in which fonts may be shared and improved in partnership + * with others. + * + * The OFL allows the licensed fonts to be used, studied, modified and + * redistributed freely as long as they are not sold by themselves. The + * fonts, including any derivative works, can be bundled, embedded, + * redistributed and/or sold with any software provided that any reserved + * names are not used by derivative works. The fonts and derivatives, + * however, cannot be released under any other type of license. The + * requirement for fonts to remain under this license does not apply + * to any document created using the fonts or their derivatives. + * + * DEFINITIONS + * "Font Software" refers to the set of files released by the Copyright + * Holder(s) under this license and clearly marked as such. This may + * include source files, build scripts and documentation. + * + * "Reserved Font Name" refers to any names specified as such after the + * copyright statement(s). + * + * "Original Version" refers to the collection of Font Software components as + * distributed by the Copyright Holder(s). + * + * "Modified Version" refers to any derivative made by adding to, deleting, + * or substituting -- in part or in whole -- any of the components of the + * Original Version, by changing formats or by porting the Font Software to a + * new environment. + * + * "Author" refers to any designer, engineer, programmer, technical + * writer or other person who contributed to the Font Software. + * + * PERMISSION & CONDITIONS + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of the Font Software, to use, study, copy, merge, embed, modify, + * redistribute, and sell modified and unmodified copies of the Font + * Software, subject to the following conditions: + * + * 1) Neither the Font Software nor any of its individual components, + * in Original or Modified Versions, may be sold by itself. + * + * 2) Original or Modified Versions of the Font Software may be bundled, + * redistributed and/or sold with any software, provided that each copy + * contains the above copyright notice and this license. These can be + * included either as stand-alone text files, human-readable headers or + * in the appropriate machine-readable metadata fields within text or + * binary files as long as those fields can be easily viewed by the user. + * + * 3) No Modified Version of the Font Software may use the Reserved Font + * Name(s) unless explicit written permission is granted by the corresponding + * Copyright Holder. This restriction only applies to the primary font name as + * presented to the users. + * + * 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + * Software shall not be used to promote, endorse or advertise any + * Modified Version, except to acknowledge the contribution(s) of the + * Copyright Holder(s) and the Author(s) or with their explicit written + * permission. + * + * 5) The Font Software, modified or unmodified, in part or in whole, + * must be distributed entirely under this license, and must not be + * distributed under any other license. The requirement for fonts to + * remain under this license does not apply to any document created + * using the Font Software. + * + * TERMINATION + * This license becomes null and void if any of the above conditions are + * not met. + * + * DISCLAIMER + * THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + * OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + * DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM + * OTHER DEALINGS IN THE FONT SOFTWARE. + */ + diff --git a/src/clients/lib/ruby/doc/css/rdoc.css b/src/clients/lib/ruby/doc/css/rdoc.css new file mode 100644 index 000000000..2f4dca7e0 --- /dev/null +++ b/src/clients/lib/ruby/doc/css/rdoc.css @@ -0,0 +1,590 @@ +/* + * "Darkfish" Rdoc CSS + * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* vim: ft=css et sw=2 ts=2 sts=2 */ +/* Base Green is: #6C8C22 */ + +* { padding: 0; margin: 0; } + +body { + background: #fafafa; + font-family: Lato, sans-serif; + font-weight: 300; +} + +h1 span, +h2 span, +h3 span, +h4 span, +h5 span, +h6 span { + position: relative; + + display: none; + padding-left: 1em; + line-height: 0; + vertical-align: baseline; + font-size: 10px; +} + +h1 span { top: -1.3em; } +h2 span { top: -1.2em; } +h3 span { top: -1.0em; } +h4 span { top: -0.8em; } +h5 span { top: -0.5em; } +h6 span { top: -0.5em; } + +h1:hover span, +h2:hover span, +h3:hover span, +h4:hover span, +h5:hover span, +h6:hover span { + display: inline; +} + +:link, +:visited { + color: #6C8C22; + text-decoration: none; +} + +:link:hover, +:visited:hover { + border-bottom: 1px dotted #6C8C22; +} + +code, +pre { + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @group Generic Classes */ + +.initially-hidden { + display: none; +} + +#search-field { + width: 98%; + background: white; + border: none; + height: 1.5em; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + text-align: left; +} +#search-field:focus { + background: #f1edba; +} +#search-field:-moz-placeholder, +#search-field::-webkit-input-placeholder { + font-weight: bold; + color: #666; +} + +.missing-docs { + font-size: 120%; + background: white url(images/wrench_orange.png) no-repeat 4px center; + color: #ccc; + line-height: 2em; + border: 1px solid #d00; + opacity: 1; + padding-left: 20px; + text-indent: 24px; + letter-spacing: 3px; + font-weight: bold; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +.target-section { + border: 2px solid #dcce90; + border-left-width: 8px; + padding: 0 1em; + background: #fff3c2; +} + +/* @end */ + +/* @group Index Page, Standalone file pages */ +.table-of-contents ul { + margin: 1em; + list-style: none; +} + +.table-of-contents ul ul { + margin-top: 0.25em; +} + +.table-of-contents ul :link, +.table-of-contents ul :visited { + font-size: 16px; +} + +.table-of-contents li { + margin-bottom: 0.25em; +} + +.table-of-contents li .toc-toggle { + width: 16px; + height: 16px; + background: url(images/add.png) no-repeat; +} + +.table-of-contents li .toc-toggle.open { + background: url(images/delete.png) no-repeat; +} + +/* @end */ + +/* @group Top-Level Structure */ + +nav { + float: left; + width: 260px; + font-family: Helvetica, sans-serif; + font-size: 14px; +} + +main { + display: block; + margin: 0 2em 5em 260px; + padding-left: 20px; + min-width: 340px; + font-size: 16px; +} + +main h1, +main h2, +main h3, +main h4, +main h5, +main h6 { + font-family: Helvetica, sans-serif; +} + +.table-of-contents main { + margin-left: 2em; +} + +#validator-badges { + clear: both; + margin: 1em 1em 2em; + font-size: smaller; +} + +/* @end */ + +/* @group navigation */ +nav { + margin-bottom: 1em; +} + +nav .nav-section { + margin-top: 2em; + border-top: 2px solid #aaa; + font-size: 90%; + overflow: hidden; +} + +nav h2 { + margin: 0; + padding: 2px 8px 2px 8px; + background-color: #e8e8e8; + color: #555; + font-size: 125%; + text-align: center; +} + +nav h3, +#table-of-contents-navigation { + margin: 0; + padding: 2px 8px 2px 8px; + text-align: right; + background-color: #e8e8e8; + color: #555; +} + +nav ul, +nav dl, +nav p { + padding: 4px 8px 0; + list-style: none; +} + +#project-navigation .nav-section { + margin: 0; + border-top: 0; +} + +#home-section h2 { + text-align: center; +} + +#table-of-contents-navigation { + font-size: 1.2em; + font-weight: bold; + text-align: center; +} + +#search-section { + margin-top: 0; + border-top: 0; +} + +#search-field-wrapper { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + padding: 3px 8px; + background-color: #e8e8e8; + color: #555; +} + +ul.link-list li { + white-space: nowrap; + line-height: 1.4em; +} + +ul.link-list .type { + font-size: 8px; + text-transform: uppercase; + color: white; + background: #969696; + padding: 2px 4px; + -webkit-border-radius: 5px; +} + +.calls-super { + background: url(images/arrow_up.png) no-repeat right center; +} + +/* @end */ + +/* @group Documentation Section */ +main { + color: #333; +} + +main > h1:first-child, +main > h2:first-child, +main > h3:first-child, +main > h4:first-child, +main > h5:first-child, +main > h6:first-child { + margin-top: 0px; +} + +main sup { + vertical-align: super; + font-size: 0.8em; +} + +/* The heading with the class name */ +main h1[class] { + margin-top: 0; + margin-bottom: 1em; + font-size: 2em; + color: #6C8C22; +} + +main h1 { + margin: 2em 0 0.5em; + font-size: 1.7em; +} + +main h2 { + margin: 2em 0 0.5em; + font-size: 1.5em; +} + +main h3 { + margin: 2em 0 0.5em; + font-size: 1.2em; +} + +main h4 { + margin: 2em 0 0.5em; + font-size: 1.1em; +} + +main h5 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main h6 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main p { + margin: 0 0 0.5em; + line-height: 1.4em; +} + +main pre { + margin: 1.2em 0.5em; + padding: 1em; + font-size: 0.8em; +} + +main hr { + margin: 1.5em 1em; + border: 2px solid #ddd; +} + +main blockquote { + margin: 0 2em 1.2em 1.2em; + padding-left: 0.5em; + border-left: 2px solid #ddd; +} + +main ol, +main ul { + margin: 1em 2em; +} + +main li > p { + margin-bottom: 0.5em; +} + +main dl { + margin: 1em 0.5em; +} + +main dt { + margin-bottom: 0.5em; + font-weight: bold; +} + +main dd { + margin: 0 1em 1em 0.5em; +} + +main header h2 { + margin-top: 2em; + border-width: 0; + border-top: 4px solid #bbb; + font-size: 130%; +} + +main header h3 { + margin: 2em 0 1.5em; + border-width: 0; + border-top: 3px solid #bbb; + font-size: 120%; +} + +.documentation-section-title { + position: relative; +} +.documentation-section-title .section-click-top { + position: absolute; + top: 6px; + left: 12px; + font-size: 10px; + color: #9b9877; + visibility: hidden; + padding-left: 0.5px; +} + +.documentation-section-title:hover .section-click-top { + visibility: visible; +} + +.constants-list > dl { + margin: 1em 0 2em; + border: 0; +} + +.constants-list > dl dt { + margin-bottom: 0.75em; + padding-left: 0; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; +} + +.constants-list > dl dt a { + color: inherit; +} + +.constants-list > dl dd { + margin: 0 0 2em 0; + padding: 0; + color: #666; +} + +.documentation-section h2 { + position: relative; +} + +.documentation-section h2 a { + position: absolute; + top: 8px; + right: 10px; + font-size: 12px; + color: #9b9877; + visibility: hidden; +} + +.documentation-section h2:hover a { + visibility: visible; +} + +/* @group Method Details */ + +main .method-source-code { + display: none; +} + +main .method-description .method-calls-super { + color: #333; + font-weight: bold; +} + +main .method-detail { + margin-bottom: 2.5em; + cursor: pointer; +} + +main .method-detail:target { + margin-left: -10px; + border-left: 10px solid #f1edba; +} + +main .method-heading { + position: relative; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; + font-weight: bold; + color: #333; +} +main .method-heading :link, +main .method-heading :visited { + color: inherit; +} +main .method-click-advice { + position: absolute; + top: 2px; + right: 5px; + font-size: 12px; + color: #9b9877; + visibility: hidden; + padding-right: 20px; + line-height: 20px; + background: url(images/zoom.png) no-repeat right top; +} +main .method-heading:hover .method-click-advice { + visibility: visible; +} + +main .method-alias .method-heading { + color: #666; +} + +main .method-description, +main .aliases { + margin-top: 0.75em; + color: #333; +} + +main .aliases { + padding-top: 4px; + font-style: italic; + cursor: default; +} +main .method-description ul { + margin-left: 1.5em; +} + +main #attribute-method-details .method-detail:hover { + background-color: transparent; + cursor: default; +} +main .attribute-access-type { + text-transform: uppercase; + padding: 0 1em; +} +/* @end */ + +/* @end */ + +/* @group Source Code */ + +pre { + margin: 0.5em 0; + border: 1px dashed #999; + padding: 0.5em; + background: #262626; + color: white; + overflow: auto; +} + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #dc0000; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } + +/* @end */ + + +/* @group search results */ +#search-results { + font-family: Lato, sans-serif; + font-weight: 300; +} + +#search-results .search-match { + font-family: Helvetica, sans-serif; + font-weight: normal; +} + +#search-results .search-selected { + background: #e8e8e8; + border-bottom: 1px solid transparent; +} + +#search-results li { + list-style: none; + border-bottom: 1px solid #aaa; + margin-bottom: 0.5em; +} + +#search-results li:last-child { + border-bottom: none; + margin-bottom: 0; +} + +#search-results li p { + padding: 0; + margin: 0.5em; +} + +#search-results .search-namespace { + font-weight: bold; +} + +#search-results li em { + background: yellow; + font-style: normal; +} + +#search-results pre { + margin: 0.5em; + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @end */ + diff --git a/src/clients/lib/ruby/doc/fonts/Lato-Light.ttf b/src/clients/lib/ruby/doc/fonts/Lato-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b49dd43729d456e489a8f4c8ec323a47ab8b9ae8 GIT binary patch literal 94668 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

FsulxL_Yn=fqW!JSYn4UZz_VI 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 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/fonts/Lato-LightItalic.ttf b/src/clients/lib/ruby/doc/fonts/Lato-LightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7959fef0756e905627298817d86513fdf26d6922 GIT binary patch literal 94196 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 Sv(kH?wp@?o-S`p3*#7{ysOP%? literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/fonts/Lato-Regular.ttf b/src/clients/lib/ruby/doc/fonts/Lato-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..839cd589dc5eba0da98b43451b4ec6c328ca48b8 GIT binary patch literal 96184 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

ucu-&%9a>XM7550A4YWv99%x~0LA&?HZ)eRytM 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 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/fonts/Lato-RegularItalic.ttf b/src/clients/lib/ruby/doc/fonts/Lato-RegularItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bababa09e3fad2aa3e788898e7753ff8d80a8e8f GIT binary patch literal 95316 zcmeFa34D~*xj%l+`_4NvnSGzhK1*gM$t0POZL(*wkrl`WAqj*%>;hqjh{)y=aRmd2 z;)a5#;DS=3R4t{~R@!p)+FWa0XpL4|Yqj=PA(Q|2ypynL+k5-DzyD8vik~Ml^RDMS z=lMR{dCrkgLWlu>B*b3PTvLT#l+YFR_>@;QOlXcddpHt@QV6MTsA`^AHYu$|Af%=T z$21d~{TcuH_`yL!YHz~z(`PN7v9#&6eZRu*Kj49bvsSIJd#~Z%Cv^UKoX_oAI(Koe za$PB*3$h4_xNYu?i+^c#@F0pDtQ5YsSvX=lp~= z9V3KGSv+ISQm$O_Frh8K!~OQFW-Oj_{=s+&p%W#9=v$U9S-v9wk5l!8c1p6eOM060TxweGAbnnz7<45(VDj-|(<_{^EB^IMyPf5&yCt zu=~S*DemFK?{Y$`4B`{I$;b2q?kvAca=XwXd@Ma8Ulk#b_*4<2cwBiv`G)Fx^(6HN znuoNx+S~Oh`c7klsne{oykt$c4%&VhsfetIygBlBE?kdVCPATz}d=NZa`exZZ<+c=hiBc7dmaEi2-**N2=p-M0O%m-5zryfqoBt?PlBEX9R)oDdKPpHbR6^& zp7|qu{uuNV(9c1y;vMgy9fP3Xqd$KD{R!Vc!RM#={0#I3?)&ccJe9bH2Z#rh49Wmy zfhvaI#rVF9@qHKL`!2@!U5xL$WFgKi1>FGJ0on<=6VwOV1=<6;AJ;tqdJwc9^bqJ_ z&;igv&?BHjphrQEfu00C4LS;X2J|fG80a|YN1&5<=8y6D6VPdV|2aOtyW^EkgyHLn z0;C4%h6^x$FJt^(#`wLA@p~EL_c93#XOq0)6p}yOLke+C3BI=tca!$vV`K`BEyOj8 zaQ|YQTLM~&-`)7V7TSJ)nI!|3f_QMbJt7J`H*m$KC@C zg5Jk7J^+0P`UvzV9QzdX8OVbkJO)kk3VQJvdhr-EPA9ZYC$!Bg&^E82^`&V2Hc~Kr z9IX$MB0RkWzZc=!Zcq^TUTA<`(tvv!K~4DHjL#N)PQ>S=;akaMe6|h03F&$h()A{p z3MpfnViDfI81G&JVp^jczgLh3vJ$i!_pHV7_4wX{<5%PRCbVTUXbWg7XdCD{(Dk5y ztZ{mwaeAR~dZBT8p>cYlaeAR~dZBT8p>cYlaeAR~dZBT8p>cZ2Q+WT=_&f@F2J|fG z80a{tALpI}Jr6no`XT!CBIqTw<3~6j)=0h3NWJ70oDXZIUh+%u;@?64f&Tvr^q-*j z(62$z`{?5bpxq@f^@`1nB4oI!==yuA9!dj%&L?J)ljvelutbXe($N=sM8#pnbUaC49b$ z&)4vb*FgiI_i^6`pbtSGfxf^s`DjrsT2qUb)Iy$Kf$W@t+?;{dIRhJ847oW2&2t8= z>mj*lMIQQ*4}294&qM2OCauFifsCAijJyLGIRp7PgO=7pK3;)*yaM?+gI3p)6~i@T zC1@>qlTc;8;o-Jp9w`|!>m;`oc8lc3X}S8?n; zJZBK}KA!mj=tIy)pg-Z*r=ZV33iNIxTD1|a+K5(c#M?LG&W*TpBd*+tD>vfGjo-jg zVpg#Sh_46Q>me^aK>JCc{Up$Cg6#B=)Zu*C_I@C{AIRXSg}NytzSWT*!+)B_pnfeiIPhI$}FJ+SrtKwdwP*AL|N19|;GUO$l659IX& zdHq0MKakfC?D>j(1sfxLbouOG`+=f*pr;_5EXhpfF3h_Hh>lnpv41d@c>#pfEEv+#RF*Z0G>F2 zI|hgknlc`v9SfU8y@x^4I+NbakU+?OD^d!X6k zAtT2jBgY}Rd!X6kAuGqB$>Jd|$04nIAgy~Kt$QG?dmycQAgy~Kt$QGuFF`V2f@JQ2 zWbT1%9fxckhlYrUhKPrDh=+EFhpZiktR07}9VeMY2n`bjNDT^G{rza|ezbN!TDu>u z-4E>L0(Z5*-8|qf1-Pq4%X`rBLnBsyKUswPFIxTmq#M6i;M$cSX8qUWvj@k*9>9L| zVn2GZAHCR*UhGFN_M;d3fw2_yqz66eK~MIhC-Am$?1Be?XM6zq5cCn~QV-ypr{DaL zpH)CkIgnEhIa&odS_QP!0xf5Oma{<1S)k=CP;wRsISUzE1sPif8CwMzTLl?g1sPif z8CwNZoCPY*0u^V0inBn)S)k%9P;nNhI15yq1uD)06=#8pvp~gJAmS_#aTbU;3q+g+ zBF+L4XCbevfPk|=z*!*RETsP|q`w@}Uk>Rnhb*J5-#B|=5q*nMzhX412mnpF!>^0J z!9R;4?!t9@L3e}h0Wq7)>}=Ns9j62KFY382=(#TFIWOM4Pt?9^TC~ z^k5%QR1f^u1ONM=C%b^2dZ4EMAL`2+aP1DzPSBm8KF}`E9?<=G?*pI*LHj`ufgT1O z038H90y+eG6!aMANzhYx@6-4^3VH_gEa({MIH(`zo&!A(Isy72`tc$ttW*8q=srl5 zA5!IqUhM*R_d&Y+@M3D=#ni%!nFcRr8oZckKy^KIRQ(0L`zL&7y7yDiXP|#g2Y>Ia z{=eX@j)x`92P%)jn&!ir=0lI}1v2+Sj~;^uastRa0Yn}H688XseL!Fz5ZDI<_5p#9 z0)Z!hz!N}V9}su~2I4vV0!TUr-P{Kh^#MhFK+y>xs1FEw1PFQr z7Cj#pJs+sq3#*6BoW1ZxYBAPcjCD80 zdOOB?JG5{Hv~WMhyc<4BKeTZFh!*aL7Vd`(ltKndAp@n5fl|moD`a3hWMDgFpcFE& z9Wqb~8Q2aPD1{7cht}N-t=kV-2tf1JLi5%_^Y%k70+5Sh$VD;aVmq{OEo7q@vJrqb zu7!MbLq578AKj3TZpcSBYch{2B_=01WL z`3PdNM|8I{l(mCza2Kwn$~99IInmB8+7V0Sh!I~$m-gltzr zwksjq*Fd%_A={OZ?Q0;{xDTyAiPoP)%TK~Ddl&xL>uB{!wE85XnB9nCb|Zq>jUJqY zzw<8qop;fbljzAw^yDOZa+1VC|D1;YISu`D8v5rnbk1q$o72GjX<+^|Fn=1DKMl;E z2Ifx#^QVFN)4=>`VE!~Pe;SxS4a}bg-cJMXr-Ap=!24<7{WS1?8rVJ!T%QK6PXo`V z|CieSzr%rleJua=JDnK$c^LV5;Qj!(KLG9zfcpdB{s6eo<_!kG{Q+=)0Nft{_XoiJ z0dRi++#dk<2f+OSaDM>Y9{~3U!2JPme*oMc0QU#L{Q+=)0NiJD1_R(en=crEG|ht) z&4U!pBWbWkRDF8MJB;tr|qD2GOcPv}zEo8if5g1N(6X_Tvof#~Ij< zGq4|LU_Z{F#e-<^AX+?#77wDugJ|&}T0Dpr52D3`Xz?IgJct$#qQ!$~@gQ0}h!zi` z#e-<^AX+>KdvFG=9z?4L(dt38dJwJdMytEg>Tc-rGmxPOWY4t7s_8)nd`|#v0&NCu z0c{0s16>EY9`q9E_hOct&3Uo8u6O<~$^R(V!!q#A=K4ihVO;-q+O%(8PT;#cXZOvW z@%rYr?0fnB=2S-*V0T(zZ(3k)T2Kp;FaB3Z5>X4nBJdX2pBC7k7TBK_*q;{IpBC7k z7Swno!UnaV4kHn^2haFld(t;oa{u@G_`Syb=G6#%cVflwd;0(0?DqF#`u&)GUz_oN zqk`s}=g)rMqJLiZ^gWOMIgkG5wKw0)JHDUa`ZmsQee)3dujk0WD|dc-XEDAjBQ%<= z|Mtz1{Ocq1?d|h-C#w7JS7-n0a^S=)^L)%Q&&MqDd{j^LqNcVJHMQGDYS}w6^Lzvq zfu}M1d<3)4^HD+3iwcTf%tFt{EcDfwg}xe<6up>G_zQo{wsZUQ|=`qMD-je`(J6U+2X49?`eaBl`ch;^+V6w|#Tx z7{0kJ`|i$Je0O{P?O!+f-5tB{ZqL8{Qv1!d0^jrY|J*9|Z|) z+sO{HliW%A$S!gh*-P#w_n^+`UUGmuLJpBf$z$Xx@-#V0o*~bYW8^sbA$ftkNU+|P z{DizrULik6HPUP3buvKSBZH_n|A71+mF6FjKaf9>Pspd_GxAsR#mIg_xp?=b`w7Ke z*iVSZ4nZ7#jqWML;|?C2k;!9Q?J79JPsWq9kSHcQM{xMwB#yDyWjGsG4f1mg=aU8mJN11VM6K zBPA*-#b-U0;qL@c3ZA@PvS6 zCH~*(t>_;S)(F@yiQ2-S{Bg2^{zcAnT7ly@3D5EO5^}hKOs^B~!k-mu8|v{Ka*mVM zhSt$rWzWz@?1bFG&hwuOyYXSioA4t{{5Ezq{>9)3zHuHRvBpcCRGkRYJ zTqz?mpH9YHko%mkk^CSj#dwvI3SeL?sS5$u^n4np=H5vBhyd7K;}PXGl+frDp&foI8cq@O%b zPLMwWS+mI;f;&YGxBFia9c`}!*CVwO6$d}}IWEiOIA^!z@ z9mhUfv&dCsh`fP;_ySnH8i<(*jBEuOvCct66vGlj)eooyxO_X^kWdMo4lcAnx&@3B z!Pspe!&F8i=@?o;n`sA~K{wFbxu0+^bHCwVu$$~r_BgxK?y;xa^X(P(M;%Uw$H_UR zPOa16jB>^~ea>pTL0;lxWkkFB|R{t`3<)rjT?f z;hlef=NIq%{GHS9{Pdj{-}%8iN8YJ<`?a^vy!F?&K6~qI+)6mON0&*5g~0PQmLw($mOy|B9p0Q6~Pj{-jJB!N{vZS*nGxfJ~JbZ zGn+ILEp>U*Xm(byBsFMzC`limveIjY*@%_=f2@Tb5ig@ z4bAEax^Rp(N+_l1AII^{usCKOmNG8JWWY6Qi=gvSUc<{=#eBfXXBBf7`;x|S(y>yF z&ZJsNc|j%}d(!AgjgCrl8ja4hsOVIOQP@57QtHG>Q?jzAOq!U=6@U33IBPPAXW3O4 z6xOCU_&waugg#gXGf575O%WIuTE;=!(MExn@Ms;WP$~&gnw4g~7S|~fq^w;s4FyY! zsL^rpE4?GZDT|MdvbgChqu+$S(A#&#JDu@&QOCt^;=6Mo9Jk`#OeU&>l^PW%(W!YJ z+Y!>X2r84Q%C$;P5TuO?IVY8B%UP?`uqPx~Qe1?)3UjhD$E2kudh{-r-t2Ih9eNvD zhGu1F1&l6ULw(ffa%N}cl+aA0D^N@esFD5QGmV)U7PCplXQCUpMf@ezQa3K+RX2<` zMM{=^xk8y9Gwy~vd@%K=7yRBV_j>MIrAUn(f8&=ojO1TQn*Kpd!hz6HqnVw(hBCi_ z$0{tnWTvzW2q}kkd?0A8jgJ8x_3 zvo0b?goPMAQ#p}HY?6xTx+CiU*0p9_``>$HTidg)IIk(m~-T~~=W(H&MJt9JAmQq1b3yk}AT<-fvm*YZqkF*&|&Md_s_`hNcjrvKdMrLY*O?Q>#3WW_#hVhw#Cof;d56&E8N?{muHV$o)a%wGi%R+K+?D+V`ts9FgI!Z(&~)rG>fx#dE=PMRI{UM z8J(!qf4NnyrQ2uSH6IsVg$oyjFRV&4J8Qce$Be~=)!kv;l{fr}u2U&~0MBecv_)G}t;fw7^dmUjyer;J}v%u59$rH15F|@RwPJi{{``Bf!Rvl69fqaLrP- z6P5HSvyvu4aG@2Tlc9x~Hi_Z_);J0ktpU6Yn&{+csX^74T;MU-C+=8TC0A)`yT>Qd zAJp!E@ddA8Kg){eD5O(wVz|`$^~=d*ATiLcgKEyzG5U8^KV( zHZUcn;AEor5GdvhG*1(o#NOAG#NOAkbLCjPuV(r9Bz{cIz3hETy-DtGedgHHEjNY! zEA(mT?EPs{ol+?^90#Y3c)LgNNJe#&@b4L6=yFj+Azfzp*i z^~O`y4{w-}bbcf!mn)<62OS3!5)$HW%e+lzmCGrOY_V~Q2xYAPp#7lBu8-B;mT{Zb zCYMoa<7b>QIJ9b`Vs_0OGdz;6nmI~~&SsUWWIs7&bm%qa@EK02?5duvFlkH{c8axp zIXNsTm25|hofh;#4H97ivr`LUozTs3_`v4J@F)l!i@qs|QqTU$OfbL>nS*y3;hh<| zH?!#;U8pO2dv<8Pj`rn9wuhQGg&OJMP4qF`hWBKI{!9}PQ`v|$Xi`&J!j3WpsiqZH zvy;>L0vG*085`tcE}qckTjEnXK1B@(Z;Cwpb8tkU)VGK)7eE_KGVc2BHIr}AW1 zCRgGeGdK-b$lVKljCbJiXg_;PBTmsuy^hoSjA-+6`m!;U%iVjs*sj#!KT|K-Wh926 zcC<}qT9KH5%L7;VZ>ey>qN7roOO^_U&1t;qYy2}he0X?2pC%ka>@Gf&B7B9Vp%pGC zo@o`$Dl@uMb@|aX+-sUFdrhR>Df}eP0pD)I@Si0MpdXnHO9>`H?-3X(rUC`Zj251R z)|sKp;$ux-vsW2GjMOL{(PJi#X)&gx48@esD5i$&uq~mYG2xz_cJK1inFrq9FkSq7 z$KKMntSq&DPVUI3@Nms-zrOwL(9t&*;>#Ux)7m!{e);RRr>XJynu80{+m43*h%fWg z!6-2GJvc$13VV_NffuS^aRC$zf&}<{On0lw;p-4d6Vt?!3ccQxpc70!h)Y0_Vr2c4 zW-=N23(Z+?2>se%(%OU+`ua`x(iq(kzlHzfxc4+_c^zH$p5B)GIM#9O?SIan)fs@vBPe^hVPs~_) zw_E9o6jajI$XVO=3lIC-uWjnMbK8dU&>E#G#;R~?vJ3P{I{J&!mCM&u<}~HRtn7-l zQL3GJXIGZU%c-!7lhL7)081sjgo9ZWh=da)9WaEX zSsv~$+|CivprkNACo3&A#piNFM;i5{oR&w7iU)el6m;0#5IsSQH4dJ1F(d{Z2NS-^ zfOlJZXXYf2TU@?w{iNGpTrm621!cMhi@_Kz=u*n2ls0W_O^X}9rAv3>xU;w=qkFGM z>9Pq*VKO-Jpzv_o#5FY&*0vWITz4&9^w|2cv?(`Di<9eg`K|e}x$WHr>5T=>^^&`` zWjAC;t(tQwPdFBXO1cnx>5%L41`{-D2o^2F2tyws0P^%i|Ae{bldEf71D z$K<;LV=@-+Pb0x#kw68S;^TP10>Q(e@bKJu3Bq6^@Dy<`A)|4xM8Y*g_RL&`DG@%N z(Z|H9mRHREG54S_F2NtV#+EnxhQ0Zm~g|K{FWUrubR1MQC>`5Yau0kXi<4gk+XL!uia0Vhry6TA|=k1}hE0YEeZS%6p+ z(SYQLj8{htaZ0cCX7110c;k>(Z`KOCDO{w@U9rxjK_>Y z6{!f8+Tn^skr2Rm#cxhJ>%Q*d$M(*cQGLyk`R%vP$?4s;qNnke zle5NeXirbApOsyQp66(Kn6Bg!`|#gib)5&F&K=#nsp_4VSoXvA1^#QSET z;IivBO%F8P^3u}Io%3?z3R-ePv$W}P_s}n*(o99S(FS+LwEUX&?U`HGOxVzt&W%f- zvbAOYv)7F;Sg>Pq_0_9Zm4&1RD_0ns6P4QZoe=q-r zXlo1VjwHajGouG0dbLcBM&S@0G~#lkxiHihkG36U@tef>6*s~7&)kOD|IClzBfjcb za3l>r)NN?54f*_vrT4Q}qiw;6ByW5yTrSDqbGfc;e%jZ#VDqo+!Poj^ zy!ETy0Dkw85BawwtfV|jS&5MH#7-cc6T@s3{d{5 z^FL*crN0R`Hq;(&EcYtc6I$|hjSXETwsp(!pLrwjWk#WO% z;fOE}Ga$1`S8$e@D!2|fGKxZq;VZ+$7ACjg&dA}$$eHaS@EsK$st9yhiMc?Qrx9c_ zVFJ{uteMCJS=FS8lypv+ID69U`r2S|ULbP}6Jn!YCXg1|qSpG{PLFrg^(~elHE2a9 zaWsE&nGehYb~t_+mUt?ajF>arAm*bvH}p=xC}yIO1CVfInNSxLW9E#yw2E~H=Un&Mvx^#TIkjs0>-9>VTx*c17KYB4ULH|%+IwgbS2ennvs`rymnkerK_+hy>P?IdE-+d1Rl?gtkMusmkF*v5c%W+!Lh-E;766D(yiDGKJRm|u>!%OKTZGbzgPNOnw$m>C+$Y$hZ*(P=lwo8xR2 z+-!8nb-qlaV`NN5Jys=kh=$PPa)*5;kB`oHf*x3U-@FWW?ULGSH&tzWaqTN5G-|?{ zhQy86hW_jQ#d}Vvxil0%# zJ@q|Z%?UxdNoz=~T->_ir#mL*&%OCJi`{Ft$b`nOWmES5?uLGv^Y;3vjIqA)3U#7C zaq44#-M!?yCFKr68(fN!rl% zLVDg95{kH$#`C{;g7*s~6njTVvkMQs=c{?hIGzj{hg7pCBPL+a zE#V@~Lm$>ZAATmcYv@k)NIV1MFSs%O`J^gX;eoPJz^lag3sOu0afrXzdnk*$B+Y0$ z^Y$S2BXdAVaisf_oOYWYa_te@3nQo3FpB&0VN4YxFuxcHM%y^{4M>Dp<7Z zI;ABZ2?m2kp;Am3`i(c=Yn=M<2RHtJX8vYfOh!fGc(q2MPI5Fensb!Ws*~9zE4|)a-IQnLsnpdAy>k4`#!T+E*gu`h z=}gyfMw24S;fu+dQk$t<*-wA{@sLKdSZfhvf^+1J+`gfc zX1B@a($gdN86x#6Y3O>L*Vov1{BS?-G+H@(lyPW>H9kV&iW+K@Dzp(?q0KUM69Lz*Z0@3{w;i+!4bI2DK`PSz(Y56+=e zVZolq@=PpgBRArY1JB_sD~r zxd>tC)hK^dnm+U}IJ9a16E{T0%2D?47qi!#?B%ywBfgv~ahcL0&u{Sg_${_H)44Z< z-4WLF>qpxt%B78IEiDW6%fRVy+rkWwbXY}Pv$vy3kV`h$Y#v2y6zz_*s<;K5gxk3P zNT)SUIn;-CP&8z^uv=w1_XBH^QDXXXuGS=}77Qk{?A)7S{&3I%e->_r4ltu~<`SJL z&OnR`8Qgx4s53Pq4um0$<}2rIgqyRbUH9;h7H)ZU=Y;N;sqsGc<%Qh2JEyKXb#p^5 zRH>*%GuFNFgB|m7J0Bjr;aQsbR?oBp?{8oHL{G)EBVX)Ue59wm^Y9mJ>^M}#5XpQr zRD+5ie-IT?NC`q5JEWKw8P)6}*tE!GYNNGL1|6uW)o={OG>)Dj7mfnUhmJ&9mt29+~PGu!avoMnaojMZxgj_u3}tu{tdR3!Xkj)(a@5&X6h z7YPKjG$Y=O6q*3uj0|&zBU~SGsUjl@iF8FeW1?7^JH?@w8!qF!4AP1@Ca8l8Bj9n- zRkav^wcQUd&d!>7W2@avvmY8`4t=V2y8RW;PTbU%dczG|+t9Qyj;YM3i|Xv5K9y>->V3^G!EV$2c3mUHiEn%oG~6#&XkHV zgvk3*_oW~Y@q{BL3b{|nN|@;*{)sf4FT6~b!lRakXDi`o-=j2X^qzv2lHlyhg!J)q z=FJ(OK6dl*6&qhJEtA_c#*~WLb(KrTC8v*{HGkIl^x&FD7hQEEPtvc^x{_Rpl~b~_ zsxrMv8MX6jyN+JpFlSPmQj;1;O&PzqEKrl-_N3P?nlSnPp4yfgCOXg%lHC{+8G+4W zeCJV)AsPWuYk?0kB7@Nq!1|H-3CV6#sBQ1@y`feVSloS1A~}CIF2l2K$9!=Do)t%2 zK|51>Oru}w(pk(Jl}t*I0ux4UdFBNZ&a_TA#^6>pTsNmwxv+nMcGlistY7lz>SF1F z{)HUxty^+O@#0tDTVa`m-OE=cv`*DjOCP}kEwCfpAEzc7VXw8KE6f>ybx z?_lhpilN(?c}cNDql>E62xZJvuxMgjJv-r||4FVDH1Rt6d%4?o=TP9Fush0lp4i7F zC)Yb9L>K#I*tfkFjCm37NMRANH&P)--j9|c%w+Fj9E7`M)29@(kl@0rEEiq|MSJ`_R#YFYyA0QlOCkfUrB# zbY7uJG+M0o!YKZ)`WW^*D&KC;7k|MtOwf5uCXepi6C!``f0iK<=2JwG*kF_fOhL=T z3}P8SaLDUSbU-0Tu&~ZbN32x@um+nTl`(@w{}MWU&}@Li7NMq#lxFRVAthaRz+{z% z-jpjsjZq2x+z_`{qZ#_0(Ln#I(GD#-f6l7rmg&_)k0n4>)}jrp9?C@EeW>6Az)@k7 zei$TC<)%3G7$l};#YSApEbj5D{;JTnha#ioA1gG1DppUgRyu5VaYaKv;tKfANaN5; zu~|`3S+QKPE(Y(?;a!LDE-j1T(A^6n4xz>+N-fgr}=97iql|`4EqQ3Yy zi=L|V#t1!oGFBk(=ayZV6N7GI6R0Lq;j*)7IdR!Rk z#$7o7xA)3T(b8P2J{|4*6>pSS!E-&sApCw293#!dT)EG|yeh=UqESMKER~57GgsVA z=Wf#5uhEBKo%qhOmy&5(ZIecH}cih(D$?%KeRiME*Hjc>; z3e53##$=xGdd$TO7)NfacF3nWuwsSScg(`}(tDxTBS>V>f~)C5rue`-N~97JK_f8R zY-9-yv2mZo$0!!gGTD?r5FR#JK2>S)5{{$~f65;O<|9!J+!@qHqI%CRAd3x!$MZ1U zP8e=0f*R2vSTWhiCev6m5hF$;cD!%~O;U@eMcZd%8AWw;RDvVQ7wt>-+NB0DqmUgK zjda4<7%C=KVECLGiP^-bPjN*W5}K!W1qx?YdQzKL-11<1>H5N3 zi)O7u?<&`XVParEbph^@XcpYA`_vUd@Co z_{r>}2KWZdaT}>n;|1^xGmH{UZ*@U3#6bpQB$83*SFAewCzshsMccFPM3*~}B`Dn& zL;=+@mMgO#tfQG3@lYvQQ#)}MWRUR6c8ToD-`S-0uQuHrdWUSo_S#;8Z3B9n{k;ZG$} zQ7)3n@}Sm21i3|OM0 zC>!DA=wzGKWKhUSB#lG{0MkujEU=0OF)@iz52po0G_YDD?k}!Lqo;k=!oa3m!lPWf z-dB0}nNVK(jE)Jh4$p#|3D>lxPfCb-wRAyU((_L@J$UD}ojLhAT^g%sC38mCl3?qN)3Y2U9V@ptj$2yo3jMrfK~uhN&+*xIohz4*DO=K3WnGK^bFwIi9r>W9n0gvlNYOc!?Ql&uVS>qDq^UBG8haw#e#>?dw8byz%=|1 zOUx~9i%Tqsk-^b0vWlcYW`F@ZEb3x5S&MmTx@u0EzHaPwvr&k2n@U+a>zbP4Og(2c zM3_~+np}@uHKgZfoPXgLb&^)KV9<}B*?Qg7bkh_KRu1I0mrmUX8!>z$w1fW{&{%*~ z8J*;ope7G_ss!k`IQRgpZ_(%*JRt#AQQ$hzXqlYKP@XM8-=xyf;g-uqJV&xlrU403 zULu|M)w{m#hPI%ssIa50xv{dmu&$^sD>EZK(G!DMQ-SF{jlh!b;fP_hpwVJwvm`mF zg&Lhb25Xofp+$hg48zET1q6s@dBDF*CIR_$YIP<$tx02&%GMoT+E!C(#bsFq`WW64 zl@~hgA2)r>&dm1CP+U~1DMB8bUgE5-cjb?V7*MQ@A^b_`nP^tE122ddb4Ac9 z7j&o~fn9;Kip!%(w8!Go13RJ(U>+l?P+01M6<~-0BjYDL`DF8i7w0VR;rRL|>p8xt zEOlD@_}Ee?`j%B|cim?4S%=nhTTO0#Q^T0{YsL?~&#*rYjrp1I6ub#5sS4xW0;M*R zv1TQ&qKu1r?ZOESB7lo0M9CIa7;{O)f_7Il1Np__i{t3^>khB`)a**JA<#uVREpJ> z;xh4{pI7pq)8eR9m&xQxjfzThnN2P~;fCjicF~R~vraHhF6O{Bl=@ z%^+wrGQF~@QnB@8vn$nV^Rb@zY~h}qd!cCl_*8{rx>`nS8YRK6_KJ-=MxXx`#yyUt z2UC$DfZvFwBR=4#Ftq{!V2m9}6yi)AiPO6ik)A`A11jPx=|V&-BiTawBOvDj04_sA)w;GqP2H2T=FY5te%{h062AU$y)>i1H>sgAy7b66Ug9rE zZ<|mNQ^NnX@aTqXw{Pyz52eIr(SB((OuotW?ABAr;+++k_UjuB|MVyHxu^vl;BaH0}J^Tu~ ztJby^Y8!vHc-hsX@GecCHDy9fKH7hB+x5F{Hzi+y_XMO7n}>$*a1Q_X)KB?mBm$y8 z7a1Q0kQE{}qSwRe3kD-hNwJoG%^A^x8}vF#q9b)Ky(>aSv{Z}Q4Ca+wRK?aSDmCZ} zHEUYZu9{c7x+QIKTl0;xa~pb}zbgEB;_8O2k59Yl<_YZYExmb*_RijT_K}%+i|(Fv z&Dlq0v3AFV4)VVNpKXXg?hI;~RK*K$&k-|0;Udu=*Isna!cIMV(1mN5KOTitoy!sFi}ImGwnUEu{&+NG5fXW+N6ug2j>qh8 zE7ZeNTa-KMkJt4i=g=3}(7_pBIO>dt4hrK62g(-KCylz}1%Xhd^(S)V;C|IllS3~>EtSiE_^rGVKVYOkE!BE0zLNmnJp>8y#_q8P_+x;msc4g-Be~pTkXmu)j?516Y zL&oP{2qoiDz`FuDQWnkRk-T6|9#Ww(6w?HMFGngyK4CHBD*P_DA8$mBVc3%y$&VtQ zWv21U{3xO~R(xTxa<9sDDviTmk)B$c6IgMs_tymZf{UwoHT*KnH>?$@{ zO9T$9-7j8)x*@kKQLp!TP|e8dqOn*jEJh_G>$8x6g7pnY0j%TUd2i1?%1fms%hY=0 zmFV6&iAC3$LKWK3=S7%Dr~ag<#8{JD9wE5XuP&Lf^oLSoLcX7#(<0qswJFUsPiqW4 zaBWDFlo6-mGskERT6x4o-Lp`Phcx4$=HZ^eC^U9c53Llm>Ub}VAtx)US7PK8J$oO~B z_A7F}7?*#X^R2tpWaInfGEQkTV2U|L-y4$bvdM?dUy?jLKgb9CTbJ^xk*2?!c}Uwm%6xHwI-8xXsN5r zVJ~-uTkPZx>l`}0T|d<1M853j;LnrbPYlbKnYGNL3MYNFs{w!(ProUsGyA4=PPc z>epyOzM*%_8oJY>3*9Q_?MNeZ^9N{$nIP}0mWV>eoEr?3s9jT>4we{XksotqF3*w| znv*vDI`rioX0zl0bWyY@gfpI2X zT;-BRQ$b0gaopTehfLp5QrNwGWy#oyT0O7Ps;E1$YG!`fn&r#Tn?s?4G+P(~Z%5X6 zuq3)3Q|024kW9Vn(2X|=Lw|b|{2%@#be6N>+A7AILeu~y!XAM)VFfCde*#4)bVW=x z0Yk%#1J6~J6lG^*hj~Mh2a&-{jKslg9S{#5K!X%gPZm=pBUQifwZOBmDGrQQpwUB@ zGlweF8sVR@hmX91JqmS%gfYliSW;lBpZAX$B+5h{y@&r5gfE)eMWj4nGms`*h>Qu4 zhe|wr2s~z*VL#Ag!c|dXvl#SRwK$U$O`}opL=nzpj>L(~G`mC#h@zI~N^9t??#ixU zR@byi3E>}eO4$!?&cw0hOB+(`UPnt6zN9+54z!0OJ35!HPHdf$mCcr251o~~ z{neVr8;6Y&k7N)z(_FGOs5R<18F6De6|CY%eY7;l8u-S^Br*;w10=jm!grz6QMwSz z;Kh&@&FA^i3Qm@J`S0IgV@ntnW|zff_PQeFR;=a4YL%~Dz{^}%SYJN8gqO!+Mz(VI zznZR_o;B{)Gh3W&wQg$D)#+Jsy+#%1D@wj2*in+KvqX3u&C}=SIM|Zi-76N{-hRW> zbVWqPvb&~l_|-jA_@l+kyfmF zfax*Bdy*}fv%r2j!9wUqWT60P6n}y_Qpr4&&cnw*5P&7QveD^iOye*|9XS%S$K!Tc z-5zHIR>#8b!n0rt<}#5r;$4{4!P@%KrQzr+E2)z*4=fG-EK8p|Wc)fV-WqC)kH|@n zEsW(JkKokSSpE3|jVsR=Elqepj?>E=s)lQiEN)ppInPjMGHGmby(^@cZYkSvwesIf$RsUqHAo<`Hg8e(Wf=l*qLJ!Ku)DGG%qIz7SUo3OMp^jEe< zj>8@&??`-->2N6mtoIs~6nR$SFl*WJ9n?57EnB9BgB7<X|Z7TfiKaTnq~dUy+rO zoEQ_8h!Smz#F;mMd01v#0#;G2N@Z4=SM)}_GB1=#KwO8)f;X(;0RyPi5xcviFJ)eS zUYBooTVK4>5xc8nSIWG+yg4bm+jqq~wz!HL{r={ngoL7IzrV5A#oaq{%IS#PjZ5dU zTl=QqQuZkJJFSsj-I(TYDt5Vwo7fm*F^1$M)|5C&ZZKPc;iP34RJL%5NZOH1lw;Th zX&W<_m?jl>f^a(Q@vJIOuTOF4l&I= z=rpC%c3X&}Im*yMHJzjiJ>q@TD}Ggn4suI*uhlg4BS(HrOo5#%(np>DPm~>men?Aa z&1YkC!4}9!Ob}5ZSWjph#7?xdh%?bParzK;K_9ja%sQMO4840E3*OlH77TCZufaO= zvDgErG*~sUkxcxa&d9R2qwDO>f7*&El303q_t`t{<3s`T~2I8*Q&0HwrTFvoUS`MXY5W- zkFXdFj`W)R3`819WfR*bmL<)Y>rTs@(c9W_lYeM$e*0CK`58GA=Z>k&lYC~eMq6Xj zik)etxw*Bot2=H@z_BBxBPigCuoW>zL86{aU9rWnnp{|$R;moGp3y=CRRt5P+XZ_6h_QQ zIEX^JvBY2(x92bz;u5XaB)fsmHN@jcQXG!3&v=6nkL^3c=ab_NhWKQ*oyVoW;acJU z(Eh2^ARIszqKeEQ_XHItMB5UUE*}ZBvr#4k)lKF>pald?UFZO+Xe6jfCsZ!L^p7n5 zNBs^TS5mY3(2N>zwkQ(M;5ja%E~i;Ru@ zbWZ;RxF64bVDwqxceFit%Zlbyapt#e+ee4zq&2U)87QTerjQYD&MCkRw8V7bt zfiEiMP=$?(Pl;HCE0c1vjtDBHa<+3A)0<&n@fH3wN-{Ij^89&j7vrT~hl#jUn#!go z*m6LY@DLrY5}E^73<(4=bjLzZs3A6Qfe^-zF=vQN#@0>@A6v<_+z_@TGY~hCA9b4z9EUYA0m_!v%Mi-I ze&d^#e$An+Jhfz5wTE>&g?fq9UNH5F-<;G!w?wNfCS&M}NTnhw^o2%k*GAK=Uwarj zeLpRhXt{SF>_wxq2ds1w(+bGVu;tV&eL%R%XjGoUXrYSZ^5bn!hYL`}a$(2Qd`H$D z2}60@JE2Z$XEx)1zD8R@I)PaeFdI!WvESPyvh8Rwg+DO@SU)n(GWc8&4S__+g@_I! zS6~5y9J5{{78OuMA4V3)V#kjE$sOYCt}!cXQcHbpR!vrQlEa*wlHyTX5CpLa-M@=F zPJjUkuP=txwjy1^B50SFL6$+&M>`oT0Jr0#5E=bGC#9+TCcy3fFx=kXvSsj*nRIY3 zwLkjM!UcMp`nNkAx|bs&qZ*dyj`N$1zOh+bxL5wWP@8l3qjy60@I6)aBlh&P6w zjHGEAb+lYrSNbnEXHH&KQMr0@M#kjTl@+TdXI>qjQgx>RY_&2#nEciD%=&`>mY*7)LigKjI7X#d)rU%(uL-v-jo_zprw8O zp+E7@>&{n54u`gG4&6+BZEzJqX(gdFr!S7d z#NXXw6AZF12bL61h+wyHh%Qc5_N~X<__PjX|r7RcSTJ zsu<;)(Ybl~ajEIP3{1_c7R(oAVL#u)y?{RCljdMU4%Vh41uw8Ub+|fLtW9Uj(WNpX zW!5shNPT1mLQByv?EI9H==HecV{I0lhOLpfurhrlU%+gexG?&{vUDUGMkYls^pdB4 zO{>d}>CMYcA3r-Qw=v+1$k(c4uuDf2>MgR}rm>Th9nIM(8AT>dEP5N%WLLLJXGf(L zC)|{(uM8AUEpbGSsq)*T;6{wm;!ckmGp3CzDo#mF^TngzSq)jyaMxs#UM#U@byuv; z9)pRxD{&(Sa3zAsUE0~Ae+JEt z)v^Zo$Tr9vSBCW@mnSG$K2|Sblf!P}_PQNLk2pg(QdWVSqnL;+5>w9}Z+NyCrmPTY zFFK`}o76aVOVQLrJ#!7#vDY<}cE$-3*F?J;LH%b#ZAzn}sjaq*`}n-tU|3XL?)T{u zs_mio?6JHIHRR$LFB}dCH=zE_NU)c~$XXDjiz%JY+_mryN#Q+Xuv3QUz_a$rT+B-c zjZPK`HyGbMdiOJ-kDj@E!PGnF=T&b$woKT)`^$jv@|OXAYDW8paqV}nD901^?;O=Jm_>(ch*Pvm+<@asO|ip@74GqYM4K%!5FeM5WaS#;bJ?$4@fXgr=UPMe z(bYr&dvR^JB3-G$xM(8TSb;1<{99dd8Jm18s*$p_wEx7y) zs_@uBs1R)Z0znzQ1v5)Xe_G9IM0^A}5mXIZ;Z|Up7clh(GA{@@e&ke2HKr(2qOYnf zf1$m$+)>b&?kS75%D<3D$P?pSu@T#w^d)Htd0uScmaS*~`WKM^ zcjPG6sx(Ti#Qyob@oSZ#mHfN(>69sOeRG~4+B}twAJg}R+%I95jl@Bcf*wpeUR3zt z4S~jI8zbow38b$7eCsQo+_57)&&h&|EstYBR+@D-LSH5qNltwx2}b?XEpq&kFWHjP!_{>lL;8H36Gb@ zw-NyRtB2m;LLX&Y)lcd)>WHOMM*;om6$iK&OK5$x(x$UgnN6vRq%t-0q(VJkdl>wY zkdpw;LSRaV%4HvRB%2g$cE@pYsh<+1xS0j?ryN>ME<>_Nrj$vP2s&giJThgwYScVU zfuoDv6xp0E5+h^MeaT5sp$XVNPu%iCjRZ+}%L|z+fMPSYt4cWaE!K!%Ij{oD?`KMe zu99;a^+fXmOXxIKnn~#GtIuyS`(wxQdre~;Rp(Z+@z9siHf@X&`JP*aUk`@|DE zRWUt1G}UevI%4C8wq7b5&l^*0p?(%?y^Q`(LH{F=2dO4AgVV|iI62LxY;!AM44ubF zu+B>bwy-l`v+bw{Pd2CoOo#Z;`q$+g#NHO zm0o5{{Y91ti(aC(`eJvUfAlMe$sS=&&FtpX`toAOBe1iaOqYA9naxVlsi{Q1V1D7H z9AvU{2Y9zm*eA+P3-+Gg5M19tHEJhSs{B+DF&XoYzNF}u zn3fS4(_{aVzb|8MF>tz|+Ai2{L{!Ytz0`h>@|*|TA%=qLYsBz|i_Aa2@@vh!CM)Ms zBOlaak%>g98^f$Tum1aDD*rkMASL5c^PlcU;Wi(^?Em>$BXZ0QzaP4bTZyEWmlTB8 z=!?}|Nc>_Z9;<4Q82|rRdl$GWt9*U@efJI6u#pWY-W5eq6j20m3j*HpQi_-ILX_PL z3}Ui|gr>M^Q%yPCy5f|U*Qv?t*u@|_)*SWJ?8f7nI%lT&9RY!J>eRVRQ?mch^K3x8 zG;@Cc&#ylF@n!9IuXlZ)^M0kG}oVN;{6V z4Dd(Eksn0DUFod0Y>Hlb7$e`eE z-<2Ene>WmIZg5=oU9)q3v@$(qdd%~?66VaDG53bF37HcIVW<8;Tf~)KZNumD?-zIc z7tXJaL74-v1w&9B~;KG2?g$b2d!76(_E&g&sR>fsVE4aTzwx4KiGu;zleS-iX2Tf#~IL-iri>s4OTkj}i3WoX) z#9GqeAt?Dyl-@#zH>RillMVs~&NXqEs}Z;ot|fOMLtZ!p`P;u6e8umwQm=RvLP-M9 zwO|wbRnJ76h-vmd5hIwvrm6Wfq%@;X<+Z8_RI4dN<&d{ss)Zp#wA($-Jw7@NOGX&y`S*bOH~WtrM-O4NCb!WrMk^02$2R{@>y{OL z*!|_p-QhV0Y@1W>#D@RV8D_4ldq*a={eSS(_0}NE)7bI9MVtRE&u`<-|L(y1E`G1g z|9&3r^BuGWQ&HXkGu(Vma%yj_Kn9)eH6M5t48hlm$k~?JJueFkH^OHSVkOO+985K1BO$p z?O{cTYs=_+vFIGdeWmbcj>A*~&5pfG?*`-zJLYa2JZsou?{zD*5Bcub=dTS8kBADp z<-PffzpI-#!SYd3`7&-ww(gA?b1{9&L)razCMP9s9XZ$xT6N(G?N3gdUKAP;Z2xN2 zAG!~2XiB&KWb#yORgPct^R(}4V&k}589Jc7m8$C*J#}5Jy1p_!#O$BWy7u4ix-6Y_ z>Q8s}q-#H(<3Ev}jw%koyCu@`)SzFP=24&TjfoT4PJW4YUZr-TsBAVxdh`+2gn5dM zi}?P-1JFp&a}0A29piS7AI*8K-x(YVA06hl(}MekGUoq$QvBL|(-%K=rs|VuY}KE( z_!DlI-tvU)$?3QKboKr3Y+c&@rTy9N4Hx%vv-AUS0YMF>`2uXQ_WgK!LRnVG;)NEA z1BV=#RvrvJ37RtAz;SdA9_+{HM{H5_pLg3E;>W|Z;hY+P5>KWW~I@B4~a6Co6CETx`ihB*O}z`?tef6oRSP$>s>d%I;wv|12(Ws!$FAW z);^LGo46onLE^-$C0P?Q?s;O_+Q+9(35s&N$0TG;iC;Kv#N>H7^CnMSeB|_Vj5pV#g*>IY;JZ=8;IU%7V z#*Cl`Z%XFm@yXdUGShBx5Eh5w&eO>Nrk0N-AI;K5s_Sc{T z^QdFSToeAPp7ej{m;Rs$b?8Zd-QLi5|7YfyzVsG*bzl0Q`lWwpf2J?}-hS!3?f=r3 z{zsFWjjYBfoF7tYb6{m@wQ;MtFe_w!rX?_745BElmsXbo;XVt*5CDt7@Sxr8GI`2~ z)nTq55Mp7JKu{*ZB8-I0o z!NY^n_jhmo@vC^Bg1d zn}k&lW(UMf%Zl+(ud!dR`xn};x5)7M2ZT}FzBwIZ&k!@fo(|tuz(Nc^?HGPu^BdFt zw??3twfz4YfnNIE|NRKG|8K7vfzF?sHZwUX0cV(w9Ig@QB6HC-Mxg!(+pE_^u`c5e zfVph=Ik<25nY8%+rE!0In_=RrRX0wJy4K*c#5p(rsa1bv_u;hcgeYrzzo94WkM`xs zE@k`emGQmo57Qs(m;Rvf&wc6l%U=2K|Eynnh3t|){obDRSx}azmCuLB-(k$<76&|+ zi+7v)r9b$IKONT3lBfLr_kY%to{02^l)pdyUZ$fzP4|6cJ#DYV$Y;JWJ!@KO0t}lu zXX=!};qFkZ31mT4tuSiqx!Xm980-U`mNY9ZY5uhN6DLHEf;$vr6nfyWfm)t8tc#^` zmD4{@u+TqnX{j4G1>g*0gv+6oBeW3V4(3OAvBP5%Zb=;%IAqN$3w}Am5pjP`-hwS3 zmalmHjv4dIetFM^7p7R2E`2w8cHx?gu%OuV)t)5}t(Z7w)=Jw1dyqXMC~xpMckoD8 zL~2;pv{Fw{NLc8~RsXSbXZL@!k2Ow9&2dK=&WMQB!08jeLznbnlS<+Sx+e zxgGqfK|MDV_dc3CqtW*bniy{y@yQdDV`HM=-p4V9I35)vH2WBC0>^?9n~A(ba9V1B z&snq?8D%PDAp)&}D+=Zy^NrGVF@t7~m|Ho1BKPBztsfIHdi1(S7N_ z{P5bTUo6_ZcB(6+dqHaGtf?c197=g=4R`2dO&&gIf65a#a+i+z>e@M$bqPzW4tD?O zx~hYBOg^Bh=w*@wfCRSn1PpXCA#K4 zm$njJduKm(5?#KtA0DW&S8OF3_s?&vy=-UylFbt*TjNGzJJ7AzOcdRJGf}|c%lG!D zP4BKA8jI~j+}!`?>63c56ZLUJ{`}nB+sjQafAFz2cki+N9p*)G*e&vue?;L-Kx`A1 z`wT9S_5Kl{^)Y&&qTzb8S^}->FiZ%U>(EZtxdC)lX_kUeT)c?`ZVpQT#v(k~^QxOM zDD1seE~W|NW5x^{I%IIvKy)4!JURhl;s8ki6}c>L&rBO-&p|Ge+)%CjL^Q6m=2%)D>HrBf{b za#u)n{In6H;{t*LEf+4GXvscrO7|Y^%}O>FnB#jqf3ff*rs4GW0PJ|e)D5h`^XK1r z5_#2kc6kN+C)@ZFB(LpRd>jjIdiL*et;d4%{;7s`L^oZc*Z=5i-a7cITe(jz9!v31 zcLS$6TqAo}Htcz4M2zZg@-=RT<#f&U7YNPbvLDcd4V|8XUH0iI3#Koanm9f#X3St5 zO35SkFRw*^wEGpOfmr+1B|CU{G|AMOs-&ViRGcyWha~Aa2oWH-q z<{-8S?TTk!jx!onU5BU|JkJpS2I)LQwxxK4Mkp>81Y5bg!|$!jL4Y*&B?USA*Lv1e zxRfktXF&{Z`r%(8Cb73N6;X(jNC$IV6@h)83}!*ij5Eg}qR`H9G04W~YdYSv^IPbZ{{-vfwx4F*dyu>csP8!+{&!LzN&&NOe6*zRE zX%9$3_z0=7!q)Upz~R6>O#&PtP8=K7_)4*!w$a;@!$4o7W&E{Yz+7MUi>#@=*;DOt z%mlt+8P{!FHE?1~l;5z~`yZ6iQy(+$9B-!I z+i+9g;TYqtIzMCiP41BB2}#3c@oZ}^KRg3_38CRzum?$d#u@UW{YO}Q)d)g6}8!zvG% z8wc2icJH61Lo4UM7iJyu+S<3QvB%4XhaT!4_>v{zmPd!WZnR))7~ES>uv^i;58%G6 z0ioDaz@~;`XvaPFw?{?tU@6Qs5IK{|83sxmuyn|?*T24C|FBnbUtjeL%h?gZ^DIBP z_`%{kqk|V+47R)p$2!M58{l7`FW==h_z%Rd z;ynvyT$XbLZV85;hrrlZ&vCu(Exxx017mZ^26Fy%S48j@}zl zoWAQTe?+Hq{AE9a{$gnf667GP0B`2I@)ztTlK<*2V4eI9AZ(Zn3hKF}F9-*f`{hvS zu6z)Grqg}>Z&yQC!`&3VZ4964uOS?^E9kL14ce`6y##ly|0(fyX{c-^ZENr=iYjdyTm5@ zzP7i*ZlTYIC$B2YwKNGQzR{5f6Wud@jKNsP46vAY2M5Y+XXjujYOd3P_F_d3uJ=Of ztfaqjn>L`1&R)pwbm8jk)fwtir%aBG@%zEprH1r*!E6Cn9JAB!*mF#S4an>Jiux+XDl@?vXt+MUa1ggkTP?%0U9SvKpK%rz+!md;I^66*@S%-i+A zkM1i;yQ4CD$HjeX?pVL>&hH<*{)u<*|544-pPnd5ykX9GYsloaKgkK7Hgk6L;P_~$ z1lkNx zTfCXL{&G9e``dsBdxfuQTzh0ke4xO1d-}31IOXPr{p{~%dJs%vud3e;&w7mH{%4pAX zY|mJp#9pGF{m|?Zb>HK7IaHRcq1~LZPsvLtt9{O^- z?U_Kwqt*a;G_8-?F@k0O_apybBL7eW=lg*Sb`}=Hl8=WVP-Y(1eb6cKfPqmxuf(*D zz5mC-5%$|%5fuT0f`9a7lf5C(@mNH}V~)V?zkoB;aZil2#bMl!1k-rh_Jm~{o-x?q zdD>WE!V_-9KnESjJkyAb7~l#DGzR0P@e>x!7(IH% zq6y=(Q%B!EJux9QH6d}jeQf-^q+!F7=EYB#H)YtcDf1>wnlWQi!i*WtZJY7{&sYi1JSKKtg8)Q7umuUod;s}cQ&^UdQ?-htRZ zi^-jV&0svjLx+fy%;88!L6;!`|H6Zczp>9&w=P_pg|K0GiNZodf&y^YP;;pE+H$Ka z-KE-T%PpU9kG9Vay~h!qG-urCl!OTbM~`>h>lia__PFTegz@$XYZ9+Z#h$Yf36myY zKZ6&n@7HWUwN6lsbA&NAYczv>Q82wk7za!`@j^pqgfo1AO99V%iLm@r=$)h00u}mf zJB!fg>=zLFY&Q6e(BY9Q-*=Bz7<5=L!k`rm9XW_P>-)y{pSF6$Lr3Ejs4yH%$6Xxb zLCp|5e8w2uz*6C@!7x<*9by>B4a*vF`FA+Jh&RZRsrL*;&e6u`i0K$njHL;a4-Mlz z`VQzs!0Hf>TH>Bj>oi+^pk>U^(t>^Y-On!@@aV&%W({Lp-jK-jw7~241)9MT!@{iJ z%!?ZP{ZFl%E|xu16XMPe!ZAphb1jc$ItN9BP!6NsGQe7Gc>;YwZ|w55-Zi+>^2LCQ zqbyIr#QA??FZ|oTvHd3OyVTy_yk-5f`L6xHVN)Cj90uQ&<3CJIuif;|CA3ZGGxvad z^AbaXg2SSRx}7e(#P`qR7LU9A*wRr!uE5Zch$)_|F+-;h4|ELXv2~{LBm#P$w*TQ$ zzKYbrE66l6)IyoUX3ZjIJSF&2#`Zs4p7D&VvB)?efEi;9-u>@z7xO)jJ>^a163o^4 z{_B<5cKvX!)KlURVymbA^v>5f)FDwVe zWxulh0H5QoO@~=>B_HPFSEl?h@mG|te~o}U-{+{4?^GxK%J&2H@&n~Neq~|IpI({r zgBAE!N@p6+c0XtRi~T+LOc2S$_pRWaF@|LhdN&^U#{F9~NwNq-Z1W;xqGDrs1P{*o zn8r<2(-A<~<7yoadlV2I?00X(;iTeU*e1ni{%qmc3Dc&HT^_S!(Sp&j(U^*L*GYii`aRyBoYT8^wqq^sP|CeC=hn0CafH3h#Iln_W zJ;wa3Ilbka5RDV8#*eXJ<$*7QgPY%B!>a&UcFwi>%I9DBcb-E4yz}`Q z0-%*dV?qp*g%M7V<-*2&I&0DyFbj9hHAEU?heXTGdmYxv@tIFAjP{GR4Dv1<6&uYJ zy8PwcbytZQH*~=G(2Ebw9GPeiadanARPz(7GdOTO0-8dHMp+(*nSk7F#viSxtsi1M zFv%Z;5Df7&bi|IHVOba=81LX=!(Cxo&Co9WyN}d;hww z=JvF-+iPG+@jf>DB)yB3k+vA8!Ox8R(H&uo!FRIqKb|Oi<$GDN0~V7XzrTfD;+212 z_1;#C<;pW4EY^r<438#{!3lu;H~Ok~yAJF9k}rPM&wFm}`I~$N@Ezmfp81^ z@~ijwUb&(72R87kZDPNR`TPF)VIF(cUY9F3w*0_87PK?pPz>pB!~Dhn-eT>%(4LF2 zd~Y%4Ts?a$GA~8w_v~?ioruSKi<_bMbBy&_Yp}=BnhgDh9k<|+NxXg32nqI!#V zx?m*@`}z>m0R;_mXqT==ke2gh3l4 zFfFB*gGO@9WE`3e52`F?G;Kdqqem)Oj}tld1lW!+Hgy`-l2$z#{m?HyD5`ohZEi?t zXmI4P*y)R>UALuh)lkb6hjqk|i+^#zo%8zuo*Qy|z-!N}C|oo-JTTZXd*#18b^rbc zGpx^q)L26*t&jcW)Kg1uyKzoPVEC}n!@`sAth*)EJ#1`t>~#0=Q~#JSJ;4?@?~eOd z)cy9++ZMxN$g#_I>mvJf@Hzs$+?=dTyj23{LD)@@gO|#}h2&oz##_eGaIv~ZYlmPe z|DWc(kt0Wr8#xYJwW1@F-Q%566HUFAL8o0|jGJo3*;CkBJP_BUCQf_u#->_Z0&Nag z;5$L?usav#PYyd1Ho`sJSvL8eg?ELy?SFFZNdIx#j!@h3VNtHZE^}I_5gkeVcp)V^jlZnJ>eVkEgQzJ&~ zNS|e-51kYhACF+lXuP1X_hb^ra70e)dDJ-Z{v8#AzKr!u(bE z;verSTKD+PQ|3JS_QTheteqL!y=+9(fN^2rkp~8?dhq9~HtgH>K+eRaTiz)uKJk3P zkT*9B8;vdobu`=ejctT|moW`Hl~6}Gc+nUGMTG`mI(Go_VPk9Go^n>36c<~>5!5m( zIXfkLZ2ZKDF@cC6^-st+@^$ouwM^GMM77s<&M&7Y{eoN|J{$t(FX9$ow`$6w2XZFa zY(wsQ^`Ez9%a!6!I z_;*`V3-=T!tjvnb*jRUC*oe@(ia-g*ji12()eOD0!b5^n*tl~Ul`gx0`bWG8H)Q#@ z`%mBsZQrtN^LJsEPj_E@!ippLU3S;tV0*(~eAY8jp3%`Bo}LPOQQy7G{si(4Ht>!M z_4D=|9+(?~>8mV7bo+1a5Zf^j6(#esw1d7?Z!EqOXO;jhmJaUKHRF^W(Zaey@p zdx7Iu@Mqv1cGwa}b`?E>#s#+uLvKLvq_}9FM-z>$wtXW(v~#>+1n1`ZUj<_+dV2R8 zL&k8hcm2R2wmSlCf#D&R^?@TJ?z22QbhPQffOb%5_xjPZM-NRMZqEtBZf4Z#ETh}@ z8}uI>Z7t(z8%q*~*s-I=oP!k#Xg7@1dZz=r20d7&3!cu3r8Jwda8~++@o-qrPhU1` z*|e$S(i8Zj^en>?|Ok9Edz=;#%ld8xmT>TMDTQRkxXrKm3MJ?OO%0VA!}&C`}= zP8~RE-t}vyrL3PDmzw+IIn$P9B_ZWHq~y+vOTDS&;?JYeI}8htnUowIJA3Nz$e5{? zmE-129X>E->hS0^el>1la(DEMB@-qrnGrpH$=$P8Jax~kXb=DP;O~3*clx%GDf8pv z<|mJePG6NAJ2N(d|HgS@BSs}NJ!K^O#m(I>TR+5_PPBn{89HE`2cdt1WuTb`k?6O2 zPA79)=1s?IAbC0;<|n=V6wVaUDBkaefaK=yC%nCN?CjwY_L1?q_YMD_!OQL{TQGXw zut=*jd_>groLQ5?Y;%8kG&JnS@QC|1efO6;x80oJ3R@cDa+t$r=FPz)EyiK9-0HKo zKzCB{K9BX0Sn0P$VDZ5+CE8*ONF0Ns&TP;os1aTe#>FQ1sZH#s#J(e(>4zQq_5cU} z>^JbW$+z8{n=sNdWt`JJ;h{Onx98%Nd66Qf|9>z4b;{Ci6CSf>RVI8Jsh+Vr5|Jdv~)N4DAFNwpw*e=b}+5YOCI6fDv=so|1 zapo3{jojEHt^cv-mj9nLJD)Cl`l|umpFCtf8P=UrS60{k?_uWhhq_lWeb`%(vAx*#0%58X{@^+@Vgq_ZMzY zjw&waBHYb|Tyq*u_O!yOg0OCE+u^cTz|YL;QnRMJr1Wbu5^uq>hX$F0yW7K^_5p#G zcdRMj|NZx;tjQPOii!;nkBzd-w=9@6HX@d8NVMt4yF-je?4N^!1pnMDgrhE=XM-gI zOl;x!#NK|SnHzBQEmAR#FV!39 z%zHd3?#6Kg;qKIe4IQ1AwrXgQ!6Wh5VihikweKS(Z{&BE-O0@uTW=d5P#X}u=;2-Y z;c;lTW<*5Q9!V1oZu_-(pOy zJzy7y)MHy6PjZN0(_qc~>LBO7y8bhnxqq%+Ue4yPpuF-$@9O~bhP52@II zZGydTi_*bj&<>my5H)Ie*lSNm4jRzu_%Bz)-@8J7i##kwwPTcJmxE_>#POUwF0>ft zGLFsU)k4APi(yZ9#kBsaliQZNhmXTcAclv94IdjhaNKaWxh8CQ%)o&$O!5Egcq}qz z*nk1UV(|Tlu&@!h|MI{6a#cIVTTVKj0#|>{=l*j`a_Gg=j;HP<7iN^hiSwub3u8&0 zJO?uFMfwJOf(@rmaDjQ%8LiW-j_yCYheST}d#5{mP?+PtejDQY`ydyGcVO^NaC*}5 z8Aif53kEwbEihCT9t;9rHn?NCddTLMNQ;f^rddu_1P=);eky2KNcn&7b~qgY`S}43 zjHr=UCGtA2yfCUp-;8k|R!{pC4LkRv-8LKz7{KGAFq73P%lZG_-O`t-~67KU>~%e2)6U7)1+VSmi=Ra%IlIN)rCSk*xzlL!1t~5n)DX4HDBZtRi8?!POBi zKtBJY5^JGpZoPh)qbOj~qC4z=&dZA!=m@djmXV&kDt)w`WyV7{Mg~OSS*!;s25mOR zLR5)Ou~@ClcFOcq9+X=k}xLH(TKkyBl*`P`rIa=fS=h zQ5rukeqqW8xDgV@#b>9C7&@8_*kXJLoxRo3iS`@8NPMlvf!k&NWx3w=ca60{dt~HIZ$(ZR>F7Ke8geLd@JW{oh`eDS%gnD4PvtWD zzhe$vp=pFT;j?k!9doc63`1Am5$0KUa6r_=n2?c!({Hjj4{$n1dh!+x@=yPv6NWi- z`^%fZYQK3vIxJDZ$5fr){5(%n%hTRp{2$*?bfG@fHi8@R@&AY41sv{1#75vUe18_- ze{B4B&v*LA9B7NfSz0~+ndP8sv(aSvqw#y&7GpX-3+?-ib#}MmG4~k1w~RL)wv6}v z8Q<69yC0dmjU>xs#s>VGU^(J@9cjz(Igd{wJ~!c$fX_U9?#AaWd{*G|3Gc^evTdT# zgukD}zh#y$j7sbSzRvbLU$gBsV}tFt#_jfd@b5%?+{Om`eEeNxY_Lqn8DLX=-`Or0 z#nuDH2FG@MSBTHAjoWcZaIyU;{@sD^J~2XUnZ{;&rm@Y|X_N-6Gaj?;@*T51X_VMX zjWEa(Z8>ZdK%W0V8UE37*7pm`3>@h5wK2su)L3S{)kwDuH&U$68EKZAj7;k{9Y++_JN z&UDN-s_@-Ta*wn;d{<<(8&4r^nx)Zr44<8r8PGwz3BsO+W46W`wYVn=>HlhZ59bW! z8xPsvH%{R55k5b+eBo;o@8tf9k7KuQ7wbaxz`E%9pdM~uUEp&U|An5+@2v;cMgI@V zRe*Y#!n)}HQC-|^{L;3_m`2{N^??s`6zhWZ(Eo#an5DXCGsfWGMCrmrN;<8h*q;3GqI1tjySReV5U;$`F7%ZfpDQPTew2FO1M#Z z779y*Wx{ghTp_F!Rtc+xHNq{zCOz?G<@Snjhj6FxRpD#GUBcbMJ;J@heZu|1H-!g< zhlGcPM}$X($Am3<`un>6KzLGkM(9Z5+-Z<=r$Nr0 z203>cZ5+-Z<=r$Nr0 z203>cZ5+-Z<=r$Nr0 z203>cHgz-ZnN-&(oYM$`u4oA zRoJGdv3rmIN`fY`|%8{!}@i6`m8eDbIG{ z1(mQv*PX&HrFq|pAb-*nhaAS>`*VF;GK^<^or*#UDI^dQL zxTOPb$jB7xfLl7?mJYZL>VO-vZvj#V+-QkJ>VVsz4!F@OnL-_Kqiyn?m+y-^P zZBPf?XfOPhI^af2Nkhbd9lc&Sbl@qVQ`aux0MvCjxT*%absesIM)>w3Wu$NnY*o1I zd^ju^bD*^k2cN_Q-#tLu{BW>Joag%~aDi~4Fk84>x#b8~C}pLtSLu4Su5a)?jo+@( z^;+NOxLzmB72bsQ7>-)tQwmi6jVgJekUdDaQLOX_uxBjX*d%;Nxs~Xi%}OcNJ!MKM zmqZo9N@10-T3938B4pnbj(Q}rZwf~}64^I}qaKOuo5EpT$-pbZ9m1W$SB0+$cL{e3 z_Xzh2_X+n4-xMBD`48&)knphZi14WJnD8y#`L^&K;k&})Vy{`)B3a(o{p`!aVU1bZ zlfqNFpFLVQEHl$TR*n2t_&f3ckHUWvo)?F$!ZxwmF1#RJ>ddvop{k5*Y z5q^tOjYTW|2pEKNjzwGMbqGo_7A>0B;YyDYruv$Y;_;mZrup6mru*Ii&hotl%v5@o zetV0sKsgi(ONHgir$SgMtP)lWYlK^bP0G1N*Ir$Js;8V4o)fky&vs#luv7RgeiZ|` z76Y9^moN-gD+X=q6JV?`UYLM4-o&6aF+EwBiry#2m;otbAn#ManXrK|koRt2rc!S7 zoy7H8-M`NFM_lLXI$v0zCvMae3x!2WFIM^kzD2lyldweJZq{|FzAaPAR^4AKtP|D? z8-$I*=Y-FzoG%Dp6uu;EQfZIto@U_*;c1~)-=5dAT7_+Tdb_Yg*eU!{-+nFp1{e$5 z^(b(ouuxbcEEAp=whF%#el7e47$<#;lfK1C-{PcianiRq>02Bu-siZJ`W7dB!)iD5 zEl&CtCw+^PzQq~Tw>X@3K%~CKp+_K6-{LSrV?NZkIE>JU)VDZ{(1_HxIE>JU)VDZ{ zmv~Kmi!-QiaR&7*&Y-@RTKvKau(thY``|IN2fyIx_*I(4|1PFkC4kd?%1H zQaA=HXA>YD?@aK`1kOXw6JWQA3x(Oj<+?vdxI!r_b-ha0t989b_>iz%c~%H3g;m08 zVU2K$@MY!jig1T;r|?zbYry~2IM{lYhe2lVuVx;`X4EIcASDm*59OLx94 zd`I}MutlYMU-x_^Xqgj<9y z!f%0-(Nm8CI)yG_7{*|eVJn^k#tP$wNy22|B3Qi1#*MJjlVJy1fa`o-V6Lw7bx(nE z+o;?Mg+)p)R(gq2N_AbP>#h2>R#+#j7d8kRh0h6(>nY8`6G}NPJgA~YUDzS) z6n?31zZQN2OvD~EAJ8du2|1Qa1Oq#PvBG#^k}z4A>VsDaEp#z(ChSQfTIeKTrc&0T zjuOGiULeQwi5NvNw*uwQv0S3Ya)}trF}+yn4=9ICLXPVajm^3))wdkoC1P~P`)h@D z!g^tYuu=G&ut~o?uBSH(PbmGg(5r7bx=YmPF41VyQ`&_c!cHMacZnL^C2Dk+Bs-QQ zJC-CnmLxltBs-QQJC-CnmLxltBs-QQJC-CnmLxltBs-QQJC-CnmLxltBs-QQJC-Cn zmLxltBs-QQJC-CnmLxltBs-QQJC-CnmLxltBs-QQJC-CnmLxltBs-QQJC-CnmLxki z4H7+wh`Is3xj?rtTq!Za1k~&_Sgk(+7YG*$vxO^!tAypczd~3ktP)lWYlK^bFYEqS zggb;gg|7-<6Ydi37VZ)5748%67rrSxC_E%QEIcASDm*4^(R1I|^#{U}!ZX4PlDbRy zmGE2KpR5{BR*fgC#*W)p)XMJXtlKtQt>NjVG(dlU3u%s_|sic(Q6dSv8)l z8c$Y@C#%MjRpZI3@nqF_vT8h8HJ+>*Pgad5tHzU6Vsx<-*X%=6!79^7`0fOb6plfU zn~E|w0ojwLqU5}e7bd_WrK0>yNfyrYCE|L4aG@|;xY&nxsT#|bXO3`%(pTzwm9AIo z`UdEHD&|Kl!&={sz;(W#0N4B00drN(n|wFpI$uxRsFXrsky0MgZ%dR?CS-q|iuxt8 zzfMK{64_s;qJD|&uT#M@WvLa`3G0Oo!bah9!k1O%SA;u+JB6iJaGa)S^9_*LyIYuSN>z^&Yix zkLL9rgY$Zi=Jg(f^Lh{bExd>GdXK?*y$4G0iQ(9>pkF;$a%d7d=fdY_sDv9 zWIa5x9v)c_kF1AB*25#~;nBR_qj|jtUQx_j^OQ8rQ?PQcdpJ)?g9SJS33*QtT zQ27t)`jGIj@QCoJ@R;x|-TAig9pSse7M1^f-E%@E{6N&-RoEsb+l3dTGab6_6m}`)OWpaEuD{mxH^OgGs#(yty}&W_fkLnT4j3zp z7bXdlh55pby1!6Zq?8g}mkGBjrB+xctQR&28->paPY6#7&+E6X!Y_qi3%>zoXrz&$ zF-C^Q7#SK}WN37e0So^H?%_&t1~i<=mEsJHD2QAs&d>-UL*s!A_1YQgwKLRfXQo4D{MW zt`ujWzb0~}I0OAPkt@X+=&y-fDb7$YoPl1L*IX&iQ2(2O{`U*4_|hkwDW7mAW^KHt zPdF1SeFCIUI1?-p=@ZTbSG=ZAI1}@rQXqZ8nV8u<1*A_n6EnNJf%FMy!p5Ei(kGk= z8~aBfeZraGkVv0!CTuL9NS|;fSYnvTbM;|mF zvt6baD7{!%Dr^(B3p<3Jz-;B2tvs`pXSVXpR-W0If1SoX%rjegW`jxoig{+E_txkczThy_Y17CvCyj+9Np&B9Wpw+Y*Y7xb$RU3Ut*l=2mD z3Ce#0=oGqyYf;)I(2BFb0;LoSAMibklug3T!cwIl*Zs}HHl?%+JA|FU>(Po&0~ZJv z3bTbPgsX%v3ttiL5bhMdDtt}2OSoION4QtGPq<(BrtqNfknphZi14WJnDBk!2f~xW zGr;BIWVtw5j@mqd6mqg$oGce7%TbR^Cnw9r$#S#>UXzpM&|cn8PL`vVnL9+rRGur9 z=Sty~2IM{lYhe2Ze`(hlNLkM}^0P?+ZT=o)n%DUQn64gkJ&I zV(j+`Z~*$>wUCGyu9O(zJYOqP76=y#vxO^!tAypcvqD%YtP)lWYlK^bFYEqSggb;g zg|7-<6Ydi37VZ)5748%67rrSxC_E%QEIcASDm*4^(R1I|^#{U}!ZX4PlDA9vmGE2K zzYd)I5jX(-(K>KK3|C5wuv}OntQ1xWtA#bfEy5Pz1?A8s{7U#O($~w*te2fx56wA^ z6xx~f7%dQKXV#(TEMX=m1>-zU<}tVh33q@7uh9-l}%vmSl@X`G}@J;{~k=SuT)r6;)<`7@n*k}EyQ zg)F?Lp5#InBK0H}qifztJ;{YPgGfEeg*SspJ;{YPgGfEeh15jqNiL)&QcrRrHIaIf z3#p0JlUztmq@LtLY9jR{7g7_cC%KTCNIl7g)I{n@E<6u>F7+fAvJ7IUpk+@}VtE=Sp*W)575&WB|tawR$+xy!g&WPLsc!{P18IfCnd1L~R zQP2g@ft^4`K^H&=h>XZBfDRBDkz0TfEc0YUZUIKBL`LKmKt|@wh};6mNMuBA0on_Z z5xE7Bk;sVL0%!$uV?=HNw1UWp+yZC?krBBC&KrjnE<@*VIt%GHiBUy*VIt%GHbRS-8{_>p zLW_9Kc)yL%A|m7cHbRS-C*%D#LQaYSW1(a$ zl#GRvu~0G=O2$ITSST3_C1asvER>9elCe-S7D~oK$yg{E3ngQrWGs}7g_5yQG8Rh4 zLdjSt84D$2p=2zSjD?c1P%;)u#zM(hC>aYSW1(a$l#E5P2}QCAMY0J+vI#}92}QCA zMY0J+vI#}92}QCAMY0J+vI#}92}QCAMY0J+vI#}92}QCAMY0J+vI#}92}QCAMUeD! zqewQPNH(EJHlav1p-48NNH(EJHlav1p-48NNH(EJHlav1p-48NST+ICwb0&T*#yKn z>Y6s8ST>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4 zD3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nq zmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@O(>R4D3(nqmQ5&@ zO(>R4D3(nqmQ5&@O(>R4D3(ol0GzLar#oC2BlLjX2jttO2YfuP;Y9$J>)Q%prLam^ zEvyl45jN>pExPvV`deIY(z7<{S({LsOyRRO=~?u%kH38S({KJ{1uo5d&BD#l~=i+pYt zpPR+!X7RaMd~Oz>o5km5@rgZ;`W5-yEIv1j&r&>VHGJ!Ao7m3;WFuPnRK{JI$S0l zE|U(INr%g%!)4OpGU;%cbhu19TqYeZlMa_jhs&hHWzyj?>2R5JxJ)`+CLJ!54wp%X z%cR3)(%~}caG7+tOgda99WIBAi;Z$fN2Is2T;9%dc{|JH?JSqKvmE-Afp6*UESI;l z9P&ax-p+DJeK(Na&T@G>%jNAXm$$QA-p+D)JIlcapGa?KxxAg_@^+Sk zAEwjWSuSs9xxAg_@^+SkH-1ZRXSuwcM#BGJRtq`{r;u+ z+*XL&3UON@ZY#uXg}AK{w-w^HLflq}+X``8A#N+gZH2h45VsZLwnE%ih}#NrTOn>M z#BGJRtq`{r;u++*XL&3UON@ZY#uXg}AK{x0T|y zQruRG+e&d;DQ+vpZKb%a6t|V)wo=?yirY$YTPbcU#cidytrWMF;F zE5&W4xUCeomEyKi+*XR)N^x5$ZY#xYrMRsWx0T|yQruRG+e&d;DQ+vpZKb%a6t|V) zwo=?yirY$YTPbcU#cidytrWMF;FE5&W4xUCeomEyKi+*XO(DsfvS zZmYy?mAI`Ew^ib{O59e7+bVHeC2p(4ZI!sK61P?2wo2SqiQ6i1TP1F*#BG(htrE9Y z;TP<#@#cj2?troY{;(-$YH?dFZmY#@wYaSox7FgdTHIEP+iG!JEpDsDZMC?q7Pr;nwp!d)i`!~( zTP<#@#cj2?troY{;9FnM%>nj+Zu6OBW`QNZH>6C5w|tswnp66h}#-*TO)33#BGhZtr531;1~a;tr531;9Fn zM%>nj+Zu6OBW`QNZH>6C5w|tswnp66h}#-*TO)33#BGhZtr53d!Q`XHR!B$WZjP;x zf>4+fXkb0qH~AhT7pZeQ4WIN4%yFZ5u{VMDFI;2L4Y2xtn7f z_um?YANwhf~xB7JDvFq$HAzPt^iDI$Gn+rSlb z=5CH{V20P9>M7jKu}$;kZQzG_(ucMU{1E9w+lH~z=SHpMs+C-|lB-s7)k>~f$yF=4 zY9&{#t>mheT(y#`R&v!!u3E`eE4gYVSFPl#m0Y!w zt5$N=O0HV@0cs^zt>mheT(y#`R&v!!t~$w8C%Nh*SDoallU#L@t4?y&Nv=A{RVTUX zBv+l}s*_xGlB-T~)k&^8$yF!0>Lgd4}Whx#}cWo#d*MTy>JG zPIA>rt~$w8C%Nh*SDoalmt6Idt6p-|ORjp!RWG^fC0D)Vs+U~#lB-^F)l05=$yG18 z>Lpjb1-HAt=o$<-ja8YEYP5YLr}!lB-d2HA=2V)mNkBYLr}!lB-d2HA=2V$<-*i8YNew zM#CEQ^ey<7MG9u&mn$Vx}9>(uA!Pmlj7{Av94k-oW_nN>Vk@0&?;E>4py(Vx- zWc*$e#t%fs?=@lkKxF)06UGlj#_u)3OT#iVey<5$8Y1KOn&71&GJdZKUK%3f_nP3P zAu@ii30@i^JO^BB!GJdZK zwa@Z1ey<557M76ldrk1<5E;MMgfR@$8Nb(r7-=Ho_nHtRP0ks=*Mt~pBIEa(Fv1}+ zey<5pqeRBdG-(rI0{%L;9m71}N0=E-SQMR%pAd&~{m&?Xp7KA=l@|F39x; zkTE2?Akh~<#$xS433<)9sa+^1uNjNA3*{s-ZfX~DCNgen7jh;tZfcM6+@n1AD9=60 zbC2@eqdfO0&ppa>kMi83JohNiJ<4;B^4z05_bSi5%5$&s+^anID$l*jbFcE;t33BA z&%MfXukzfhJohTky~=Z+^4zC9_bJbP%5$Ic+^0PEDbIb%bD#3ur#$y5&wa{spYq(N zJaLW`7{KW}Lh`v^dG1%9`<3T@<%#t`-9tX%#}$&#{mOH{^4zaH4WE|81 z%s##VGB)f0@?i?&pblVu@hp(BVFxg?ATkc>0OkU`pK(wJP;#a)4(b4&LS!7&L6!WV zN`6pm98}2`9YQZkn%jFJP#?)L(21z@;szG z4=K+>%JY!&Jfu7iDbGX7^N{j9q&yER&%?^|u<|^tJP#|+!^-op^2BL+;PbHZJghtq zE6>Bq^RV(ftUQk>&m+q7i1Iw5JdY^PBg*rL@;stEk0{S0%JYcwJfb|0D9&!fuosPa6jJdY~RqssHB@;s_Mk1Efj%JZo5JgPj8DbHid^O*8HraX@+&tuB- znDRWPJdY{QW6JZG@;s(Ik15Y%%JVpE+9$?w^s2=`MoArqHDd~+Uyh?^Yy~n(>Nt8v zBBNi9qaP$P`sFz674Ky9%W>E%BBNi9!(I^?{c;@kipc1fU(Yjvj}|=$GT@afpn5IgTEO$mo~j=xd0KemRc5hREob<`V?L> z`sFx!6C$Huj-xN2yo{1M4$Dtu^viqV`91Oco_KywJijNN-xJU8iRbsk^Lyg?J@NdW zcz#bjzbBsG6VJ`!8E-VkQ<}wdvv_V6&&}ewSv)t3=VtNTES{UibF+AE7SGM%xmi3n zi|1zX+$^4(#dEWGZWhnY;<;HoH;dvTZWhnY;<;HoH;dc3ujadXH*MkR10TR z3ujadXH*MkR10TR3ujadXH*MkR10TR3ujadUd^h!npJrK%BxwGSFsFzs=S(2c{Qu@YF6ddtjeodl~=PWuVz(V&8obb zRe3e5@@iJ))vU^^S(R6_Dz9c$Ud^h!npJrK%BxwGSFsFzs=S(2c{Qu@YF6ddtjeodl~=PWuVz(V&8obbRe3e5 z@@iJ))vU^^S(R6_Dz9c$Ud^h!npJrK%BxwGSFsFzs=S(2 zc{Qu@YF6ddtm;$f+g{^S?TY#odi8g>=B}tup;1Kciux3~MC7ihPf_E%pSz+yMU69s zyP`ftZ4$XF>QmGak-MTkMI8~jE9z6!5s|y1J_Qd%?uz;p67jd(74<1fOXRMoPf^aj z##xo{tV(!RB|NJVo>d9Ys)T1%!m}#jS(WgtN_bW!JgX9(RSD0kglAR4vnt_PmGG=e zcvdAms}i173D2s8XH~+pD&bj`@T^LBRwX>A5}s2DaTXUOI;RqzQwh(hgy&R3M4Rec za(GT9Jf{+#Qwh(hgy&Skb1LCEmGGQOcuplerxKo13D2p7=TyRTD&aYm@SI9`P9;32 z5}t=0+i#qQ%{c{R6wrCtF(M-#&%@df8S!`?R)xrj$MfhHumXe`^f4eK9?xS24SS8= zf$5BRJP(UUWW?inv}OL5Q9$R>mWhmbJdd_aWW?inv}GbA9?zp)@R|{i=P_$$&Ww0G zk6AO35s&9#KZ%TZJP#|%Yeqbthi)^45s&Ag$)}7~$=E6xTP0(wWNej;t&*`-GPX*_ zR>{~Z8CxY|t7L4IjIENfRWi0p##YJLDj8cPW2q=y_a2xC{OT}p6Hnb5U z&+lym!$d|4w}EF~Gg`O}t%k^G;dXJ}F3#JqDREjk6r(@HO3G>Zr`v}pc{r}+7|k99@`S4ku*UoqPb^mXQ+QhG1=I_#d0OcO*k>Y7E4={wOyp^$7hs=>JgxKsECBE4X{8r1 z&Lr}*(hIQIM4nc90sIhoTImH?13rbPm0o}yAo8@*3*d_1^0d+mV2Qi#X$Lx_lO58@ z4(Vivbh1M_*&&_e2?bMdCv~zzI@uwe?2t}&NGCg_lO58@4(Vivbh1M_*&&_mkWO|; zCp)B*9n#4T>12m=vO_xAA)V}yPIgEqJEW5x(#a0#WQTOJLps?Zo$QcKc1R~Xq>~-e z$qwmchjg+-I@uwe?2t}&NGCg_lO58@4(Vivbh1M_*&&_mkWO|;Cp)B*9n#4T>12m= zvO_xAA)V}yPIgEqJEW6%TL?Js6z84dyi=Tait|o!-YL#`9>f&fNzOaPd8at<6z84d zyi=Tait|o!-YL#I#d)VV?-b{q;=EIwcZ%~)ao#D;JH>gYIPVnao#MPxoOg=zPI2BT z&O60gYIPVnao#MPxoOj6%bjc2M$qsbM4s^*5bjc2M$qsa3l=Ttb zY)w1RB|Fe1JJ2ON&?P(2B|Fe1JJ2ON&?P(2B|Fe1JJ2ON&?P(2B|Fe1JJ2ON&?P(2 zB|Fe1JJ2ON&?P&7_cQ3}v;$qT16{HMU9tmRvIAYR16{HMU9tmRvIAYR16{HMU9tmR zvIAYR16}`Lbyou%S9P85lXmrIN&b=luxxXswT!HNyZW&(LY9rKKU=n9gl$0UB(P7r zPtwEtBlhiDwuYf8CDfx551}+e7|Nt6O&gj?-#Wx4Y09Kbnx>S}Hj_@%l+ug|2(2i{^o@D}@lx7ZKlc+Hao zGG7uoUi0L5&65L4??Mi(>vF&+mD0K{$7`M(uX%F3=E?DzC&z1^9IttDyynUAnkUC= zo*WQJb!lCf0|Mzv>$)5eNLO0d<$yrC(z-4OJP=Lmx*V^0a=hlr@tP;cYn~jhd2&Dk z^^n$eIbQSRfC|c?bzKe^cuCld0h=*kGX`wNfXx`N83Q(Bz-A2Ci~*Z5U^516#(>Qj zuo(k3W58w%*o*<2F<>(WY{r1i7_b=wHe zXAI;S19`?ko-vST4CEODdB#AVF_32rXAI;S19`?k zo-vST4CEODdB#AVF_32rXAI;S0|nNxz&aLK#{%nE zU>ysrV}W%nu#N@RvA{YOSjPhESYRCstYd+7EU=CR*0I1k7Ffpu>sVkN3#?;-bu6%s z1=g{^Iu=;R0_#{{9Sf{ufpsjfjs@1Sz&aLK#{%nEU>ysrqr>sV;rQZkd~rCwI2>Ob zjxP?!7l-4E!|}!8_~LMUaX7v>9A6xcFAm2ShvSRG@x|fz;&6O%IKDU>UmT7v4#yXV zObjxP?!7l-4E!|}!8 z_~LMUaX7v>9A6xcFAm2ShvSRG@x|fz;&6O%IKDU>UmT7v4#yXV@DFTy}PrKhm z-u*6Oyr`7U7%2j)R7$(wMfe}$r!z*1@IQ2=Ge(N=KXj!tMvCx1bfq&!ioE+>uXcBFV+R??y7sR?%6dv*Su1{t$v~YwFcQR(Xh~vZ`|J4)A&H+%Z+cXJ-GJ1wJ)w) zx9)*;KUzP&KDGYJ`ZqU>Zn(JN`3?D|_NJpv=bL_~>AOvDZk*is_NM5jS2u?@zqIA? zEw5~C-}>0r*SB81E`8lg+uFBXX%05Wnt!g1OAI@LS0ZFQXf^HQlC+;s4u852X+QJ@J{=| zz=^<_z;xi@pbVFeyE^abJlFX^=cUdky1v`}O!t-U7rI~W{!#ZE z-TCgTJ#{?~_dL~O^}NvYgPu2f-rYOiTh+U@x1)EU_e5{F_m$qaZ+vjyefuu%d*Y_n zo38e4>znAizi+Yc$(!%*@9Q7#KiwbhpX-01|5E=K`oGfueE*C6uk7#JKfC|Y{ZH)w z{{Ei~92@xJz&i)j1CJbd=D>Fj*ax>CJbLhR2j94*_m+!?Jcs%ZJ$d+7A@X*@W+IREsIR{JH{rX`Lbg1U*vwS=`av?sh5(P6=0w z_@z9$dT{5`6{1R9D$$iVq5H8C?ZNwX{;))Q@vW}!mFOzu+aTYbAP(=xTVPMAwUG!;2-lL3yw-SfU$6@7l{l$+-(DV`erj+ar5qPgi$W0GGXT z>ViyPm`KL7L{yGv&T8g@99}T==zM5C?)#a(Nae3>Uo^ZKK463|CPnkwCA-jX!L8?5K)?!AaEZCJ>7TYh0 zL%J;e)YZK!GFG(Ib>n_{r*5Y8RKgDp40Bc{A=*r4QW2f11l%^bwqZ(5rc+u}k87#3 zGCBRBY6r{Ry4D`om}j|JQ-c*!1~oaSPiqlfPHS-^c0opU)0j!XKt{r~P9`3Qp~(7V z_&c?fsm%wbG_qldH+8L4+3uQK#&w91t*5w+R%+5!dQT9xf@+3tO4u!;rS$1c4AQ4G zj4C=~CNXAn$+VtG8yXcvl8I?Dzmb@cb15U4GSaBrFO9S`XOo#&RGPXTm-l9jGzJ?+ zOPF(LHIZ(W^RpP+4D}cCr;<^iM?asIQ<=1!=bBN&oQr7}T%l-r#z<%}GQ5#CSJ#ed zsTml!h-AQzzMnHpV=AVXEt;8|(^C-` zP?a;rIi0N>)6>AjbTSn;-GMN)l$_O4@nqtHB%JFpeTFO(l!swB2sR1TX(NtSsGDX? z*UuueG^(*=@~n(&XJKFcoDqc`xDp1M2rcd6bzU>eW5~v#K~_-#_DaL3GqYsgXcCPi zl4&`ejKz}k=nY0AlOo%~MtUOZ8p71$Mj(}>X+^+DYevju$fB>VcBZQ?V^EXRx*ns! z1ghtuXL?qJsSQ|(l}o3RC^OTkOeCF20Sc)ksR2FH+LRG9(ymnq!pV%8&`mQqn@-R5 zcXrOt&to>sv3CeYlJU+D%P)i1>~tr|-Q~&L`9JYH?H?v)&;O1~l4XHrBxTH{&7f(- zg2~iO=dGjTd&;)>fHECy{UBHzm$7hZLh| zDZ!FYpoKVcB_i!O=rl@N@iqi%pW4yEM|DYJh9y%w)Sp?dbqZ&#jpP1S=tR6L+g{y* zin2SvlR|q2%a_nK$iHRDV`x`{jwJb7jaTY>t+xGWyWECEkCt1Z64$DGmpB5eI6k;f zT{z=>KkD9z9-C;7`kfH|(ij-XBg@iAx)w^pIw`i-azBVmLLahL3TYI)ail4X8`YiW zl8-j7!S~taXCYyw-QJIr59+OnKDwh$7%lgbG@V8XVL~z$M`?`FNt)59&Y+%)6@#&` zjFJpAC!7&>$|x^m`%bnANu3Asr;wHrx4K=b`_r|dnY0qel4ZKu5W-Jkl*;{RMQd&^ z-FfAX=^n;DA;=vyno~52G%qA{r_m!jWT3gLJM}k)-$cnWCOF+0H3y22Lo*HUD_*J* zL4E>llyOeIm_h3}X9RpWR|Qw9L6Ql-bSFX2qKxFyTqFw-nxwcFdBow)VHasMdUzu; z_m!lRuJb%&X@+LFHnrmFKZSOqB`>3k^DJ!&TqJdVh0G}Usa?{ReA2R}Zl7nkJ<_v` zc8F5te8om;8d;KG}+9A4w)#kwr~GKE~CX@*-?4 zYTq5HbI7AMrf^TzT8+^RY7)k27P|_jXZbUHPqT@M8)#0r{)lWwz9tTikIKJ# z#3^QXuJXNizi-9S`G2;uY5&OD(Aw(%&w7ZW*y`~zF^+_SIgB}tK6$YiQu2N?7@1qK zqN6vMU5ksKuU-Y->RrSydD0K~hy575WE{IMmDpqPVsE8d)QDOENC(eYIq6IO?hqvdo;SF>*K)*er1FI<&GdPI; z)2g=z?evo#=cB{&5ia8pc_@qv8lo1s)T}aPscB_!!R6 zy%npn+px+#B~IgX)H|?do5X3NXK<$EC&VXl9^&01EHtH3{3doGKaCwAd~Xxqv%e&M zMf|$>vUpm-&XM93za)NDzKVGo z5s$#%{2Aur_r#0hFYt`$pW_M9e}UJ)6MN#X#P4BDZ1GtM&cYA@tpV#@eAU9@hS0(_#5Ke;+smf zQX~FLTvck7I`KE+HSy2N8l_%XBC9kgjpB7Y{qzUQT4kNGUfFuS&SdDK|0QsT0*Ya>P~l8H~p^z&{JHc*lYmz+xB z^E;D`OMT(n+7v!+yF6(l7Ik^n&t?)cS}GHdX_>TJ=(c5QF`A8vP~LkFGwj-bUjusa z>;1eC-fvd^Sct1%uD){h4)2%Wv%TN+RKAzL`WW3?LbYUgI$$ZPj7sa<6P9Q98Ot;B z@yQlnOY`ESv?eAdTdYH&W@+^i)fWm$Yt4ujwc6=+&4{$Ri0C4YZ%<6hX}P$lNvm#R zGK?HaWpzaDBWho`IUEXwnl0fEg?yHnnAAg|fK{PNwBu>h&;{?%#H8i*4O&&c!RD5h zkfnqJR;B7ge`GZ4of?!>a(RtX(a{2ONG{4nG?(r2wk_T^8J=j?PKG9ZA(S0DHHm^| z>U~L6!1Ab8^^pHEoYhcxFkpFc>l^e*yzg{SvpzKiVV0*OU{$G-dQ>qIv6PXi@Gy6x z+RYSxU$(~67M3H6K8=jVI*MkpgC(0Gtt`%}Z1ZWuZsi&^>-COUiZ&duYE`r+rByq0 zj7$K+HyE<&=TnmZ>QwohM@-Qr0zuZAp|D&G!}jQJz*?goKRubPR)#~ntOnh8 zK48_W$8VcFe#*^kZb5z%=QpTXQ9pG1WVXJ32;v8=I)BI#LsmuGV78Vnb+}l{W*DKe zZDKO3z%m$$!9~~=Vrx5Ee5h8Yo85A%QqjhxA*gW#oj($W{gzFZ6{5)p)rTx`@Uo&P zZ0<(%#XE9(QdsrAK^aE7UvFqo5GMu)7sJ^GuiuLMn_Hp$S}->H1J*h*9W~(XPqGoF--Ku75DZNg$YWzQ^>}`;J9qKegHl^Dk zo6;SSP3ca^ru2Hqrc^>Ur7e(6X)9z?>Vs@bcd2rK@zbV4<%X~vfF)Wzo8vr^sFMIEZV zk$dA;g;nX|8?&S=k4UlkS@tHw2Yr3n4rLR1r9ubvpv)BpfV94V6;Oj)1_D;_14=RS z5pZU#p_VAxstf~>ez8LgL zIk1Sfx|fS(&~3x=kfRv!ODjzC=+JGGU#pOnviWNjyDPVa25Dy3z(YVDB>F}H>>;2O zvq<<|H&rndj{2<1AuWo@TQQ_HgARu<6TqfHFx;VURO@T@p`B6m9tpRFCfueV0S*B- zu!-ODVobeM7xgr-v~laW!ud7(T0+Y$V)S}Q9|;-W-6ef|15k4>XInLxAySU|U^hQN z5U_e#ee|rNWF2vOGAIY&rm0`0OfXSiIe-!>{AQa5*RyG3JH!Wqu_{-USOWDj_uDXinX4UHQmrGVP+OJyO z{zVKqjqM`9|31MmcF@`l`TN--gqN}bEnvY1s0M*tw~qsujqqkmz$&ZwvypS;qk)C2 zLvwY&*Vo*#V&GarrJfuhmCL3(NLsd#eW@d*-YzM23l!Vr&X~)BCP!1yQZYdeeMtUc z_yJ{OlZC$!TZ5|AiDZauGXm?$QMmE4HHP6BFk^;byb<-X5Cb4aK`2BVQ7uaT*$?6*@epx}c!)SnJVe}1 zJO@GCK|Dm^|IRs)>A)ljV)msszi8)iMr6tTvb zBG$O-w`z2&a@WLpa^C@X-s8`S<0lb_l}n*-)Zn93M8ZoBTa~^!Ys(1SMSB=)tlQzP zO7nWks_+eCK~&XoxxNaQjkts^d)jM9P7YtLuc_|HR#gsXcPSTdo3svHoaDRRbcdyd Zdy6Gm=sD%RPg|bPWWD$h#s3t#{x=NUkZJ$` literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/fonts/SourceCodePro-Bold.ttf b/src/clients/lib/ruby/doc/fonts/SourceCodePro-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..61e3090c1c6944db11572b8d1e3177402f128c02 GIT binary patch literal 71200 zcmdSCd0?DXxj+7%cQP|sCz;GX$?RKZPclg+``$K7leFoUbfaY{1qxIsi%_s^QfgUS zp(1iCf(t6vs!&^0uHwe!a*^wH5xrKbB6_j<<#PQhOunDzocGN;NxgFAL#c&TCbp}ZtjY{O@+ym0%KyXWRG zGPAvn_e(F__5K~N@BRorZ~n3*op^fZ1>4X6+fT3h4&I~p+jgSCFd%;%pKZb4;hmT6 zxpv2sTmBn=|5TDnZrpYGdE3vuB=;*kuN!|~ed+dVcbBYT58!>wNAh2`{n87DU;7UF zKDS$vx@LA?e&wFF>#9B=G5z->sV2AkiVJp^-uRmjN>b$y(SJaqwX>3q-_SiaeNJ`v ze@i~yYiN=F)n`AgUgusa{EvKC_X7HsN;0+LA3mr1Y2lCf{o341bI;0$`AFhD@mo(V za;LOf(o5$_2Ic*7v`Nxwf{3J(XXK~xt|T9jY4+pd%C<_)%#YRzW0|f*C(9-H!zf8k znk)Y|Fg&!tNXkgvQm@n_wW9q=X%F5%7e79!Oj;}D0lBTx zE-8i2j!9k8uyhGp2Bj$e3ZrK;`t<{+O7N5#jQM@EUnH%^h<9Ve5ot)uVvK321@}{U z+DberjQcEq?ZGpf(Bi}ABlx{sx>))>K2I3&J!u<09Y*W#r4`a{$s#={CDCKKbb<7U z^boEOOOHt}yUcJhX4=W?s^~}HW{PQ%1cnwHyJU@#W(YzME zQdoQOtAFkdV2}Ybo?7zi0z8KS(UsVf-lA8P6u{qun1}M3dkJgI&c7^DC1yMDhT`9>V_q7#MvMcKbQ$b?FDv0sQ` zI>{z&lG2hL_fyggKf5&2v-srF&l~{Vx>dSa`X}iVpd7bw$bAAW&q^Pf|GAaly@RLI zKb`Wb7t~LFo6|k;6{$r2CEoioU~9lSK+dHbSrZ#&7qA=IK6W>|kA0jSW3RB^vfs;f za$X*ir{%Tsth`;mK)zglzkIuVm;A7NO#YI5LVjBQhWxzzbNN+J%Sv6f&Z4W+g>? zez)K25BfX(!~XaA-|xS}f0zHT|Kt8g{h#uG&VSth75~X#ZO{guM*pgSjYnAvTgi4R zvp&kc!2Xr}hP^I3`K(uA)-y%3KFDW%Tz*PEC4XK1j{H;kv`*3)FzZ^(I;4v#vtEH& zPhr;U=Vx8%^?SqKgtyH*=-ueu<=yAK%X=T6^`HF~ztdljS$AO8yZw9oH~8;VX8lS3 zXZ>HqtiP(vS~vGUbHAQ@cJ7;V&&+*&?rU>jnEU+P(YZr&*UViuw`;C{E;8qyGtE`a zmCxzsq{9Cc-YA?d{Jii&;cJDb3tuffRd}*+tngUjk-`THw-s(F+*G)(aAo0&!li{v z&TKrh;mq1IYtBrcnL0CZrs_=jt7l(5`szKe-u3E%SNFYo-K!VBdhV;!ua3Ps^6Iiz z`+oI@)Bk?@#nbB;%Llv+NI`J%FgR#bib)Mp9Mm)kE|La4&VoBOfdb`l_F6e* zZI?Pgsk=a5dqB7PKzE3r4}p^`1C3b$x;6^RJr1riAx(l-tb$xK4Z6ElS_i(q0kmUQ z+6Y>*S=s{bbq=`nc1R27VgCE2J3tfels*jFc@$LTQBbE(OP>O@`mFSM>2uN(pkH5< zj!DO*FF_i43RL=pbW-}N^mXZL(lB%8d9IKyMccKIJ|s}>hw%F< zyd=m6@8?(X>oUkS5~%dkpi>us%1f+|zj3+r0bI`q)w*5!2&-iloK?^m_6PPF`yDue zBz=puu|LVx?2qg$|AZu6&t7N$h5HXmcYy=kEgb|OxlcL-KJWl&r38-fFlge(r2l4D zvzw$V*$tp!ACUI4n?Vz})5-DWP%j5p+K=ixDnXM!=OfW#2(3eQMl)Ocz}>vwG&( zzTvuK{ll|$fq;M6v1eAz9D8QCE-*WbUWWOZV#YUI6t|hOj_K~uQUJ>7z2=4c7p9&g~4zM1?s3F6bJ<{ z&)H!-yDT-nW@Z^?8kkK3os!aV#^fYBF4OO)uUEZgN|_FtUaO8) zZ?3+s`f&B}>X)nEsD7(vPt9xQX7l5i=B-SI^C!1D+$ECp=Gj zQ{EQuZtoM`6W(unpY!$lcKfdL-RwK)JM4SJcii_)-%I|mztP|AAMvmCZ}ac+f5-ol z{}=w({ci>2fGOY(L<7x%gMlM~M+3(KPY1pi_+d~E-WY79WcWMbm%_gYzaF_Pa$V$uk^3SKM;?zn8F?#ub@b-w zUC{@lpNt-lC1P!{!PsPMV{Aw4<%X*pZf>}%;lYMaHXLvGdc$)KKW_L{!y656#rMY# z$B)K87e5hyHvVFwCGq9NGl}ODKTVuToK3u)EKORI{$wiIo*Yg-o^q$6speE~YAm%r zb#CfA>6UbVdS`l1dSCir`bhe<^qUzeQ<-sQ!kNZQcV;B>!OSl*uV>!M%2`v^osDLX zWFO5Q%RZg`UiOFCUp96&zTEhm#y>X}n#!B(O~Iy2Q)koirs<}wO&2#^-E?!)T}=-* zeX{9z)7P7xYx;51ubSRy`fIbHxwhHcoM^r$SCgyHHRM`y{kfI7ncVrg-MPKF{kg*} z!ItY0({{G)?R;t8n)l~Z`S$#9 z{&;($y{&z)eX@OH`~4k;j(r_(b?)kXva6EIuj#&MR> zzij-v@ehvQH~#SW31;+qpMPrNlLO}0$-PL51YPi~&vF}Zv4y2)E7zd8B* zgT3Ar%$XITl2ZK;kEnM{$ZW8 zu5{hXb-UMnZoOfB|N6u0|GdG!;oyeXXUb<%Grcp@Ggr(!G4sut*Jn#-yJvUI9+^Ek z`|`%pjbj@RZhUT2`KDEyj%<2)bN%M#&09fsWa)czZ?b#jhan%B!PCKHmd${3Wb3{P zp`)sIR%xiFhH6Pi4P~!@&cD*wWQpaBx{$G@E!S+fSq-6J^fmo`dh529j%2cfUb5@9 z+X}yVES=A%(;Xd+=+8v`xe3p^ z74!3`q=w3(hB|7f6BFZ8cTj_a8ctz#B=?mhPjS169(Q0cH7BI<7f(ngy!5#D;%dfA z#=Q^MTD%zUUAWp_Y;4MhT66rBGv@Mm*+Tpk%7=_03x3@*w$3!Q$+p(I6R)XFRcp_2 ztg~O}SoaIl&Z<*eFWdSU{^4@!)G6k=>@r#`lltfGlPl!kL5f;|m723Bq!?b&SH4Pm z&6{Y!^J`x@i9M;6qUPF;6H+y1Q(N;@NN4QLlaS7$QY~+fqGuel1gi)IZB}myHo|BN zwPsi>?`65>w$_$RNoz}6zBOm_G6y>m>WeQ+4vY^Z*RMUdX=k**ab06LnjBa;kepe0 zZp(y^{j*Ta+upt^hRziZ-#H8tO$u z0Lvz@5IAyD0LwlJ;WZ%TH~^{ufFyuZidPQz7D7&3X+$J24%8~#b@4kF-tVQY zwc2ydd4S5qELKM^Yi)^!f(E^b8SM^Z6s@6PMs98CmC=VT9M4U%5rFJv`A3=>{Qgj% z+f<#l)JJL^7AL#DI_1wbgoc+#X7jnp);hB%YO~tyiSEeQ8ha?^aQ66X>&u>sWE|e1 zusMwJDQP;mloko!Kz3;ndY#7j2tOl5O)wjPnVMQ_aUI zBSL^@I(l`07~vTq-Hqw~xOMgHG>vsda(3HAU00vND10!E^U@~hvTe{hvcLmV_9VtN zNqWAC3|mvex5kJqqtnMvD6W;*ras`ZBcF5R9Y%*SX1sR$M;wn-PF6nR_{jGDJ$r8d z*zk(v@#D!A!yilC#pNvqTCx>VQyXUMfh?|40dd9+$`i^kvIS=w2Lor?7JBR0v0eDj z>^o1K*a`AObAECz#y$@lMJ-=7;g?O}~6QbiWvm)wnv3a{3%J#CeJX{{^(T{l zyegAx_pV-j-I{oO&2_6+?_Hae1J8?O@U~Q(Z&-Fkdw6^2C^(%wf zrkH!m6?Ij4TE{XCYu2o3(CNW(G0z0{-GX_hp>-?sbkVe2Me|HhLqg0`klqTspWt(> z$Pxo4F6F{(YdH=CaXu>XF3?tGI&!F$m=6(DECHN|qp}f9h)@EuLhLgCRH|jD7Sh<( ziRM(aKQNZPq_<^#Z?M0kdpf>sbMy4okc!8B2U&Tr<@lJW61RdCYVZd*2xt8qEqH3MdLTj8%2_NX&8)g6j2+t{?`%Gl%XNOMzT zv#zwVEWrl$UQ=pxHjd?5r#rm4C_pTAV+{e|PBm;k8`M=~X%*R`RYa&ELfCVPuo>)^ zRuREW0S8bFC*I8RRXEXB!Eq^zI}7e`-Z+)uc;nSsNUXtfiWeeSGI+6rby`AoH7$wy zZjZs?4L@q__Iq06ZaKInoLJH7jr2`tnl_K5G85;v4)5@vTj`3`H6`nV(VVY}-Bep= z%dTt>gt5Zr=E-(Xc;z)~XK!8`Px~-U%(@o~uETy+<76xQWu%1}i&k1p8;w|jp09;C zORiU!53~ksCY>?#&n1rJaC70G+0VPj6163Vr*3=ym3@0R4qbJ_-CO8cI;jV6tp{AI z0GnP7vN3vItmt{2)X=G&OUR81+)e_HI?1A(&=XP?xRC`tHbES!0Iqn6rI5Ho0-+4i zCa)Y$$R|dUa3C=X5l20zI&n@j^3#J&>AXGO9;^#}v@w$kH7);@C6IJAwE8<%Wg92j zJgrez%3tg6+1Qz%=?#1-k&QLjy)IjowfShWIg$=XVyRa>*{HX&q<%%NVIbplr3Yf^ z<<62yUqj9x?a$V^GW~#qEVTj-?#1|}pp$k=6oljWMLR|KMOc-UBJ)@!Yy`BvZ^Lsp- z>02ZC(X%snY#APZGjpjAm!)$d6a7hk91KQ@MC1%TKRklGUM zg?_V;&6r9Y#aijh2D3L7bSC`1M#psc-0tLf-tP=I1g*NGs-`N<1zHn9zu)5bxvk?3 z&DMBNJkZz>j3hm(`bzleo4Ztw%D2MO-4EOLDX?;e^GW(;6YlK%t`m0#e%Fh;8r+eT zZjhQdRAk^`58sJMClU2Lgw+a~NNSpycxVjj7U!W3(w}pd5WB3p%3W1b>8`5&)VCY% z|CeL`@(?q1H(i!%xwNVK%8$wi-`RtC=-?rc^M7F2^L9&C(1+!*%WRxefi1s``Xy z`ABqlQ|o_zyRESaX0@w3div#q)zRLpJr(sDORB~On@6$^c3UzM@qf7RU$e>BXR#DO zCl5N;0lnA@Z;68GdYZPr2%>IkaML#R7O*UO{x!*mzExGmv+Uo)Q zN|99>(%$^cmOxms!SI<844oW?mAE781ZJkfFv;?Y$e(29fiJGuGo4Pa-aY))&qVvu zE?2rQYLgE}r>QF1Kd_+~P0Gu6Ut9R0uaTn)VAKy7Ir;vK{sa4S5};Cdr3`a~P7bb2ysHHKi6j&w z>EqDFN!g;G{zJzP;lF(FZ-0Ad534Dh#WTn7OcQ_RJS8e2(3BLN8x1Ffyoo0$m;u`# zo<+|j2@TpDWO!T1oU;YSjvQgn9ywCz-pdZ}-CNkT7tiX#zLeluR(Lj*Gpbl4HCm%t zMb#CR;#q>z=DDy%&oFa^2U6EPorAgNId-3`bIVX&XM2n7)JSfa#jY<*H?HfCRJh}y zQ1JXnh*6+3c!~PlCAjx@7QJw)z|NC66@n+z9;n=zbQ^+(4%c!Hd2`N^(^*0~SPzFk zto!FjzV+iz99a2b`C#F{Sw-RP!nMqD{uk(MT!Q)eF+V+AW6Hyp%uhjJJYB$rcGiqj zaLFMSER2JspB1_&(HjTG@@TlfWGoMDu!nH}6lt5-YgO`~`Fk*b(%Fa(**Q+t@YVQO zt`F*2h+FSMFpXtd$gA_P(7>TVyUyNs=$aCPK?luxpt-3;XE2mpB_I6l#*M#yXU~u7 zrq)imzx2_Me#woSx*yS+2Qg2gMHWrFTw)>D@Q(OBlPW+3RO&+(tx{!DfeVj(ZXWC!m*&|adixl_4dGfv&zvabWPWXtYq+uQkDJShr1 zZ3g|YfCkKCs$%KTFjWC7-w|QKAzO~16pQUOF;#H~PhqLf?aQLkW!pQ|Yp%OHhgW5G z=Eha4ZdjL2ufJhx)r~XR4_tZPxtCpb?s->YPION5fR_n-LKbdrm|wE9iV(qZv=V&< z-K>PxLc3|>&>^lu`?`Ru*g`5R9($v8%d&>}^35%q4*mL??k*f0Thr>UjpR?(m zxx}|YWMwHlHz^MTMir1O=Pg}|jah?{l`zdJFfE21MBE|dYce1M2SBZ?xTCX8cPFGU z_KXD$g6~2wun4LO`KDNpBK@K*&*Ckeoh`YpuGh?szQ$Dpjny+dqr=;}I=2l+x2`r1 zg{tc+WETOCfcVZ>S*1HO5OsZazY5@+KH~}1mFj6NWZ!~?mE)$cdf7Q13NgnLgOS55Sh>My`HvBRcjUPnCJz0!Wz({T z{+2^*+xEujJHPw=@8yHm>}2Q27DwT4fLb%~F$P#?5$U1qyqy4RFQU;YYDf{JRi16Y zpLRY+J7z{w*-1#(b}5B6&9;$|vn&InGdINx$%i(;2UodjRk}U0A(_jX+!5#6x?I!| z>YHip-klx~4knV>?(EdSc(8wK&)`k1PkEz3Pqp1#T^26)Cp*FoFc_o~TU>R%dau_U zbgo?%AI%4{S%Mc%mIQf?U_NgPP)vs!#1-QJ)!`*$MzM~nzwVU5ADXOom`bXhriuHX{URRs zV%r66_|FeWnJ=Ry@tS+gvRdhc5rLRA_!sIlSR5~k% zKgOn5&-IR+&zEytkAS)px4Cm(Z_W)@Drua8K2$?OQ|7${?h3Eckhho=8_75-j@^Q( z*+Rd1>ES_>x4NXpTRr&TONU=!$37MviN!{uA1kbSg`VAxXNLeYiqBP^ts@ZWiq5_w zMDepPs43apbqh{Ro{{a0L1JiU&4u5y=L-MES_`&WcH;Wk!l;lPzCX7UG3w89I(Uk- zOu(Hqaq{@WD@HysMY{Vwi#_#J;XmYOC*SFx@a6Hq{>Ec2ck}9M^auD z2Z7yYo;QgIQzfh&x}NaV-kFkIEZG^cpY}X2#Dv#m7a8|O-lY~Vv2c*8y9pO2Fi4e@Tz^omO z!62f#PeMWC$e|L?XgD*Ts}FZiBtpx4C6!kmvZbx@_D$Ke{I$kMO$>opBt5y!PvYIIB37K9C+tno0iDO*DZb|cxpZ-%l{ zJ3G40@ek+o{i`N=V}tJQ^rgA3^T!i^>D@jUih4H1Rt^lTtha25hC+kefp&m>7IUiM zun%dlUotC2XcaC?Ld06yom#>><NDeknpiK%6X3!nQ*i8CibB zN(JnNbJgyMk+P|p;Z&UCD48W|TC&rvKXh${u6`t%oydD1XwJA2R%_fI@A^y6wxO`c zIq{iyhH`b`@X)rtv0?*#cCgft7nlJ#o4a0=Q#qHRD$PDtu5i23@9 z_Cr|a145*P_ns_05n=kwCr7q4cg%EpOXR}w($)E3PoOcev$^y9u_W7($u;zr^BITx zH{`70vi2skd8W=68rrre(UNJTJre%XQThAeOY7Csp_tON4Ov1eG^Gc@G61wt>#M=! zNI4_wAY6q+(-hr!uS>V0co731V|Q@%0%+0P!jPT7UUtYmNMNZR9!xa?`smz5G1b{BcWs3)*4LbIy9-|-{FV`GF0oVc8=x9y zcu*E{VQqqnh$l!6W}$h84RAPAl3)-Z^owqR44sN~6yKm9NNbn_^7vT(`wo-e%e z+yqS1z_(t|R6pit)2tjzrlT=yRl8L!34Gsp3<|kc;QouYnnS%TRORqgo1>0^H5iOK zww`m3{Iz%H96n2_v22&2+*oq?IqY^kI}F(LfbRH_H=rzZiR7SwVhOOc20zgpuI(se zXbeDUP(l{CY$2nou!xWrK{hV3g$UbC8SaF&izEvX-bN55K1Y%TDQU#N`EPz+AW+b; zAz{lL3SU-HVrohT(q*RBL`&y^`Z~+|JSJM7(JYynyh*na~ah+B|SYNb~1!o=-pnpyK+DYZe zv$KQ#%+m8tGDjS9U0@em!h?$~xI$_p0hJ^NA)uW9SV;mA9WThBBYaLa?Crb^syGrfJW*68twEE&6$mO+3Y3DPhswA> zeiA3cB9-w|Myy!ihXr@!m7!>sVmZjqSLh%Mk3bd@E{Mg218 z=y1Es7yttVd$T|1Rr+$dJ?_#HOXPUSfa?*ar9V(7VZc-azi1nUAb=`4`E0JY zyj=?qrLsLsj=&OPvGAb7!Oypij({)<(-Ejycmx!47mn|qYb$k;o!x=B-Rp?dXJ-9} z*x6k@UFGH18;xy4g@QP%6iZQ$eJHZSDR`s-{oUQ!P!qOog|8=7;e(e6NBv(MkPu66Lz*kEuZmW^41S$AZx+3WAw)IGGX@u51u-Rkg| z%Uq$1H`v+WNV;aMbyiD7t*Odb?g}>ggPlo4mw@&(VLefK53rf+Nu+#o{cOo$DJD0X zRe}5*YHTTm3X_&bpazWzwZibiJ%Wl0RiH@g6F1yydH+iFGwi|JxOQCh&n z6dPdPoRh0S7z3-?)~!6`P1GmdhgL+>ySBo9a=JO=46x;ZA-7{j=tdoNsFGI32r z69z#}mgh}yx{&YiWTm~Lq{3D?dFPX#VP{{Du8hT2Mqe+$5`|}SJ0PAJz)AUspQ&u3 z20bk@P8mZB^A~~5WN{!xTbS4C@n{EH7S2^M7m}T=$jnx9k5_Nh>-6QNz6%4!N_~mm zp!a@o;_-TYnZ874EUo(#JNui+NHjVYdh}7cjzoS_sCg{3qM>d$_ZVMe1T>%-YjkOR zQL(vcD_BDDmY7*IUUU*Cj!7=QBny^A7Bae$D#HDwu_BwH(NVORAAJ1bTt$6VNx7{& z_246)d$_~oF_j?qtLZ@|zp=`ewAoVDRdauuwxw*gqxxcjm;dPa` z-MDQc?rX4@=`(F@8GV_(!55#{wz0e}5sNvi+_oyVo>kf0RgQ*O(!IK8(oj=pYnV)T z{94II?VGV{+31F0GQ(MZ@yW6<84H7a2w|zVdE5Q zq))Z-m4OeyrbTNczgPqA$d}n5#l#v##3n_@axIpJ7$#XO>1vQEc#;7EA?b=01oyRIIUVws~)4J#8+mNrKBet#8Otfld%Rz(bAo(vufY$&00sS>DddPfM3lf3ZM@YDgedtts* z{I=VeyExu#+uTo(Cv-QgjA3L%E2mRAdx(cTMW#fKa;Jz@L#U)BlB0xBTmp*>;GQfo z2HdN*j4Iq$k}8S!9C*)>g>8l#8hp6$4EBHE|314a|{gwGi|Nw`{JeBx0HAs8=bns*%Bnp!ZwNX z8by3(LW|#0*rFEQsSr+ZK@mM%!52mTa_lf!1TbY)HW85{ezcTgF(DY4C|aKqd14Ut zRErAim>DuN!<3>LSCAtmM+=^oLEY}Pr4_;MwavY=p($(1)0i*Sf95{MT%NsqH(96J zs!Z$k)&^^KWveFCugj7I!|g z@uKE%xS3veOlJoCdHeL(Mwe^j*mSx-katXvZK|wvZekVb*48v$1TDpHc|9b!T`Kk{ zLWTx!Mg7nkG;M>F3st3{oT`c!Rl@{Xx}3nFYP1Lgg$*qf%1}=(x*|qPxivh$h9ZyX zrF*i+R9{^JzSMK*6L&oR_~VB@^O?`w@d^3*+X91r{J*X6v*r2ahYsNvivYeF-7;b_ zM7i{!Tq3H4XFh>~IiTBuiV+N+A4A3{8 zeWx1lkQv28fRqG0!ba@A-SI7duGbUxH}`lWKX)h;TtDS*5R}F&o19i@7`%!CsthTPsk6hx^fU_p*2zDl%@#J{U zX|dG1z3KjJbjV?Da1XDGJGmcdH<-(7@=xIhqIh1!iO>CyybN@Oa(|X-{#iv!(@;T^ zNK`G7v}4$+aSqei`WAji>2w45s}p}=^SO6kRVNXP$gM7d3liTWj!0mbKa)IcQOMku z^u&&ijvW(e_1f=)gx$2N!>3-`>l^!mu~uuo!eNTUq5(^tDeK4wqJ0@RTQ+$e!co>; zH#vFzhD>I|^^?8llXvp`-k$SUM58Ot?@g^}uJc%XDyn+Yx$dfpVT+?aH%fl82c@^! zx8-$!&&N2tl9CH@#edeu*dIlnD*L07r>f+Zu^WMfhrhIwWVn`1XNFSdp(_#HPzMCHkS9cjipj!ZC>@-WN&B>h1whJ>h&Fe(CjIl= zTv1WohP6K;uVPOk*Vn)f@U!?3yNi8IegbRvaXLw>6>^gbfp=SxmZiYb-qx4{E*med zb~{}o5qhz^FlT@98kWZc{&?IUKpvRP<7GrHAbAaNn#r@I`MZUfAi~*6I4A*CqbqSu zGP;toNX{hT$EYClYf;jm5hA0KICzXbUua>`ouB^n&i!pWv1GvDVRnLjQGUDDD7z$? zVL-G!#y*E)64d4fi56`y!%zEt?x(#SA0%66w>%EHHipU(A~%@NdWl_OiRs9{*u+?@ zWKdiMMPrjjU#4W7dC;aga8;|Dh%13kNm83V*U2bZlv0Rz#CkLa?Jv}OC=~QGIu0YG zLbg`xjfUE)h_k7qs>IqGu|`a+#PDI5!cVs)f=Sk#+O}n_&rvI1sy8BqBwbe1eO?}W z(>QmG$8+jn?1-p)qpVU3PEe>28h|07_ORXx#P4Ek?|t{RG&F4(j7A66Hzg2R7-lw4 z*M^S1b**->2PdRIu%qlJwZuIn=`VZ_zB?CUw@4+x&5y{mC(mM^_Q_|lC(ijjxeYYo z-#JZqlz*lhG$F%j!dZnToE0%cEmgduwIe5wuWfOA_&wU8Ll^a5F+UDQD{3E^Z%-^}zhS;TMeUM|x_pwn2C*mx zSR!|*xV0p2LDLR#5{WWs9t|quqe|DLj*}`OXaR^m7$7;RL`hyeTRyb+!-%ond(++r2oLjfA<7HD zS{gVEv*bQPJCB9uu*IqgwhC@9ZV$gldt^a7!BC8oP};`;D-$0-vtaKQx2t=%xLw^l z(N5!waT2r@z+ZTR5Tkk!r#zs=EG`LR)})PMqDqvSr7YQ|`g4_YIxYat|)Kgrx`d%()~3;o~cw1k499XSDyYCsh2mkNJZ;}VS&@+eRuYeQO z05fh-PfL`zNwg?-OXDUd(bJ{Wrl`RaN#UdrAYu0@oqvz?GV)zT@t%k>p%$vQL3>w+ zD}9=ZHIQep0drP_=4h733)rlV`QXl&F*dK$L5cb=cO=&>%hCFHuG_%6U2cj}p6<#` z_Sbpnc3ofVJPwoZY3G7H zUEHqj>Ed>EPenWJofwDj9magR(ypcK7Q{TS6qj4nTu;3>c4?66rfn=gD*yKR`jf1yX?3Q|0JbH-zF|(>G;K}y* z!%eY(#q4y}MRMU_cgk(4J-@ojVYSpd-N8)2n`%gU+@bDV0b&=?R9d$KGFOxQ4% zmA-rX?eEdPe?j{T^W)sHp#7)w?RPF{KRe%kH??CoYcQYH;PH(B^fJ`9Q}#l!zH9c( zC4L0ulxlti&8s8w5=DM2#R^h1HN;yOfGGZ(qA%$j-?qXX8wv(oRTUK#P?YT%L@ z?S=GDka1o$1~iIzSpD(Ee5L0dY^9cqpF~XGEsiYFup);t?n&3`Z~->ePxe(8Y96Jy|N0$%OFQ z!++!M!(0pfVlo&^(yQ=maZR%Fop^qB?zf16r2yS`j_ZE#mc@^K2tAld(-*rZL0^&Uekbe^+3q=hrmppf-f3c6YYL+ z8*59_K2i)(72o%bV&9=8yj%P2@6o=0K|AfQ80Sujy&H*QC|9i2xW_rYW3 z!dgs(62zf#*(K3(iYZ+4vS~pQBmtHx@vkE%{~_uRIG4=@P}iCA4;nO2tRkyu_5>|MT;Z`Ax+@LEIfn>VS0pZymdFbR zxfL*_$UvOV`E(8NGKwmL7?X#+jpw!t>j~w5DLL*gQ#IRX?Q%B`);K+t4Kb1LZVNc7 z95ofzQZ4Vj&{l12N;~2Km+_-K1ztA0z10>=nVzq+XD$OZ=WT?a_P_?AOj=Q&v{RfW zf}bvu+BD0)@)5;cq{IvxIoN8zHH@>-+M+UZF5m~76n%6}l<-_+=^)*AJL)wP+lJ>s<+Iu|DZ zaD3u<_goGKCISD#Z2%|mjK|FLb2}o=ZIK+%QPe;39{u+(=)VDYDaMa4=>G=V#rOvo z^e6ll{WA;tlWZ#b->dW=0FtNpe9(aTX9{BeZqT)Bbu#*o{+{ec?aag1rRd$Y22`G> z^Fe%X8gz*AAm=4aFQJLIC^lLtx}gy!&04D9jTU2b3TJ~sUL;RS0HcUlKB`zmG6dPL z)u3>SxFJg;Nt{-t0t0182(6InLsSB{=o-c~j%x%Gg`xy<8H;>T&(V!NyuZHn|^rMFc*;Jr+a9N+t#g6FT`FF(a2M0EHb#565B9K3|Vhkc0 z;Q}ZY^nRjI(B6nf*+sjM{fI^hS?)kpaevxF(Z69qf1**M|A!XzCma#|;|ux|j)?vT zsXt)56*LWoO?X|lswaJkhFBcD&aGHM+S4E%{ZlY|s)lwLe<8*Z0i&>3Qq@Il`jWy3 zp?S(B?7p0;1?HQ-iB4&0zye}6RPCs*Dm7igi#< zM26=?G{KiPzY=Ah8qHb~601-(kf>AmAj+5V`D^5ff=!V2qO63-62#CY({EGa{sh_x z4Mj<$h>2Ko*%U}R%UreP=2EYv)0ysySk0CSN}yPpS~0*gDl(3+x2}4g>_j@vB`h?w zt(Q_miV`h8O(_=hc%|Vvo|31lo;qWbR_NbmR>=;7_^nOzbAt6;iDWtVVgZ6(4> zNV3OCtOZVa!KbkXEl)t$NF7*(9jl-#S=R^x+$FyxbwXVejMV?WFo$Ar@X(V_vWJy4 zieIq`o<{L~IW?dkA6tIAh82>}mAMhRnjikCDA!(Zm?;=SVxgj54sIElO6EqsBEKM``ERkQ8 zcs;H-P$;oj5LG&)oC}ecT!+&TApH`{c~@C2WGT`-nf<$LV}s9S27MHwS(VjMmKai# zUT(OuP*a^D9cmWLJPr`O5qnA^4ecH6DWXP!)l?Vu-Tj;j2*ir93L$%oOdOGY z!;@|}j_|rIobF@=-BIW)<=}7|3foNWOtqm5&(%@A70e6H7PKF6U|N{(O0**%2JNdv zyHm^;R8bzqe2emA6n?y9hqQ(zRBB-kgs69$ z9b)`{Lw~e?w(tV*AprPNeVHn)euM%&jp%DJVgk1*8VL39gmqJa9QlZdu2bqEMTHs3 zMP$y~5c%aVjE{{Sdf|n=d%qLEBF@$p-hAH`@4F8ps5wR+Ej~?=KQuC}5OUxm?HAIa z`BTYzK~E#WM1=5D3)L+kUk91Q5uhhT6KIJ&46}jc8nDrPcz{e>UiK?VNbh^!JuGzi zu#%coE%K12`>yK$#-7(#UA6k-B0q`tPWY&ZP6{7Y*dX=@S_AkG$rQrwb$hjFAH-gx zj*Z%%5o*vlBWOpizSUJ`8NE6o;c2EaV?;}SBCi6aKjj>mi;Vhm zeZ09f(b2PEhVAgIXdYX3$mMkg?8tRtyR(}ZYffbH>&B;VXt>LlzGO?`c@}6&yPbtE zv9tXIE8(9bUe?0Tk;==2O_6w+u=yQOV7u7=r}8q&@%*GNa?!u@uD=v(N2;y!Aw_hq;82r30$DRv+B4{|#cnHsgn|sh6=I4F`wX@p^ zInllx=NmPHfIGZDJ7N{>7oc7EKSci{N0t7I#?QRR`1dN~^O`@L=d_FY7{xd|2Z_&T zM$D&Dv@h--d5`}4=lh4KrV!>Y#?LA`Ml1X`f^LcNKLSQd>s>s4<~_#0R~g^O<1Pq3 z9enmW`cuq|=$~3J zKKUj^|GO9T*Tz?A5{+LY6HOBR@1g!Uh5eAnsWxB(s<59}Ak%3SNr_$48X|O*m9o)D zUPQ1H9pwlPCIzk09inf*%omnDGA_~exgnBDA!V|eyLu67Yb)gz#h|cN*zAUjcNSMi z+Io%0K*r!)qpd_>D;TnG;?(yGo_ zyoEK|5N_;%>geXgiVA)bu_BdDEm9g-sCX2cRu^T2HAfd1Qyt}%3o^tON$fV`=%SP{ z;2e&cyq4p7H^*Hy)`7S4v#rR}6vm4Fi(?(s{)>Gh`;{{(`cupV1WeGf1c4pnwBxxU z{@gy^9yW<~qJ19z+;ga%-R>yvPx^)EA79X)>=~l}!3F&Zr$ztFg8n2siT?LefACoY zaGmPMl*8INZ#z{iquRzRqKqakD!3w47xKDl7Oqp|ZHJYPwE8-zpC-QH8kx2P z7oz}FVLPpW#_#0)sG_OR=7K<)z>8$cL!1q+K3rp@s&W^6E0Vso3j8AM0`7?-_5WvT zRhgv)XSgW!Lnt_-S_3$2IsuzT)O<5wHACttQ50_NfEQbh zsoIw?MUq`utda_BQ2YUoxCkC#B*JNtw$0Gh7HYOKakj!APj9$k)v6meWT;G`-Mwa=hoX%$b4Nkfk02jlP@Sz7 z>vW1zr-8;4WCNf>d>}eRqNbQ83HJ2>GYLt4fSG^w4uTqxBJ>dn!Z!Fc5d90o^vMO&b`%8Iy$dW*?m-Z1XemwKB=TgvO|oTaiuZ%l^r zmwYWf*%>G^?lQ`((%+W6?*c5X*sxE#7hN8juszD0;@&WdQQ!CWImDppZh z65-3Qg-#OYxKxX!L`hF7uKdUo(@-FNp$A`lO-_uZlsb^Cr=qsEF&r;05jogi=P%du zT8329Q2v-H?#gvnCOhgxm4VUmFekAhC7FtbbW#F71HN&5-6%_`T&qQV% zpbYWv!@4j|!gzJ+&i@xv})emF$s+9qm9`R9p3ovKm<(J9(!ECmx zb6z5kD?6Z(yCrrFEm@ef<0{U?)LH~ofq*=TI5GmaRCmq-rll-qbwzD^d|^U!lgZ<# zF4xQZv7V-m%0lm=1ZS}vz6IbPgjiFYe?Zy-Ur}YW#c^Nv(w3pWuu&2}K+mH7Q`per z*qeJ58|7lXP90z9X~aK-UUx5sr}2eMr^!%ie<7n$e<4HNyFlh5Sx?Alu+H#tcz<1o z+Fx#5(4S;U(H|CpqW-Jq`!~Nw|JL{D-|`;)^Y78WP3gbbAEAEl!D9c#y`W}-o&|Uv z+bA+$=4-SnHgWBcC{iQWV?)4N9VgC2k|`dTFiezOqPVp*$2EMN7x&B4w?1g@AAG0C zyb!gZ-t7}yN^Ed+&vw`gk$p-j15H#=C?GfEk~xdAHHmzSVi)AXNMMN~n6Hs9 z)qgvBhX_owqa1aM|sMA_Mx+j{2&=QLaz1BMNRc zp}koDIxEsfwtHqC~T$gf=DV2yKvnh+8wh@k5ShH-PlEQLH>627F=b>@YjN)eBa3(U_Vf&1d~xfAxm??+ryoP}41{U=OQ%UZ^poL?9)u={Hw-KqGP33y615~*$-<(XWqu1;Z8 z8f2G5plZe?3QKY+Ceh;hkhDy-U9A);OnMZMBn+eov?11jg+b`hVn@N>)Cx65;i|Ru z>g3?NmxYY<6qki$7bg1BR2R~1+fH>MS^c}zg(P}S^=c}?`97eod5PgkiM-N)u*B!0 z)#w+3BFXeV4koNSQgHav?Gy|V>UOnmxZnP zW)muBi7dSqu86-!Ez2c(Z?RUZ@nzCm1&(WTrkHU>jZ>hhDi{j(=TWbDs(hd=IOuCi zUfA4)`t$MSTXLN<-QEv2H7C1_XHdejt*O?$xvm~l?djf*c#DACkjK77Xs8B{RBZHV+|2BQE8}w z?-s~5@Vt))3JPa2iUH8+<|QFw7Muap&k)(W_78+6eEE(NookfWqY8CRCMP>^)NkIG zxH$DwCk{ozVF}lp+fr6@Hq`H|4-d??b!-_3_vH%y3oduoGmG7Q3{jbZMqlqBu&A5Y z<)Ruz^YXo-p=&3931wG2n;KNKIxpmNE9cc+)VggXkchLR2VW9mm#U>ueWIE}r5@C6 zQ%g0Tc;Fn*e1Rgjn~l>MVUizbqyzRgzh-4obSG_|OUScAe6=3R#5Gx}Si9o;Tf7n( zyGbRuNN1_xH4EX*!)jnFzz&jB36lWs47gidZEwC76EEfZaPW{bbVi z7ll?X2|d<4*)$nYb&iEKz&9Jet0T-?GQr}hf~t^wgxCOi?f+WIYH=Mac6LD>D-W1d z2XevcHM_k+IW>c(7K5&=THA0@yqIEUMCm7CsHBii1KG)lgI2TR3ilQsm4t5~e%oq} zXDVxpYd}3;8*g2fv4_od@|2;$lP-AFB2aQ!W~9j_ia_C8IzZPdu@{w^Jg&@0+lM8! zx0cYg651(zl`?ttWl(vQ8i+fQok)w&!*Gf+-Kb-QfH1jIDOZXxj1%mJZ$Hn%6otX0 zhgb>wk^BKnMnu&D;dXoxjN*>8g&x|euWb!? zH1D*!YTY$E<(GDMo4q5w|MGQTeU0g7BxBqr-OBEj--34GgLicyT_~fcB4i8;RHHzN zV51ZEXuiBGC|7ZIUJnc9iz0zO_G?qPJL74zdM%#Hp!>#S-e}b8iN)lJ!VBJf+*MUR zT4wNtetl!WQx^)=dB7Q^9|InLl-GflwP8l|edqkVD9F!e1RieMpAx-U>(1i!pT z6+~O;$LmXV_WqE)&Sb4|THLLco$|y;JXUI0uP+IvKF!bR8a($`@&wK)_0`wN6Ng=mE?2YT{PXGB=sH|@YKJ51Hm5>60GOMk+t`n> z4v$86m1C$)S+R_uLF9(II5171)#97tO_(m#tr6t@-Al1Op|8}t+(!M)JF}$~M%hqd zXgF_AWqmN?t+7?qzAWn;W;5&C@5s0uS?B)3Q~pL@O^I%j>-HyDkliVN6*U!J<9|Pg zzyFE<{X4!Fud}z=9WvD(q$)lVu9Uxw`f#`ch{E#R+D4U;Vy{z`qt%m>tL5gX*Bfoq zEo*OIMm}i3;s+RK_xw1h-OtCV!h1B1@{K$;14V*3*zV>?L=1Ft!9cJ@96-&D7vM)i zBp9Es_BUDVnDk5bes(Q#=oZ&Y(}jL{#J5pCQ}{5tVVnhZPVo1FS|0d&;dd}#Tzv86 zwfII&F)l5N&l^mKU5kP7E+VY(xsPCe-$1ORfgv&ke?JGQ=q~vU{C$xBeF~oYkD+FT zf!)pj{xM<)ACqMK{UHDQCb^IO1hJR~b_f6a3vv&>_xXqTn<7W>-R7uo@e*j18J^9B zRD#ncsBa*tDwUw%QqA+KR09EFc=B`gj&iHXj5?&l-NW)rg=27?>Q@m2p-RQH%0@hW_lf&+;E#-9E(>`lFV4I#ytnso-%(YdO)wN{?v%_c0bk^1MRGBI( zOy*KUjXhvb_tudwXfJ5Q%Q#z3Zgs2%jhLqs8hug#r0@}(v6G->)x5?Zio@e%k&HuE zvh5I`uq>|7$ZMzI`#gTX^KzfDwp6D#8Qi-ry8QBBtwk<189lq$7aq=`C>H+b9{;CY zy@zgSpA`I=$3vYsFF8l(?)zsik$?Ru^ign5>4U5f1*h^kw(OGG`{mwGp$YvI9LJe) z71b_6tpLoNqNDlDF*4;Zy|MTFOIk}>=?OfhS-~g3iE8VSV@!NM7FE)-BF38ZBPtO_ zF>qw61Pp|-Oj2-;w1EuD3mc4~o634KwLX`jI1zQ z%npi2$5WK^h4IyTOY`6E5_p7J3xAM5zlHiK=LJ|qYeUQrK27M$BlDECQN^TKPM8}| z+lHkg`EV_pF7bK2zLIHH8_vtU?qr9TzH{E&k#y6z%DIDYik?qwipC{MqXnC>loAK4 zMZBVyjEW7s?iM~v+M*~Zq9$O7ctHbT#lQWnXtZ3>{Wn6XR49~8K805Z_i|S{7)YlB z!L)j%IsQyev%{c?)i_1sDPnJktsAg6q=WPQphE=)KpMBPQ0opS&6`)^OJVEf3w2c{ zlUW|qH8r>+t|~$y%wM4~eEtqlZ3>s6SUmd9uv&uYqWshamh@Dvw>L*GN^Q+um-F^)|oHKG>L(ziW*#6e;knNeoe37C!wZs*hbN|4A8-;`PM09;)M6+VVsL zIdR0G#y2sX!R8agjoD(X&ROT>!!dB-&w>x!sEkFU7vl!zCVZeOR$P{C0UZa1eO3q01NE`1SwmVp5#8L7h^8NpuxqI(|q~s`H@_p}t+?~5~r<^%$ z&di*dNeyQeRCXM!S3gcEx3Q?%h7~u=Bjj@o_|?lv>MfTc>D%N1)2yPb0Z?2Xo^>3+ z*)E^;s>?0vo0mTkmj_3hgx2(*b>yMcQ<_&EzEacNT!YUCP5AAWoz<pe-UtE)o?0$c`bcke*Wre&hR)*Bs$FT#O&K6Uv%qnF87T#G|lxVlSy>eA0u(PwTZ&CS_*=r`)HxnNxelK<&CxDErZAA z(tIU>%C0>N#rZp`v-?`ri+lHG?#{~{E-D+Fc%-(Vbgw@*FE_h4t-`?geb_>Uz&%fK zFK|W*#sbh55jIw1>_qd0Y+I#4YcdMFqZ*Ra*bS&M(5Z^!2DNUoWzM*nb_iXagJ}$U6}O; z&m~E5Y;&42^%a1(vZ^sZX>m5)SI|{G*V^^S_{oT}W?2K8GlgKcGnJGvv6{C0ln zi>5nwW$k!nRt9F3eb|lqAL>tF7gmBNYQc%L2jzTWnw-?Tjw;hewjFW zXI1AuyJ=5jVUqf0x}T@iRgKg%9qy|9QI%cMoB~J=x0jXg-dmenl3HI=e4wDHwC(VC zMQx>x-VEdA+i={R{_;Bi=28x5(G5y57i1ZA4lt-b!Wk47=!y3>d zSH~3WfWqm9YT$XP^}uYC#%$chSl6HR~taG2wCP((SMR!tHG*sc~X};Rm3dNbOEzyYFx$!L{E- ze->(bVIzh%4>;2R>D1NwP%W2dx!p!a_r=C!pbabcsOV`J_|g?)Hbw`riF9A4UEPtL z-cViNJfF8Cdn!LK`;6~IYf*JyiM_Y`$3Ljp`CWd<^X5E3Juky^f~ii}6N_ll+11PG zoPeRTJvTn11A(-?rm}N?ZSDTfN+-Of+P16tQNPuCxV^Nr{cvmR;kHunc57>Qck8aM zF0Ci-w%(+^4;&RiuBh9TgB_PB(iISdN1>*jgK>Gpm>i5-1Ob(cML2y+ZzNfc64l)3 zULs=DTYOoacv8M4=;ES4#i3E^x6tm`f4Dz9kn>})8qb6YD8S5qeovlizc zF6`RX+MSm%h!fu04x_$@(6;~ZeFroj0GDPuT+6bEy$hsSV%@<4sj&n;bP*eLU^557ayfAC|M{y^>f!pZ(G zoW%Ui;N>J=oAz;O1y925;$KlE;yV$KyAk30GA8jE5F+V=#ovm1 z2H?#P|Fve0pHaT}ThWhfT$ld_`dcCXFzSVmKH}lfMtBg-_@ju&-ets}ka(g-r|(Ee z|L%DDj)e5@HtEly9PhruyKE`vppIwxP~of>Zr?1wpYi(K1+4AtX!14xx_)c(oz9bV zr^(Z--f;P^tS3Er&jDB7y6%bB#dx=_drV!V1@4_kdH#g9Hy|GOd?9{X;?2Gn*#}48 za!knpx2>rH^HC`FD$L0_`|RG7C-Fll$Ggui0k@ugc6XU_h5)}eJ$6nSS_~)b%e%*< zA4U1z{XBP>{XDlI-n*aYu6v~%onGU%UvP`#=79Mk;#TL;d$3RQoq9vFes?e5jRG!j zJ@=S;2(P!EdrUpD?}m695Ih-PkbOYJ({+qjZ{kD(%J&0aub+o6*D4lrE z-iU^4q<>vPdhT`DukoW@ESz%mIc_&<{Jhzum%S0hCm5G}XUdno6vXGvf=`2=0pJ1m zFC$*>X;2P6Nq^jvf_T}}a94rAukTb!T0s2uC?`$5`SSOzH$kD%SG5=Z@w==g#~yaO zTWCIZI;~tWYxQi}bk8r4dnsfvmjMIc);5-VX#=+%(m8?$Q8((t3_P6)CwRTfPq2PE zl^iXETi^~??tRhW)3@$8TC%IQsCf6`-2>yrrcwR8(=}iXOy@YHu$GSF74shn+^>Fyukgn@AM<7XcGqLb23-C+ z&Yu6gK6}0t)k2U_)`wv8yvO$oP&*&;4wJ^QdfZh~IdB2VVZO$%LFG9Z2@As?`q9$u zp2gsYo^e-zS@(T7WBmzz#(JgHjX0i#{|Oye6_2|gai7#M!W+SykN+U@KCIL2jK_Td z>Es;!nt0s%5ciPIYscfBQZH6-OS%zfyVu6!9z)zKbzGgqfd;Z>&vDWfYxb@=?On6? zA*nNZbR3`JS8wXUqMoqAn*Cf_QgLtNK)_kFKe4OGvu01aTt2QoZ@n8Zf-aX&Yg&Er z@@e%7>sRGWdK34Xh2wo!AJRRc^8(kNbf3_1z_p3HA9+8i z^8(iN7P230KbpY2U?tO@RNaqEvP25wLE~&R!|3`3b;vPfXD|H-j%{cHJ z=YJl@*rEcR1LuD*42Pc!ho6pf!lRsy(#Af!1}q@y87Fhh>^6tNclvx!q_x%-H5JuY zAGXJDs%+ti^l2XUMjYCy>SdkpKbT9J&BTJ)fz9x<(W(}Hj}LeBqlI*BV1euREp-GpN^OAFx? zuJ<#PVz&bp8F9WUCK$yVl!u0J4?EUAkP^2!;iv@V&nV3D=jLYhG_^FS_NE*9vi;e` z1v&oQyuSU=_xN7PD;2TN`3PFq_m`8dwX(uDK3f1A8ZSzWS3*F@o%iQ|YpR?%7l>k--&lIYv-d#Tacc~}vD+Tk@b*XZJ;nYLB47vq=V_B)AE0i3P$8`uf+f&XYWNXP|4B2|hbeReD z#!oD4*BAE|Q#YmH$UGjtF57Ck<1?UA+xoJ8^(~owZL0S``tCzhZEbHH8F{E}>d>xq z%qlk3kNx~;Q{4l&XT9)S>Sc2&@6T^O#Jy!`%Ztz!zweEB+JVveDThzoW02&UG4bMZ z4tSCyW*kq?IsjV;Wzr0Qoy}09Oxp3L4U3ZfJV02hRWk)uSR6lKF)km@`HD;GflD{3 zjDou28vm~P()z+L99_srD%n>*annx!A-l1&H2LnkFCIIlmU6RqH+8k`C{m%3)Jtm( z#pP#i+%?o$R#-HgcdQ#jdvv%~JH{7Ba1UI!drHg|dcoZd^$4_K1MC~>!H0Q=7bKi| zfLf9M1`PZ~>qO=)p6U`|PEEQ{R7L$53~DU+GkPXZ4=B zfnai4b{hVVq^#f8(ll9Ec5u(JVz_r4@84U6?isR)eopulcim%Yrq}gR@1W3kc!b_` zL0U6%t&Tgzf8XjrYeZUid?P*;g_TF)S!z7Co>Iw^T(S^yvogabgp6m8!gSP-ynUhF zggunlz8+ z=C(HurEcg+>F7zhGk0e< zM_}kT&?i@*Pv*P|VCHbs_`A7s?B3k+sLs=*vBOQ-DQFKDV0a}RR}f`F-#G^vZ4BVN zvn%g8bVUJ2GpXZ`*NnBE@z3n9tKB~nIJ4_`HK{%{dTg++Xk6WL>B-85w6kZ^yHDPF zBp8|P&0GqnwbV?Nl;0X&TFJQ$Hjda8KZNbyV7=67#T8s`cGSAfa=nvH!`&UV!qdPH zINUulA_pyXu5&Dhz>~t%!=!K>DXLeGu70&6I>UTe1H)b2{?31>o$Nf>d&6Ku{oxz> zPwtwiIk}^*Xm`CYH~*H|xmyZ$HngXQ7gD>XqsNX!XM56bdQnQVJ(*LKa_NRljQA91 zc5qkaOM&fmr?pq;-YT+qm50UMW6;2+AeGFe(kS8~hBTzOO-g)Jxpj_YCEJTPJ3FyV z-d^eU-1J?-#iORH#}2t#U)HZxHKvarOCRfd^nv%CI<`^v)X7)n1P6|(kNdjw{WZr9 zpDg;}S2mA~q}G&e0)PhSre?IG-nz+Yhv{rxBAE>dkW8^n9>LlQ?nBYj95n#34uDZ3 z@tM-d`%TD=yv>dMXBp_yC>x#o^_odDk0;ZgfIbq8$AYQsnmuh5D(PbSzR0}`bNGA5 zz4*I5skpAKG9@>w$}SvP4%Q|8r1fNLKR$o>@)IXd^yBkEEf41IIrJe{`c2`MI^0$E z@+FST%vchBf&YknK8!{FS$$rO=yj^?o`G>AjTg6()nuhx90WYKahgkH3d{cj@t@)?vo1)Ae%sk7rEC6+Z0Tno&QTATTRd17j@{%;Y%h5|CbJ z9nd|?BQ<_FLsRqPJKBr$%j=t}?V`f`y1ZSbBdz7T?ZUF1SnzJ>uB;iYe+lkX$60m# zxdqvIJ2DOyl;xDx7FE_}Wj0lnG*;y8r~vKn1K>{p=P3Y)2LfNF=ombG z0(IK%?R@U`Sy@JtvpBf=BWH2A+p!90)@re%X2>Dkj9Y~`i}Z7oiSFT@NyW$Wcb61Y zlo#fe=4+DE%d-6YiW<7B>qdwo_(~U~r&r&1U42qgprf>9XFd>vKc96!==n*| zGXuTSsDm5#9vrzsL$2oGiOa4riAI8^bVU;LoBkoDZm4QzcQh~3{Yc>DEw5ZG#gP(vEh{%Et^TLJoD#eE?JB*x zzBt3TUN_L&v-9+Ty>I_eGi}um7(UN}Wz*;0E8jy^-y;XJ)uVj5ovtU&6r8TA5xxIx2c{%xIcQlojRu|Q^ zSM(j-S(;OlpHWoby>tJu)4BOOa&{D?rIx%TyC{1{PF8N-Z8de-$$3>fi)+hrx_4Dn zWhJNO0gVN<<$1lJ_xsSUhcvyLU3z;>GWrovbBHX^%Z5~Tj#MF);mm@rnr12cD@ca9 z_ePVP<|Vv2jHONQ7Mb-{zDC^Fo?4Y#AIPaLXsS)F?P%BZt{-SFD&BRVrM9o+$(qdc z%EEiHvf67aJ3C45^0tGGwFf#YOA1Nvr!Id`y-mFj)pGukp5}V~5qQKQ0I>FX`RY@9 z0+X$~cC}6h_IzM+YoM!Zv43E(t7~8j`5#06SH|-rx6a=P%sakvJC%B+r+_J4z(Btg zpn2{MzR#+yB+g9}2F~RW227CEzu}&fn@N2a5cf3FJRVO&r&FfE{6#>W+B|uW@3R+# ze_xGsPa>W8EmQTl>`MPmeIIW>iiTs=t6%cgm)r`+Wn{i^;DF?RrSEg0mZ?B?;vhin$E?m3)m4{g!}2+vzQ5V??E749 zer{2DaM%Q><-NXdsE3nq1;bVP;PtDvJ8BQi<}u<@=1fGwC!i|6D%Hja^-h`1n5K z+!lkp@X_>rT75I=DDsNWG8Vf%*z)>ldd~-bE+0+br(1T?LDT&Z#_#$*uHKn+9y+NU z{9z$vCrFC?avsZno16`g<)ks6_E^pZ^Uz=UVfCJ*+coU}1%KsI=oI)XKddj(#%0?5 zrMz_vAJzd{`3g19ioY^fUE~y!?f$}rm~x}X@dJl$zy7Va-!M;(ya0|?Rw6$W!{Tww zE;J4F=G}dYuEy9Nte!Ls4UrLsR@N8chx&>aMJT5 z8Y(L4o$ykSeaaibgI`bj7@p|SPMLLmpgFhaL!B~I;M@#ntQgBv+i~e;?X`S|wZ!e( z21wG!f*F>MUzuQ|ordsRMu7L%$@8z+ZYqr-u75RYEbSI3r z|8Y}y>s8thT98k+wf;Hl_uqYfvuu0)k6*a^iq^Yr=bgDV8visA=={nHP(?y%s$w1n zzc|8SYz6U8mVFK^{Q5#ia>v4{mo;t&WNPo;tDpiHcr|$8$)v|MKME|@(n!LO<=_p@ z`&^qJ3yoxL=gD18&++N)C{YC$F6`eAw$QYpd^mhT+PMDyjw+KK)3)%CLDR ze0P}VB#i05W}cI+B1Hp^e<{|W`nY*cwF+?Svc#uZFTtJ~c}}+~l3r(?Gpy{SPn+i~ zt32sh^PH3a-R3_w&$(8^o__(isARfl!6VB&^M?1JdG^74+%(U;8}8NSIT`bv|6ra| ztXHZ|^Ng7!<&>FbeI6&8N%`qkPtr;AoMDwE-EW?=EPv8h%yUltr;@bp;5thtTn6`Ug+M(i4%`4qFP*^BFu#b{`KX?flbt!#v&YoU!W z;%896CX&u0nGH|qh_#@frVt0ugPF)?bUthkM;5~NR1^_Ih+RP%YbdgU?{3hn3*Y_L zK6q7*;B^pB-a?%srNH)h0g`@F=dijvFz(woI5HI6CpEG{)Yr~h5I;GDUd3DLm7v=3 zlD7kG3#g|wN@74#1cX&7GRDJrP}9`<5ab^O3dleBIICwQn_aE*#l7 z+p)5I#^2G~(YuHKz+NO=3$+FTUK}Q7v;kfWjR@hhp}B`dXCtC$hK**N#rGh{96>Y4 z7&G9tnC7KbopTH*Br>9!1Id5nvjwDF*2vue!kBLkzn0_gX7J>2Bx_$oj!s<)>y$iE zEAx1mKoj4T@) z>w7ypx3;!ALTrA=d}OtA@4b}F`!`rHB z+|n$tgc_$cF{zr)8+I85v?R2Rts5b*Aep8)fyIQ*EB62$3Dl+i)@`z-wg#5qA z=s7Tz`I!ZtMNC~Bv2AC8tu5dxs&OSLsBfsj*B~k)hGaAfHO0vh#u+#$kK^|w_=9O} zbXgAe#}i5*pIl8FQr%w(Ut;YJ&MCy}C{^I08d*WimgWc%eJ3S5tQg)=C7j1+8NWkN zJS)g!BL@`-xrgd%6kK~!KW{)@>}|Xl0~W~l>&QW+L2bW+kcw&%@-vD2V`=t( z{vYw@Qep}n=7et7B*Ixdje|hp6b^^j1r6(u>+u%Wq#9n~^)301Fj zH{>Gn04*2tlh`=?rXC_+u4~;Rnn=1o@-KA`Igxo;(y~r(Lk1nWS;w1*bqh+F*E~nb zaiG{lsWi}{h;gOR%}ZVln{ve_38Q4bXAbH&fh2^o*&DEnc1%1#nIm@sp}>9~xdb1Sud^B^QpZV4+=#Z|JJHdCO_~bQ-EV1KHLs=A zX&>RINkM)TBO-?PLMg)Tlut@Ika$gqb)9wt?V}cBUdpvsAGjt1W!>R8>P^Bg+`)QC zMQR>GWd1&D;@ozTwtT}p)JbQM(=n19 zEU#$ngfwJ?k+ft9E~Lbs!`*90K~AEsBqtNEd@pUHVMbmiM-v~m?m>tNw`GKw6q`pn zX@^tenl6caKv=1TU2b=%9n&}9+cvM> z7wGsdvG;TMMmU%lAub5J(1F-t-NcM*b8uKhOM_V6j$4P?4sM?hBUi_>)J}M=mS6D5 z5ycjuAibg<%sNyS{1STNmOMdh+6Ldu_8n&&)xY7OCHEV_eM^AqFDIMO-^A<6w0itrFgqe&6B02zYZ-Q%7KNb)?gJ z_UXd4jx4+U%{IFh58HJu3b^`W1iccjbw}?z28kJi-k3oDOl?xCvO_C(w5xog4ht(X0m*cZ;+g>cmrSR1me_0Y4Y^Qs0qJ@Mt>+u| z-cAZy(6phM-Ue4tHbi2nH6)gH4JD7YOKJyJp@5f4v|rw{7M;QJ;F7# z2t*@O5*@pcFbcgK3)97j*gwz39iq)??~yyU5Ryk|3DTNfi}SOWx`P^b#77jGQS{h$ z?dM>J)S#YT)a6U>#u}tWVZ4<%>Az(HlNPHJPnjYXXus0lpxkUBk4z=8?Lu2`zsEk0 znwao2H6ax_Aop*#zyt#h{jQBG7XuurO=BE0hTehWH}(@Y+%c%J`8;w(|1qT@qRk%D z*bvA>tCB|S3514%0mA86Opb-<^dQ0$9L0t;Z#xte4VTzK<0AoWJ$}mUri4&ExAZ~4$AaOLT+b1!AZkj z&@J0}D=n3A&wsA9qAi^9oYQ&-QhsGettF;)WJtA@izdY@vpP=@<*0|(a97j$QZh9eO5MuYaMj^DhD7#+i6OM5t zl+<+iLFO7bB5>0S%{b@kSkN-p=RhsFuV#C9AjhocG+Lu9k?nLaM4oWQfno(F@~C4I z5>E13J3<+wvMg$<3mT?G%Wnz21UY35>4|an*6v&$xn5>6#AX)$6Yg|zz|jHwA$~6- zJ?j$s5|d0FzG~^zKZKSwGGxC=9Y8)MmYor$Q=iiUf#QrVnN|R~$ZZwz%-mNSpGWY9 zuqD=$h-bD~<{?=w<&{0IU_8;{5*-`$$WOp%5B6lwC#5e$R-{Ik|E2*KTjY+F-Ja30 zw!PyIT1M>KXg^#4y=1IOUEucDq#n6W`lze-hKc>3W7#+yL3xSdAL|ku%eDW8HJ>Ef z<=)YfBLgBIQifOqoUe23={3Mk`Z!}#r|(F#6NDql-wu~h_lsmYs~5s8Oewf@dUax% zbaYzfP}@6q)uZVxGV6|89E>O0lh4<3H zLm8Z3A%`w#tI2JlqkmnSQ25~L`1obJvGB$D^b%xAC$2hW_} zmzoke@me){%Xc`;JAU~8f1d2xJmGTDY~*#ELGSOaB5 zM>w=PkGGtoB_~nWxcK*Kp6%ApcB`8Cs8t<1hzp>0?5FYO6n=4Da0KynNHJsH*J(|58gFN@m_G^khFQFk zGNzG^D|puv~;3XGCXFFLN;; zF-J%T@tMN+G~RNZat^upi?MSEr;tw8Em<<5BD9=aoj@7WIy{0>34yG43a&VYov0_`kP#=OGGTE`VgJv%1rFl>lqrv%0&M>{{;_1? zkSpP!+r}i)uvV5$7bn3zvBot`FLs3DE(a3o5!6C>*>0ESUU-T5D`{{w9&mVyWsy3> z$GFDA4Dc5OMOc!=Fh9A6{5@I!J*7#kbWmYO~JdAx4ji?*J+J27wdv& zLP$Pgjm|8IOJmkam>qb?v*aa55?riM$_NQ-BCYw0HBb`BNt3`S-#Jn!bvSgK(|Mgz znJ*E)jll@)uMRmI}zI&9&qzTOn4=-)kZ%rMut{m5j%7~w7e2Jvl15cgzVA5lXhrhuWhgx zn~yH9Z^Sxc%PSp`=wj#O=r}8Af8l>QnYs~E!3leGa$?pV9~%x%%mlq{u-k2apFJ8r z6Wt6&FM{G-{r|-(b26u+rnW z(6#Be^U*NU!s9V~_AFj#P(t(c-J=^S=(DoCwz#>Bs^?Mo>gpyO_27#qv;#~i{XF3a z*=M6+1jrE~Tbzx8qXFhQdiZU@r*%m~6SG%C7eRhIwuDA42nVdP5d1*O^-y$U4L+Dl z%j?1i+6ORZcnKI99S6IBd1AT=amHj@5EWt3o8Z(oAZv30tk!0)Mi!ROlIaK=>O@WQ zT)PNDM3>JC+SzPiXg;(?aLzzzRtQLV^-OqSflrB004{nv>e{qwU~w@={0xE@07Ym+ z*A#U$#~M%!=`ql<*@SjGARd@C3f%XAaVfF|28wE6*<`>Q4X=bluCNmram1waB6-Xp zUCNDyZ{1vuhBg0zfeevB2*iazP)B39TEt$60BTkiT3-kDkyhg`GQX)y(Hx1UY{rOM ziiHpth2zI^)YCxWi;>{y*u>cE*yO}aPG;RGdEQZ8bpYcm*ol>}q*z!>$=T%4zA>^m>t`kUm`}(PI9>L1}YTqY+Yd+SYa6) zWi*)(!?aq^T-G&6v z=Au2n6j}pn7Qt}Q)ev=Il+jd}4l5?2gRE<>g}3bR+WF;ZWQ};1<_>OdEJdPMHZr!n z2=xYCz>30rf_%g4e|4458{zq-wdHxxW-AJR=qLdY*;@w_gCJW=5zv6{(4xQ$TPHxJ z0hkI-pBS5&flSy<_VDDyh$A0U;ppmeO#8TlRpDP9MhgMJ8uVeC=x}x;(9Vlt-D41q zruN904Tv;R5dswJ&d*E=9<&owuP^onFrLASf%ma#mBu-}>Bnui84Nym(*YMV#*0uHA!Z z7Goc6x{z=PeX%AVISB-nt`t@SEC$AljSB@0qfRTS4Qe&7){h~fbZ$n^E!YO5)Px(* zknJJ#s4!Z>7dC98{FXLXLu>6YHx{&&w}c03X5bI#q~bw$5RI%ymucXv0!Rpmn|w9A zfs7k4GnT_E3o&gRFdr*G5oe&$V4#U&2M}(59s#f>kAWGz+cI?b`Q`AI^q8z192?d2 z34lE!SCI7DR6#}!{grB4`VaIpF*|%=9r#<`&~m*2^9T~<5kn(?R5qf4qv+$IXtn+u zj*~>XCDY3w1=N7i(`&S1(3?^^j7|U|(K`Vp><`&vP-Cwn7jzU^K{`Y>TYAx+R&Cob zB>^|0y}fe%O8OX4ah|k^k^}<}l5A`WRHLf|fmb6N&<)|Wg-8^bqqr@=0NGf^52~8& zvV^1;=ELh+tV8qX)*@T5r4|L{aZL!>_P}v9nAvF)wH~0OVqhW`HpO!gNOMK6U?-u8 zMvc+5L^E79rS$_1S;N~<+AC=C>Sj#aSKeL|w1Dvh;$3Mbi8|Do3=+K=CB5$A(12)y zbV95C_uFI%n9wMiWtTHCNIT4oBaO;{Q3>Tqn{N{wK}wvDEW_GA>u6dM#!)|xs*anr z5PV(y$k@#A_~6)y;514<8k8a1%;f0o>A~rsJvL)cO;4U08wrlsb%QhbUDsxx9-BQn zIX7z~#q{9B?DZHu*n<<-+sDTyM%wJ)br^}w%-ECD_SlK3@v$J{#wLcx=SIdRj@U!U zH!;aU;fb+X6goSpvznsDg2*>&1DN5XD0y&bY(dunicc5HZV zd~n*Hnwy@Q#Mp9hVg$ubj7^MAqn6-_AjX|2Xn1n!`suMFM`zoRX%>-f_U!cFNbtnq z^zk-AIEf}t+d4@HphOvV@Dwx89331Vw~3H=8TQf1@e!mR3Ih5;j5GxtG+ZOF%^n#% zF?fV6aLQ#e(*hR*#MF`CL~wd=yv?4O3J#C)0jL|B4h{oAqy)Orc*LS47#TCclXHkb zI;RTI;Al{T4wwh=f0*ncEuKINS*2!j@ZUI zpb$yHW&$tC!Z^OuWB52jAQf{P#Ek?8$59~oV&clQV6PXl!>d!TTrFb8oBLO|`oD^& zYw!E&TnR6RRyvk8R*{P5aNzIqCwV&lm47}Qw}@S?KIKz5(*yf!Q*b&!8uqf{&?4;8 z&c>8^E_UGVz&RTQ*gsx`lNn2JmP8p&38=ts{wf^$y%W32ZL1cOeZ_jr`fV&$&EtNM1?!KnpzvkutJWW5pYhkN$E}}Yx#CZ)Z&-hV6QLKer}u5v zQ`VE#H$jk}S$}K&3O0T$W2up(S+nlNBFC**h~xq%-3-rTq3>_7EPfjnGhd4HQ(uOY zd+x(t=9gQqueZvCD0h{{x1DqH2?h_^iJS?iM8q4HIMDzq-+aD*aNtV(b)U#Tin z<*Gtesw!2jcB&d>t6EiOJ!Acws#guFQ8lS%)uLL}F11^=sdj9`?o?f>TluYjx4xwU zsz>#zKGm-V)E>20?Nj^J0bCk)$odQGFV$f+sD{+A8c{(ts*b3mYD^td$JMy?yVis1 zgql#3YD%3{(`rV|syTH^omSUbe`WnhU9WCXFH$$Eo7BxXjrk=iq|T^$wV=Z4tXfn{ zYFXW)&Z!maQMIbpR79;?Keql_-KwH0rZ&{3IDhkn|i5wnYvxQT-|~5!tTVm zHLp^yReYwGLjarMVIZ~RYi-qxS0C)GFAQ|epl+v?BMchq;)_tc-O@2elEAF8L- zU#P#tJ@7wLKUROOexiP={zm;w{apR6`aAXa>L1iUs{gJ2N&U0>7xfGEuj(1~Z|dLG z|G^Ep&#Fu6vX4UQ;}yfc6kn<@&6n=W@MYqZKHT%<%k|~q9+7vh&=tO@33#s zH{=`kjrfATQJe*O)Hmik<~!~i_nq)f_$GZ*zLUOb-;8h8H|IO$JMFtJd17vS+&4U( zhDpAzuE8!7j-+pFMLJ@e>#@v@CCr%VM|n5Yn+`KyA_ifzV+@=Yk}!4fOcYZ~sUaPt z4MrA`@?2U-!mQ!>RA&IrS6 z1xa^4u_0-vG8r9pMIxTfZC76-4F&$*hxX8$gxzAE-uc^IvRDSmvg7pPb zXQi+W3Fd@2m{uZj=A0Htm^vrSwW))YxhN(UQa1UWGv{qZ&ZhTQ+MFTbrXk^J7rLx1 z&-3-3=Zo%h>J8G)+jNk5L!9?AZ;L-ls|G|^y9Z1w_xMvLF#)xf64Bpt`g@b#l74u^ zga$jqCf|rDXQW%+j~Hx?1kCRq6B=$9F%%lGOOWGCa zl1c+zQfZ(|Dh+f=rGYL1Hqa$N2D(kT-KJbahk)Pw_M3YArXIhk$8YNKOQQpU?$nU9 z;*10f5=ak{x+uTSNw6w`^gOBS@@qqaO$p9RFfYMb32xH?vELn(h9J}gM5qBls2kQD z^lJnn)CfeV8-h?X211P(gc>p3LD8}ZbpsLV1|rmmL}=0nO!^*;xbC1ZDne7fC{z5_ z2t#Pf>oMi^nDTl}dA+8*UQL+pV6SP9C^!5z?ddb^5eDxLin2qf35C$)?=$)P3_kis zQ%_?O3f=XV1gAyuZ0R85G*;3ubF>`G*m9l(zakLbK~X#1!9AwEdrWAe}&h zbPgnVbRa=O1Id|K0wiZ*iIAL$Wz!_^_wLbPJ!5Dpf zl(xzf+p5#Ctva2wRX<8wbwb@%K6%>8pWe3ecNW_Ujn*+AS~t(#o@c-3IpBHj@jUl= zp8Gw|1D@wSp65Z&^N{Cx*nRdVlmqyB@&wKSKD+6<_`BQl&I>!=4SU{s%Gde2JnwY- pGo+5;j*vY0`#M6LBv3d@nllHAKfbp5;2guR7vH<3!FoQyOfp$!lG!(gVc14NL^gTKGK?&P zAP*7QRYbr6m1RZ|5&5B_;_`f`=$Gw_iin8vTprW;eNNTAxt+=2d;k3Y_z`;U?ds~f zRj1B5b@rB+BuQ1$rIJoMFg!dzwfC-lk4nt?Hd-CibIGO;e*N#|lElu(`yIQ_+<9R8 z<-1Rjq@qPhDlFQ4-nnk+n`Ix6q>5U6?%jLf)H92gZp}(k*$#Z?oKtt6b6|NHBQxvo z@Okm6XMAMuuS4J8B}s;_O489=_noqH&wu~;L&xyhdw8|%Lqk!A{7rnf8Snl3&OG=0 z3obn{jQ1}{Qo$u>oV|Nz^Yv-A#e4zg!jP=}% zBz5dLaP~Rpwp>v0QHkmCyz2CU51w)$_!Zv~Nh<#t`u9n+c2=~rfVSFmdhh&=lgt)S8QWJBdwXCp2SD=&S0=&^nQZ3Du|JOIz zKP2@^6<)La)^ZWegc){7><0Rfy)GZd#Vs+h60}V5FG>6vlJu(dacQHpAUULn^se;0 zbb&OFci+M5SJG~2MA{_{No`U{YL%v>VQEkrK>K&3^YQuV(wR~tMm|;Q$GdZ+E2WGy zEp3<9<2zU2-#IBI?M070_)Y|$M5R)xMG6ASuVCce(%Dj{^f>x$m1b}^gmFf3ze&mh zKI_r4Re609?L&Ba8u0GLcq7vJOpotRVjZtaAHXN=QU)!XrJE#|^aVV30e=Uihomp# z`k-{b^au1A#k_xw^<69N#9AF#(S?}%${(<@A8QbQ+p!AztLAG+VIB0hSBhg5;x8zj zA}wN;+MfZd7*hT=VHNZz*3gM7{Vm`%rTjHwbp*ThE3bZhKmWCW^;Y8>=U~heUm2_> z|1}NBmP#hfc+;BKdcboRAiAIL3GIt`MKJ>H(N^`f{07$8x$^QzW!Sk-;&m>+4&a&j zuL$NvuW794WUo@}RuF5X{T^9)nWS#C(R1iKw0@ei`u@amXpQt4J(r%9mFlEzc)wNZ zl6vr-;F-W(3&)K{$&MYrTKbDLi+_JC{Q~&>E9qYR{R6o02jJR2r2C{dq#xmRoAf>D zY3VNMcC`KhJ#Iq}`s^m@O?>`6w45RRO*+neX#1S>pZI$Nm~;f#b-#3#bcggQ=^N6= zfJ^sF_h5`0q_0WO09Lfa^rCrBW0v$HXb&h*C#=qcIN*Av@|s$KtqNCypZX#=5)=vA z0;U94@tVQD(^`K4NS=zne+PB`6!?87U~xbGj!2KYI@=o~_`E2CBFBkrr**Sc?X-|4=`{RQ{^?uXr9b078Ac+KD*^j`%q`VQ92 zCfPn^)_1Tkvmdb6*&A{#pY;r8y_h%atNE-SmLHXm$xq17$S=q*>m*$fW?h3>`*cBN z)+3npG-kbFW!B{`x6AK}xLREOu1&5pT$j48b$yc0`W?5?UF&vW)@_*e0r$D?i`~~K zv;MsMOYVm->&KN@>z4nv{C}69UVdu%$>k@Ozp?z~wapRwG#99Xt5 zS1wm9moDp;rQF|gZ{=Rj{W|x<+&6Mx&pn=dH1|mENbYmFyK-0LF3){D_iwoia_8he zm^(9f`fHnB+xXi2Yjdy7zBc{Z)N2*5mA?A+t9QJ5_|z1i(aX=h{K(4>y!^43FMavqmoIqvLoc89@~JQHeR=oG+h5-L z@}`$`FEN2R9NPbX`lm?7NsqHv;D7$i*@_HNkl%cgdrmWu4~lU57fU7J4rNj~aIO;4 zTD4@5Y9u3gfmyOhR;gC9fg9F=vYa>*>w%XZ$t(FJzZ3xH2uTf67#uY!#c-x2K=&zd zlO}M{X7H{S@Yz!0rJG6v;@AsS=s^)xDA|X2Tt8xII|_`Ao%Aeq-(%IZvh|u95}@1!6UvPeNp-n z=Q0n1OFaah^04$3aMeepN2JH3qu|m{fa88sdJ-d?i<9_N>2&rMWR<(64}xP!kVnqI zzlWq-@$ZN5lBCn5kMOJb=Pc( z!`@`SW51V34*fQ3VSkpZ*q_+j{2P*VA$x=U5%*Vs|6eX$hqLB-@ctX5!{EI)qx~kF zCbvtUmEL9Nv44}!VHbmkeN?)LeGEL|!xEMw#U>t;N@f-xV(i+b$Jp}ak4b~h$FZZj z?c3syNi61e51lr6gzdl^IfjOa2Y0%dd-#YhFg&~HTXG+A9~#?p$UW@dw{y>tf&jnb zgHsMICEZ7)xy94)@BE_YNbgeJ%IzsjOYIn^fX2aB(EZR7M%b^6fGclG9!ICb*o6Ct zE;zHee(}hqgLOxG2bbzR9{13ZCubIqJULkBSz1D`qLrCq#uuMftIS!CITuCnd9fH} zZt+NO-4SW&&>BNR!r2&w@7=XmkW9-ry42Fx( zQ%4OxkI#d7E)C+@C9#RQ#UaepvlIt9MWu%slcVfmnf`rL?rn*9Oj2=FdX!D|Hu;;0j~NIwY2pnVE+bO%a_wqIeT3ym%H)01h2z*Jqubq@xNAl z<0$jvM0lOOC%fcs`CR#C&gXxplXZJ^x9Z+1*irCsVQt~ng-;cY7Ja?w*`lB6i}W@6 zLH$j|<;63_Uo9yp=`Xpo1^r2(x=NzW$k5$%U&vPF2AJw?TW#Qhbw+l>8@O? ze5}e;HCuJC>ho1kR{f^BxY|+eufER^G@NI6t7fw1R^xu-Qzpr@!Ss34Z_K;QM=h0> zgI38pX??g>uH8_3*e2U{*q*Tc)xN>L-~L=(DgIjP?sAkm_Bft#yyiUMJl`d`id`n0 zI8CnmTo1e6s*lyT)c4kp)<04IcKtuyvb!9orQ4ly_qu1?ci?n<%>A_cdH0L%-+B5y z>pYu0dp#fYT;e(8xyf^v=Rr@-Tk5rVz21bk-8<|(*ZZEY*k|&&eKB9F?;_vd{RRGN zzr)|)Z}#{4{~jm^R0kY^hCp+mH!vAk4D1QK9e6KT95e;p!C0_0cz#Fhc|?Gh0h9K5dK)i67fb7k@m=NWHz!b z@?>;0Iv?E;JtKO4^s?yT=&jLvqhF0a8GSDLLaaCTaO{cL_hLVfy%KvX_RsiY{F(Sq z;{Qw(C2A6`L?m%h;$Y&tzI6OSdHPCTD@F=%}X*}d5hW-rMe%HEW{EBj#fX!e=xPqM$szR|j)^|jWw zTi{H7+WtgGYsVEGuXT2IKHKH$x~uEW?&j_T-7ogE_FUHURBw6jaPNJ+ z|Ll|dO8ZiM8~V2O?d`j??_l5IzMK2*@B3=s*ZZFCd#>+ieJ}P`_wVaJ+W%btO9RqC z>%io|1p_w^JU8%PgAIe@gZl;#4L&^h0+c1!(CpA9L-!B8I4loahW8IYGvXcDJ1UP3 zj@~-@!dTPTMPpBl{dGJseqj8z@%zRf8Gma0hvUB-e|`L&@!Uk|gk{1zk(lV5n4DOg z*fVip;-ZOz6E{xWF>(LIV-rtLJU{W`#2XWTpDdWHo^(t$Og2yUPEJlPPVSjJFnQ7B z!O0sZ@0h%Q^0CRMC!e2uaq@SQf1TPlb?(%qQ&&&jJay01k*TjwJv;T{)Z6PU>)O{1 zuA5o6W!?UDhu7V^?#Xp8u6upjKJA}QOt((=Pft#7nBFnHfBN3(ho`?j{mk_9)4!a4 zZThY0zt6}s3&=byW4zIp!sh2X-q3xC~EyrFu-_=Yn!+_xdO zv329Yjju177B5@;&0=oJz0|ZcytH@euBAtoUV$RnylLB}!pHL+3@zg1NY*_Lp`)UENolB}hAK%% z4J9vv&%c;zWTCWP=hHX0q?;^eQ<2XbWJU6fT-q9sx?E9u$-UdQste4@nexq^2*4h@^<+UxpFkW8s zT-%N9kK(`f8{3|H?m1R?-MUP35HMvyH2Ay;In&%N<72vTga?=b&u*4YS2DfDdV$HCu-CWS zQwv^qWVpK09B@|Gd3-^(zi-sPu{AcDcA9*#TC>$0$auQ?Z4FI!_gvf&uAHoC_IGB! zTo-p69JP@>Esic0uWNTz)q4UKXSC(`cTHJeLtSd1!QB!M)r6;gp4Le1XuG>P88)T2 zg&MZE^_|z8Fc4n73)r7C?Pr{o{QLX@MxuR6yruA1iz0k$(Ko zqTS#AcK5gWINw>0va4aesNria2jrABX9-P$fSzE7`tNji%Y`L{?nKHRk8hp3(=px2 zSRfb(4RtJjq@L5v0*lHzc3Mr5Z02MC3cUDYXaHrGdY*H5yDNgTX|C*13Cm2YXk31{Ak4hD>9~QWfW-7{lsg=?BKy==dGFy?Cxp8Ubw@ zzhzIo?q9df}4he;du zwFq-eL&H|)=%gt*^I(#qhLo5i!Q?2Y*eRv>{3?=@4rM7?~z1gLsbpTaEyWLCO*j%fvb+M;yy2(1y5ub6#8uoU_r`p_;o$j`n z&EGShnmgdT%#|>>qIHg>x2C7Y9kV4{{LW@y+!F2#wU3($^mXADPh>D@%hJZnz*kB3 zVBbrCdrRsn4YVjj-YP4o0qlvS0;~w%Bw4_KRS6y=0S8Ke3zfLi@lk?nHLlcd1Xl@^Wl<( zmu>z2;Bdyng4JP-mcQ$uybZ1O~w7Y*Ol-#<5{l;47=sj&J7`HW! zHzp=pT*0YxrgmJp5DGz@p*Z+vr(3X%H|qa+um-FfWowGy&=8SuqTN5=~9g+!BuTu9ggkx|x@ zWCMXwz?67T9_c3J>o$&$PS&@KMUve=p6Tyt>9;4k{$3kwv^TUlGo#VuSh}vQ!JhCM z>)RKyEgL&MUuqfbZt}$4wn}^7zqJpi`dX9Du-o>ur#VtzUSJzb2Rfs*ws=nG}c8l3H@_E6>I`iPraf zHayJl^K4d_3E;1gy@bcc@%Rt1xcYEeIuo+b|B>&**+Uj)h2lbl@FBqz!5VOw(_=$e zmIsI}5mE=cq1~)Lcq$95`C92aMK!)y$ezsx`|29KTiPRojdgXQI3TfCRaAfHZ%s6W zBKAnOzAo-dSi)_7PdeHVOS|)wS6OOYJ|KJL3t{ahKjJac#$XpG{W6I=6TfT4T@k;7 zvVpUP@KQ!gl0!uXHn#Jf2>3!cPlRFt<%|wdj*mhOfdH=R92^@9iFUJ@N+x@o^aYlY zP+ihzI(VtU-xi9`_5}Rh^NsNVrz14m)Ukgi8J{`5yLqz7wk$;ht*!eO_q01AHQq+o z)Vk_Qe{aeWnY(yy=Hd-;t0i9NNbkOJ$Bx508vVT+(?@&_y_ZxX>_Ud+Uy@s4p)3JU z?o;=plJ=uAPg~1BS4*+p60Da_QB{+zz*ZSZst!T1;^(K8^yakD$F8Y2xT_1Q-G=&K zyw$Vt>utYYWMzA@XSTJSncXw+tbF)5tnJ`wr(zx+%)(GXi9d`ji7lP)A??G#+gsIm^nsYG9%qusiezj?? z!_(G2I^*x#oc;Fa=f|cdH|$>6vT5UP`EX6JE7~|+RZzBWFg2R0W#_kNTarJ|eXnPr ztL^VZzy08A5$L}jct{lNE~F_J=0Q^t&aeiuO{nsghghD#k{qFIh~c+?hI0U}#rY_wM0f(3g%kB{ss9 zA%pfMIRH490(L7iTmxlAq~@s+T6xghJav1>&ha4A}@H`=_;xtzI z4R%_{a%K2bNYx|=sek9NPvySJs&ap36SSyaged!G9yc$4YpBE*e&u-v-<9n8+*7O~_m??5>^H-?U*cIA;D8x85YpDU1_v}bP~d=&zv&dK z1%!`+Kl&66*@+dCJxIk1mwX~(WT49$6iyPII=$D^68BXmYr9hrc${_V$&|0t`0?l6 zdwRR~O-6tpAKjR&v^uIXcCU&d=9(`J<=%A12uT?Hb&_1d_i5~Zu}?<ZXh6m(TQkDg1C8MHdc?`EGNZT4)x`)+p2-FN5qj>x*<;p4|g z@T~PXhyEyE4}8w3YgD#h<2BXv@alXytOU;z`lDiWGeG(?D7w#;&e7mVA6B&2lAh~o zJi;&Yb-~6)ceuEzgV>L6~$l*Dme-)6=yN+gSZoV z4M9T(Xp{=*r&(HW^yy$T+%>Obrfom^?batgNIUQ-8~bN&KU=u`d79r9n4c5#D}?Rw z{pP12GoCJXTkNjcbHywh%AE$5{wPR}V2rW!7|W^A!5W&=c;PYPGT3WX;-L9E`EJs# z3cZxHHF}!Sn$7~Fd4`{iaf$%ty=~H zfq^Zp*{yWlnhkVEYipz30i1cbc9o}=J~};p@y0}Qq#q8+mk)_OngsyIyT*iW*?8~MSkm_`6aMm#teO2DK{#$(00 zLwZL`_6lpXD;VgCT5%gnxkKK>PE&iz3?Y>W-3r?wb!uW+6~dY=t=oJNF*f*lqDyd`fZ z*4nCyV1=-7si5YLRNR@hL+Kf#IFm)J5n~E%~TdHbu?uCf!?G& z?r(8=((zi4t)`@*ygr=uhX&Km<~Z>X7|Z1Z_CT-M5)@OUMxlyv0hmuVX`#!J_QoyJ zbYA%wqPz-Tn3uVDHsnwtDyf* z&zl2HE>}~~yx!BkK9!p7fb^Z)n;wapOwo}vyCt`8WLJ;F(X&hN@+j68#~kwPBx~lN zc@I^Zp*fHp9~>J_6tb2W(>h;talgS)Q&3V}RaJc2!t)T*a<_HtX?Mb??qs`2As`h{ zlGovU_Go9v8h-4iHM<4HQp})G8{L4aumn^Ae~B-XSIv#9z+*8J*2B_PJ}1WKq!Wq@ zJe{R;8M#EKD>Ii4bqtl5%L;VGx~A!!TPF17g}S2h;?Yg=^|?Kf>2P=^{LVWK>*>mF zJ$^PbIy;^CKZoEShA1fsIwbAcRu#|J;6g3Uzn12I6#HB&$-r>((TF?356~aZl!}#> zTC`N5#iXTT#G#|9o`ImWtZyf=YAwro~5}-m<&0&QMTkuh_N7=2+Lg z)~M4NwceZiX6~VfYSS)Py7nQOcM$V#;``jI&U+2qm2*%->U?&tC&Mci0%Pi`slm-6 zzqq*D=rj*@;Jl>#5KI$%$ zZC|&FlCq3!attzhA3Hnu5c?X8av#bCn`GN?)A8R4e12tlANw!)Y0#<_8a_C@qRo>h z86GwArzz6oE6nuMpXT0_pH3YwNO5{RiSI?B1@3#1VXrWznQu4wUgT%qyM^Go8_)aj z%JZm&{M5%tm%$%BuaE>*$dfGd6K2Z2xlevC_1-;rAd}8!4)%Na?n|&cCpl4NxR47m zF+v|9{4yxskcc1`vEtEBkM=hfH1?0mx8*K5a{1*)&=X^JE}ttqmX8r^6+4qM3;0E3 zN6tMo0yx1|^tjx`&Xj*#Q^X({0y2=BVLN&UbeWVcRcE6p<@yyXwPs%w=3Sd~I0EakhuRu$P6N3%gBg~yPd>Y~XNM(-V4ve3~KkgETI|8FT5dB{oVhvo^L}^2=u3ypPGd>HcWIHOK148-rLBO41Cd=8O#9<1EEI2= z28(>u;L?z$R;)e%IUmpg53BjoO;A0G_?DWmV3LF&{o>Bf@5nFb=XZqr1U5oC^D2Kp zFa#q^zWWAlo2|35Z)3D^GHv&F%|w0cp%L`Y`bO;TmIh0;r`hiw3(C(vwawe$>)YJg zy=xGzx0Vmq+v^%f;|={uyDtdbnZdg2I1a2>5EPX_TXjALoXo~STZauhQI%C}95d1J z-Pz8KuCS{w7#VJK)HM!8;uH1$hTSb~J4YMd>Du1!jW{!QS6$OkgbaN?d&b}3?Slr1 zed&a5_uqV9{Mx>(nV}*)3wJ3+!zjKQel+uqQle1!z7zv($uDyh?5#%8%*it&c7x<5 z;rT1Z9myv`t9SE#QP&zGkE4d4+|(ybJe>h-Mtsn#n;q2aTyyc%RI6)YVsNz2)8j@^ zM(sNt+xz`q=cZ%FTYKx{-o9D=D$^K{OqD{Lj9?pSTDxy9=B^=;cTw$2o4^<%FXxBKsWpf(VF6gyKc2FCz#SIT<|tkXwBj*kIwhx5`NuoJ5G% zS^tSoY(HgmP`;qDWS}!PklV`c?k)^3o#7xF*GZ$xZn*`pH6XHi0a3>a$p+|L3P{?N z8mOTmuR*bCYdr?2$ADD0!X)!oF|e|Va(={9P!dEZw2~S5F{uebL&LZ`3gvHDYT|4m zgPsobYCx|r?-jzG;E@5`t>c?%C6hAgC@^wDIYAH$1qq4xj}>Q-70?kDQBq(aG+R0t zMSF3lF4wqJyS3%I_3I*oDO_Cs!QnmKr+?^I$-Wv_*lG>CYWmj)QwE3M=&RKg8pBR!tF@pkSZ{4K78rYC4ZU$& zc~4EVJJcPumXy@GopsIK-tL5Bn4R98u|-@4gDYaobkp82NLG?u#_9YNbzjyn+coT1 z(Ka+H&)4dS`;t~K;vR&yNBmXzUse7}$BaRt1cPtuY(Z$TZR7gc=1xn%A2iQ`f1VR= z*}XIO6XqKlD6@Dhxd$*`84>RiyG{NsIEew?oz*9~h9_F|0(#)tn&-L*&X95vE?`45 z_yT#66`NS|>?=%m1_Dk;Fvwod+1cG+@H(A7pVR5(&(1D~__NJ8xmT=f3beFmE7}Qg zRE-Fr83;=P$?_J=z#(R!7`@cvWzBp{$#osUQD>dK&EZcu%2v&;GCq-Y87sRgD&elE zXJ5;oD)x0hfYr?-rq5KNq?p9CnXcLBd}`v{Tay&YT7$T3&b?vFm5TWelkdL> z(}l>Gs62=JdH7)$%)n~(_jIhG+3aa=ShxQ3^0UYPqa|tWE;lT0WKfzRs{tM{@E|wx z85FEpgVxIP)&NLra1;OG+LAJcrhX_5nqWc@b1POE(n5*>C$hJTlY-7TiV_i2B77_a zMa4>;hN1_B9Pwd7A~Q5oya0k2Hui_q zD6_DI)wZoymVGF+Y8XE zOXqQhijjw~=*uK1d6(ji6I_sud8a+HZ`js9ugI|Bd*rWlyCV={+q!oS`aG_ldi&nZ ziUdn*?p#i@|K_;#uVlnERJBG%R6L`6&6vpcAqnQN^F+Beon_=N!dtAanEG#RYB9Eppi=K zLtL{5uF)nV#JM8Ewk3RWMR+UJLKTyaB0|q7MSy3TJy0{n=II$0SbfxJwFBX8{r$Z| zOTmFAmpwhzl-=iVaIcGd6OQuP{@vRh+4apZ1D@xCeb5oJl-PX{yE7dy2W%Ouqs(Zp zbcGDI-d0z0gEd|c{zP)PS3V0~XYy~7a?1~*HH4GTk~GT&`D#df6`ll&4i_8==aMf2 z;|`BiUF{0a{P3!)%Lf1Sr*cQi=WDgscxD<9sbeGw_Ta&R-+CIohVs(Ra)UE79>@F; z)5ZRQ%p{Y>KNTft4N+?i3Q}nDl7co0QXrm%)AnlqN&ezgqeoG8aKypz2r;xJiv#u_ z1Nwr%#M9BKls0XrlP56z*-a4 zo^SUk0>+C7c1lhlGal&}6yTpX*AvW=nmMm{z5@ox0)1t1$8cwHWpRPNtf*t%{@v~R z^5TM`@{-nFSkrHP{a){Y_r3S%+V5kwoc+IiLjm_-7i+X)jW%un72BS+f;Ak^ zM#N_$;#0t)omWRm9*}H&|BYA@S>otgfh+lZv!OiOq~4lmoBYR@HcwSJs|qR|6=NG8 zIJ#+}%2QoX<*J%leD96ZO%anRW;*T9?;bEG%$BH?+k+dIlX3`icOYw2nTR6bX>(VY zv(})@T~oR8t?y(|65ON`yHAl+2$|-dgdV2LN1aOKT!gaorPi`^Z%x&!b04m(uPUgh zE8oBF=av4ZzOdh6xI$OZ5%;s-=KkUy_xZ*=tm61P{_eQF6edjuKNw;RG5580O>L^0 zwEDlXYmTs~+zafs+{0`!myWRy55#g;4FH)CKc?6<+h8I)21;V^d6AuwVomM*4*p4Q zDL)Ep0ive)x(i{A$q(=)9|~fUmC!j6C`e)c6pF&z6EX^t=yc@>=#90x%S$YY;bd2H zu(7VRDAe2>Dk`mO3^pUvBw;buH6{|asya($bET!ODz&valy+65O3l97=;mZ&8X1h~ z#`Jum)@LqFRk$!?re7{%>*cqwJCw6P_E?I&XE+#{etcYh>%Cem742kGeF-*Iu~ury z@)Z(2llSfz*~OrgQ*2f_u4Gcg9t&-l@*jj6Obd^)jN;Pb(KcqqCn{ouGB*Vq9i>IV z=H_5gsiQHN?n(|NEG6pV0S8NBDA~1-)|8mXYWSLxo1^NQLd{!KD-f_H5{-2n1~lVI zX<063pThoxuwTGO$V)VH3WF=go$%okMN!&|jeIF2S5rg~Y@dp`j3lB-`)JUW42R6+ zW^+wRMtx@u8<=G{Yj@lAMz6hgxCM7!Dxm z>H`nW^5id(`M_pZr+{tRwv8=*!5R-+7FL zK8}XRNDu_urKNhXL}DTmj!rM`Nj)pVJ%#QQ2r6)2jyaJ7){6JmB+!EAu+-zi)1kQg zPf3D;2QXwnKsRe|?d@rM(lr`N$Hz0y`j+uXI@W7#FvaceW;6SB#bW=!VnvDFt2=dH zp}%WB(>&MdFWP^q?6ox4SmfNja$ODW)f5&+@w;IyK24ETw1`!Op@Ll=BTp(Ym=;E{ z02l#Mt`5^yWftLGb)$unmweb;%1WTLnh-=lHBeWPUC1ayW*W-D)0<^uuA`@`_(QwP z%&zQIs(ZnivUWuJhm2+4c%Uc{92seHY;UtWn+x1sZkTKAQFqen>T7m)xLfO-nc;fw zGj5mWkagS#O|KdBatz)D2HPcJA2L4RaV4)r5A0_|D#*hjvl$X`NPH@ybR3dVL;4d{ zlJnw@qV0jAx@ZlWrXsu#LLH&B zz_RC6LkA@S)&jSx&?3U!$O1?1ZwC<_P6m>2$;n1JL-g`d+!eiahqf3z#)2Ae&6e4t zcRl*(qqAT8+Sl%UT)yN>o&le4!1JZtlgYl+ZMUWRlB`#f^Z1({Cn#~aLU1?{$)j>Q zEA(aJcEs;;nWbHEJ}c>l8kVwi z+`e%4n7cj@?iri6xB4Q%NY7YLq%mAsRU7H>XScYU>|K#?JkmYh9Z5G-8jQ%yZd&hp zvNGuP#yrlN>Tta$>T$5sP4a9TSE;^no$!8RqY#@3P6Qs zPPH~bs1NVjxm+vaGgZ}etyXT$_iYf}=2_5P;j!IqZM(<9>NVl+m}^4Bsaw4c*CjeU zzDAR`y55v%&BX0NgUi|+q?`^mFnQrZBC&Ac`6g3lME_t;T+9pLj>?$?`>n%Upk(=|c%C(6%de?o93 z(HGC3W2XTl$uG!#lbjEb%`xLyU=Q}^ZbVMW^0z6Dd{tgsfph@m@jKWzg}tL2Ufg43 zNx`^;pRlpPLPU2hxNE{45;g(X@bfTle;;uoXc=ao8i#6T zvCvT3Nj7K%X27jI7^=^PtkzJr9xg7cwV@?E=}wvri3HM>2TZj_tAq78n@3}@(PpQ5 z4OoG%z7Aql9X@|Y#L9}D{+jxtx#8ix218X1iCS3yL-G>)g8WIq^bi_k>C5Z^cAxwJ z)?d&0DXmz@Tq+b!wyKp34GW9e;y#nf7q{6GUbESouz4d9uO|{=57c;)P8U+8YP?C8 zGwG?p^aF`Rz=vEw5z{Mj9;-m_3Z`p5c_CJaP<~P}3&7>*N~f!YD;f95fhE%X%5dK2 zCr9exMpqLgA7KyXW?8EHi6^=r>Vpv;FnEwX1{l0sqn9CJG7N~e``P{M9^PgLN{O~V zz>j=8_ak4)@oZ{&NKQZ|Za`EpTo|gZyv8Q6MjxpseWX55AIUdk)?*nItwpL;nN$xR zNU6W7gSi%WLNkS>SGYx>kaGDU-OjSsB65E4X#HTw!NBl+Q*+I2#$YgHnv-?aWd(YD zxzQQ)7wX*WlfDj}XEAI9`k{A7TF& zF%>!(O9JZtC@a;1C=^bF25bOD2&$O@9gN+$etnBOgA^2h&xWQbA}rmk$(EUI>sX(* z2weOX)1#8iks3NtB!(CE;n&DvJx|gBKR;bW@1MtB?Ua9yy{cW=mutZnzQ_5(J^VX6 zrDnN^^M$uLUwE7N0=^4XRql~5LEd-ms=V(yiWpTs?>x!pHj2E)=Wvwu{NOC^pcjlm)@x4R&;N>V*l z04&JXw;bfm5(wBjyq` zMjq@n@qU_Csr1miBviaemB2}jr?eKq2PnOWL{bszEDTaSxx>ISI|?DABCY`8H9`zx zT{=_LlwddI-nwmUBP(D7-?-rhCbP+w(^@`!Y~-8YL}2_6M*f5u_b*2&Hv(&E;4n-k zF$c5*#pD_eTdbO3TYvI)|NFEDR<#oh#W)eAeLGhA4?aHFW!~PM*sku~iS6p%iFO)a zjKlW`xLb|+gDAm3ZCdQ*zX;;aXUODL5yn)CW5-62jsOHF;ggs%k6D8@fQU3CF$b2>sVi;kh$;u>}Mb3i5D*>j|0AQm|vlea4yZ)A0$f@+IdVd zhYJ+KJh+_LuEOQSb`>t7oyHgAs5mX!30|UIz>5K2FJbQ>>#Pi#l<*Xg^jix1h^Prb z>K?=T=}H#S0!Ra*5`ZWJu=kc*V(R~2y8X8J?YGBoyFGr#9VGX~QC&4AKZw!Hh)}v% zrHm+@8qvHsGA(EOD0;e-`Wt3EkrYrD_CnZ(N>@Ik*-*}K6rYJ~4QjEVh4zWGIQq5^ zS5g|{m@}7@$*_X3RBpmIo2)oig!MV353Q(pP^+FaXWbNUZL2r8dMMz!j!imU6otL1 zHB~imY$a6xppUoT`%>v+MN`4y}g%R9z6$19ZRXMY4_Ind1Dl!ja#wDJa&}t zar>%0KCxZh;}hG}Jr?b>mtq{gm%t(HwcNzVhdclr;^TlOPC+{&N>%QW>K>mM~xJ%6(P@X%KUjN!Qb=WRD!?HG9|`Znx~p-Z~A5L$Vf}>Jz{W+ zu*o+gzN8J_cZCNkI)D~m(niS9mM2nZ)nL}E$Ldna;2~rP8DL9IwyiRK7CZ&9Z zKqyRWRV5yR0YeR92NoU8>f%DaJQQ2U)TLn?y0dM}dE+WWd{lXoHsq zZQ+$Rvcw1tFNV7gh5J5^T88AmKoJg*C>hsywFVT6;g&a2hdta-EbMQha!fG5b32Qw zm=H%2ED4*G;i8LJC~5Dr*1KlnsgBCpp;RCnsFCGdPS@GtNSd9tzF=mwHas2d9A?YK zCQog$t?3Rkxblt&wCJQG0O&@lI~7sc13SQ_*;0;y>$K zqqfq8BGpC#k8RkwpKXK>acMi2Wi%J=`%M6hV*v0@xA#sywfoxJ_Z_h~=4s-5;< zjB}0BPBAW@<>S9A#!rdysr^TJ?N{ctzm(U0Ft7a`=<`8T=_UNVhT6eb$fsT_{}SR# zo0dV`HZLGsf$ABE^`qD=_caMbJT^n1{ zFcU;P9On`+??@wUbtMvi5_k z+G%_-&Q+`0X`e(pSzn0W7o;7i!;{7tZv~qSz!IQ(AYjD?TqOwb6wgGa+$vnnq;}>- zH0kmR;Dks8jalpKt$0oGe{pvwS4N+8)mmLHYppByLveNe0SA!|>;64r8jeE_K$eIm z2Pn)#<2RZ*N!GG@g@;h>4Uz*$pOiUvl!E05eNvSJh+}AS0GXpn4)EYg-}d85ascHC zWuc#N_OHnSmiH9|z8h|*_>Ia6m$Aty?pUVIO#vQrJ?TK+?UtYeVX>ZeYp}-TXc~@q zTCL3OUdmFWN2@m2UoSzev5IgQQEnG zj*q{MkAGzW;eirc!ejLEVoQ`j5$yzC=4HA9~l(OhQihKMcE zqH;-vSrc1A8KEacNn10-&D8@Mu_cI+-as+ZbrhECpY$M(&+g7PSo_A@qro5OKK0#= zJU*I-mUx|8J|p6zXLchxnqVqmK`;`qxQ1YXb~gahs;fae`axELPR!fIS^Y`0i?jNW za+Zqzn$8KWDX;%`R{DQ}pRtJ8T8_yZA#;_0-c}-{6j?^IGnk24n)43SH6Gr4?&*UJ zC8RQvrbJF$9pFk)iJ;gO|Fp<`Bfnu5_BfvVFAOV9*}M_}?ApqNsUcfwuB$M1i*f+I zxYJ-YYBd3JU1f$CqDS5Kl4p5&fXXhn)ru8T?g3IbAVW0ce7;Y#;u zi$wnSOG${t95t32OJ%|sY^DV5|9ysnp~GplR)ou{qY+cUU02e*He&(!$7>UCSzYMg z{-nUC8JwwgoOXq*a3zwx2wzX^A9$bs2Uqpa058S(;Z^;=i*_;o)vNjwevAHzRsBhJ z75%SQ`t#ZaeEvA}KtBnE9@3cqy!?0cANw2Glv)-0S2d6ZdU;KebR&8S*@2$G^E zfw~D9+rCj8BAN%DcgPtv zIA`2k_8?9rbpI;g7*(pIYY^8ct|6QpD|#bNkgO3wRVpf}Nsb}zgMyaCzUb+xcejRX zDQn=CQ7w%?%`ABE!P!x^quy>$^o8cOj;Jqv+qTsz325(f<>x`V*dr{^3>q2~R}-tEoTW zdk**->5?AsQ)LU*SWlIBAT3Nq*;lS6kbO%S;?+bi3$&SPFVYHbc^pdqgQWAsd|mlhvx%$BC0g`XGr>j)ve}8L3-ag_47; zNh4a0hO$mYK?bWjhA%Q8E?Mc+f^s5#qlvGA(v#b82T^s+)WL(uS*r@Ft1>%6N+7#j z=#AHvIgDk-QgdY-9H`u6Ewgw{l+kgrY>zr6$s=AH_Is+a+#=3?jDEMRq__ZC9-V8l zKOR-{K2~r{!m!GrXn-r+rvJfs?AukLPD_-Ze?>?4VxYEA##KGgo~W--G_4^&z=@lL^XY=TYepoJ z2;QWF)J+m=A@~hNA&R_jYAHtx#c@&oEL|=M4^VJ>OM-2*4zCq0oW6aw~8WaL%b1M<{s2r&M6M+wFDLSPfP#1V(Bf zRqL_THbbeah%Z$g)ZZGgl-iTv^~g zRfMFR50PVC2TJe=x2FenbWY&=B+(l4G*j033Tt-xG)|c*H(E-KZZ-Ml?tz@$(gJx* z;fN-m%T^|jtJyf9d9m-rYs5a13Xgg5{Ge;$6D{O*a`|p3=bX0UlVu0NPRglLWC8Ky zAC4E$E7%`7&q;E844Cm4JfCubxXp!ap?0R)Ty`xtP;DB_3kZbvn+bu@e?QuhkAwCZ z(axP;N}dkpTaMq@PzZF*e3c#27O;jxDIQ+zA!VJE@gVb6HHCm;gle>Vv}a@$He~bi zbaYIwlIil z>ffN9_h&a_iwFkm(TB+f7bEqqXoEmnmeL7PVa{HpaZ4>ADIs@q)+j7sb zaDQ*OA@_OqI>J>|zagDlpc&APdTt3@Bb{6G9Oj1zBrE-Ck3@g<+!Foi+!Fmi@jm?_ zG4XLk|L?8zKTPf586NyIjk*yvuryAqoJc`TjY_lx0TG!gY8VnOlBXaaS4mnZ0>0LQ zR*bMis-A9$JUj;r$*~4_1w7YW%Oshn3DW+?VZt)Yq3(WX3eO_mz6!vE0;Dh+X! zAd7WSMcxR-z%(h*`Auk}k_nVPthSMDvyWrWi6NX+C>Ds5=k7pq@Jb9D@`Fj0 zP~08*#R_}SZVA{cEA0UbZY!qhQoVuXkjd1S@@9NBO#X90dy73}aw4`fHEM}&4fZDM zu;12K4ZZ?VbbBV8Wx)=R# zMtI!G#!tM@_}44r^SVZSKCNOtILK%mp5Mghvnb}H6YVGV54=zRgDd@`SQqIVV*I4S zpGM*5LH-ol#rU7DJo)&E_Zk0sW&8-nLG2=p)5hlyiGk052<^yeLi-Y*|EHk_(Yml~ zIlnkwf=N?r%5UiNAiW-C{o50Y;51`PG zqPRH>sNMsN(hwdzYZVP8dT({USv;(nRa5TO$!AGM+r;b0jhd}lemn=sm)cY0}Z%`uW&P{W2acqjBcs(K@e00G}{j!|V2iop>D zJxXv#m9VNMJMTx5rO@>KKo*L+p=$%KltdCHm6V@ZYl=pr{xYwNlc(!{8TD^^=X=Mf z_RX5&I9&5b1)QB5Cb#;6gWd*j*J4ZOwmvTkp3B;f}AZ2#cK;@rda8`|48^?3b# zTe8`uZZBi(2HpHjxX;Gw_MdnDX)NmwqhRCo^d(EF)Y3(hh2@3kUFNY9O*byz4qy7M zu)g=JG_7nPW-J`GHJG4?y%a8Vsw*Nkg`AsCfScT*9)MdhRaa4=6+NZQsVUn%h$haa zv$PP4RW7Kkx7d8OD42ikr|OEV4c#$&q^i2oS=}5jt=%^qE~=QBx2Fv9xW3rpPuhBV z{zz5(%kL_U4v#*?fSDRwXnsii3s#&Wusd#raczX%`yo7#_1B(fl$ZJbl zH0K!`~P-*`E>+PPk@z` zRkX%}3ANS$U0WJs;bMI&>JX^~1$a3oIga(kn#w$<45)Pn$Q5lVs&}HU9^oFH@8{`k zz`b!5_tqFQJ+ynCyr4ZTrk%)KHCa;ZIu)S+4vLTr{YsTX$~zXRaySyiw#nPe%4=L9 zi(2(?r4FL6Ayur`*)VaN-(FpqyIQS($ZpQBi&$9a<6DF^;OvL4cQz<~r@DqU-bm$V zt+Xvul9Mz|Pm6&gO|ObqFBesyDS}|l(oU9Bt*or4w4&PXHLT9BuJxsgi{!JhEUV9k zWwoD>Z(ZQ<@-4xc;|Aj8$2hApo$yc7nJ~=Hoa+@C6DP{5xLUP8Bq3p6QtXk}lRXmS zi+E5vbDH^?ruIKEM&){R*JMUb=2H6$nTzHlWUlL1$!MQIdpjQ=78yPc@2_*J{pHlE z{*SEmhXo<8e|DvR)BE&?ZRVu?o8PBDG>?<^Z&CW6=(A9LA}9JduGiB*!~xJk>CXOO=nIC*fv?iss0A?{=gY27B0ofsE}J_=&VtzsS1yg;#bP9 zsT_Pu70Hx-d*9YBr&>UG$F#|1EO8ku#*HWN$;Zeo=IOA=?b|QtQ|k#|evh}r=B%%P z9r)Q3xuxKTO}s`)1M=2Z@<|oa(TGb4?bL`%i5}zvC*}K5mY*63C>;3-zIgJewerPN z^46+#qukjE;zOgK^(sbt>_w>T%t5+@!RUjPO;gP%0v<46?l=Tg1jr7^r$VYSVKu@p$ILJ zZ;K>jvWBX^06{sO2(zbrtSGaJqXc>3BKTfV01GZ`+p_WW>#o~0KfZ2q+t0;sM0{^* z>KOfIL~BRSz;IvZDajAAuGZF;)LUgULrr6iwGSaC9~y3FBsBpkTb8!r+%UivL^U+e zQ&*_?T{I{w%9GZhdBZ3K%Bd9I$PZgNiXc0+U9F}m3_=l(YL2L%r_1w#m?Wc6|@prOn!kqu^DX(L5a zD4E3XNUMORz)j9dnH|;m#S8JM;TG5D)nZ)mchAJ4qh1uw1R$LAi6n|O{$-^eW0aR_ zbhqT}qEaLFo7V}&epf2MZQc8_b z&YLhEkd`6*C%lSd5&Z@VFCw7OD}uH(9AN)X-2Gtp1O9j1Hha@>N+}eI0$%lT)La4|=>m=ya~xl(R=)!Vwrx)+;GBwwhZ^hbiT+S*xIR+9y+5;cIE>1ZeclFt#_m%kQ^;}6q6Y)9t%`H;a@cUD; zF+8%prDKcV=^cqS^rxJ<++{NJb}ytGH}nSPOK1A)vys|&pjZ05))q4oPkTZowu!ux?+FxrP?$`xX>)8xg^-}rVoPNuGyZx=PR}g%a>I=>8pmTPL z*B^Tw*uJ7WC`;6Uu*PkqSj#l1XvLW*1EQ4I3s&pck!OR>Ka}sl5hg@Br4AD$928>u z?-L7G{@}q6He}UWOjNg$!TW`|CO|JP$OLZ9^0P+rT60>hab)D1`nYdfbNnj2JbyJZ z0uQL%82torl~R+Fv>}lp_pd7us&%J$g$hx8io6%JcyX0oY6(I!N)Wd45`+US_JDDn zT7Zyk$$be02-yzh!r=hE!JYve@@l9l;RV{BX=_jxr7fGbs7Nw!R!!xyMCc!Flc=Gl zPFppc&>lSle!IGenpQ%Mkp-z``FzgHY_J$APh3Mxn#)~PnJKoNJhD1mi6Uq!;A3RE z5mhZ#|I`{gB z^7rL@> z9sKPr>_@pK!z*a0fqqSHzk(PVf79Z7C^iIYFW-R^f9HreoWWP<%i;$I5SYf^nk~rv zQwa(A0ef!wTPz^rK`^f`BSHB&`2}#scHoH#c(Q^k%F_W?@k8=eIPe9{3h|04RV^PN zQV1+g*fs^Jn0;UFEvRkvw>9_H`|TlHul&NrLsm~;_xHaY3E662rL+5L>BH<&`6UeE zf(1m`E9I#r^i+@`7D-|TDO4hSjeH?S1Sr`MphRU0l*~d3O-1F{Y@WaWp64nctl8r= zCa*i`zUF?j!(lc#9P)7P>-0Mx6{QJ7w1JsFSZg-f?Iv?A=V^ZdJl>Yq;bAS9QMF1p z3K8&GL8Qbs5-cdyS^T&W1>;b;RGO2}8`Q#&X5U|03T115$mgsu*lOy#YJ273iBPPf zrLeG}=~2RsSv>Pac^I@xIhj`VnHnS%&?syHlTaEI&c+)^kQW78DL9A@eNkMK!u;I8 z?R+xCQLh&7Q3(|!JKGy5EGp0yloa~Yfx_ZKU13q7zjI*9SEw)473hn+e_ z-*St%KAd~v->q?*DdzlltmA6wBH+?6bk-H#tE8!DQ&y}m9FQPG9!^I!{2q_P%6jiJC9RgE z`M%s2)4c^ca1Gc5e$2M9i{xXd|L{Bh{ug+E8GrwKzW494|6(7L{}X6O)t_i*M5YI1 zL~uTyf6KLDU#5j}&qME~W3lwm=;)AakNCV1zueuN>6YU2Mlv&>=e?*Eas)mu?p4D&wD;HZXZ?d+!?w%M z;W%CS?Q@NG5h%tfMd$m+UTdrTT<%+Z%vH5oFy^XyBzV92cP^Opk7b!{hhIe0pd%+a zRc0y#cW2u%ZjSY$3E#U%3!u-26F3IvQxwlmw5f3n z!6ot|*A2d>uXozZtkvZv=oU@uUNnkKg)QXb;VKW+jgqY{#L)AiDo@(8frem}&0TGd zdMzWp{vNB#6t4?0#GM1`_ifWsotg0MM zRhD{dxXo_l^SvEB2*ifkr1h^}NWDxw4N zeJfV7%DscpVnea6xT-ifxbN(tWU;AK202Ct*!{QkS5o{-W&fRb4p%uVE1gv^lrt5l z6dWSUE8!3rlkf3On|kCQ--td69x8o^n0N&+UpCDmJ)1VkT{nvTQD^{EWyAiUM2GTA zc?Fm~MRN1mV`R#`VkN^ndj<*y=n=bji|;FV2HAz`3?kMWJc!VS_z%T|lZYT<_Nc{7 z3{@v@~f+ftJ!z-k~KFTKb|b zG!RPp3JvYo#NYovXYSs+vYkM_U;F!gpX}YaJ9i#u&N*}D%$YMY)m8f%_w@N5?J;Ny z6{W*{$4e_qVdhru*+?kYJx9visskPK1ONW-_M720!gQwpfG%to>@kQXT(nQ~R%_iZ zRE`4^#aa<6%2M4;eNKrT%5G~dt1I7UhwKuk&puJr-dE*>iUJKKRekMrpD=w9t15(n zGRc)ho|ByF#)0{D_;?<=NM*a{i6L(Q{4UZ_R%oG_OUts58MBw-Kp+^+$_QV}5ung-Tkt}A>V1!(ze(`(-?poTBzdfYhG;(h0%*eS(d(_nbl-;CmwZ96brV_ZPD3wKS zE)tcGB25c1E{CXF>uc<+oZ^~5X{ha>{rg2N0aacR*dJ**ftj}TwC!MA`b$U{ zmIqs#ua6dUP#X3eH0huD^l(;IZgEXjX%K~-tm#Er`%%_$l!cp{ep@|?^cCcV8J%zkTKH>Av9hB!R}?7XrT0{C(j|`)h0WLm&M`>ZEx7WPOF!PV3ze z^(gBvu5_sFE02L5>;l@%4`Ic>V!gK8U`QVLGxX^T8hR`|2@G3fs&+1N!x=9ojC_n?>ftB0zq zT1?@%31=wZX=LG9ojHMuib_h+Z_0SCb$Z}~hYxs@7GZ)C5Dv%Af`80eV?nbu;+wtI zM;t5@xqCh@cb+V-8gX}W68Fk_AIg94l@9=R$}m?xLK8{LL>3E?==3#|s8IHSmX-tA zA-lMt?{k6Hp8fTGef9f$T475;Sr1)VQt!F)vqmN}hHHV^J`_^#dFrX(#Ih;rZO#gW zL~g;#B4kFNc&l(Lh-h@|r=lhB;8u>R&>^7_$SR^E69cXvV&HI3&%j*CxMvy5BCa`q z&xK9Z&|W{dzq)3!9j40*X`_0C)hQ%;}2sRI(KBPdTYK?#!4sXnALa2bSn3wW-D8ay z#uYWNAHpUGu~35#mk`BREG!GEr!P^u>JBA+IyAipraNYXc4YPnU>kp!NU$tNw2QPIqA;fgEglH4jvrfN4>k_1g`@=(cy+eCr=IyhQqqv z2dujw+h%mVlx+%F@{cZ>%Q+lKw|!lh0q6;SZGe8oeMu;}Ss zvSP#=^-Efn*gx~0JUN(?6&P*^YvI<{Ya7AV-uunl)h7;=)re$k?M=%yW!(q)@Ok@Q zXw2!oO2!-xXbt#gRZTk>(%dD-4$>SB?f`()s%e#`7RkLz{<|;yliKf|nadyg`JZp@ zsc0-Ntmvh=;x>i_2w7ca7^?3uK=b;?FrPAw$XUgK?9R#RuZj)qZ?T* z*Q~3O)u`#G2e4ysa+J;Cur@wAm}>_Pw~h>+Y-p+JtU9T(Lp5UeYYWu<9eMsO;Q7x2 zhC*1!F?Vn&d6jv~KXG-Pq1mqjKJ(REP957*ly74edi>Z$7^ohq>aW88ho1Qenv1%A z2kreV_@-XlbYQN8w00#l4FxW@dh>J-tG)K`)b$-}ZV8q-#Z49cN00PZca+vvjXEvI zaQ3if*Zn1(g+<}Pp_65Woj8yDAe@Jl^(ScGQ?P3W;6me*DaPKbIhE?MI396Pj?3;M zZMg`+E8WEsUBBy=KAe*CL}_zH*MXP6{KV{RI8xoS-@Z35udAgt^vrivaer3zk<K+%zW*3m=Ke{?`It8kO!8poe%D_HBHXFg|#+7;4;q&IlKdb^@ z{Htd^rP{t7YW{WzHl3v_4R)*E8-bmg@VUPGDO8F0qtK~w&m{cBrX)UB;+L*0Wu(6+ zoqj1J{XHhV_B6@%}xKcb}H{F{an&+Q9Bu z(q^~6MMKq_&Xctbm~O(mcJ;a|-?jdRFq^!u0{y_T0V`U1s?KC)-{ekq0M+(662JYWO8y8THe}7;GZhiX$?>4wv z0Q~;+_n;V|#Ztz8!h1~m6_oGahjh2`$A2~A{riyacK0DMy~ZufD#UG$#%%@b(0Od~ z$63Bpuj|t9-pO|>fXiRcJ*J*Bi1*iXkEuuYBN0!B1Wy?9S&r;qBA(6(o@fe1JZbLt zL%Tceht`nchvvq2A-&%Z?QTx)P)-E#em}Ik>4%2+F2Lzee@{C7QbziFOnN#^`}b+I zpcs~;*9Cq1G+t%mcc+JQ#WmBvIwL*zX&lw~>B>mYvz~rTptk8;dhoVKgaB|>UW=+RL&&RRUqB?b<$PX z{ZBt;(wVg$sC>LLCkNl!j_kK!(dap%?(F0K-$v~JZ4XV4+pn*k9n9@;TDndgzVVVq zqO#07(XO&!5BAJgw29??C37or=GI~0@GDmu)lXY@mgT7@EbHk%)cANY)}X$FHK;cA z&-#4ve@+4&NV|&or*!-iI{pba9%Vd*GTPM>SKjpWAA&+pSV@)z-29@IRDY=64n>!3 zrT}7_TVWY--LE)rSKST6omEwx!wn`(R<;i}H4V2{x*^N@W88=EGwS0|5Lgy0gciq+g#kqT1-u>&%s0Qi(9O>WUOV1tJs2kU$ROYp-`McWR{`U6&dUwmc zbN4cXO|L}zs7)(Wp00s=<(cDz3c#M*K2rBc(|go+@O9?*8$NBf;0xJ+mv`YT{YUg! z`TXQlJRQ{B_O71V298;e8bGgpk?|JjpRCa$fm#0Sg7A5q2L z;xOud0O!U3o<1+WR_fMq52*WfTwOZuA;9>chOs^!_XzU7SEp-8$Gsov?$_y{;IJ(y z@4L+)b!M8AJ6pLDr$qk6=8D_{g&u3-E{++$bHs;KoEIbYwzy$^Bk z(dlshrHOk0dGFJ4HR-$$Al>ijyuh_D-TgWaxHfSQA@74aFK}(*9zovs>U6-hiF-fN z-LKOD*Cy`4bR2MP;-0)xpk8TxO>k}E9!K1Ujsvb42cG*S%qu>Ic|{ebkF@<@u^nqk zoLSHcBx}7q;ZrP%*fl>A@*Dq*0nJ$ce#y4~DJ#@h(^a`2W}nkHS9Oj!V`mQcbhh{9 zsJHDY&Fvd1+Sgf9e(t9B69=mnkN5Wv^r7V2uDlsz|C7-1OJL0TfIGgm(WR%&^6qr; zZ#%7d%$-@%VSu&^*#IC@5Y9Adzu;LFoN<;Qqys^P33=Z!cS&%E7&p7MA#5>WE8cMu z(W%R9#hWg?=|tF#kgE?Ngq%C_Mw3BYRn@vbz)N+yR54Z-Fo6tUqXqmBFhI7$uBh)> z!u>*dyk?1(Xs)ET^Hc}b7-%}ax4Zy83hl?k2U=8H%i{39wtdBQMTKp}<1-gm`J*DR zudS%2r*xnoP&Cmc7r;Qu&oXvof7*D(UFYUS3u?*_(H^-1E}c{bt$f`JB~6 zfm7aBP@exxc1{a;2lSf(v3bYUpm$D_@i+4DYdV)!7f5}%mLc$Y?z=0iyrpcQsG)cuSFX!~ zwCw|K+U=jj(;nD>%JKWtE)TYo2itu-c#shXeG%TdN=8`wUD?~w))K5kh)bZ2))ykC z7$H~EyqjaWw}F1gTnPcz@Ff0_ku{~-J)Sc*8qIS!d(=oAdMD&S3Za)8eiIyUJ)gMXsk|;O7}7CF!4(u6 zJt`@ma&XKa50;nBz}RRT2;mynnfxz(DSsxSx=!Y_9zD|&nZ5DGxAx48w&t8vy+;lw zRbXRu;J)r~SLOHByFxkdE^9y0gT9l6^Ij~-r?=y&47_o(%NyR2O^?zYS%Xf&Ac9H! zmRw(^0|2rTf`vrkaW8$E&^&&$4{v(0h&aN-kSSW>RW3HD^2+qVkWlgD=nnT>$jjId$pf2w(FLMr7ACFYm zsXMxJo>@2;Xo&t;=c&Hxs{ISi17l-aJ{*BB@G#`Vz*VQ)c(gJ`7trcMFrQ=lE$GvM z#&GKiZN>a0(x4e3xx5)~X_lm&O&TuFT$Hcepam&VgeGI-_RvV%AkN{2xyI}$7Izcg zQk07|MHRqdE!vDZVh^|d*zxnPEZc^vzsvz{(G z7daSixT$;Kr!F4M-cz@=_Dqn~o$ zaoV4~kDa~G*V)ZdgyvQnXzv(-&dCp zazws6K_`^8Kc@bU@F|yH2SvCH;P^z49Ln%jJmokK< zI^2C{8~B7){vkRe!O0zRN`_JQ%yzneLx_d!qOo&FgVsgE8zzGr16H@KLZoJcN(@?*={-HpAqO}KI6C^oya?k~PSqV*!tNuI!bq1F0v zx5Y*Q@fv7ky%%9@zi6Oov3EKVH4s;4aqlq@$?aZ!S&g=n8=63Uaszj<8I1yd{?}^1 zT!VSTNF46*pZ^wZEU}xu)3{3XJt8OVDaMA z>D1z2Ui7xCgN=QG#_XrRo6`cF6V%v%oZAPPU2ko>EjHVny#|`$&WkWscim!c^AX!C zSJ^0}In1%yGMsUkqgxici42KU(Dw4SPjqgM@@Qr`mXpE8I1mBH3-l`N)N8W$y|d|H z{?zH57fwC)qEFm1yKr01GygIDyZc@^J*)1u&lC@}3{0OZdgkf>8ar~dJEym89L)hB zhal6c(4GU<3*GiyMKI4qBDCR+ilyc(3J0KaRHf|VGkY;dU7jP=h~ISxd2{Q?aj>N} zj!+$LFXgFc{Ddlb4jVt;Yn=&qs+>qp){zUZon6D<;=}kmrS^9oYtOGNDl4rmJn^FA z^|mVQAL^g%9~}6^FW)?L^W@EgXP=a|m^=9}2JP~@f`G*BeYn1D{W#|;WGUC6py->-El_kq@EoZ!orsRj%pBv#>Fss!*>`SsW^r+5 z_FVAr(W65{M~@yR-XFtPR1H9zX>jrGd9KR>n>cK>w%}G&9x(x21g;{n(>9Y9ddQ4#HoF+BxLHU{Df!f-Z+q&9o>dQKc8_JKh z^o<^J+9yISW7Rj6RqwA3wbcbG0_DYR71iAxBNh2=jXnK!m|udn4**BM2Ry@ctXF8X zt-!x69A4cJV4Tchf&|8)LdD^Q>m(E~dx5dmp^=tiT!{ziit&Rdzs_W5^$dSDc=%V} zdODaoG#{QiI5pMy$qx%35;ymw&U)`gLQmn9Wj6Z7$T6;R6q|eC3y;X&W0u}1>I+FP zZ)p-3XI5MLXG(h->RS&qR@4_amVWs4d#jw_@rmKCqqV?HLv4NizJiK(3{UI} z_4gmqC_ytH0(=i@e&?wMhI*ckF5Bj4HF%U>AsRd0;WUJ>-W5xU_7jtFo=WX7?x}Q35~Vl?*yAE<=y(<4NaN6fmJ=t&J5Y9(^?psaW9Z;j;FUCA50bA3 zg|A`%g`6gj45qm`7cbo_XIqVPu)7Qn=gnLwYtrAKv*y7#pl{yRs;Zu^xt8Nz`-%3t zn$F^?#?rpC6(#kx)eYT=_L@LrSz}iq7;eJFu;nVE`)_pi(rnamxu&=MRuBjlqptY&YsVXX}a>$pq^`L2A0eWqk?*3j24;s*u zbf?=K-CIcQTC<&&)Rr|w_GIoq0B?#KPMw^G#c)W{%Bm3D^xtog=H)rvHMNbkMU53* z!R+#$no#Iuh(xdNDStdrUtHF9py2~JL*{S^Xx@F46ffue`pGLFRIh}8c_E}TotMP6 z%iDuf2O+Cw_qsu+cKpgoWNB)g;e&iNgB__(Q4_$*& z8yN)*I8s1UFiyNF>wf!V>cv?&hfu>nI}fdw^ku&PMdu<}!EL1Z52Sg2I*pBdOalW) zNF9%ydy)OIZ7J(Mr28P!i7zunj>oR_`{dT7@)2=nzVEiV+s5F_jLh5PX1sof{R#Eq ztPn;j`l|DgV(}BCPLyMGqx{EYu|oFhR-i=QCrb*ouv79-810Xz)+%tPR#DOZ?B1O2 z1HNbb6D1WTxM27gg4*g{9=`sN{T1~aS!HPZuCW#3=%F9{Agc_c8gcaj`{U|8XkRJT z-aVf^u{80{n|%fv@o6^xdkx)i;tA$7<1Z(eRnpLHf4sb*qq3^Ky{fXKp`7LZoBb&j z%Nha&p3R@Rs;Q|8ANy18%{YJwKAiTa)o*9@Ag}l{b2#^~=J(+I<7@96A1P+J|Ss|!@a;A&eR1y4Syc~|_IxgsMD3kqCC_0;tz2508c zBl)AJ&Me$_W^t69xed;S|4Rm66T{+>%po)nbmu*Wimu4mWvo7E7#m$j7+YC?hWlD? zN3B1)pKAHA&rh}SYCqL1_*ze^hqCH54r_J4A;jWuP3m|YAVYo)=B2RbLcCp%AKJn7 zU*b-(it6gO;ZuR{H&4HpLSdAhUvCHZ0hd3M%&Rt$RE2}{;c)S zzhHa3Wq17#$M1C8?1sL!^KRfqjeDvH-u{nV;GRmUoQpy`B5koX8u#1~e|;>x@7Rg# z6USaK5!wyN$jOt}Km}^K4}9>!tcNup3M|)?M8b#FfUV(K`EbPasNKBS;Eo)hc2VJm z--^dEl(>Du@hR?gWh#1Pbv9|b!yg#5*pID#%jE|* z)b+DZT%Rw<6F+kOFCO21!JWJ6&pI9dmfLtY#2y2jnybS05727r6&w%rc-wV_A zzzSwPZk`KU9?ott&qdbc;YZ*_dl^=kIPOSD;3SD{czvwHitgZf!%6{v32O__e8PhI z;^po5Y9hM5w!Z8{H&U_0Rx}ku`~nKtLDFR;b8viR98T4InnN7)zlHctVmaoF#aCj^ zTmljEc)N-m8z?$~pRv`QjVK-lK)il@kKmB&FeZMdfTYok(%rJ9I)&l>23 zYCRerKNT4j09Ze&?=jWk)$A!4;eJ%$ZwBxQU}GIk+d?D#K+mBx2bTM5rRYb~MuFcr zu(_=BUQFlat)_gt3548^+)Q%;$k;$F=W*h8FHY0q=P*+BTh`67L~=d8%S_4C2rq28gx{V2lU>Ssr)A>S_SWtQLo&LmnB z#U};qL^T7jH3_uGL3=LXJB-*k+C$b@0N*7wUv27~Q@|y$lF;1963BBaNV%@DoC4;U zZwbHF)9)7Wr#-$IT)T?*@zJPG7t$vb#U*w#@_64-Rvay{upom3*a65EU>Zg=7r zobXEge9T$6oJ_?wlg`xEay+pePk_}|ob@dywH9-hw$}M;Aw~XoqFXC{@q`n{n}o9* z-`Pqf)?-Q3@O&CAglytnN_YPlvZPYmNBa6MUAoj8W%GNN;k^8M+XOx zvo8JR`cL|MM+mjV_nWp^rvDvojdwr}5-+HYvLbx(MyvA;;y^ z=jKq#A)#g`N^*NcN^=nhs&&W`(O5Vzk&DO!8|V|{C((EKO*urq+}5&3B#{h%cE`7Hm>gkm3H4mQ~BTm%8mE{8TB(kD^2*@m?rJ*xm9;DHjsI3bC!z zrqDi7&nOMIkf**l;2l)sW@kbo* z;8~;^V>VGTe_t?hUb{$JzF{89r1Qw>DoHMuH#Byl8ZyF2TCxNWQew~L?k%JsCs9_C zlZjWpmo`x`BQKMqi4Sg)6-;<7BgCZGGSW#q+#0uZN#p~5<9let22-OF_SNjU!@2o!^?yes3r%YSk3=8mS0z~aeBxAh#;g=^iu?D03->}fn~*Yzmi$%}D}N)s4!XYg6X zhvV>qmL|<^~SR8ty1j!hY$U2J%idZ$HL4x#P!=S z$s^PRsm*Ss`Pon1u*Mznk${uuwWXhn9a4jGdR3P%qZ@0G7RB&Z;$-|5Vs**+=3514%0mA8OOs|?i zmTkY59Aa8>k&GPd(;FGNU3-F?hNGZYw)<9ED)XKnt+gU8-1(f_dKXjdhwf~`#VqS0 zyyQ)h&q-J&+}X&09;;{2TCrk~>fWeweawrt#I$ao5^2IxD9Kqn>y+6WXa2+!Vc9K* zh*75IjA-{*B)#alSu7>8oi2vR6Ye}vw7^Urb#+3*NnY#GJVst;S(H?FXqYlJzcq{!C&oEi zd$v5nB9;u%nT7v^J3Sn5cEE9n-|I-vx`e*OBvZ$(Svutpp=FH>Ic`!0kWYzacSh;f z=e9tgIIl~l7CGSC;QlrOz^MEUJuIx!DSKIc_KV(ir>=2in(~&nR3%v1~)Fao)7B*k2O(N7zKi^7Owk%_o_9xqr6g_5tZ1Qif;)wAXq1^p>HIJ2!R5j!Zp4IFkJB zatZr`^h|g4Lb!z~1()uqPAvOph%UALwyQx+Z|Sq_?NX+T@l1X4xmxb!@{c%vEzV29 zuSoRfq*o#$vJO^JIu%AkFP9J->lCa;CA{PlD~;e%`A8tKA5Byx*X6KY&bn__yAn9nswl9I^@q=oPWYvFGX z*X~%uej%18k&Hi#J%cs4c&2?{YRcrq>(%Hl-{mm>{New9JK6Pl!sDXF^ekt_3a9O1 z?yAkTv<#s%`xM7tjs;twjK~O=Ru}P>Hd=BLWsQe_zvS7i{p{ANnU7M{)q}{#9PvHq zIR{(7d~6!9PeFcg#wM^&;+eK1ca?1cPZMb0S)}9&m7{ag2WB2`ZpJU#1;-KJj1&vz zJ+2VN(^u^1u-m}>+3W6*NsTe`62U0aIlW7iE$Rml=Ju| ztaEzhk99H~bFdvt_|50jh&yHKn?Wwt%auaTM@ch6x`=qMR%w|F)fCc5eS}OfGln(@ z%wd$xwPBWZi>{v*(M8nDT+Bzz5z;U|bNHUeTdq?sAs2r!b_wAe(#g6dOD0r=mbTRy zlrgWv(-dLHyrr%A=;m1Wb*NpMfBaZS^Y9ih0#frNS-wGdvm z+oQQ3USj@g8eEG9T%KZCqz>^ht+B8G{6#s)C@R?K75h6S0tj5uL`p6Nf zS0U8tKr=fXk|7m$lBxAg_;sd$qIhCs<szZk>!^Ae zg>P=|z)=srctShCgwih(j;M1X5kr6+ak9mQ1UMRC-cAp{OYm=9)6gWH&FE#2-$|~a zQ7gg$n=AxBka9bkNNvFxb8UTF_(1yrCJiqELle_r7cfs!HzCcKYzv~|EP4l=+6`pw ztbo}pd;_d{nUR~x z*v3V;AUdR(uB;p2E^nX?X56|ALL}BN3fkFhU}!nIMR3le(`*os*yj1z$_k${p#WU; zcGR_L(ZJ%8Zuc_?UI7%*l&&e^N{%g{7`?|p%VrbW-GKOD)+q4a1ID%ZB`{Dz1Is1@ z-b8F87WFzife}YcIxmvP4AQ0CMC_$I>xr1=KQNFXG6;dVC zaRKbaN?1}drhCbS^$mcKZm5tL?$oY)p9JA!iH>CFwZJDEEdxafz)lBOa#qqw?kukn zBWNc%TzCT&il?@&up6wf4vsRCOo(Axt^1(n^5&}t27fDvDxrIFJGN{XTdH@W7vMpz z+X*pihN>hzYKd30M#`VX7`DC@-EifczjWe=A_Ve+G6BTSKqn=@c6!s+R8#Rgw# zSrf+?f@saSB3FH2yOMSn58S|fre?;bm&T`NPCKWNZ)TR0!ZTBgD0FdFXEjAlMUZd80Wf2eC^>v;YI9d)Xc;@YKfeQVBU#>#%AYk znV&j6x!8?Ni-_!Y7U#p`ku%}>8@mbNESfy;=p?;>5@k4%o0)lGGCV!)5FzO@oXOeg zail&K0rX+aGzAu_-s>aicT z5hkuC7{^L?jcLQ`gf{w4SvSC>I}O7gjmC2@Le9gCw+K_@%`i5egL(K?>jgM@{e?J< z`^DC6R#atMzh?b3_6mR4y4(6^oQVD=>-E+o2WW;x>+4m1n(Cb_pwFf7Dzt{S{^*!s~aSP^y)+en`SntDP)w1<-SfKbc78L%}`jqu~>oeA8t$TYUv5uuil4i@g7mFM(#X=+(IO%41 z5et3a#IpFyu$cMd)=yY>;`E+(S$A1KX}#R~DeFn=U#t(Qy{bU%Q-wIrt=M|ndPbF~ zQdOqPtt&Vjp+Z%v{Wzg7psG~0s!_G7PSvXh)uM1}r~|51wW)U1p*mF; zjz#NMJ=m7rr}`C+zO??+`U@3OgK9_(<6zlC>aaSZM%7Vu495qau)b#fgF30g>XaH& z<0_&i)M+)Trqm7UMm23cWPL!LQ8Q{*&8eHzyjoC;YDwL!&Z=|PKU)8!Zc(?Y7pNao zFT`2iFIKnVY_IcbS*@s;x}a9onp#&cQMaoN>ru6-wp3hgTVJ=np(R;nLYcdDOIKdJ6gFIPXMUZGy8ej2B9ze>GYy+*xOy-vMey#aT?zDfP8`Z@LU z>diQb`>pC1)ZOYA)!WqD)i2>(!+X>_)i0}GQTM8Msb5vUhI6{!jdQ}@qkco(Z++SN zdz_#2n>cy;LG?cDCI71R*Vf-zU$OpHyGVC!*m5Z1o}asQP{N zVf7L9QS}Enar|TIkJQK2ALB0gPpCgtpH!bxpH`nypH-hzpI48mFQ`9Lf3Ci$9#>yd zf1$ptzM}q8{gwKv`fK$!>TlKGslQiWQ~#j;QT>zpy84FtXZ3{oruvq8Qhi(fi~5fG zSM^=>ztq2}?VK>MQctUA)D@eZ)V8ziY}`7Li<>a=akIx>+~Tp% zF2uQu#de8ZYW?WLD+F~ET%_X>H!tTKB5nc8{yW8%;Jq&$zzdeBS^F#Ka^&NW%CxDLF zhwQ`l5qlJ;njf=|+b8UkcGx~;kJ;mP#GbHE+mrT`eS>|YJ#C+{XY5&f&c4Z>w-@Y1 zd&$1pK5L)Lo>`inw#Vl4VC3uX5BHmJJU?|Q-kaRnPVP;u!D6N#<=v^Fe5m;n5r)o= zIdEQ7!rbur1WZf0Q61!kk9iRTMohxoh?E%9LBVMc zkb+h3dGG0T0ee@|j~W95!Jr941(RNmf;I0sd-8lVk-dhm+^H1oKe1d)MiJyq8Tg^6 zYs3-j1Hmy<-gw@Wfpy)W>;|vQf|q#Dl0GzS!jXNquYyQh8&I^?mvg71%P@83Zs@=y zIc37J+-Yh4h7Pi)(YEXjeC5tat}S1#!6C^tIGj5pxwZspThZ+}rXum}wOHP)X-eGR zq``>EIZ-&fwzIVwP3&xLM0Zk!asRK}d8squt8>USYG@>PUg}IpupnuZIw)B1kWrBI zo~70yQ~S__{2n$08xG|zN?|DpmV`JkE0H)$ZVM#LT@vQn(Lv5q0)~a09ex)s`CC!A zvW$!unR%z$Ubg=iH(vOXs&|qiGNT3c53Dm(MfjT%O z&<2N0c|)eWVUuoHS`i$U)(1z-`$MMuL(&<8hXh-}LxQc~;YjY97J9iaksu+#B?&I; zKsPOT%7A>z6m`lJamrLVW=wro16dn1RTUX^#ju{5I_wHti7x zABc#sL#PRb(BvOB`G*ZYh9`2*!U%=o`jP}^MetnG!Je~NNrUBRJ-O$S`y}|44lxiB zu`>`kY}$L+)OXml3mxVbDfqGuB=>~D#)QH4gu%vy$u(iHF>!d$%VG(`2doEyM z#XMo9Q$OV=*QImpO+o?K(s6rZTt%0Juv|;RA{b{dK*lb}i(>s#TRnBcT*>Ozc|K`$ z96X33bly{h&L>?+_#}`Zoj`(gE+lw#Awfa|$@ydkB7QI;_De#KH`g z7@$R^VAspuSWiTW#$bPVICmRny;L-N1*@3Zk)1?bUYycg9qd1)se(}B8KLGbgqpj8 z!GR%Z>&jMqQ@2$=u&sPBN*^Dkt@6aS>U39VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/arrow_up.png b/src/clients/lib/ruby/doc/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebb193243780b8eb1919a51ef27c2a0d36ccec2 GIT binary patch literal 372 zcmV-)0gL{LP)6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF} zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/bullet_black.png b/src/clients/lib/ruby/doc/images/bullet_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/date.png b/src/clients/lib/ruby/doc/images/date.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/find.png b/src/clients/lib/ruby/doc/images/find.png new file mode 100644 index 0000000000000000000000000000000000000000..1547479646722bda4647df52cf3e8bc9b77428c6 GIT binary patch literal 659 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/macFFBgHack.png b/src/clients/lib/ruby/doc/images/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/package.png b/src/clients/lib/ruby/doc/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..da3c2a2d74bab159ba0f65d7db601768258afcb2 GIT binary patch literal 853 zcmV-b1FHOqP)5TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/page_green.png b/src/clients/lib/ruby/doc/images/page_green.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e003f9fb8752c09e7f3655d5d8664b5c62fc3 GIT binary patch literal 621 zcmV-z0+RiSP)QqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/page_white_text.png b/src/clients/lib/ruby/doc/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/plugin.png b/src/clients/lib/ruby/doc/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 zcmV-V0eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GFk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-ladKLpnAK z!yd|CC&>l1b7`m$MH$ScEIP@XgT41O>|DzL{-38CH68OyX#u=G?d7;y&_o&o)f@3U z2(tr%Ok88caOL`xiQA8o;Vzr-$A$SOu6o|$&0DQAJ1Z7?OACaeoy+)PWu&~aueW<| z*KW^(^2}#30u*~<_mXScFNd6U&sxh5*GGMNytZGxkIGqL%v6329^u`FD6T?b?K!4B z@Hzh?O2Au=((Gu;rvgLMt^pS|u1rEkBgC8$oH%zgT`TvZiK#VDrVG?-i~6a_+WZb> zc1>>lb)xcuo^Cl8k%q3c_d*It_Vtj>RSovF&w;hS=6uYrT2e@-@l@P~uBN`zu!v>e zTm(is&jcQ6vuP?|;!e+(n8w)-Xjd!hwk@r2D0i00ygdKo2Xvs?&w_lajj5DHS@9I! z;_&ji2e{!uusGnVn};Pu|dl5x-FhQyC8^-4Uo_;BLiOXzcE z&4PS2TBWSC=hsw0og;z#(mly@Ed2E1E$_VDaM?kloE4ob2XK&K;OS~-nhIGlA4~UZrJu6*|}wi#TT?|yWUH+_&n($t0xta zBwTzSfE)uAw*L0>+`pTps}L-$jIP5Q_E$Am+l|{XfsKr0Vi~`Em?SJQ#0y)8vsxb1 zMdxJl^){_CDwI^}>)Pw${G?Ajc@P}x{Fvhoi0jbY^427?KPmoA_G)sqK}u$2(79Xg zC%}xm5JDcrsm5^vQEQpGEdJDc^yfuNAlqV1pZQVkOSceV<|{=|=@?=o4i_1RFUZth zC7cu<6%V3dVCI}P6DL4iUgTc@&(nXY)ox}HZ z(a#EgiNj%{kjRLL2t?{m_aKN`{5-&u+HAtQ-Qq#@!I@<(M+B3i@|g=LY6 z90tpW!JuMn_Lcy1q7g&LUSuLE3XS}K#P^nHVUmL`L)dbP| z0bt(+Cp#M-bH!LM*DzJ0Lfn;eTBV@|JvGSgpdoc1RhhV>(G-2(vE|>MrVgA9+?+0m4OzUqbT>-U-jg|v zLZMntq`r?fy1UCMh>z2Koi1SL-~N2ZrIf+dZW|;SWszsde}Dl!HOMc1Fa>K9)e&RI z)A?aK zcviCdKDUg_%#u7YAE`A`Y3$(P4&m^@fEWAvjAwVmRWeUnmkrxA;E!fKoc{9Vi=lvFL}KmoS;g* zdjL?Y!VHUFq63aLj6VZE+tHts?Z1pFkiO9^k*5pGpFpU&5#5G4ATd{t>a&9zKBVB9=Ns^HFU|DTGH8C+Xr2UqOU`Zxe)!|%j4=-QojGePq)pRGe;!f)Czk!u3vP_Jxu8(e6 zf4Q`F$Qio2Jw@N*E@k?c`+Sw}AYQjkT+x)OAe6eq(AT!iRuksKQn%Ao_Ac1T-p#Js I_CnHs0qX}mlmGw# literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/tag_green.png b/src/clients/lib/ruby/doc/images/tag_green.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec984bd73364134da0f98d27a800c5d3264180 GIT binary patch literal 613 zcmV-r0-F7aP)^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/transparent.png b/src/clients/lib/ruby/doc/images/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..d665e179efd797451084235f105425247fea0a14 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pv241o;Is pI6S+N2ITN~x;Tb#$R;N!@B(=T42&&nK2`x)44$rjF6*2UngG277DE64 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/doc/images/wrench.png b/src/clients/lib/ruby/doc/images/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2 + + + + + +RDoc Documentation + + + + + + + + + + + + + + +
+

This is the API documentation for RDoc Documentation. +

+ + + + + diff --git a/src/clients/lib/ruby/doc/js/darkfish.js b/src/clients/lib/ruby/doc/js/darkfish.js new file mode 100644 index 000000000..b789a6563 --- /dev/null +++ b/src/clients/lib/ruby/doc/js/darkfish.js @@ -0,0 +1,161 @@ +/** + * + * Darkfish Page Functions + * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Provide console simulation for firebug-less environments */ +if (!("console" in window) || !("firebug" in console)) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +}; + + +/** + * Unwrap the first element that matches the given @expr@ from the targets and return them. + */ +$.fn.unwrap = function( expr ) { + return this.each( function() { + $(this).parents( expr ).eq( 0 ).after( this ).remove(); + }); +}; + + +function showSource( e ) { + var target = e.target; + var codeSections = $(target). + parents('.method-detail'). + find('.method-source-code'); + + $(target). + parents('.method-detail'). + find('.method-source-code'). + slideToggle(); +}; + +function hookSourceViews() { + $('.method-heading').click( showSource ); +}; + +function hookSearch() { + var input = $('#search-field').eq(0); + var result = $('#search-results').eq(0); + $(result).show(); + + var search_section = $('#search-section').get(0); + $(search_section).show(); + + var search = new Search(search_data, input, result); + + search.renderItem = function(result) { + var li = document.createElement('li'); + var html = ''; + + // TODO add relative path to + + + + + + + + + + +
+

Table of Contents - RDoc Documentation

+ +

Pages

+ + +

Classes and Modules

+ + +

Methods

+ +
+ + + + diff --git a/src/clients/lib/ruby/doc/unknown.html b/src/clients/lib/ruby/doc/unknown.html new file mode 100644 index 000000000..93638aa0d --- /dev/null +++ b/src/clients/lib/ruby/doc/unknown.html @@ -0,0 +1,102 @@ + + + + + + +class unknown - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class unknown +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/doc/wscript.html b/src/clients/lib/ruby/doc/wscript.html new file mode 100644 index 000000000..fcb87dada --- /dev/null +++ b/src/clients/lib/ruby/doc/wscript.html @@ -0,0 +1,156 @@ + + + + + + +wscript - RDoc Documentation + + + + + + + + + + + + + + +
+ +

import os from waflib import Options, Utils, Logs

+ +

def build(bld):

+ +
source = """
+rb_xmmsclient_main.c
+rb_xmmsclient.c
+rb_playlist.c
+rb_collection.c
+rb_result.c
+""".split()
+
+bld(features = 'c cshlib rubyext',
+    target = 'xmmsclient_ext',
+    source = source,
+    uselib = 'DISABLE_STRICTPROTOTYPES',
+    use = 'xmmsclient',
+    includes = '../../../.. ../../../include ../../../includepriv',
+    install_path = '${ARCHDIR_RUBY}',
+    mac_bundle = bld.env.mac_bundle_enabled
+    )
+
+bld.install_files('${LIBDIR_RUBY}', 'xmmsclient.rb')
+bld.install_files('${LIBDIR_RUBY}/xmmsclient', 'sync.rb')
+bld.install_files('${LIBDIR_RUBY}/xmmsclient', 'async.rb')
+
+# glib
+bld(features = 'c cshlib rubyext',
+    target = 'xmmsclient_glib',
+    source = 'rb_xmmsclient_glib.c',
+    uselib = 'glib2 DISABLE_STRICTPROTOTYPES',
+    use = 'xmmsclient-glib xmmsclient',
+    includes = '../../../.. ../../../include ../../../includepriv',
+    install_path = '${ARCHDIR_RUBY}',
+    mac_bundle = bld.env.mac_bundle_enabled
+    )
+
+# ecore
+if 'src/clients/lib/xmmsclient-ecore' in bld.env.XMMS_OPTIONAL_BUILD:
+    bld(features = 'c cshlib rubyext',
+        target = 'xmmsclient_ecore',
+        source = 'rb_xmmsclient_ecore.c',
+        uselib = 'ecore DISABLE_STRICTPROTOTYPES',
+        use = 'xmmsclient-ecore xmmsclient',
+        includes = '../../../.. ../../../include ../../../includepriv',
+        install_path = '${ARCHDIR_RUBY}',
+        mac_bundle = bld.env.mac_bundle_enabled
+        )
+ +

def configure(conf):

+ +
conf.load("ruby")
+conf.check_ruby_version((1,8,0))
+conf.check_ruby_ext_devel()
+
+conf.check_cc(function_name="rb_protect_inspect", header_name="ruby.h",
+        uselib="RUBYEXT", mandatory=False)
+
+prefix = os.path.commonprefix([conf.env.ARCHDIR_RUBY, conf.env.PREFIX])
+if prefix != conf.env.PREFIX:
+    Logs.warn("Default ruby archdir is not under PREFIX. Specify path "
+              "manually using --with-ruby-archdir if you don't want the "
+              "ruby bindings to be installed to %s" % conf.env.ARCHDIR_RUBY)
+
+prefix = os.path.commonprefix([conf.env.LIBDIR_RUBY, conf.env.PREFIX])
+if prefix != conf.env.PREFIX:
+    Logs.warn("Default ruby libdir is not under PREFIX. Specify path "
+              "manually using --with-ruby-libdir if you don't want the "
+              "ruby bindings to be installed to %s" % conf.env.ARCHDIR_RUBY)
+
+return True
+ +

def options(opt):

+ +
opt.load('ruby')
+
+
+ + + + + diff --git a/src/clients/lib/ruby/html/Collection.html b/src/clients/lib/ruby/html/Collection.html new file mode 100644 index 000000000..5e3df1f8b --- /dev/null +++ b/src/clients/lib/ruby/html/Collection.html @@ -0,0 +1,539 @@ + + + + + + +class Collection - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection +

+ +
+ +
+ + + + +
+ + + + + +
+
+

Constants

+
+
+ +
NS_ALL + +
+ + +
NS_COLLECTIONS + +
+ + +
NS_PLAYLISTS + +
+ + +
+
+ + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + c = Xmms::Collection.new(type) + + + click to toggle source + +
+ + + +
+ +

Returns a new Xmms::Collection object of +type type.

+ + + + +
+
static VALUE
+c_coll_init (VALUE self, VALUE type)
+{
+        COLL_METHOD_HANDLER_HEADER
+
+        coll->real = xmmsv_new_coll (check_int32 (type));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.parse(pattern) + + + click to toggle source + +
+ + + +
+ +

Returns a collection matching a String pattern. See the wiki for +details on how to construct a pattern string.

+ + + + +
+
static VALUE
+c_coll_parse (VALUE klass, VALUE pattern)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        if (!xmmsv_coll_parse (StringValuePtr (pattern), &coll->real)) {
+                rb_raise (ePatternError, "invalid pattern");
+        }
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.universe + + + click to toggle source + +
+ + + +
+ +

Returns a collection referencing the “All Media” set.

+ + + + +
+
static VALUE
+c_coll_universe (VALUE klass)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        coll->real = xmmsv_new_coll (XMMS_COLLECTION_TYPE_UNIVERSE);
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + attributes + + + click to toggle source + +
+ + + +
+ +

Returns the attributes of the collection.

+ + + + +
+
static VALUE
+c_coll_attributes (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->attributes))
+                coll->attributes = rb_class_new_instance (1, &self, cAttributes);
+
+        return coll->attributes;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + idlist + + + click to toggle source + +
+ + + +
+ +

Gets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_get (VALUE self)
+{
+        VALUE ary = rb_ary_new ();
+        xmmsv_t *ret = NULL;
+        xmmsv_list_iter_t *it = NULL;
+        int32_t entry;
+
+        COLL_METHOD_ADD_HANDLER_RET (idlist_get)
+
+        xmmsv_get_list_iter (ret, &it);
+        for (xmmsv_list_iter_first (it);
+             xmmsv_list_iter_valid (it);
+             xmmsv_list_iter_next (it)) {
+
+                xmmsv_list_iter_entry_int (it, &entry);
+                rb_ary_push (ary, INT2NUM (entry));
+        }
+        xmmsv_list_iter_explicit_destroy (it);
+
+        return ary;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + idlist=(_idlist_) + + + click to toggle source + +
+ + + +
+ +

Sets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_set (VALUE self, VALUE ids)
+{
+        int i;
+        int *ary = NULL;
+        VALUE *rb_ary;
+        int rb_ary_len;
+
+        Check_Type (ids, T_ARRAY);
+        COLL_METHOD_HANDLER_HEADER
+
+        rb_ary = RARRAY_PTR (ids);
+        rb_ary_len = RARRAY_LEN (ids);
+
+        ary = malloc (sizeof (int) * (rb_ary_len + 1));
+
+        for (i = 0; i < rb_ary_len; i++)
+                ary[i] = NUM2INT (rb_ary[i]);
+
+        ary[i] = 0;
+
+        xmmsv_coll_set_idlist (coll->real, ary);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + operands + + + click to toggle source + +
+ + + +
+ +

Gets a list of the operands that make up the collection.

+ + + + +
+
static VALUE
+c_coll_operands (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->operands))
+                coll->operands = rb_class_new_instance (1, &self, cOperands);
+
+        return coll->operands;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + type + + + click to toggle source + +
+ + + +
+ +

Returns the type of the collection as an Integer.

+ + + + +
+
static VALUE
+c_coll_type_get (VALUE self)
+{
+        xmmsc_coll_type_t ret;
+
+        COLL_METHOD_ADD_HANDLER_RET (get_type)
+
+        return INT2NUM (ret);
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/Attributes.html b/src/clients/lib/ruby/html/Collection/Attributes.html new file mode 100644 index 000000000..14963c4bb --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/Attributes.html @@ -0,0 +1,674 @@ + + + + + + +class Collection::Attributes - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::Attributes +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ [](p1) + + click to toggle source + +
+ + +
+ +

HAVE_RB_PROTECT_INSPECT

+ + + + +
+
static VALUE
+c_attrs_aref (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+        const char *value;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), &value);
+        if (!s)
+                return Qnil;
+
+        return rb_str_new2 (value);
+}
+
+ +
+ + + + +
+ + +
+ +
+ []=(p1, p2) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_aset (VALUE self, VALUE key, VALUE value)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+        StringValue (value);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_set_string (coll->real, StringValuePtr (key),
+                                         StringValuePtr (value));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_delete (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_remove (coll->real, StringValuePtr (key));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_PAIR));
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: each_pair +
+ + + +
+ + +
+ +
+ each_key() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_key (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_KEY));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each_pair() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: each +
+ +
+ + +
+ +
+ each_value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_value (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_VALUE));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ has_key?(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_has_key (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), NULL);
+
+        return s ? Qtrue : Qfalse;
+}
+
+ +
+ + +
+ Also aliased as: include?, key?, member? +
+ + + +
+ + +
+ +
+ include?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ inspect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_inspect (VALUE self)
+{
+        return rb_protect_inspect (attrs_inspect, self, 0);
+}
+
+ +
+ + + + +
+ + +
+ +
+ key?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ member?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/ClientError.html b/src/clients/lib/ruby/html/Collection/ClientError.html new file mode 100644 index 000000000..68c69c7f5 --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Collection::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/CollectionError.html b/src/clients/lib/ruby/html/Collection/CollectionError.html new file mode 100644 index 000000000..a18a20d9e --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/CollectionError.html @@ -0,0 +1,102 @@ + + + + + + +class Collection::CollectionError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::CollectionError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/DisconnectedError.html b/src/clients/lib/ruby/html/Collection/DisconnectedError.html new file mode 100644 index 000000000..b3c27d2c0 --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Collection::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/Operands.html b/src/clients/lib/ruby/html/Collection/Operands.html new file mode 100644 index 000000000..88984b5d1 --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/Operands.html @@ -0,0 +1,348 @@ + + + + + + +class Collection::Operands - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::Operands +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ <<(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: push +
+ +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_delete (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_remove_operand (coll->real, coll2->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *operands_list;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        operands_list = xmmsv_coll_operands_get (coll->real);
+
+        xmmsv_list_foreach (operands_list, operands_each, NULL);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ push(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_push (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_add_operand (coll->real, coll2->real);
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: << +
+ + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Collection/PatternError.html b/src/clients/lib/ruby/html/Collection/PatternError.html new file mode 100644 index 000000000..ce81a7541 --- /dev/null +++ b/src/clients/lib/ruby/html/Collection/PatternError.html @@ -0,0 +1,102 @@ + + + + + + +class Collection::PatternError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Collection::PatternError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms.html b/src/clients/lib/ruby/html/Xmms.html new file mode 100644 index 000000000..6f5de434f --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms.html @@ -0,0 +1,232 @@ + + + + + + +module Xmms - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms +

+ +
+ +
+ + + + +
+ + + + + +
+
+

Constants

+
+
+ +
VERSION + +
+ + +
+
+ + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + decode_url(url) → String + + + click to toggle source + +
+ + + +
+ +

Decodes a url-encoded string url and returns it in UNKNOWN +ENCODING. Use with caution.

+ + + + +
+
static VALUE
+m_decode_url (VALUE self, VALUE str)
+{
+        const unsigned char *burl;
+        unsigned int blen;
+        xmmsv_t *strv, *decoded;
+        VALUE url = Qnil;
+
+        strv = xmmsv_new_string (StringValuePtr (str));
+
+        decoded = xmmsv_decode_url (strv);
+
+        if (!decoded)
+                goto out;
+
+        if (!xmmsv_get_bin (decoded, &burl, &blen))
+                goto out;
+
+        url = rb_str_new ((char *) burl, blen);
+
+out:
+        if (decoded)
+                xmmsv_unref (decoded);
+
+        xmmsv_unref (strv);
+
+        return url;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + userconfdir → String + + + click to toggle source + +
+ + + +
+ +

Returns the xmms2 configuration directory for the current user.

+ + + + +
+
static VALUE
+m_userconfdir_get (VALUE self)
+{
+        const char *p;
+        char path[XMMS_PATH_MAX];
+
+        p = xmmsc_userconfdir_get (path, XMMS_PATH_MAX);
+
+        return p ? rb_str_new2 (p) : Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/BroadcastResult.html b/src/clients/lib/ruby/html/Xmms/BroadcastResult.html new file mode 100644 index 000000000..fe0394784 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/BroadcastResult.html @@ -0,0 +1,160 @@ + + + + + + +class Xmms::BroadcastResult - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::BroadcastResult +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ disconnect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Client.html b/src/clients/lib/ruby/html/Xmms/Client.html new file mode 100644 index 000000000..8487858bc --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Client.html @@ -0,0 +1,3550 @@ + + + + + + +class Xmms::Client - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + Xmms::Client.new(name) → xc + + + click to toggle source + +
+ + + +
+ +

Creates an Xmms::Client object.

+ + + + +
+
static VALUE
+c_init (VALUE self, VALUE name)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        if (!(xmms->real = xmmsc_init (StringValuePtr (name)))) {
+                rb_raise (rb_eNoMemError, "failed to allocate memory");
+                return Qnil;
+        }
+
+        xmms->deleted = false;
+        xmms->result_callbacks = rb_ary_new ();
+        xmms->disconnect_cb = Qnil;
+        xmms->io_need_out_cb = Qnil;
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + bindata_add(str) → result + + + click to toggle source + +
+ + + +
+ +

Stores binary data on the server.

+ + + + +
+
static VALUE
+c_bindata_add (VALUE self, VALUE data)
+{
+        METHOD_ADD_HANDLER_BIN (bindata_add, data);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_list → result + + + click to toggle source + +
+ + + +
+ +

List all bindata hashes stored on the server.

+ + + + +
+
static VALUE
+c_bindata_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (bindata_list);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_remove(hash) → result + + + click to toggle source + +
+ + + +
+ +

Remove a datafile from the server.

+ + + + +
+
static VALUE
+c_bindata_remove (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_remove, hash);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + bindata_retrieve(hash) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the bindata entry specified by hash (hex string) from the server.

+ + + + +
+
static VALUE
+c_bindata_retrieve (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_retrieve, hash);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_coll_changed → result + + + click to toggle source + +
+ + + +
+ +

The collection_changed broadcast, if requested, is called anytime a +collection is altered.

+ + + + +
+
static VALUE
+c_broadcast_coll_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_collection_changed)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_config_value_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves configuration properties as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_config_value_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_config_value_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_mediainfo_reader_status → result + + + click to toggle source + +
+ + + +
+ +

Requests the status of the mediainfo reader.

+ + + + +
+
static VALUE
+c_broadcast_mediainfo_reader_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_mediainfo_reader_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_added → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of an added medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_added (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_added);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of a changed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_changed (VALUE self)
+{
+        RB_XMMS_DEPRECATED (broadcast_medialib_entry_changed, broadcast_medialib_entry_updated);
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_removed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of an removed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_removed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_removed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_medialib_entry_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id of a changed medialib entry as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_medialib_entry_updated (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playback_current_id → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the media id of the currently played track as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_current_id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playback_status → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playback status as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_volume_changed → result + + + click to toggle source + +
+ + + +
+ +

Registers a broadcast handler that's evoked when the playback volume +changes.

+ + + + +
+
static VALUE
+c_broadcast_playback_volume_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_volume_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_changed → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a hash describing the change to the playlist as a broadcast.

+ + + + +
+
static VALUE
+c_broadcast_playlist_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_changed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_current_pos → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the current playlist position as a broadcast. See +playlist_current_pos.

+ + + + +
+
static VALUE
+c_broadcast_playlist_current_pos (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_current_pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_playlist_loaded → result + + + click to toggle source + +
+ + + +
+ +

Will be called when a playlist has been loaded.

+ + + + +
+
static VALUE
+c_broadcast_playlist_loaded (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_loaded);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + broadcast_quit → result + + + click to toggle source + +
+ + + +
+ +

Will be called when the server is terminating.

+ + + + +
+
static VALUE
+c_broadcast_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_quit);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_find(id, ns) → result + + + click to toggle source + +
+ + + +
+ +

Find all collections in the given namespace ns which contain +id.

+ + + + +
+
static VALUE
+c_coll_find (VALUE self, VALUE id, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_coll_find (xmms->real, check_int32 (id),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_get(name, [ns]) + + + click to toggle source + +
+ + + +
+ +

Returns a result containing an Xmms::Collection object referencing the +collection named name. The namespace ns is searched or +all namespaces if unspecified.

+ + + + +
+
static VALUE
+c_coll_get (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_idlist_from_playlist_file(path) → result + + + click to toggle source + +
+ + + +
+ +

Returns a collection of the idlist type from the playlist file at +path. path must be an unencoded string.

+ + + + +
+
static VALUE
+c_coll_idlist_from_playlist_file (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (coll_idlist_from_playlist_file, path)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_list([ns]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array of the names of all the collections stored in the +medialib under the namespace ns. If ns is not specified, +it defaults to ALL.

+ + + + +
+
static VALUE
+c_coll_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "01", &ns);
+
+        if (NIL_P (ns))
+                ns = rb_str_new2 (XMMS_COLLECTION_NS_ALL);
+
+        res = xmmsc_coll_list (xmms->real, StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query(coll, spec) → result + + + click to toggle source + +
+ + + +
+ + + + + + +
+
static VALUE
+c_coll_query (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, spec;
+        xmmsv_t *cspec;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "2", &coll, &spec);
+
+        cspec = xmmsv_new_dict ();
+
+        VALUE args = rb_ary_new3(4, xmms, coll, spec, (VALUE) cspec);
+
+        res = (xmmsc_result_t *) rb_ensure (c_coll_query_fragile, args,
+                                            c_coll_query_cleanup, (VALUE) cspec);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query_ids(coll, [order], [start], [len]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all the ids of media matched by the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving ids and the maximum number of ids to retrieve, +respectively.

+ + + + +
+
static VALUE
+c_coll_query_ids (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len = Qnil;
+        xmmsv_t *corder = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "13", &coll, &order, &start, &len);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_coll_query_ids (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len));
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_query_info(coll, fetch, [order], [start], [len], [group]) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves media info of media matched by the collection. fetch +should contain an array of properties to retrieve from the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving info and the maximum number of ids to retrieve, +respectively. group defines a list of properties to group by or no +grouping if omitted.

+ + + + +
+
static VALUE
+c_coll_query_info (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len, fetch, group = Qnil;
+        xmmsv_t *cfetch = NULL, *corder = NULL, *cgroup = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "24", &coll, &fetch, &order, &start, &len,
+                      &group);
+
+        cfetch = parse_string_array2 (fetch);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        if (!NIL_P (group))
+                cgroup = parse_string_array2 (group);
+
+        res = xmmsc_coll_query_infos (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len),
+                                    cfetch,
+                                    cgroup);
+        xmmsv_unref (cfetch);
+        if (corder) {
+                xmmsv_unref (corder);
+        }
+        if (cgroup) {
+                xmmsv_unref (cgroup);
+        }
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_remove(name, [ns]) → result + + + click to toggle source + +
+ + + +
+ +

Remove the collection named name from the media library. The +collection is removed from the namespace ns or all namespaces if +unspecified.

+ + + + +
+
static VALUE
+c_coll_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_rename(old, new, [ns]) → result + + + click to toggle source + +
+ + + +
+ +

Rename the saved collection from old to new within the +namespace ns or all namespaces.

+ + + + +
+
static VALUE
+c_coll_rename (int argc, VALUE *argv, VALUE self)
+{
+        VALUE old, new, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "21", &old, &new, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + coll_save(coll, name, ns) → result + + + click to toggle source + +
+ + + +
+ +

Save the collection coll named name under the namespace +ns to the media library.

+ + + + +
+
static VALUE
+c_coll_save (VALUE self, VALUE coll, VALUE name, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        /* FIXME: Check that we actually have a Collection object */
+
+        res = xmmsc_coll_save (xmms->real,
+                               FROM_XMMS_CLIENT_COLLECTION (coll),
+                               StringValuePtr (name),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_get_value(key) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the value of the configuration property at key.

+ + + + +
+
static VALUE
+c_config_get_value (VALUE self, VALUE key)
+{
+        METHOD_ADD_HANDLER_STR (config_get_value, key);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_list_values → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all config values.

+ + + + +
+
static VALUE
+c_config_list_values (VALUE self)
+{
+        METHOD_ADD_HANDLER (config_list_values);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_register_value(key, default_value) → result + + + click to toggle source + +
+ + + +
+ +

Registers a configuration property at key with the given default +value.

+ + + + +
+
static VALUE
+c_config_register_value (VALUE self, VALUE key, VALUE defval)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_register_value, key, defval);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + config_set_value(key, value) → result + + + click to toggle source + +
+ + + +
+ +

Sets the value of the configuration property at key to +value.

+ + + + +
+
static VALUE
+c_config_set_value (VALUE self, VALUE key, VALUE val)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_set_value, key, val);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + connect([path]) → self + + + click to toggle source + +
+ + + +
+ +

Connects xc to the XMMS2 daemon listening at path. If +path isn't given, the default path is used.

+ + + + +
+
static VALUE
+c_connect (int argc, VALUE *argv, VALUE self)
+{
+        VALUE path;
+        RbXmmsClient *xmms = NULL;
+        char *p = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "01", &path);
+
+        if (!NIL_P (path))
+                p = StringValuePtr (path);
+
+        if (!xmmsc_connect (xmms->real, p))
+                rb_raise (eClientError,
+                          "cannot connect to daemon (%s)",
+                          xmmsc_get_last_error (xmms->real));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ delete!() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_delete (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_unref (xmms->real);
+        xmms->deleted = true;
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_disconnect → nil + + + click to toggle source + +
+ + + +
+ +

Disconnects the IPC socket. This should only be used by event loop +implementations.

+ + + + +
+
static VALUE
+c_io_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_disconnect (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_fd → integer + + + click to toggle source + +
+ + + +
+ +

Returns the file descriptor of the Xmms::Client +IPC socket.

+ + + + +
+
static VALUE
+c_io_fd (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return INT2NUM (xmmsc_io_fd_get (xmms->real));
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_in_handle → nil + + + click to toggle source + +
+ + + +
+ +

Retrieves one incoming (from server) clientlib command if there are any in +the buffer.

+ + + + +
+
static VALUE
+c_io_in_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_in_handle (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_on_need_out { |flag| } + + + click to toggle source + +
+ + + +
+ +

Sets the block that's called when the output socket state changes.

+ + + + +
+
static VALUE
+c_io_on_need_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->io_need_out_cb = rb_block_proc ();
+
+        xmmsc_io_need_out_callback_set (xmms->real,
+                                        on_io_need_out, (void *) self);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_out_handle → nil + + + click to toggle source + +
+ + + +
+ +

Sends one outgoing (to server) clientlib command. You should check io_want_out before calling this +method.

+ + + + +
+
static VALUE
+c_io_out_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_out_handle (xmms->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + io_want_out → true or false + + + click to toggle source + +
+ + + +
+ +

Returns true if an outgoing (to server) clientlib command is +pending, false otherwise.

+ + + + +
+
static VALUE
+c_io_want_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return xmmsc_io_want_out (xmms->real) ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + last_error → string or nil + + + click to toggle source + +
+ + + +
+ +

Returns the last error that occured in xc or nil, if +no error occured yet.

+ + + + +
+
static VALUE
+c_last_error_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        const char *s;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        s = xmmsc_get_last_error (xmms->real);
+
+        return s ? rb_str_new2 (s) : Qnil;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + main_stats → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a hash containing statistics about the daemon.

+ + + + +
+
static VALUE
+c_main_stats (VALUE self)
+{
+        METHOD_ADD_HANDLER (main_stats);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_add_entry(url) → result + + + click to toggle source + +
+ + + +
+ +

Adds url to the medialib.

+ + + + +
+
static VALUE
+c_medialib_add_entry (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_add_entry, url);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_move(id, url) → result + + + click to toggle source + +
+ + + +
+ +

Moves the entry specified by id to a new URL without changing +mediainfo.

+ + + + +
+
static VALUE
+c_medialib_entry_move (VALUE self, VALUE id, VALUE url)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_medialib_move_entry (xmms->real, check_int32 (id),
+                                         StringValuePtr (url));
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_property_remove(id, key, *source) → result + + + click to toggle source + +
+ + + +
+ +

Remove a custom field in the medialib associated with the entry +id. source is an optional argument that describes where +to write the mediainfo. If source is omitted, +“client/<yourclient>” is used, where <yourclient> is the name +you specified in ::new.

+ + + + +
+
static VALUE
+c_medialib_entry_property_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        int32_t id;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "21", &tmp, &key, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_remove (xmms->real, id,
+                                                            ckey);
+        else
+                res = xmmsc_medialib_entry_property_remove_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_property_set(id, key, value, *source) → result + + + click to toggle source + +
+ + + +
+ +

Write info to the medialib at id. source is an optional +argument that describes where to write the mediainfo. If source is +omitted, the mediainfo is written to “client/<yourclient>” where +<yourclient> is the name you specified in ::new.

+ + + + +
+
static VALUE
+c_medialib_entry_property_set (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, value, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        bool is_str = false;
+        int32_t id, ivalue;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "31", &tmp, &key, &value, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        if (!NIL_P (rb_check_string_type (value)))
+                is_str = true;
+        else
+                ivalue = check_int32 (value);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src) && is_str)
+                res = xmmsc_medialib_entry_property_set_str (xmms->real, id,
+                                                             ckey,
+                                                             StringValuePtr (value));
+        else if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_set_int (xmms->real, id,
+                                                             ckey, ivalue);
+        else if (is_str)
+                res = xmmsc_medialib_entry_property_set_str_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey,
+                        StringValuePtr (value));
+        else
+                res = xmmsc_medialib_entry_property_set_int_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey, ivalue);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_entry_remove(id) → result + + + click to toggle source + +
+ + + +
+ +

Removes the entry specified by id from the medialib.

+ + + + +
+
static VALUE
+c_medialib_entry_remove (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_remove_entry, id)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_get_id(url) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the id corresponding to url.

+ + + + +
+
static VALUE
+c_medialib_get_id (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_get_id, url);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_get_info(id) → result + + + click to toggle source + +
+ + + +
+ +

Retrieves medialib info for id.

+ + + + +
+
static VALUE
+c_medialib_get_info (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_get_info, id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_path_import(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path to the medialib.

+ + + + +
+
static VALUE
+c_medialib_path_import (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_path_import(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under the url encoded path to +the medialib.

+ + + + +
+
static VALUE
+c_medialib_path_import_encoded (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path_encoded, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + medialib_rehash(id) → result + + + click to toggle source + +
+ + + +
+ +

Rehashes the medialib entry at id or the whole medialib if +id == 0.

+ + + + +
+
static VALUE
+c_medialib_rehash (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_rehash, id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + on_disconnect { } → self + + + click to toggle source + +
+ + + +
+ +

Sets the block that's executed when xc is disconnected from +the XMMS2 daemon.

+ + + + +
+
static VALUE
+c_on_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->disconnect_cb = rb_block_proc ();
+
+        xmmsc_disconnect_callback_set (xmms->real,
+                                       on_disconnect, (void *) self);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_current_id → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the media id of the currently played track.

+ + + + +
+
static VALUE
+c_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_current_id);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_pause → result + + + click to toggle source + +
+ + + +
+ +

Pauses playback.

+ + + + +
+
static VALUE
+c_playback_pause (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_pause);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_playtime → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playtime.

+ + + + +
+
static VALUE
+c_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_playtime);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_ms(ms) → result + + + click to toggle source + +
+ + + +
+ +

Seek to the song position given in ms.

+ + + + +
+
static VALUE
+c_playback_seek_ms (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_ms_rel(ms) → result + + + click to toggle source + +
+ + + +
+ +

Seek in the song by the offset given in ms.

+ + + + +
+
static VALUE
+c_playback_seek_ms_rel (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_samples(samples) → result + + + click to toggle source + +
+ + + +
+ +

Seek to the song position given in samples.

+ + + + +
+
static VALUE
+c_playback_seek_samples (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_seek_samples_rel(samples) → result + + + click to toggle source + +
+ + + +
+ +

Seek in the song position by the offset given in samples.

+ + + + +
+
static VALUE
+c_playback_seek_samples_rel (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_start → result + + + click to toggle source + +
+ + + +
+ +

Starts playback.

+ + + + +
+
static VALUE
+c_playback_start (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_start);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_status → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playback status.

+ + + + +
+
static VALUE
+c_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_status);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_stop → result + + + click to toggle source + +
+ + + +
+ +

Stops playback.

+ + + + +
+
static VALUE
+c_playback_stop (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_stop);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_tickle → result + + + click to toggle source + +
+ + + +
+ +

Advances to the next playlist entry.

+ + + + +
+
static VALUE
+c_playback_tickle (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_tickle);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_volume_get → result + + + click to toggle source + +
+ + + +
+ +

Gets the current playback volume.

+ + + + +
+
static VALUE
+c_playback_volume_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        res = xmmsc_playback_volume_get (xmms->real);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playback_volume_set(channel, volume) → result + + + click to toggle source + +
+ + + +
+ +

Sets playback volume for channel to volume.

+ + + + +
+
static VALUE
+c_playback_volume_set (VALUE self, VALUE channel, VALUE volume)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        Check_Type (channel, T_SYMBOL);
+        Check_Type (volume, T_FIXNUM);
+
+        res = xmmsc_playback_volume_set (xmms->real,
+                                         rb_id2name (SYM2ID (channel)),
+                                         NUM2INT (volume));
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist([name]) → p + + + click to toggle source + +
+ + + +
+ +

Shortcut for Xmms::Playlist.new. +Creates a new Xmms::Playlist object tied to the +current Xmms::Client instance. name is +is the name of the playlist and the active playlist will be used if it is +not specified. Raises PlaylistError if the playlist name is invalid.

+ + + + +
+
static VALUE
+c_playlist (int argc, VALUE *argv, VALUE self)
+{
+        VALUE args[2] = {self, Qnil};
+
+        rb_scan_args (argc, argv, "01", &args[1]);
+
+        return rb_class_new_instance (2, args, cPlaylist);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_current_active → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the name of the active playlist.

+ + + + +
+
static VALUE
+c_playlist_current_active (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_current_active);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_list → result + + + click to toggle source + +
+ + + +
+ +

Retrieves a list of all saved playlists from the medialib. Note that +clients should treat internally used playlists (marked with a leading +underscore) carefully.

+ + + + +
+
static VALUE
+c_playlist_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_list);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_set_next(pos) → result + + + click to toggle source + +
+ + + +
+ +

Sets the next song to be played to pos (an absolute position).

+ + + + +
+
static VALUE
+c_playlist_set_next (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next, pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_set_next_rel(pos) → result + + + click to toggle source + +
+ + + +
+ +

Sets the next song to be played based on the current position where +pos is a value relative to the current position.

+ + + + +
+
static VALUE
+c_playlist_set_next_rel (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next_rel, pos);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + plugin_list → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array containing a hash of information for each plugin.

+ + + + +
+
static VALUE
+c_plugin_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE type = Qnil;
+
+        rb_scan_args (argc, argv, "01", &type);
+
+        if (NIL_P (type))
+                type = INT2FIX (XMMS_PLUGIN_TYPE_ALL);
+
+        METHOD_ADD_HANDLER_INT (main_list_plugins, type);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + quit → result + + + click to toggle source + +
+ + + +
+ +

Shuts down the XMMS2 daemon.

+ + + + +
+
static VALUE
+c_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (quit);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + signal_mediainfo_reader_unindexed → result + + + click to toggle source + +
+ + + +
+ +

Requests the number of unindexed entries in the medialib.

+ + + + +
+
static VALUE
+c_signal_mediainfo_reader_unindexed (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_mediainfo_reader_unindexed);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + signal_playback_playtime → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the playtime as a signal.

+ + + + +
+
static VALUE
+c_signal_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_playback_playtime);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + xform_media_browse(url) → result + + + click to toggle source + +
+ + + +
+ +

returns a list of files from the server

+ + + + +
+
static VALUE
+c_xform_media_browse (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (xform_media_browse, url);
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Client/Async.html b/src/clients/lib/ruby/html/Xmms/Client/Async.html new file mode 100644 index 000000000..02acb515f --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Client/Async.html @@ -0,0 +1,230 @@ + + + + + + +class Xmms::Client::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::Async +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(name) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 22
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 26
+def method_missing(id, *args, &block)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(block_given? && (ret.is_a?(Xmms::Result) ||
+           ret.is_a?(Xmms::BroadcastResult) || ret.is_a?(Xmms::SignalResult)))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Async.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Async.new(ret)
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Client/ClientError.html b/src/clients/lib/ruby/html/Xmms/Client/ClientError.html new file mode 100644 index 000000000..5848bc8c5 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Client/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Client::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Client/DisconnectedError.html b/src/clients/lib/ruby/html/Xmms/Client/DisconnectedError.html new file mode 100644 index 000000000..ec5eefc68 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Client/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Client::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Client/Sync.html b/src/clients/lib/ruby/html/Xmms/Client/Sync.html new file mode 100644 index 000000000..c20a9c214 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Client/Sync.html @@ -0,0 +1,230 @@ + + + + + + +class Xmms::Client::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Client::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(name) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 22
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 26
+def method_missing(id, *args)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result) || ret.is_a?(Xmms::BroadcastResult) ||
+           ret.is_a?(Xmms::SignalResult))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Sync.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Sync.new(ret)
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection.html b/src/clients/lib/ruby/html/Xmms/Collection.html new file mode 100644 index 000000000..975390c4c --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection.html @@ -0,0 +1,855 @@ + + + + + + +class Xmms::Collection - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection +

+ +
+ +
+ + + + +
+ + + + + +
+
+

Constants

+
+
+ +
NS_ALL + +
+ + +
NS_COLLECTIONS + +
+ + +
NS_PLAYLISTS + +
+ + +
+
+ + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + c = Xmms::Collection.new(type) + + + click to toggle source + +
+ + + +
+ +

Returns a new Xmms::Collection object of type +type.

+ + + + +
+
static VALUE
+c_coll_init (VALUE self, VALUE type)
+{
+        COLL_METHOD_HANDLER_HEADER
+
+        coll->real = xmmsv_new_coll (check_int32 (type));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.parse(pattern) + + + click to toggle source + +
+ + + +
+ +

Returns a collection matching a String pattern. See the wiki for +details on how to construct a pattern string.

+ + + + +
+
static VALUE
+c_coll_parse (VALUE klass, VALUE pattern)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        if (!xmmsv_coll_parse (StringValuePtr (pattern), &coll->real)) {
+                rb_raise (ePatternError, "invalid pattern");
+        }
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + c = Xmms::Collection.universe + + + click to toggle source + +
+ + + +
+ +

Returns a collection referencing the “All Media” set.

+ + + + +
+
static VALUE
+c_coll_universe (VALUE klass)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        coll->real = xmmsv_new_coll (XMMS_COLLECTION_TYPE_UNIVERSE);
+
+        return obj;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ &(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: intersect +
+ +
+ + +
+ +
+ and(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: intersect +
+ +
+ + +
+ + +
+ + attributes + + + click to toggle source + +
+ + + +
+ +

Returns the attributes of the collection.

+ + + + +
+
static VALUE
+c_coll_attributes (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->attributes))
+                coll->attributes = rb_class_new_instance (1, &self, cAttributes);
+
+        return coll->attributes;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + complement → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical complement of c.

+ + + + +
+
# File xmmsclient.rb, line 49
+def complement
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_COMPLEMENT)
+        c.operands << self
+        c
+end
+
+ +
+ + +
+ Also aliased as: not, ~ +
+ + + +
+ + +
+ + +
+ + idlist + + + click to toggle source + +
+ + + +
+ +

Gets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_get (VALUE self)
+{
+        VALUE ary = rb_ary_new ();
+        xmmsv_t *ret = NULL;
+        xmmsv_list_iter_t *it = NULL;
+        int32_t entry;
+
+        COLL_METHOD_ADD_HANDLER_RET (idlist_get)
+
+        xmmsv_get_list_iter (ret, &it);
+        for (xmmsv_list_iter_first (it);
+             xmmsv_list_iter_valid (it);
+             xmmsv_list_iter_next (it)) {
+
+                xmmsv_list_iter_entry_int (it, &entry);
+                rb_ary_push (ary, INT2NUM (entry));
+        }
+        xmmsv_list_iter_explicit_destroy (it);
+
+        return ary;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + idlist=(_idlist_) + + + click to toggle source + +
+ + + +
+ +

Sets the list of media ids that make up the collection.

+ + + + +
+
static VALUE
+c_coll_idlist_set (VALUE self, VALUE ids)
+{
+        int i;
+        int *ary = NULL;
+        VALUE *rb_ary;
+        int rb_ary_len;
+
+        Check_Type (ids, T_ARRAY);
+        COLL_METHOD_HANDLER_HEADER
+
+        rb_ary = RARRAY_PTR (ids);
+        rb_ary_len = RARRAY_LEN (ids);
+
+        ary = malloc (sizeof (int) * (rb_ary_len + 1));
+
+        for (i = 0; i < rb_ary_len; i++)
+                ary[i] = NUM2INT (rb_ary[i]);
+
+        ary[i] = 0;
+
+        xmmsv_coll_set_idlist (coll->real, ary);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + intersect(other) → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical AND of c and +other.

+ + + + +
+
# File xmmsclient.rb, line 37
+def intersect(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_INTERSECTION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+ +
+ + +
+ Also aliased as: and, & +
+ + + +
+ + +
+ +
+ not() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: complement +
+ +
+ + +
+ + +
+ + operands + + + click to toggle source + +
+ + + +
+ +

Gets a list of the operands that make up the collection.

+ + + + +
+
static VALUE
+c_coll_operands (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->operands))
+                coll->operands = rb_class_new_instance (1, &self, cOperands);
+
+        return coll->operands;
+}
+
+ +
+ + + + +
+ + +
+ +
+ or(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: union +
+ +
+ + +
+ + +
+ + type + + + click to toggle source + +
+ + + +
+ +

Returns the type of the collection as an Integer.

+ + + + +
+
static VALUE
+c_coll_type_get (VALUE self)
+{
+        xmmsc_coll_type_t ret;
+
+        COLL_METHOD_ADD_HANDLER_RET (get_type)
+
+        return INT2NUM (ret);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + union(other) → collection + + + click to toggle source + +
+ + + +
+ +

Returns a new collection that is the logical OR of c and +other.

+ + + + +
+
# File xmmsclient.rb, line 25
+def union(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_UNION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+ +
+ + +
+ Also aliased as: or, | +
+ + + +
+ + +
+ +
+ |(other) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: union +
+ +
+ + +
+ +
+ ~() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: complement +
+ +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/Async.html b/src/clients/lib/ruby/html/Xmms/Collection/Async.html new file mode 100644 index 000000000..d4ded27de --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/Async.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Collection::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Async +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(coll) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 47
+def initialize(coll)
+        @real = coll
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 51
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/Attributes.html b/src/clients/lib/ruby/html/Xmms/Collection/Attributes.html new file mode 100644 index 000000000..9e018d92c --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/Attributes.html @@ -0,0 +1,674 @@ + + + + + + +class Xmms::Collection::Attributes - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Attributes +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ [](p1) + + click to toggle source + +
+ + +
+ +

HAVE_RB_PROTECT_INSPECT

+ + + + +
+
static VALUE
+c_attrs_aref (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+        const char *value;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), &value);
+        if (!s)
+                return Qnil;
+
+        return rb_str_new2 (value);
+}
+
+ +
+ + + + +
+ + +
+ +
+ []=(p1, p2) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_aset (VALUE self, VALUE key, VALUE value)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+        StringValue (value);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_set_string (coll->real, StringValuePtr (key),
+                                         StringValuePtr (value));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_delete (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_remove (coll->real, StringValuePtr (key));
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_PAIR));
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: each_pair +
+ + + +
+ + +
+ +
+ each_key() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_key (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_KEY));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each_pair() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: each +
+ +
+ + +
+ +
+ each_value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_each_value (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_VALUE));
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ has_key?(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_has_key (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), NULL);
+
+        return s ? Qtrue : Qfalse;
+}
+
+ +
+ + +
+ Also aliased as: include?, key?, member? +
+ + + +
+ + +
+ +
+ include?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ inspect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_attrs_inspect (VALUE self)
+{
+        return rb_protect_inspect (attrs_inspect, self, 0);
+}
+
+ +
+ + + + +
+ + +
+ +
+ key?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ member?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/ClientError.html b/src/clients/lib/ruby/html/Xmms/Collection/ClientError.html new file mode 100644 index 000000000..580fa2497 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/CollectionError.html b/src/clients/lib/ruby/html/Xmms/Collection/CollectionError.html new file mode 100644 index 000000000..599a5a082 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/CollectionError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::CollectionError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::CollectionError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/DisconnectedError.html b/src/clients/lib/ruby/html/Xmms/Collection/DisconnectedError.html new file mode 100644 index 000000000..4e87a39f9 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/Operands.html b/src/clients/lib/ruby/html/Xmms/Collection/Operands.html new file mode 100644 index 000000000..711ac2aa8 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/Operands.html @@ -0,0 +1,348 @@ + + + + + + +class Xmms::Collection::Operands - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Operands +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ <<(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: push +
+ +
+ + +
+ +
+ delete(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_delete (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_remove_operand (coll->real, coll2->real);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *operands_list;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        operands_list = xmmsv_coll_operands_get (coll->real);
+
+        xmmsv_list_foreach (operands_list, operands_each, NULL);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ push(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_operands_push (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_add_operand (coll->real, coll2->real);
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: << +
+ + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/PatternError.html b/src/clients/lib/ruby/html/Xmms/Collection/PatternError.html new file mode 100644 index 000000000..8fc1f5f23 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/PatternError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Collection::PatternError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::PatternError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection/Sync.html b/src/clients/lib/ruby/html/Xmms/Collection/Sync.html new file mode 100644 index 000000000..96017eb46 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection/Sync.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Collection::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Collection::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(coll) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 48
+def initialize(coll)
+        @real = coll
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 52
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Collection2.html b/src/clients/lib/ruby/html/Xmms/Collection2.html new file mode 100644 index 000000000..f2635032c --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Collection2.html @@ -0,0 +1,109 @@ + + + + + + +module Xmms::Collection2 - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms::Collection2 +

+ +
+ +
+ + + + +
+ + + + + +
+
+

Constants

+
+
+ +
NS_ALL + +
+ + +
+
+ + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Dict.html b/src/clients/lib/ruby/html/Xmms/Dict.html new file mode 100644 index 000000000..9d42d3f28 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Dict.html @@ -0,0 +1,643 @@ + + + + + + +class Xmms::Dict - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Dict +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ [](p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_aref (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        xmmsv_t *value;
+        const char *ckey;
+        int s;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        s = xmmsv_dict_iter_find (it, ckey);
+        if (!s)
+                return Qnil;
+
+        xmmsv_dict_iter_pair (it, NULL, &value);
+
+        return extract_value (self, value);
+}
+
+ +
+ + + + +
+ + +
+ +
+ each() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_pair, &self);
+
+        return self;
+}
+
+ +
+ + +
+ Also aliased as: each_pair +
+ + + +
+ + +
+ +
+ each_key() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each_key (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_key, NULL);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ each_pair() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: each +
+ +
+ + +
+ +
+ each_value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_each_value (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_value, &self);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+ empty?() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_empty (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return size == 0 ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ +
+ has_key?(p1) + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_has_key (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        const char *ckey;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        return xmmsv_dict_iter_find (it, ckey) ? Qtrue : Qfalse;
+}
+
+ +
+ + +
+ Also aliased as: include?, key?, member? +
+ + + +
+ + +
+ +
+ include?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ inspect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_inspect (VALUE self)
+{
+        return rb_protect_inspect (dict_inspect, self, 0);
+}
+
+ +
+ + + + +
+ + +
+ +
+ key?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ length() + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: size +
+ +
+ + +
+ +
+ member?(p1) + +
+ + +
+ + + + + + +
+ + + + +
+ Alias for: has_key? +
+ +
+ + +
+ +
+ size() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_dict_size (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return INT2NUM (size);
+}
+
+ +
+ + +
+ Also aliased as: length +
+ + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist.html b/src/clients/lib/ruby/html/Xmms/Playlist.html new file mode 100644 index 000000000..f5d5091c8 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist.html @@ -0,0 +1,840 @@ + + + + + + +class Xmms::Playlist - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Class Methods

+
+ + +
+ + +
+ + pl = Xmms::Playlist.new(xc, [name]) + + + click to toggle source + +
+ + + +
+ +

Initializes a new Xmms::Playlist using the +playlist named name and the Xmms::Client +instance xc. Xmms::Client#playlist is a useful +shortcut. name is is the name of the playlist and the active +playlist will be used if it is not specified. Raises PlaylistError if the playlist name +is invalid.

+ + + + +
+
static VALUE
+c_init (int argc, VALUE *argv, VALUE self)
+{
+        RbPlaylist *pl = NULL;
+        VALUE name, xmms = Qnil;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        rb_scan_args (argc, argv, "11", &xmms, &name);
+
+        /* FIXME: Check type! */
+        pl->xmms = xmms;
+
+        if (NIL_P (name))
+                pl->name_value = rb_str_new2 (XMMS_ACTIVE_PLAYLIST);
+        else
+                pl->name_value = rb_str_dup (name);
+
+        OBJ_FREEZE (pl->name_value);
+
+        pl->name = StringValuePtr (pl->name_value);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + add_collection(coll [, order]) → result + + + click to toggle source + +
+ + + +
+ +

Adds the collection coll to the playlist.

+ + + + +
+
static VALUE
+c_add_collection (int argc, VALUE *argv, VALUE self)
+{
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        VALUE rbcoll, order = Qnil;
+        xmmsv_t *corder = NULL;
+        xmmsc_coll_t *coll;
+
+        rb_scan_args (argc, argv, "11", &rbcoll, &order);
+
+        coll = FROM_XMMS_CLIENT_COLLECTION (rbcoll);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_playlist_add_collection (xmms->real, pl->name,
+                                             coll, corder);
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + add_entry(arg) → result + + + click to toggle source + +
+ + + +
+ +

Adds an entry to the playlist. arg can be either a URL or an id.

+ + + + +
+
static VALUE
+c_add_entry (VALUE self, VALUE arg)
+{
+        int32_t id;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_add_url (xmms->real, pl->name,
+                                              StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_add_id (xmms->real, pl->name, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + clear → result + + + click to toggle source + +
+ + + +
+ +

Clears the playlist.

+ + + + +
+
static VALUE
+c_clear (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (clear)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + current_pos → result + + + click to toggle source + +
+ + + +
+ +

Retrieves the current position of the playlist. May raise an Xmms::Result::ValueError exception if the +current position is undefined.

+ + + + +
+
static VALUE
+c_current_pos (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (current_pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + entries → result + + + click to toggle source + +
+ + + +
+ +

Retrieves an array containing ids for each position of the playlist.

+ + + + +
+
static VALUE
+c_list_entries (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (list_entries)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + insert_entry(pos, arg) → result + + + click to toggle source + +
+ + + +
+ +

Inserts an entry to the current playlist at position pos in the +playlist. arg can be either a URL or an id.

+ + + + +
+
static VALUE
+c_insert_entry (VALUE self, VALUE pos, VALUE arg)
+{
+        int32_t id;
+        int32_t ipos;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        ipos = check_int32 (pos);
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_insert_url (xmms->real, pl->name,
+                                                 ipos, StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_insert_id (xmms->real, pl->name,
+                                                ipos, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + load → result + + + click to toggle source + +
+ + + +
+ +

Loads the playlist as the current active playlist.

+ + + + +
+
static VALUE
+c_load (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (load);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + playlist_move_entry(current_pos, new_pos) → result + + + click to toggle source + +
+ + + +
+ +

Moves the entry at current_pos to new_pos in the +playlist.

+ + + + +
+
static VALUE
+c_move_entry (VALUE self, VALUE cur_pos, VALUE new_pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_INT (move_entry, cur_pos, new_pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + name → string + + + click to toggle source + +
+ + + +
+ +

Returns the name of the playlist in the medialib as a String.

+ + + + +
+
static VALUE
+c_name (VALUE self)
+{
+        RbPlaylist *pl = NULL;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        return pl->name_value;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + radd(path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path to the playlist.

+ + + + +
+
static VALUE
+c_radd (VALUE self, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_STR (radd, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + remove → result + + + click to toggle source + +
+ + + +
+ +

Removes the playlist from the medialib.

+ + + + +
+
static VALUE
+c_remove (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (remove);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + remove_entry(pos) → result + + + click to toggle source + +
+ + + +
+ +

Removes the entry at pos from the playlist.

+ + + + +
+
static VALUE
+c_remove_entry (VALUE self, VALUE pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT (remove_entry, pos)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + rinsert(pos, path) → result + + + click to toggle source + +
+ + + +
+ +

Recursively imports all media files under path at position +pos in the playlist.

+ + + + +
+
static VALUE
+c_rinsert (VALUE self, VALUE pos, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_STR (rinsert, pos, path);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + shuffle → result + + + click to toggle source + +
+ + + +
+ +

Shuffles the playlist.

+ + + + +
+
static VALUE
+c_shuffle (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (shuffle)
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + sort(properties) → result + + + click to toggle source + +
+ + + +
+ +

Sorts the playlist on properties, which is an array of medialib +properties such as [“title”, “artist”].

+ + + + +
+
static VALUE
+c_sort (VALUE self, VALUE props)
+{
+        xmmsv_t *cprops;
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        cprops = parse_string_array2 (props);
+        res = xmmsc_playlist_sort (xmms->real, pl->name, cprops);
+        xmmsv_unref (cprops);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist/Async.html b/src/clients/lib/ruby/html/Xmms/Playlist/Async.html new file mode 100644 index 000000000..6c492d8c8 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist/Async.html @@ -0,0 +1,238 @@ + + + + + + +class Xmms::Playlist::Async - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::Async +

+ +
+ +
def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +

end

+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(plist) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 66
+def initialize(plist)
+        @real = plist
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args, &block) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File async.rb, line 70
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist/ClientError.html b/src/clients/lib/ruby/html/Xmms/Playlist/ClientError.html new file mode 100644 index 000000000..cf3b11d96 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist/ClientError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::ClientError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::ClientError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist/DisconnectedError.html b/src/clients/lib/ruby/html/Xmms/Playlist/DisconnectedError.html new file mode 100644 index 000000000..53cccbeaf --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist/DisconnectedError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::DisconnectedError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::DisconnectedError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist/PlaylistError.html b/src/clients/lib/ruby/html/Xmms/Playlist/PlaylistError.html new file mode 100644 index 000000000..319706a65 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist/PlaylistError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Playlist::PlaylistError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::PlaylistError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Playlist/Sync.html b/src/clients/lib/ruby/html/Xmms/Playlist/Sync.html new file mode 100644 index 000000000..b496c8bc8 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Playlist/Sync.html @@ -0,0 +1,238 @@ + + + + + + +class Xmms::Playlist::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Playlist::Sync +

+ +
+ +
def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +

end

+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(plist) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 67
+def initialize(plist)
+        @real = plist
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 71
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/RawDict.html b/src/clients/lib/ruby/html/Xmms/RawDict.html new file mode 100644 index 000000000..04ca10a4e --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/RawDict.html @@ -0,0 +1,186 @@ + + + + + + +class Xmms::RawDict - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::RawDict +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ + +
+ + to_propdict( src_prefs ) → propdict + + + click to toggle source + +
+ + + +
+ +

Transforms a RawDict (key-source-value) to a +regular key-value dict. The optional src_prefs argument restricts which +sources are considered. The value may be a string or an array of strings, +which may contain wildcards. Example: rawdict.to_propdict( +['server','plugin/*'] )

+ + + + +
+
static VALUE
+c_raw_dict_to_propdict (int argc, VALUE *argv, VALUE self)
+{
+        VALUE value, sources = Qnil;
+        RbDict *dict = NULL, *dict2 = NULL;
+        xmmsv_t *inner_dict;
+        const char **csources = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        rb_scan_args (argc, argv, "01", &sources);
+
+        if (!NIL_P (sources))
+                csources = parse_string_array (sources);
+        inner_dict = xmmsv_propdict_to_dict (dict->real, csources);
+        if (csources)
+                free (csources);
+
+        value = Data_Make_Struct (cDict, RbDict,
+                                  c_dict_mark, c_dict_free,
+                                  dict2);
+
+        // don't add a second reference here
+        dict2->real = inner_dict;
+        dict2->parent = dict->parent;
+
+        rb_obj_call_init (value, 0, NULL);
+
+        return value;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Result.html b/src/clients/lib/ruby/html/Xmms/Result.html new file mode 100644 index 000000000..e1eebc5a7 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Result.html @@ -0,0 +1,349 @@ + + + + + + +class Xmms::Result - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ error() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_get_error (VALUE self)
+{
+        RbResult *res;
+        xmmsv_t *val;
+        const char *error;
+        int ret;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        ret = xmmsv_get_error (val, &error);
+
+        return rb_str_new2 (ret ? error : "");
+}
+
+ +
+ + + + +
+ + +
+ +
+ error?() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_is_error (VALUE self)
+{
+        RbResult *res;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        return xmmsc_result_iserror (res->real) ? Qtrue : Qfalse;
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + notifier { |res| } + + + click to toggle source + +
+ + + +
+ +

Sets the block that's executed when res is handled. Used by +asyncronous results only.

+ + + + +
+
static VALUE
+c_notifier_set (VALUE self)
+{
+        VALUE callback;
+        RbResult *res = NULL;
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        callback = rb_block_proc ();
+
+        Data_Get_Struct (res->xmms, RbXmmsClient, xmms);
+        rb_ary_push (xmms->result_callbacks, callback);
+
+        xmmsc_result_notifier_set (res->real, on_signal, (void *) callback);
+
+        return Qnil;
+}
+
+ +
+ + + + +
+ + +
+ +
+ value() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_value_get (VALUE self)
+{
+        RbResult *res = NULL;
+        xmmsv_t *val;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        return extract_value (self, val);
+}
+
+ +
+ + + + +
+ + +
+ + +
+ + wait → self + + + click to toggle source + +
+ + + +
+ +

Waits for res to be handled.

+ + + + +
+
static VALUE
+c_wait (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_wait (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Result/ResultError.html b/src/clients/lib/ruby/html/Xmms/Result/ResultError.html new file mode 100644 index 000000000..4b6638b9c --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Result/ResultError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Result::ResultError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result::ResultError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Result/ValueError.html b/src/clients/lib/ruby/html/Xmms/Result/ValueError.html new file mode 100644 index 000000000..a4813efa8 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Result/ValueError.html @@ -0,0 +1,102 @@ + + + + + + +class Xmms::Result::ValueError - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Result::ValueError +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/SignalResult.html b/src/clients/lib/ruby/html/Xmms/SignalResult.html new file mode 100644 index 000000000..5ba50d2fd --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/SignalResult.html @@ -0,0 +1,160 @@ + + + + + + +class Xmms::SignalResult - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::SignalResult +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+

Public Instance Methods

+
+ + +
+ +
+ disconnect() + + click to toggle source + +
+ + +
+ + + + + + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms.html b/src/clients/lib/ruby/html/Xmms/Xmms.html new file mode 100644 index 000000000..45f479a67 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms.html @@ -0,0 +1,95 @@ + + + + + + +module Xmms::Xmms - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms::Xmms +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms/Xmms.html b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms.html new file mode 100644 index 000000000..0e9fef086 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms.html @@ -0,0 +1,95 @@ + + + + + + +module Xmms::Xmms::Xmms - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms::Xmms::Xmms +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection.html b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection.html new file mode 100644 index 000000000..cd8175ca5 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection.html @@ -0,0 +1,95 @@ + + + + + + +module Xmms::Xmms::Xmms::Collection - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms::Xmms::Xmms::Collection +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection/Sync.html b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection/Sync.html new file mode 100644 index 000000000..293249298 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Collection/Sync.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Xmms::Xmms::Collection::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Xmms::Xmms::Collection::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(coll) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 48
+def initialize(coll)
+        @real = coll
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 52
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist.html b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist.html new file mode 100644 index 000000000..1bdfa8855 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist.html @@ -0,0 +1,95 @@ + + + + + + +module Xmms::Xmms::Xmms::Playlist - RDoc Documentation + + + + + + + + + + + + + + +
+

+ module Xmms::Xmms::Xmms::Playlist +

+ +
+ +
+ + + + +
+ + + + + + + + + +
+
+ + + + diff --git a/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist/Sync.html b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist/Sync.html new file mode 100644 index 000000000..9f3ae8bc4 --- /dev/null +++ b/src/clients/lib/ruby/html/Xmms/Xmms/Xmms/Playlist/Sync.html @@ -0,0 +1,224 @@ + + + + + + +class Xmms::Xmms::Xmms::Playlist::Sync - RDoc Documentation + + + + + + + + + + + + + + +
+

+ class Xmms::Xmms::Xmms::Playlist::Sync +

+ +
+ +
+ + + + +
+ + + + + + + +
+
+

Attributes

+
+ + +
+
+ real[R] +
+ +
+ + + +
+
+ +
+ + + +
+
+

Public Class Methods

+
+ + +
+ +
+ new(plist) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 67
+def initialize(plist)
+        @real = plist
+end
+
+ +
+ + + + +
+ + +
+ +
+
+

Public Instance Methods

+
+ + +
+ +
+ method_missing(id, *args) + + click to toggle source + +
+ + +
+ + + + + + +
+
# File sync.rb, line 71
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+ +
+ + + + +
+ + +
+ +
+
+ + + + diff --git a/src/clients/lib/ruby/html/_index.html b/src/clients/lib/ruby/html/_index.html new file mode 100644 index 000000000..1ca216873 --- /dev/null +++ b/src/clients/lib/ruby/html/_index.html @@ -0,0 +1,337 @@ + + + + + + Documentation by YARD 0.8.7.6 + + + + + + + + + + + + + + + + + + + + + +

Documentation by YARD 0.8.7.6

+
+

Alphabetic Index

+ +
+

Namespace Listing A-Z

+ + + + + + + + +
+ + +
    +
  • A
  • +
      + +
    • + Async + + (Xmms::Client) + +
    • + +
    • + Async + + (Xmms::Collection) + +
    • + +
    • + Async + + (Xmms::Playlist) + +
    • + +
    • + Attributes + + (Xmms::Collection) + +
    • + +
    +
+ + + + + + + + + + + +
    +
  • O
  • +
      + +
    • + Operands + + (Xmms::Collection) + +
    • + +
    +
+ + + + + + + + +
+ + +
    +
  • S
  • +
      + +
    • + SignalResult + + (Xmms) + +
    • + +
    • + Sync + + (Xmms::Client) + +
    • + +
    • + Sync + + (Xmms::Collection) + +
    • + +
    • + Sync + + (Xmms::Playlist) + +
    • + +
    +
+ + +
    +
  • V
  • + +
+ + +
    +
  • X
  • +
      + +
    • + Xmms + +
    • + +
    +
+ +
+ +
+ +
+ + + + + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/apple-touch-icon.png b/src/clients/lib/ruby/html/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50f98b0ffa6eb390c9c022c5affbcecf0db2c7d7 GIT binary patch literal 86447 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 z z&&63WIwAY!KS3B58YROoI8BXmSw;j&q zKr|>|&zwdL+}3|aFt4tqXnIr15fai%%e`6z`tgJ;@3!<%+75Ag#1(}0-W@z=FmKH| z&yY4aVVk#>!C3nJ_!lI<$Zy;M_^rowQW{HFSg?t@3i=Xz*}%Ds@*AB=7zDnI7Ck$V zE;LU@sK!nHH!Ivn2eKDh;~0>eJ9K_BvJ!vc`gLBhgopiG`m#W#Gw751tIg%y!X=Ps zKbebCm>RH47Q8`yS}tjNG$cucX6uCE56NA32E_kcEd{Ob-C=?UkI^Cj0-VBm5023l z1#5(Oisy*{d|N`cE`{|4pCxo=bipFNNCw`@lSBXbOdJ)~1u_LqBYN}=1P4vHEmT1dr&eRP zYQT_1=xG9TuRY9R35-L+)kO(d$Jv5?I?NykxK!t~>SaKuHcd z4MrokdrFW0fZ&1M2-{{nxkg!WEoj{Gr&EYtSQ|s4fZTQ*j=_6{TA%Lg7dgHx)Gs}F zg`v$V>jdAvtL?NGMOXkDu!m-4_7{5p#hs(NU_urZ@l`fg93rx7;)8)Xjgf@ zt?F}O6&K2IBr%lD2nqEboht5zXp_DmIP|4L(Y1lz0k0wO5{HIW~l6aKv5?CS7{ zgVcr1cj~wUmE}3exxBp5WKN)hKd^)shp9Qn*((I=6kdBRkpc-v;f(Zez+Xtg{boYC zA1FA9HLow>^J4OJ9#G!mzwEBD#y_NR4itPyp>4U~^a;&!?d0-XhURS__Roz4SRT9c zn8JCjghPd(3NwQJ!a9FO^11xVj4TAqKCd99AD>QQCy^aYu5m;Q!HiH4)phoFy;BLp z3G*mWMG+^A$Y>gK@b%mBJ5D@oyv0%eH*WT%Z)G!TQ0ApDdtZ1qgxj4Ehr9^yPY`=) z*$avr6!q7Xp$;llG%vqf2_lTXx%kftg48%v{i7bZfp_s2uXFOKr*dY6Ky!@3`ct}{ z&_Fupv#5w({KP(3jC$Q&-RQqmvf_Yx_-AEm_`iF3?i-Ee0&bOop&{6z;bo`I&e3V< z8ZG8zc>45iiZR&U=}*`P6i~y%9xsb9N(X56n4C~Rhx1z53j94*Ztae#?Mj6~SC`$m z;h^v|CAKqx^g<8ZJ_Xz$!rVtX%?l0tE*EBLx|$@Vw7WO*)9)`IK@@4wsa0cp*M_s& z5X4NlD$89jDaHhI#!P^r&mI*Nq_4WkKS0583ZN)1eY3FTP58lX&NHkf5(0py{I5{} z^xd^3&9mp=%86;rx#$VuXixX=4xEEue3Iox{_1BjcT7|F3y~E_w zpiUePUuc|(o2%ORu)QZs*zAkB`X{7XvDJ?vEOYgu-{?3VFn9(q&ILZ0N$y*8V?VfZM z)hZ)O>;NWSW(o*$x!P?8lyBtlqnCnYQ7t=XW6bwu`L>zX!kqA7*SFu@@ zedvS;lRrDKA?JBcNGJnqtk`mO-7bOs_wNGHG6Wtsy^<;?gFQJ~fniAmI(M8Ej$9jN zKZ%b`m81jW*K$SYf*^PP@r;1pddPTc)dU#>Kj4{<<~+;2Hnn6eH0&LSUVP?ZRMW?( z+vDrlQ6nD6gkU7x-~WB`lS#oD5s^SAev1q+9&Cp42$1_sHA`54bU%LH^g2Sl`5c(P z3&MI;5D%6Uv^_F%gcdRoe=iUKMyN6RfvIU@{*oH+|HK9?dn)ujb$Qmn*B%v=yr1H~ z%19h+V)CZU^#$-QSB&^+Hx1R(z|pFYvLy@DMPL_w3yUQ=(9DP&d-OMjm=%A^Re8pa zz5I-&TkbuMT7_3e%G<+Em!ifBX-&{aGz=b`6xZ_mZ)HTwtX>-R5Y;c6hl=-aG)8Qh zm#HR-NP!ToUpav(-lfn>TzBH&k8r&&Jt}aUS@;Mkv*915S2~eia+F$1n@4?9$4=}P z;-ldUJv-~ESf@aw5L|1@-t#oSoJ8J;{P_DMH8LXc-yRxhVS=%}km96BpU%l|V$HMK zp6?uHAfBtVtL|q%P9~_QzBB-tmF_>*(S}&~7saHxR{zzNcwtr8v>kNVi;^`^!^Oug zfvATxJ(~F-s>g>&hf0(v0A{E+$vE}^FL~M$xB6kMVn2zs8wrEdWy>NTGVVxYqy+reuR_ok@9wx5Oac_^ z0yQ&gI|ao9pP4ME^dv}SLimW=OVjpDpObBf(V3i;GqPm77yZ%~2AeeG)pYzpz=~t= z;gXR`fzW&VXwiwj8G~RVt=s+W0W|oTRi2#y(C~=Ze&^Id%ojdDGfw0Sta8xULSXVJ zV0M%feP<5W@YPy9r^K8d3YU`$MRHAz4DQ2uho6<-W~SMFda7`Z#Q}7J_x1)nwt;VB!c}TWvKJ$= zxb0)^>QJ|ylw$IyC1hS~0aEwdQElV8Zl{X)W1>M#XQUtLilW1p#};UoOI`OdHK`T1g=x?JB0xna}T zHlu!qKMJ->dt};-XPd*rKE#?hO#_9jQuouqhvr}`lELJ5FD&B_G^v@a( z!i)*_7j=8IAQ!JiNCuG#pVp38{A?%LD`MM{x?HkEep7SUr$jhhejBBPeju?3!!lZQ zmf()NO)e#E&zTgi<+I|)uOGPjj==^mlY(>Q-_z<-Ess3C#gZkEGp=?2>5u}BH#g-& zs8?t7pMAY9FZFL5I&ZHBKf)cbuB7d=6Eo<7I$z4VWiwY)4?BxS`KuU^u&q}xiG>!= z6VVQ7SXP%pNK8bh5TS$2$v)$I$sZ-&$XDQvySsBBScZ|5*yBEkfm}9^6Zkh^R1LPg(P9Ps?-s{v zHW1@Vs2l$EqvrQ_NOM)MU?!$u(N))AuV68p|2h3oS?eK4`lV2*aIRMknaWB(UJg-o zh;{}syoMlZJSfWHoy`Stx&gjcR{_fr6Xe-Sw0FM@;~F$+aKw)6%AilJr`f20@y8({ zI=J9v(IV)10OO!&S^Ya6AYAWFtMXd`NFMx&XC#3!d(o3nL`Xh+#PcYckwq$!Nh&L~ z`lGE#??Wgrq^Z;?!#v~YA51J3sJ5bbMh%Y`gmp7*=hHh+m-4!!ZW!C}<|KdUFi+jrZC?-P1FL2lo>8$=lobLitz1 zh9I)f{(rEolYLt%0%O8wmG5T@2@`7LK9Pw)UDMk)5BOsOJ;*yjgFd!Hmp9g1w`b23 zkyPu8N{#hM`5IZh1fr&q1q$@v1tpyHg{NUa`VIZr1T){JZluaY}FpNhQ(cx zY{;R64tjreN>-EsB~;Q_*12RH!fj!^D3QDEcp|T!5BV_5?L`PJpjg||D!F3|>YSG5j$`#EIggLyt$mXvb?uDbF?n^`^PsBlT`Hm>W>=?Kl)-w?bF@5mvo-q zVQrLw$s}4!8?-EE`Q+RzpZj*}a&*+e4UXlpF>)jF2UJl$QR3)s5AuZ$8@(;*Vr9o~ z5>bN>b0i{JS1Y($p0uk?_?|>bUFJ@7U{8*y`W~2$ENFaR9Ve@HeM`QA_v7F@&PN7B zJ=csN&LW6M=7QxxF39&Zi0FqOW%Hq%K%uz|YTfbgxJ6kgZkFs3Z zg(6e`z*|OQp@AH#;ocdcQA7ugH7<5mx4lv#`V^_jNe2agKQ}6MP0hG~P2Aww-Fglk z4Yi7NSjr=7u|L5J3q#hxwzSH7x3EZk*P<#?M9IyM2KTC+ciEyh(%Bk;Y&6xB`3JczpD`v#&0W4q8Htg4-U5rQkYn^#_?76l&JQ z)dmo!Yn%rq4cT*AiUh8i&rGM?$+IPNaSo7_>*Hc@{6oc#Y*|d^jOae1HFO zkC_zbQ>WXYX^J{xT!8G#_5R=jD8P_O*K`dIe*0@=(<08=waEN@J|zbpAaNLBL!=F1 zk7~;^_G`p;A7L`wSK%Chp8j3s+rD6`4hUx zUHlD+Xx3Pwoe_QT{NRt4d%#XL0Huasb~{JrE2*U`26=$_pL8-PCAj#MUcI8tV8RU> z2y;p#j$*@o<7@vufGnlFU|V=RMf`i6LKsUG1$`C}ra;Vc5`Q{@-JdF6sM3nHIzq{o zPn(G{+?}aqmp^(?;R9Dc13K>2Q5YvK)1s25{e+ z2}M!x1(D=tyt7BE)xPG@D6aTqmmB0kBaT7MJ~c%yfeB{n3eE~ddoTs}%9HQFE-z(W z@TG<_kosQlpu?FC-moDw0-ij>r}wngZo11 zJ86y`Qux^>h5hSAwSZ>4Hg8jL_HI@S4aSUs-6{9EpKPCIw%W12VL|!!XQ$CAZ?s7E z*B#Cs;O%q+yhF<4Bo=I9PFzfEfrGTic1F^_GM=ld^jB)Au9y1--YQOEJYB#zlC{X@ zzj9NCx*Dk_wqcd;zLmxd?duZ94sO^Q#8B&TAl8aZ!_Ek=4@l7=1=TjOn~RWE z_2~JMfz@%@3d7z)guX!k^r-y6g-^YiS8(^250mW7{pQOB>xYXrA8c$W&F(Ytc!?%1 zC;#h(s7pVAzkP4;ZC{Ra8)Ov?3=9t&`6-R}sdl0zN}ViqkxPajDN-jwq`DObJ+xA%X?L#1N??++c(*+42YmZelOha+(wu z1|g5wc=kbsBK2*D>R)vY^&9f+6*CQ&3!ghfrS}g*eG9RSrM-@e(-##CZ8tvlS1dWw zE8pl7zM01q7D%KiiZgxvN?UDzq!Z>t<{Y_RovPBW!`2hjMH48RtUQ=@ zw_uu}SUcuI@sS5tT1sY@%u%}4w}nag8~K4r&kGz@zN6<-EnnL;la06)bL8pW2mJiR z_)DXoYV0pX1Sp)C(M9ql9`Hs*J{r0I67E4*=LWoEh7kB)c_;F~2{Gq+AIQ?%v4u5? z7eUxI#^N=OL{m+oR56>|JB^8>pRcqga`KZS*difrBR5p-aEc43NJbVl8c(lfl%~R+ zoGAwD&PWR91dxG-9WZR11X+2@NzYuPzo17uw|oE7MK$QleOwEyD;@sShw#XpfU?R~ zen*F`ndS=bejjEPjjM~sNeO;PPXeC7ZPWEX0_y(r3jRAiP_fbKDmtesU#09%oVy>i zoKu@jU_-+aGj`iQg3WV!eIHQwqvThOc`A2N=(--Ya?8~G;L;_YB7wvX*)G>p8H^Zk$QDCHy{sKtm1UcIi zBc^^g;Kq}6Z9G6IHCTCeUNA4x3VW0Fob7gCL4pBxqHf(H`zz(^Fg(!;Hm0~ohhVDAb%_nT0@B?~;{O^&xgCh?uF zk|G+yB~op2ALGe>R%)2-GOv5L#MtQ2H=5x7lOHetcFfcA>uJ@R)6sha=x7P)DxXOb zZbaHCq%OQc{-pq@#*X^=sQ~DQAK3I&8HB)N3JVcFJhQW!zj>ln;_yn-;u7zp$gUSWYUDsYC+7BAQ86H717jo5bo{;}R3MDH6ikj0|ni(G70b$9neDYBQld z;M;7>sFqc7&hsKAx7AExOvfKJK!}im$1BzA{h$v%FZtife{HCjSd*k&(e3OCKVZ~$ z^UZP^7c*P`kXG<7uOX^9ZvPMG@3n&R@BgAjT&ORL;C$n%oQofe)W$8TFjiVfEwJq_ z7D!c%-d`L=r1h^v9xUw~qv>eY4;^meaA&&qBt&`|sk5nm#%!|_8VCw}_1PIiKk(_7 zpKT#NA}lSzzbcpV%H%j|Sh&rB@I?MO!_oGea+4WW93_P&9k|E9V9)AM9AFWOr2Dy4 z%9dcI;Pd8hLWi6}M3Csed8y;SC7&E!rGZ&immEUK?f>{D7Yo8^sO?hQ4cPa zi8!nE$n@P@zA^ZV5eg>Ad=g&D`LfnZmm4~w{}uIYLm}`Nc8$J+^(AKA+xzV>s&fTm z^+L5oRxGT4rL<~on2HMj`Z%0>4#&Wljj?rO&)2Yzw%^)N%-e@)&X*Fw%`f#jwcINo z#!;-J5@5i`HTMnwPli2cLvX6B1;N1-SP5d{lFy3+AzVz9KJ-tJCF>9RyL(;t^)>O$ zVe{0*BV5FK(c?<-H3c4EClze41s2}7$qgYipFKFRDZv^9XLEt)l=jDm_g9TBeiOB> z;6(#Xn^gMC+i#n%hksk#bf$Ajmd+9rgO)`|japmqzHfv-U6T_efp<4ZAX&$K(CpzX zuZHD?4Sffuv)8MxS!6yxF#R2=cru{GU>qc*7I~ksh(032;rX_1RM-sZMNQ#pF+A8d zOrChV>kGP1IEH+q_qt4W)&P9@7&d$%;uR23thqTy5Q-;q<(kKV=+qNdC5Fg_>3n?- zRcH=R>&fA7xV=-6J3FX~dWH3VK_#6rI%=-6_v&0ukO)5FxER|^h$HLxqn`PN29>+Q z_|rSKUU{>5u2wGUFg@X1%+_TJeod};W^6)>EZmiqI3D_8HZ!1p4_*dnJ~s9vA9p%e zyVpeC|F$r6^DFA}bE-tL#bm)+F@jnnO&~fNnBIWsKk=!|Sm>lgn_gL__PreNN!m>z zp5A3m2N->!^;3E%_{F^HCNA8+1SId!@|zD?V4K^ouP%Kt=l(7tx$R6H7Rs{rm(NfB z6g&`)B=36zZIHEO)jXAPw_k8Miujh)ns7LMp^glqYv1EW1aNTNsH#VVXg64gd#}j> zZm+4~S%HaZX4}zk^0DGRD`*Cpo2b1)PHxCFKV=n#FLW+OUJwNgN(y~bmmE}>av|Z< z#x3+(o(s%pw*P~;(17*dp(VVtF|Xe29QSL`!x;sYH&ZZmFG&8(Wd+69pNkH~@3g6W zdbBj%5Y@9pQAPQu{fQbWdIg`eO{>6ZKuw{ReY1L5DE#-p4_EHO$Wbei5&=L$IxVeH z#^8PPX4Qv{{*?-fD=u~a?+giIqa39_$(G(d2}u|JSgHnIxOkw^vV_F@p32UY zc(ybJ6OEyJVT~Nac36HLdlmbb4*((>RK2-guICwfpMbFXwo@VYq{#W2KExX?i$sGz zHsP7}J15H`p1i6J;YMT{yM5nw(0vJ28k>Up{!dZ)f#CSgliF|InE@_$vSh5|ke+}= zkJ}(tC9sW|YmGh%aY_ zIceb0r(qCtKNHGl^AZ`G`TSE!0Hu8<=Ty?qsQf!NF9Flkp?<|?E5eJV3rg!2alb_8 z?}vFWgNy{v5Owkz$!^C3>AJlSluq!(|s0G;_M196_JjCg?G0&g2+C2o+QIaBiN zn6A+}!mOFo!k%6wQ_xf_Ch&uSwyd-%e#L06o~G>-wn&9yF)$R|zZ=<%_aB>MOfh+U znZ#pXT;kTNp!EU;1m(QzI?exBD1?3fofUbphXo3I#Y-u&a8pVG4>!ko5L3$<-uuXO z&0OG+z=W$VuJ;cGXa8Z;#`?J#Au&-#$_&R+eo`yXf1&KvS-kb&aJ>5bjiP5nlXXPa z)QorLNpEX&fwQhGRO4fG&=u3ZVFyWb9we*Hi>S8qK^g~y9Cu%Zv7qrQ=tqC*Dq>$*2l(r@Mhxc43O8*jB<7fuQ5>#*qe46JdhO!bg!$htznPL& z=FuE>@F;zNECE?_5)Ds%z&t~RJMrCqIVwe^F#GR zxtr(JvxP|0x8$j?w$YdF?tzOCU@ffhcyBC)8$>vVAha43DsmuBRZt%RGs~rO3R@S1 zBb7&+qHN?CwJi0e)y$xO*L3EsycilK{>u@i;hjNoo_m_>*|DCUI^pIleVC~mP8*q0 zI})Z2XD=5?Cpb|)TeGQx-S?#!j>D?dDH3TL$n)iDZm_#chsF5)b@NS;-30#d0 zV(7K2mOZ(dfxWf5oBGeo-EzSfTV>-4OAYlHT6xbdH)x(FRPAX7kw2DZ4bIuP^O}_K zj8rOy34|x9P2e4*Hs{F;UN8+OwwK&%EZ$@?0@zh@o9qra)l5gSn`{{P{ZFk(+1YImWv>}kH4aS0HgVzJ)}Wv z0SP~``1ec1<+%Lo7HGr)%!0r38K!BymaU&l@tSdWJ-XcPapSwJ$&`Tr#+VKgS+9)G zA^CVe&R{UcqCr^&tN3>(skH91vY3u!B_nUt&x3ek&*hWe`7-Brnc0}ZriIs);k~bq z#UaJE>Q&{#S|m#kxYs==^N01WGt__f7hUUcku<)%7H6$?meip2*ZPF9JI4kj=;5te zyCruLqA=va-si2)n2!GJ>wSF4^s09dum`!(vu?LX@lq0}(W!$~lDw_$ieBG*`yjvB zuR;(&5nZYKuZEZbG>sTHVH&+cN-!*b2;`yd+Vvcr)h~BBGaQ~SG3nBjO8lH#7ez%h zIen-+50@*1Uf`>9DWT>Z{x(y~8mK?_m4@;>+9yqF=@a+73ufRF*&4h?%!nOm!np|8 z1N@55jo0to?^;)4|2f}$`K_k#)iVOh`;{x_AiG$P#|FY~_M~Wm=pjj#G71w6_f#AM z39jamEkPNl&j&@p<=JhLr0;`&u2}S>fkCW0a z4k5T_OYmGl=}F>LtU=2f(6vsDzWw&=K--1oUh~sBy15JHCFT42H|B>~1wD(iPUs|i zz!c!S8Z&!vIR@*IH^<62(r((mFuojKlK{W)i&HY>6?T&eq@$pE3ieNT^*B3}f6#f} z(x~4O&_4gYN@|lXtVM82Vo&iEgMIjOyG@}|$M44R#0aWw!j%4~Nvww@k+GCG^l@PC z{VEmJIboZ5tp6BY&?qCGuuw~Bu{9ukxKhbwjO%D9!uqo<81LA_!@v1hlfM7Jp7RsZ zi_9&l#rIn$u!N*uG$gFL!3Aim>3TrQnLw?Qh|j)%&S{7fBh)~FgXMItU$^3cf<+%# zydvt0%B%VOM6k!d2X;wvpk&b2&;I~-D>zh+BT0=#@sam~^#}-KM*T~|w&3b}Dp<+Z zh**(Y@=#Ia%R%7MdGDO%Fd@6DovAh0o9|47hVU{Jn&Tv;{plm)&R=puIuS6zI|P|y zE(Z}I*&jd8iHM(f^RO{LtVD*~W?hE{iR#;nj4T`A>~G|AoyM(!2pfp~Lt3Hxgo@4M z(59Vgjn@`GL=uBcMLT);>9hsP|0BIqp)M@H_4&C{X1v>QR`sZMDCgH|@jIYxRu&uJ z(oWqNxVwT)yC>OfPN-~dl-iRW?eAA`l5!8 z47Ys!%=)mS1Jmx>zl3r~WKzeU<4%y5$gHxEvZxUT-H{NIiP0hg6|KD}EQON^Lo9FL z9dztdC(GB>8U056{aJJ3t@87%Y%Kyhm{L4^ugQM2QNOm`Warz*HyWs9#A`tOg2lswmE42xBr_s;b@`0_p@RdqD@*y|`;E^&XAg7C~K7xyXf-P7VvxeBw?0l90> zgcc?&P82M9=2+_GD)El^5b>QuOdRU==Ov<^cH}lIiL@+xlL~iG@G&J1W}E z_Dm8W>wbT2-gc319{=evP;!3w60__!5+KNBAz9}?41sYGrg^*OOIa$Ij6$_{YO`L~l-Dj@+P`;AYI3E7%Ma@?Z0SSKE?I#5+ zU%Njf9-sY$rAT=qhMIQlOgqd;@oWYcV8PNKxEX+7H!Ho%`%M_Trn{CgCAQCF<70GS znzKI7E~c4qyzfuJDr@j)(e=+w)X3goCMRBZl&V5pOi8iL%l89r5wOpcVgF_$cbA2&mW6jfcFh%u(iA67<4CX z?!PDE@+S9;udQ)UvR>A$(S}6Gvk1QfM|dc{Va*o2u)4$U`vy^!3AK6I^TysQ&2eM| zZO=&)+tB}I0vBx<32>@v&>a@WZkHwFGh9cOC&awH8B4Z{(b11|gQS8)2UooJN7}K+ zb|_ zb9C6tY+4*jemGNW{$6_b2R}k`CLk`H5tRBOMBOOpj{Cc!5QN+;XRp_*H_SZsIS{S3yy{)yI1_XmsmA%huX2;iZn=>@c;H zhW`$~DXncB$a>!up^0xIR;4&k7Nc_#CS=m8biG1V(L|+9998nkz zbhy9N6*%}b|B?&Y6V&c9-27F@>5F6|@ZWU4-(SUBZafY9wO-kKW{;zwqSO}N&(Rs3 z6+fHw&>P7ErkZbE+a@H2bB5z@jFSnFHnV$_^VuK62;ELg6}L*iKiA@hz~_PwM`)h| zY8-e)=3c!B2sL=Vj$PuYkt0^6t9LHF1Sce=dI4rD0#(R>tp>#QX#-MuLMQ+cOs%2^#}3v<*86pPuDGdW#1T$tut% z{2TxZ9ykY;NUERydSt0U*waK&-*&I3`=Azs5}dmv9220x)K0~t#~!3-Oc&!EyDoCY z+?c#v`cz|@NplF8_}(d-as1yW$7d^nAJ{R{9HI@j4k{KFtIZIyuq^NKxOg2Ou>=8S zJh<}J3Q?&vjmvd!y_DOS{&asRG5GrF!(27yFMu(5da$6J@+r2RCMnhWr^2Y{Li` z_iSpAfZa=!P28mbKNYo~D$v<*FUbM0@=-z!To)Vle!1E@4o~$SI_x4!{H|_!2hlkvKWFX#$<(uL7lVZc)j^=bsaksHFoS64( zcbV-QIuam@_U;ykU*%sj*!r+Mw_>Eus+fcu;u9N86AjpKLYDD1JqS~^To^v$#i#B9 zyr-?Vu_H~ZR_0J=kIdVey6uU@PG*ZuzXoQ_b>xF?v{#klA49cDqVc}IYLt#i^>&0T zfoNt8m&j5z)F{Nd;Al4?`HEog?swelV%Wf-LQG+tj5vCpMabV zzj>Y>(Dw}ZlKTJwnll!pEJG{uQ1~>#ijG1pe=YJMi$%jD<2{4bZmnQyTE1M)JK=0k zG2x2?FQ-#=-mg;{+FFEuk=-w!(%2jH>ul%7$R2NoXgbD{3!6TLzA0O)(}2y--3>78 zbfQ;&q+nBX(9S>j$#9W*8guK@*%*itlR6v7JNpGAX1{={K4oFwwTam`86e^aeFJ&u z8eSCY$tGvKEG7LK*G3VAM6k0!1JbvRr)oA26^+%leoF-c?edFwPV)WPrNpstw@N5U zp@kz;dcGUj*r|UaHxG}|BA+vX+yX#+M(_?2HPP3j&8>=IthzJxCW&t?GsuAwz9BEH z$oY6!)A?}zv!J$1GJ|`69y>ucz_55~_WBMuwf6iKL$}RD1S{Pr>f_K|xq7q@+;jO< zlLg&BmPUyE7PNEV-`j%L7(LMhzdwx7A~;Ia=i4M5=_Lbt7OPpA6` zU|LyExDd+85Y^!%IJWl$6ZfMScKajf8w1cE>VythFRlE!R&jGM2Q%A(rLDn>?(T_# zpEKeyav|7h|M#8*^CBj3sfs|m^lF_!2TQ5hmH$7&=0-ba|JKH4H18w2*0IxDv3an9 zPBozuMP~2!5x#fZLaxk@d#2q|AWq4aAej>k{Xs$5qr3Ib&Hqb(hy0!E+Oat3Nrm|> z*s%hvr95iTtpZ27{I4E3##m>-JNTN&zff0CGZ0RAw@e|A$NXhRgKr3n63SYg`2A%c z{N?sgE)Kxoy-tz4V_6R&m)zd2-a4BqzuH)djIKPnPVlM-o90P@D9a|qr(1epqyC&l zdf(}K#rc?2T@_mZImC@?l(^+nQ3;m*Hz2;#&hXDKhnPUbH%}ZP&`HBjOdxousLB8_ zPn;JxzO5IzOvaCHW!Q%8OpWi7N0IA#J?L1xz^vn==aFn=gFrAx3A>BjT;4@!ltgJ> z=(Qp3pDUl@H5`v=bQ!(G-DMojk@%C&<{s&bdTuts8Go$X3oPA}axkKijtp*KST(ah z@~e{d^87dUXI3DmWH7S2fr~ULeelV!eYvq<%`@8Eo5Q*`tZKPY{3}nD$LyscGHHOf0|9d9-TRpr9N;H_Rz{GaD#4L;|YU@a-x+}7z}Hu$H$_AYr^qjrK4-&oZKh)s(Lm`M*cGI zde^w2M|KYW5O*Ux?IPL^rL<%GPaV`lbgVdF%mS2OX1`kfVYIX87b0{5v_r-+udHA9 z6OI4({knj1%$~8~C+fO%_Qr1bKMQ9eGrU!DoE!DBEpeaPR`{ogc;nY>(+zq&eHqOF zGHX<_v593^c0&q_f$&~I%h_2hu)jTIord|`*ZOf+FnW&Cns?U1KdvmoisJ#BI(J^w>>M{kzVyVia+5v%i%g09(4=+^a^TBDGz4v?6e#DZ_=GSB7M- zo)zS};jh8#5(g2`DRZsYe2Amqh;g?8Q!Ps=Zyd&#ltL*%rOM;3Y zMe6B`^nJO53pwTd%oHh6;x@(!I@jv*si!!ki68B7f;`iDnZY|3Y^wLKp0&HFUnQNI zgR5X~54_z5KE_w?vtY1q-0hCN?fU9AoRE^KQzTXvn`+46w#zMutXMW_9=4#$|0O&VJX|UNn}ag_MSwi)aYhfP6Lw%(_b+EgzSgT1 zlok&SkKkLfnIsH_m+Z&5IA|R?-V?t#@UXIwh~_c?7$1 zTw52R*za1Z3MTSIRg+_cWx*EtBY-xs)w4Pc;YYVnuTY6>t?p%6HU^TT(gG`WZP7WO zIM98b8GNY8G6Q>eMAxJ^&2$Tuz*W`EzwdMyBN{S57Y)P1cE#o2&}ne75v4#ixmgfD zZl5^hh>`=}rC8XjU9plE94y)!)XcM@T_HJm#9Zv&iodw>2sH!F`Q2x;SNQQUwTjpV ze9YAS>kq3{OkZo`K2D1you`Q7YwTH<|7mlu5P9!##5b5<>)^3`{lijgOZ>bBK?BpZ zS(P-T(BvL`?Ss2E3$^h5^IhDN*8623WSz3mDQ50^Du4A0+Z|E8?MZBDtiqc_Kl7&C zssRO_I3S6ZOVDSU@IjCs2jX&$J1jt(1XA) z@x)ZbgabK+!Gi>!FB#dZdAIDPm3Oijszt5*3s^h`y#1Pl@S$QujvMq)xO&aE5_$DI(3s(tKG>6X z%jHsG|B?j{)-!P4F(V8dpF1qbbd$mHlW}>plx?mvKqhvnbCPGq1U?TWt>(%Zdbey9zWvd6Q)Z;DWS-+WqT-gle#Xh)E|Wc!)6!~^}U zjYkuMl%kG-&vguNYchcX4$@3dkUg!2wc-E!~Qwd9=YCm`C^#rHHo%Aozh!lYp$gti$?BLGe3n7#zL|q(} zPw292k=XRA9 z)7`q8S5q{L?3GS)o;_f4Ndb$JO1_3aKj7aXIZ+EvdYP6M@8WH%_y7DlPj~Q57||9?(ZJ9+#EO zZINvT!hg;QSwx$X)S|Wz)ANH#p4?1!TKv7FJ(aZ2%D9_v6!u+Dc<*5TJ@Z0OX$q-0 zwO2~~`(w#A>2q3ma>Hk9_UGRCqOrt2Y?3At0U3;vA#NM(1WZ=@5H&DcUvL#ATvD~pnOeh;O_EVF?hoEzQm!*|8aB` zZcYAg_gT;lU!+4?M7pFlLPFZ2TS`PgT3{Oug0z%$t4N6;(k&$^AvHokx)}_%cfa>f zc&_X7+;Psi&*7UQGO|bh%Cp<p6;hSbGdI0jBnO_u0jhywUfMIo?hiyLlc7wh0mAa%IcfZy1M{y&&4Hc2+yDpr)=} zyVkdjw9fFMyW;9)q{i#al^+njS5IXzpMOGx)aRH$$opttKeP*piwawTs(?-nyXV{S z{pSTo!TdV08tU)rhVh(NH7_mnh&zV9%n0McNpL62674&{iy>B=`p+#Sv340!Q9idO zr9`yk#UZ0ODDtBph!=kAzqjHbwfV>vgN~XA$W<>?h^I(cS=OO5J7T)3@2?Gpb=vwW zbKz)X*G}(dr+hr{P}JpJ*|$(@Qfb$!8BwzdEh&3^SD*T^L<}=Gv5a`rYkG&FesN>~ zr-lgy?o)%Ru7{w(k$>eVr94>8F%>$LN1}i}dk@>xJ8y(7!7QAZ;y|7s&#oTh!uJ$ND!Yliv*Y z@NC*Aw;T77FFUs~B~eXQL_vlLeba5m6pc@m-$vdT>|>Vl z_T(|Y6AK#M+yLB@5w zGn(fdJ3>4q*^u!bL$XqP%%2i|h#MNiGk(TB$nYCy#JU1Xoo{Y*PP<8PH*Dg~#4pl8 z@ZkT7RkZ29ufwR~fz>DoS`tEd6)c8KH;!P9Q0^hNj0X(kqEW&fFFvw>9tdU%|5EkH z3&jgt`YoE&;>Ht4N$|NeYiO8t_n`9Z4^=ZlgGEyFGsg=^O`W^P?0TQ@7`C& zg`ic$Z$?+hxrurPq71?=Q5_f8?nEBX7|}(7f4e}sv1BoUbA(2b=9b6z0xDAG32%=_ z*^!adM6}lu29tlzy&df#cn*1tAy<@_ZS~(vIo0Oe;G_}gwn)}e*fSECwY1wFs!vUe2e&g;tcB>=Cv@+_4bKK206-*}f zLW;6?ywbDajUm(fhLa7k_7d@&b%(Fc&P9H5Z=x&4t^hVzadwmVR6Nr z9}KZ#3n3KLh|3qu(KHHkI2DZZ)Jilwms<*J!`b?^RzV^k$U=+0=K1JqZlDbrnyKvB z?`|%1v)^nN!I-QJY_ia1l_y5vYfd0BpZT;W<0W`}s~+;xr0niF`bzwlc*(ShGbR1d zi?iS;Ue@a~k^*+)+f@Dyt6)6vl&xh=;W3J;kDJezqx@HmZi3~3Heo_4H@qhc)idDp zvkO#|ihMR?ryT`(`^2aM_--s;aDCsF3~Bx~Ax`DW^=0tjr1wm2^9o7B<|sUWYCE9~ zrk^kATGX7qauJ(nqndQ9p7s%L_`c{4^NV*1>0ivEtZ4Q{y{P`CoIMH1|N9wo4Dyyv{T-1s+o4hTp;`@wUyQi$E}3!Q%zWnDcF z_vkvg>Yhxv)ie+gg5q|5k8v15h=UlTA(E{xdt*Z*)ovGiqQ*2Ps+YUzaoKJrD=CH{ zELyOYfy>~Pv*qqIDx8%YaYZO=SqDN-=P9$W()>iFYX?8hMy{ z$LL6TyFR>g%J|<^A$|XCs$;$ns)wJ5m|I6OQLGc);7>m&Zb8=SmSE)7hBEzF4?pbw z&DTe{;oUEQ8ozcA?JIk%Kc0=E*}qU$Wq;WqxS`#j7aJ8CC)87Vt$&z(ogjg(&Ub(U zxJ>@8^~@lKl|`oi)9allg7&pDp&HooXZ- z6=RXPAB#steZ9V!PY#7SLuskwbKK>3=7!-0^4x9{9O<4YA?^R@b_W)!o)bliRJ@A^ ze0Su1ad*A4xG`K;=|njE6$@?ahR>Fsho?lk4Rwy0HQL$sn6YZ`@mTOXPcAbZ$ zhXR-HXCYRpmELF1xfZSsmUHYj^$;pwl|`ho#f8N$9Tqs##r4zQS0;Zio!z5rLBnUy zU!wBtvK*x#eE0zG*-V}Rq#4u0Y_pnQ-5513CsyMopT(Im7C@}tT2L^gw)+@2avA6{ z3;^Yqo8Y&(dk4K3SEFMsIw64gJ*Y>9lJ+jkb2cdkA8?8JUty!3)IBS11yPEa$Dp=V z`d%I^Co3=fFjkCyP3#A?&e64d;PMWRWykwJoT)xOv^p3X-H!K|K9O}Ynd|uS{fMi& zWiEmH0Uj30OU;ra?Qbcp*pa9^?>qIQlm$&U@0` za34#$PgbS2h60$FXM*dLLVqGXCHxj28;EHpyz@PC`(hD#x9#wo<)PfBQ_aE2LI188 za*OmDI4Zke^dvCvLZ7JBgS?X+5Ux`FP|61HWv1vil^kRBuzOh)d6`A@fk;UCqpl#s zC#>aeW=xp7;(fDW5+}z$GPn0otDEWPM{^8jeN1n{j|l@JtCY_oVB^r5pnJ7?*y?Y$ zonYa9#g&6GRGMGTy0TvZ5S8x&q$?=VU8L6X9Yg$E&hkK!*)hueHg{GJ{8WrR$tNM< zxj?~IEz8M&cMTNDGJ=oqntJ1Uvv!y#qiZ&$4*IV3VZI&9|H^Zte@G&U^B*=_u?#po z@f5!GL*;c75M^f@&jO@6WPY$_)}F9|MIfeF*;fMRYt$R`G=y{&;bT}PNgnNg?*BPZ zip1Aday&bM!4H-l0P=%2atK;u=PayVjArTj?(o5E)K%TzgyaKW$}>S*SZ(4C_~%$8 z?ce}7s4@AZiNvl)hP*{X&53Vz7fhD(_Tf8#3=o=U6!%pT*lxJnYxz^!P$4V}#e@C# z%cxRm?LW(-(rSm^f6mU~_|Vo_UqYm%=Y=}~Tj$~QmG|QNjU~4KRz77osGmtk_Ab1- zF~5f^@3|G9=?@8uaDm;_=cChnAC<*p=f(FgO&i|OWBobOUjK6(x)}^ADk&K=JooyE zLQZ6I&bS)sni|HiaR1G#6=s3@Va20U1Mv`R1;=MqT|hwYnR&+f-+ermV~SOu3oT=E z8g2HjkgZpLw^#`RUyOpkTID`lFl(R!FP~gwh9=e5WY~;}3BbJsVf0yzl52bQnFjFR zm!$ur!^A=ADa^CEWv0H!L5@AmuY-oO(2QJYUXv=hlKgC(%1w@GEo z{b_4JMSnm=*1>ZMIJC#*I_#lzyu^S_D)kR!=d_(9(7;`|k_b!Y$nGk%KoGTBpCoIk zOFAAXFIR$5TZ;70Br+88O9QM{jq7>VEZz zM?x|;+gH3Y)>0C!qX+Z_ofE9S<7Z|=_Ld8qgFY1Rcx0=YVV=B^9bvjG;qnB?A)?0@W#NU15XXJShR2QW zl&sf#{fJBg3~XM_=xVc%zcd`1Yh=o{_VyS=Kb$8Ejws$;tj@(WUYOYuhM{ljU~4sQ zL(3m_P%gBK*X=xEh06g{w9AB5K0QR21yrHJZiH#1eho`^oW2ibKk3n0J01<8`f|qh zx&tq|do}i9Z1LOTz`0!Sd(3k{LFUul|J=&esDIG%kulSBMN$3jNw~wVjCwyL4*SaW zW0+FsZQ$U9q7kt0AbyJneef0JdAA|vv1G-26)yWMe0|UT2T`gr4YsGvD~5lL4{Ml# z#9HgoQC4x^Au4gFvO+P7jW@e=hD#%4hq~DBvElUe>G)E=TkJz+ed# zqCT-55B$!(em;dc&O{YiK?$lic+)~CB5Wh0Se^#=%_N_Zz7G}}@oRM`*l6yJJY z*#i3Ka3|}ix^kS>nY3o&{xi{^f@B+kcwts@#&PPH5N9)S-|(WjeJb6Z)j~T$)a%Nt z3H#wuyX`WYqG_L1yj{n}*PC!QevPB>0|;$p2D1V{5K-Qa6TGJl0D(ZkQfi{Ck^dk_A`6=8nUM?ur93 z5U$P~TiQjkzu=)u{R%CQxarEqJ{u6@1X@XC+b74zRCt7bq?Vv}q48(NbW6o?|r zOw|4}0cl4-24DYq&jzZfkOXfd{NKmT6^sArU?K2AiEnnWuRD?3^EUl?VwP(@rw)6; zcL;%V{C|D(Q|?|0?XhqMP9hL>DKO(xp)m zr|)0n{fD=QDG7G@aZ|45U_N@u!%EkCt1N=CMDHcQpN7X0-5Xau;bsDWQEH26tch5& z!Gjfm7)QXitxsOO44fxPnoIa)PL10%;W#WW`?ALscc~k2^>lDYz@oG6t4A#{td11T zVzj%QUFGn4PX5-$pIW7KA<<`Fj!mkjZ9-@AyqV(O;LJK+{CJ6qQqr-zoNag6K<AP!Oz^%$EvgM9;*eJt?DSvR5a9`v?a4%d1_;$NPNXYU)Xf+Z86bu?C66fCt8IamYzO34(tna5p3ttNp`%t8-w~+L`6cYHDmMHRUWU5Cn;}R zA6#(Xzd6>bJ;;ac5D;Y4VDZfZrNxrOw`1!+kGdYvs4I=+bMbh+r2h@F`;lRPIY_qq z_Y_EZ9`pI}30qYrve1DJzzeZ;;5LQGCWbRZjJMleDC{3kiX6%rNo|P-;@#7>pcP$! ztuSx(KuCig#QS35-^7_H$HDYzbPv*U1W8Xu5?~Ucv9ZKG4-jNrnQUU zBXf#t*qZd29mmZhK5vTg^?!H!@Q?n(({z}GT*Cs>m?53)?~Vq%+V3R2%tgGmrrSqBnPp%vJ!Ez%d5i)sIT4#o(vnpr^*i1hpKg z4jXTKsF4f%Ix;AaZmil9ptTbsmjvnk@ef`b|Gt%-=&+WWm)?pf59iI6eqqYQlT67$p z@(uUG72owGgh&~$G4?Igt-KYxmU`yV#LaZwh{U+dWA>`m zx$=GXi6)2V49}zkjd^)o)k~oWmwmG&QRMT3?02l$4*J8xB57c}>J~ObO8zaVQTVWY z!Asr_B&L(}@J5!g5YW7ldy_6PD-lI?Jy+K)Ly%trO7m}WMI}A=s}y&!s@|bW*_{U; zv2<0e8f)DkQE-Vfmc;s#$!d9%Cfr8}85hJzn(YSF=mxdjM&bO9*`__=b0UP>U(k(t zNn*IdHo{Fzo-MI$eyMh`ha=O&1$34#=u;pC8=&+PDa9wccDu7IQYk<>3A=zq4^Ktal!|?>u4AU?5tw z21p0-6T-Ag2Xj9DYQ`e$N$ZZE0kzSNbSjcG$J-@YK=OL;+jvwVC5b7lK#qbPTff}P z&vm8Lm!P1)c1^R}%X<)_T;_oxJB@WD+eQ$zcnEV(DALNPc#%g6%ZnyYI-BDyWF_|3 zZ{3-`C@1f*(Ohn4=jA?X;u(eg^KLc=27ZH&`{1~)7JO|(=np$;Ud&fVLE`_w0kLO) z_#|umF|-?8Ei^wqe{`i4yG+E;v<C| z_h26Hpgk?lo@xKqTPOa@uL5xleq~6Plv15Mg?EatTYAjtSyN-Qa?`dATo#HAvgrap zPlYVelW2|7@elO(RzFPbNO3YFIdWK|dKckPob2tC&6+(z%sRrVko)SP>jvudhQHzV zFVc#i92LaZmysho!+XD1_}m^5Qm)rm%D?n?*hpoqd-$7n62|?9ggS)MuL5z`izo%d zhA;0YnU5r&lp2V@exB2y=GT32b8_*=5;x3kSeBWwey*LqbNzt&Ha1Q4YbvGi?s}TT# zXOC78P5X|pkN*J>D|^NQ)fWwGEb12!mdGKQqTkY`;IKH1u5x4M@(A0n?sF4cSH1fa zQ%!%3%|fE1iFQ9&E9r>K9aXy($>hW$uOFGe*PaG!b&#X!W_Byd(Yqo}BV|gt41)wn zwtTgj41wT)T?EY8G_@(pEzQsqW-;{YHT?p$UvapjVMdYC zWqQb=!|*H1b>!*V7l9WtBM8G7h3ppEa3i}uq}@SI(rUZbs=VZbhy@m#aF$7AGS;dG zk41ynAP@gH>O?k?2@vI8+jFWIGo*?=hjQn>$Z!Nd z|CQ`>Qj+GKCL8)hlx^4V#3E=Z>-#l>P1oSpUn5qVXc`K#*;523t9 ztm{wHu*nbC&eTxWb`$x#va`WMjSf?AE=#LaFr&6csZUS6Vj+jw$N{($}cCxZ$COaD^d=-C<}TQp5@bs{mC+JQ}W zqv|!fdAVo$qK#9)VbJt3m(=~c)io_u9eM_lZaduk$Hf|Q@RHZ6$KNN~wEslB3hmPP z92*%~bs+s8$pWwXvJLz2Z#G)u@tmmFX?-#IN{2J|x`Qegttinjx7PF1NgyEWj5TBK z`+d2%ecX*KgtjJD({q)I;=6vg7E9OT19te)4-lx8%kmA|1ewXfL3naAr!%*a=M}`& z!Ahf)tUn@#o4Hi|7IneLVb`<&+9(+cx4x$xoso+|bkC*k#moO4wMJ1aUwBRRop5C= z+FVLEAWuVnDL?xxn0D3c`Z~EPRmo0FZfKK@=D}azlP8!GUr5C)wXVNniGV<#`K+8w zvHY6V(k)@{gJ<7HSLX%D&spqft}mmZPi?`%$!YR2;u6c>7fQx*gK zw^4toI2r_H#S5I7-6F)YsEW#5y+Jx7fkk;rs^*jV0d+R_bEG=&NTd%9ouD%16?Z<+j_vLP}LUI zutsbBamGLMT(yF-MLTp!1+@b?zb&&xkGM#7zxTEMd$Yk>S{U7RihE0X^_-RNqeG_- zDaqT&!fmivJiNCHTuyV-9aFYu#2!~_k;>93lspBEPGf(DiaKi{$)u6D|F9yNdi-%OFKJf*?lxB17VVfP($A{@CbO*>}D4mPha!+XM!;~#ll69gd>gd zT;gZB-ojOwb=dlgtN9(Xi<@bh7RF}$(Fp;)+D$+lDd3Bw17&HQ!rpW?w7(XK$i^UL zkBmfjRT*efi~5v$-cWs|$jw0jFDhO+a)22FR>Ef+KJoQ!$#?G+{EH+q?Y=EruJ`N0 zNa~-xB;Zsz(}`dOqK3dRYykFrmVv$Yqtv2Kfn5hp+r0INtW(a*U|H2{zt^@gAkW(D z(Q}emzHNRV>eCIHR1IceCRMH&$QPHb{R5EQCLvtem0gHV=4eT>b1S^!)o0ZO9vM5 zS}HAx{!$wQYr{)p;w#q%RcOeb+L01`r-rJGPdkTO z{KLUsHh#tJ?1OI2=h>K-Ea;2M8H+C_>d!sz*sZmAeZ7benZ9_{+oCkpO(`nI zw7*8q4e9Y-p^H+KE+tIxM+3ID8lHRMi_hWKZ_}8hj}eB??)lJyHs zUO)i?gCp6e_RkaWTD_V2arEoW?;)?H`KqYC*Otc}$Sd)E&Q{2Zd|u8tWo|2Olcmx8^6(n(&_*z%KhCuX$&`B zL_unEICM!Uecv01_NjHDr7wtQ4reJ3poMAGI>XU1v58exF-i0K;&<7(`^4_D3+^}; zBMGrNoN+z(AGt!sz4EV)9lswg9`xT4yQYv3czN(@;Uqi5_Ns5E&`=L57)cH8V(twK_`*!Xt!EBnm-09tN2M zY3dMG*L4O863=)LhFCSvpDXUd`6~sVs<3>Luph3BOb_Kxo+h*T@nK9kL0iNVANul9 zi7+pU;Hx`n*j37fQ<}E9VwT8zwJEz0^jr7dA-2qG>W6xuH>J22!=P=6>AQ}I#K z*1=8hPLjK!^HpbD3S{;^DWpK)2ekv>(r*WZQMf>v(!M7LuF8>j5G6y^@I(#z%t0C@*09?v5`uvSlxhkEZ2- z96!D`%U1Hf`+BJn&I!C%kUbg;OG$`+a-G6Fow_iU34)L9WEE~WUSIRS5qi3f&9JA9 z(q3+-#7w5GjaeQn_fd>|RJVu_=zxC$rf*l&3?Ve%<*mhjg~GSrELGw6XI3U7bmX`1 zoecO)t0cF%PYuQOEMc>x6s+WzIl0htY&yG$pgkdXpDZPI7%u+)U$cion}%nvIbV?S{1>ef{cY1me&KF;ZQ{wD?@^DpAkS;O1EWj?JPm!qX{>wIjyZXf2E`Mb7F-d&8g3n2l(@q|q zBvL%#@#is(js;}C+;?wt*2o;H%WF3e!FQ$fhJcYmf1*S%UrVd9RLC>0c&Gq?hPn%& zwSKu{`c<}CF*i$SCNK`3Xqkex8Cd=pi9xJw4TCY<1IKleD< zF=AF)Z1SY><;>%}3lU396-{xIU+W>l54oosfX?-ZXcDIx*+(WDt>p_>>oW8?>iJ6N zmtB~Zw_sF8PTJPoF)p!d$NB!*fw#K8L@^}hI^|UVG=9sO0h~x!PfGm0)qXMfXgbbr zUKph)<6~5}kciI-#3|sjqI$ETvuqI{ZjmVW;a{jfI;bTL?VQY3JIu7A*E;^?+k75+ zPVw1*Zc#Eyv$AvlsCyjjzs?P(FD_Qkt?TmsHC+F8dDsA(5s=qBY95J6fyVCES`vXr zHD=#NMnq(yBv$}_YtblPiJF*-w=NN%XCX{#88Jskxv11n*bZ6!d z%V)3jf`fZ?BX#tua-H0jTO>Bwa#NNuZ%RXw*H!rvWvsTB+TDe;_PpCsKPI|#Mj}Zi zS?M15g1M7@1Rvv~2$C~LX2_fY;;D>b9e%zzeUm2VwBNAz!2woCAmRSA!7ss>@Pj_} znU#Qo6$)@3n()2LP-F|EtEmrM$e%jl>clj_nMdAJ7}n3f&PCX4U9sXt#pXMnHy5kF6wo4Kb961Th2F9pj7f zL$xHA7@u(7KO?k9=iNfI)JdS(l7OJ6v7v$R%F4Ig_RtcLQr)lQGcEu0qS}_oxMiGd z&RN~(*LTK}1ZQ8ZEy=aADz*=2U)ASe2?vg;R%g#F*R@(8)h(a6pWdm~Jt?TKANol9 z$8lQFrB1-PM`-Wz^Vo&hgSorJ_|Sh?XH>hBK3FCtN63D2Omk>TixR$FXPg77`6V(5 zpsxTZKVoTFb6v69>AZUvm3X?Z*iB@TCnFx5y#ygith!JqBNaj{)pJ+96u+(X;b$ZS zY%@+qu)TNCz|^u!MygSx>*hKKXc-c+XiI9aYTuZ&DMfgC)S(qY(RO-&D*c|fo~G3Jrs4DL)G{%z4{+;QEloMp2FRx@ zjGn_(^F3>MJ~?$U^UT_>sPCILyP59=Z|E53pY2|%cP7T}eofdFp?F3HZ;pElnoR`# z1@zw9P}>U{6R>XUJ+aBJ@qd2uy~*Vr20MU@mYQs)Nvf1aC+SJeuU}ZUB7H=v`2lEM zSI>K_46h@qaJ>`SWJ{kcMgUjW1G~c~$b?=%`Q9Axe}>fgfKAh3d!P^bXVKp=%3Ph8 zakf%UU>dz$WzzZ|w(Z7dOi&=#q0~vCM%Q&E!|)MJ?S zC!t1F&+aRYr`oDXQDwAgDY2v9>>-K@+@R2Uq{u97>a7hdkw&L-r6LM-UQXA9)+Pdb zc*aCQB&h`7ANd*I<|O<*v||A6t`|3hq=Zve%_!e53U$_w}~K< zZ~Y|8=LS?Va{M&U`$J#Rny{>vin?gg`6+~cj}OzyiSP(+cB|=J?67n}g}e$tPM{oP zd~n{YI5c0xeN7&E>cj18_qX}4={reviFjG53xfSs3HQXT{I@S14rWP{XUK$}5^+EL z7T0j{-jRoU`B2>Zrt&aq<@u$@_gza%#94pM{A2a5DSrrmV%k`#bL{s}xLBy`4)91!iaqd}-D(%Q%i3Kk~KMfh}YGH<;{AAhh0I3$+@?Tqqu5RLvFb2cd7Z63kyU)pE=X zTT$o!$uD0DLg7V3V>zm!+K;%|J8zS7)m*aiB>@J+yX&?H6?+prgvS=sl@6?Z!h zZcbgF&Zo%$&q&z-5t4%Ou=_Bs;$K}IBQsNi;kurVZm*mR)>GAQ9)`lR^7&mZ(-hC3 zVM?}%+C&WWY(tRug6G}Nhp90bns*WGEno&UOf9Jb&zL6>_^c<)<)PifSWo!$OLg6c z1Qk2av4Gl~XT*3dWu$tSocEEK}~#VZsfQ0Gsg@Efgp&zdS!iCjx5itl=KpU?w` z$(Fc>0Nbl1n=37~Dbt=*!OoRKVl~Xng&Hfs_kvD9Nid<+_O(tRVMGx)SAVP&NZr%* zx;vQ?7lSbrVMptdmdBS~2M*AXX!8@(AJKQJGJ{YWg6)>P9miMBp+{7oy;j)p)Xr^~ z>e3h3OUF@UFh@J0S9e@7m|3Bj;4xK5XGC*5j@xeS-9Of{H<|*Tp8>pZB;vX5O`6ep z328X|b^naa_SbJ+GszObb9n|(AbK;w)0Pr-XfFtA=wlx>nMu9l!Zx`kf$V3HyIyZG z-3Ma9G%L7w`~Bd@=fRJ<-FMhV(H8<@gEJd~=_K?SPd!5y94U+LgRK#ezqB8m5=t$7 z!Xv048{=Vps$OL_S5dwAl_2&_0Y0*6tpNqU~ zw;LY0k8YnrU6Dd}J|%?mgRd@?_|I-6G|)C5_uJJ%@U)o{om`|nH>oN!14hbgcREHz z1=YV=5uk+Z7{=vIW{}9rpaIk;#KvCkx8D!Q8?ykJMGs7>9>v81w9S)ARmCC?lhOh@ zjq2?FLS7&(E?C5JZJlyEqcgF`6Ic-nVl_HX_5?6zE*-3ViTrJXdJEHK*HmayTE}R} z)zSbBJu3j#gztNmGJ|$2>!w@Z#VUvfbnkfW-(3b;Wu9R|127IV=r;ehIY}XfvA+J^ z_eYuqZS}LXo!$ciV^NwlNlBzaRB9~N{)OK1wjucX@9l4c!UWh$^%h_at+zixwTY0M zu)YFjltX34)UdhDH`bC{rx4Qjds$_Rd_QrO8$Ou0yeOl81!t|0!=49ER~v{o4BpK@ zNLo%jp_N}VvoCPXF1!lY801vl>?rw#%-$KtE`>P?O9mn;8Sj*S*2RNjh8G;auA>CWfkw>~r+0jTdsp@y} zFB@0EP#L9MXpau*h`u-RP#Y|liqps*Zjo1z$izU;NvW8wwfX{ez zP4MhPF0=@8azUG$VmwQmcu zj9B}=M;`GbdFsQRPMUJ*_1Y^1U?G=2jb0$A7X6O+qHnV0jo~8XnO4{1IPH@#hMm|Q zNWetbcx@*l=X!3XC$UyP_-Rghh&Rr zCEa*@41D_UN~icH?kjC?sG=|1+Z0?1P+yhRWMcN6Lo5FwNQZP(hc%Fa2yw9ZAKz&J z@gPtm+3{yvW@~rpuN+YkGy9f$Iv(dD`- z_RGKk*jq3+su^^pOsq{?p78E3?U2~h(-f+}#}ULj(P(v&0& zz4E=~UyYuU`5N*lN6d$Gs=#5#^cj2=&1$ADm(^9D+y*lS&*F#Ja~l)v?Lb1ewTLU2 zvc}AqZL7)^=xQ(rd;WdM7tZZ!I!Fzd{DwdIpPEDE1A&{IxUj1 zsHiscU;z~GK?*kT4@ZkPVskuGtvUbmk)sp)*R0JEH1S2%k$0(8 z;6aYY;F;PYusD*f<-c3VT1mvEHClQvcCLq3R}L02_J);l?1un{EiC{ zDXL@xT#}(^>scB!;4gSrpHF&gdy`E-TI4T9LKIEVpOsqc23Y0-+IRqlm;BjT8q=#d|GhW&G<@O_ zobE6&3*hr-^A<+>mw{{>n7U@d50LvoH~Y>?kd7ADXIFBvb{XL9q4aRhg#*w1S|=6b zqypEnSG(!x&b$e0NulH#XUejN+9~_SS}$hFNT8>!`R?%UL8Pp&Az|uyRmt-2S}T~$ zu8J=uU>iy2*SVNRESS;3N5^7spg&e#Tcih%Bq%()K$n`pgZ>|jFQ}+CTh^PtpXwiU zt@o{^EpA17w30Pm|I4@CXbUp_z|5s!WQNb`dT9qkjcMQg_|Funx! z-IHsA^U}L0)-W%mIl5?`7}z0qNo!7(B0!Veuy@;=tq8>2$7AbJX<$q3Col^SsnKG_ zgd8kO0hDYpg!`_Jmc}xfNnmjcry3!rc_3Iu#1?66^TiV z<}mr@_gzmwUknlt_I+Y*y4FXm5V2BQm~tB_BB($7mn+~SGUn&O#D7OcJS!-I`t!dC z2=n5y*YjYx93(O4P1R?wuC@FUAGPI+@B{RD`y0AjelHt4kfe3JSoM@KwQo_R)t&LiFTpI*K<}9$#B~s-$&}T0Kx19%5zsx zlGf8IX9}ur!J5FG%UZVDPyYO3S|#jCyr}UTjvc=|Q@L1*rC`QiL35vt@-545UAN=! zEgY|I76u&_Sfwa{&*&;lzDXCyw%zCSUpbi&Jk0o^S@I(&>54M$>N|24KpoUGo?(hj zOvS(2{C7R~y1;`Nbsxrr=QsYd%vefR3lgQU<*XA}^wpY=Md{tj)bB#v=k8in(LUk~ z-$l$gT+qv?rG~Bj6?~JgqTQVT^@ag-9%_6bpnrH39+G*7EcA8=Aj)2Fv(Z2)&03(NhzwKNbVYTdP*;ot20(+W#(^dS96h3MTB? zG*SDvomblpkE*+Uivn9}!j;$C3ww$zOhx?qYq%XiYWDZ>th50h+r^v%8k=vNkp*Vg=jE?VPs_?G%QfP@ zdFmf?rnc&cMx(SCzAFHHciK@sPfkdgz&~~EC-uT1)7*Ur#^+wN=N1FF zq4XA1-j}30i_>Mk&qq=o5L)7qT zRYk(5>-~?vLDzFn+GG0j3rJ{55C_Wy3M%|Y3NYP3)Ko$+D|^TF*RRqSdb|)X0zPGJ8IDGzNwE{)k(|VW`w~ zmMTK8U4c7ikMRBg_AiF3VJbRvIBk|83Zmp$mg2$??m}}_?=uL2hboN+o<~DW*EpX| zw(rhPe;1Kv=?-IoKxX57p^@ zesFV8-+_0(bvTn#GD#S= z+-pREsi%46x4aaf=PoU6K?DD=cPq|DS#>QB+C646B5l7tzbXrRgOEVebhAM4H#ZJI zm@wdHo_V_IiFLY={GGBE3i*dQDVf_ZQYyFD6cozF;rNK_%+XeONi}0_5pl zz}WYhIwE<#H;bEx!Y@nISx+@~P2^F%mvgUI892l5;?6nb&yV|`$X-h3lHEF3zG^a5 zcatfphiJk>o`ZbfZ?^w}hFXG7iqKrx_=?{Y%!G=GU>h-7$bS|*3Y8hsqc@duamr|u zmrqR_ooq}t=SXUxDhS7I02pF`0c6g0@1}U1ufydvHw9#O8M4-4JvGhsZi7s)2yx&s z_CdjAW{rU>$rq^@F~K~BT?*P#RGyN|beIT%E$omp*O2E4>N6-T8}kj&D&7y8`b{O^ z7h5ne2yMF6NzkG~!OEWVL_ym~%P)eyPbgc{yCMSIqnj)vwF%cvY~oF_J!Kzg$u2Nt zE_}E7nF$I+-q-wLz3+e_=+{?|&;Qi?ePVf?Ew>u)tU_Y`#d@x1s3X4@+lbizTA?qU zn}Fao;tIV&RS`LWHtz5c4G}e(7_G{^`|ylM^hse``$eGCe-{U9G6Hn>fR#6h=QAgp zk|Y|o*yq!4HvWW20~?oa_7l**?MV`7eR3r>Tm4^)(fi-10AjF%U~bsI4<0oeF824BhmcTsTaGxaY7*PCLIHA6}+fVv~l-Qx^z-Kjs z{!hoR1m2QME>u9ulo;(l8dQuw*8qC6f87xqElS^Yn?z;K$e-%{r!J6n4)ScH*b8UV z3bwF5eI#vCS$P_|x4Rtue*mUHS-)HV>P6W7pWlQw-f-0(M`d^;pdQTmwEF^ResAx} zYyI=Lt+-^6l=wXYY=gt1h{ye@;ycFa31I!=E<(C8g*G>9=aSnGiFACdf&pOT z#wd*>0lFYh5>x?wD!kW4ciV$#o^v6z))-nW8StS892P*+{j*M7AtBm_CA5kU0F zZaw6^hXIND-hb%wvTbUdWygKNhX#VuLyi^T*$3-A>nUVV7lH{V&C7f8)T{L;oT$H7 zw;uq!m$XL+w;sZ!k9_hUKbD5Zy6l4YJ$FogU4YwhkW%pkzC0tq>``&%vH=e;2i7%~I`97ahP+x-@>rA~TZmegm5kSlTJ$yLuIa ze?B8HEZ{Gmf4~r-uW|p#wy56~kd&_HhamVTR}aL%pDnvp-}c!_fD1kYz!X&0CyD>i zm@p8h7U&uV-5rmhXT2IHoeHhd#Q5gZFn#m&h{nhGSbp^4@ZviG@Po^b?}b4e5uJN? z2TU%&2Qxi7p2iacz5VEVD0hJ^n&Gtlp^?skf$4xyEZ>j&Q*SJ9`34zuvF1Xq=gtcQ z@nb1x9EEj`6Y>tYj)SJ4Y;c+pz^-k3&aw_^0ioZ#@T(DujjWugd1P* z3{2hdE9lEx!wc*q?|UeKx?jJ+$y|3{9UAC-3=;fhf2WLIK>i}vXlNjD|LCWLTJ6Vgk z+4>Q!-q2f0f&{!UKoPD6J(}GggaG`~KHdGC@Sy?jCvpjgzJWnV*x2CrZ#ds%XYjj# ziwL-LV{L;X(tbGBJ~$e3NE_>i7q~f-M7kMz357Y~03bQhuQNx{n9y0BZ_eYqz<#yC2TYUwW5l}A;pssRpRO^5_+CT6|g`U5x#BcDOJosxv z@GO`*g6_4bq@F+7V|HI*c)UgPv7BsG`Ns?(;@_iLts{`_qmRDC~*>HthyucHFbKjQV9 zTx**Ir9eCLe9sQF@46jh=Ur+KWAeabC!dPhyYGz11A72%gl;7o0>GpTNK-(JO9~_4 z;``o5Mnc(**Pa)N#}!WHbBca!>0mw_fV6Ia5vkzV*np-tN#Id{8y`y^q$G8$=`kmM z$bn}90<$M89AH}4x5qm5H8q_4q(|eDm%kP#{mzr1)oOj6SP%UCe{j=_o{PDyTcJ-h zQ;o$DP#@VIcqP9<@_aU3veC@gPt_8?N)-AOmHTD=eikkX$NlL*ufL-Oz$(66hfjSy zf9SerZzH5G&}RmK4*}4G1izGaz%=1Ix-gISZ*KJs0Je;udImcC_oBOhUq;<_FVyib zycqeh>Zs(eo^YcP-lO-iMa^jhC1>Ye}oFSzyP ze}T?{{WkdbV~!XB^&$l8AutNPFkizh2h3fTfW&WB-ayuPR-P=H^rzbU&)ODa0d$js z5JAwEtLKj<_eF9DqTGQ0=KNCFAN#@F1v8+O?t z>~*5TMF`~qcvi1nzQ}S8C{3jJld}B*q>lAs@gATPnh=-r!U1kf-;@81h69ke5BQXb zSFOOVnbEUe3rxMQj#hy$!zW(I$XmVh4$@M!;_qR>|ahlQJd9x?#f(mMV`7&FtDzwa(vAuxQ3CfIW@iTc1hd>@$&t8J!33LF2?zL;IRI z?JSt{mVvN+YakQs9bzm55UBQrPpa29FG2m!V-@t89|8!>i(bOj>A9!Ju(uIr6l%U& zVPFIhfB()pa6%3=+`E7#WbpI!J|7N1LO8(NAwfc}LnIskgoTAd;T3AY==5M%z`y*2 zjX3R(pM`V(>@TtELXBB3F@-H zp&oK0)TsOwHx>jIQsK6_@w#N(e-QVgmk20I_d~9pU&?@Rx547^o&FjC^S;4xw5$9Q zmi+az|Gn=JD+vsD4764`bN~yt-4HVXSdPKuIp^8i@9f+bQUFXVQ6m`^YurQk>im0L z-+G;EI%K3W0N~k&gyuy_>;vC7m^Y&odvSgLM1?*T3<4=4H!Sb@JGl{5xX`c)sb7)dHVaE=kTb5f zoMw`04{1n>ZBm(dZV*4R?t+fD#yKLkLMTmQz4jikH+0zQj0{(aJM86YOOcEDVJ zfJpmZf94Q%o_y$K3pTfH9wqKe$e61qx!=c|D1AP!dU*W z2zOGvTnBcpX@|x44Xilz6rAwHC*zc7J`d}+oDbDaB~&i^e(?*;Y<<|W|LWERYGMwZ z&_lwE0#;tdjDcx`B@+?50ZT)3SOSfN^BzW^J_7YYTnkSYSayDz9scN`uB4~j>Z{L|0RQBAep&Eme@roP$^IGuffC^AfW}YB^bZ*WJi12yW)t|q zy_o;$_Y(~OnLZ!wl#K>m=qF z1Y=y7pbAi0R3Nv6fqEdnL!!S!9gZHr9My7JDwR!j%5Fm@=`U{^p3+~P(1Be!Dmjq4 z3_u?6lbn)15#UeV26&lzOjmJUM3n%K3TOF806uCx<(>9g9Wy`q4puz-&!H__k!)Yq zYM4B03-s}E%-(e;V0p5>VxXPxrrV~qPrFmz+|<^;sF`Mq;Vyx4tE1_--TvLi99aoPSLLA8L{?Z9YvYyqR? zC!U0jPkahCJ@pw_d+zxIE#s4#RIT4*Scc2)pZvr>W`{orf*f&Vb+`-_~XT4K^)|FZsR!Ha7+`spd2 zJxS(7I18X`H^E3I!BiEGNVcR~poC|HCu;bK5>l7Tqo`{Qbnd?!?fdS+*tywFWX4W9 z6}9CnF>}W)=p8)Z1B2Zc!1Rto_a**m>{hQiEdXt8U9YQOa6p04z$*sQ$j=JC1H4Xn zzS$5iEu{Qu(&6PFI{Wch3=8_HX~+M~P`1CbZOyOo4{jxma)pn?HB?-R-{`h6w($h4 zIsalD|Fl2GQIB~XnwIxJln_Aq$vIpy%I=Hl`|ibon{I;EY6aedbrQSQlh}osIsHVx z>$t|itXo0QByO011cjS}5(OH8`r-w3*=;wu9w5blTg7jyM&CbgJ6_UX|E~uvH=IRK zHIn$tOV;xvw>p4C&4d9N09@VmWHPr?WO8%9HG5smeE*xd1^`>?Yu97NWsk+|Z*IrJ z)(7n}L#Le2bgA`7S)l*crQ+@XusFKu8!p77`VAwZ@JB*j1cMSg*CZr{i`OJj6XeDR z~kd*BY*P|tzcWh(6Y1nO=*+;E)>#^*Nb8yU){{R~-(4RPd z(@=sujV6#r-aG#>ZPsVckAIBL)D&tH6aMyyZ3NWN%c+7P8J~4oWQ00Kqf>)S&|;MZ znv;)_)`)5Z)JFzTSGhFZ+#aJa_^Zer;Kuer-`{8NVj2Jay^>}2)YB@d=TE5|$lb>N z{xbl<**iA(7Oorms2`_7v&e%a%M514fktgl*wg{==@?*4nwJ9yAJfx7N{$v)Wo@Aa^K z;{KD>0+-L=4}DLPTSM|8fbh2TAi*&79p6C63^n#KnPFhl`yCrl$BsV{mT8UghZFq%r7Q{ox`vk?OzKL+2QazEM11Ce8434b*rmt`=J zn*SW8#Lz9rz(fLm6t3q_jq}IZfDm&q00Y1bb*mA)S^^i?ePecenEw9%FJ%DOhhqT* z%MEB9cOvF3Lty^CyU{x|<{-ut0wKg_mRHMVDduqb{&Oe`9r1A`QQf^>yGAKzVh? z1RziE78zv;!iEEBHn9Ju8!_|nR_M)U;=^3CjHbHF0+gLTNW#>{?t-3m&(Aw%n{5QJ z_-#WAq@+{)Q0zb8<5bqP(6z6Zm7S zf%Biw{Bebrid%i8i9$4~w(jBPp@?d{v_{DAh3 zM_@Aj0!jnQ-#_a{uD$Jd_VfAx#8&f?3ZvZsIW^O zj2*WLmLTeKTlwd*^8Lr&tU>`SY}{kTJu7ovxW_?E1kE zZTaM+3|qf}NGumXMdfrb&ToYbCxMVv6%f0kfcRAfnascl)R#1<7x^7tIiQZPwrCaC zSyj?sQSi6J9h$i~?qZt%wJizUgI`aaodZx1{F6!p!yop@UGzPw9`?HZl#GaDre&=meJSsBQ`pvBFf6p(jw~U@<=6$4FPok3x zU=+#)C^q#4#(-vbf^b*?W}bN}gmejk^^pqHRUSvpzHg{?-zMh)3_{{prb&>i{lR%gUKQ?Xw`znlW+KlG0$61ETNfy{2ho)t$Fu|kJ z-h7ObHw6Jc0AQLy*T(@qMe;c#_Mdos2zp6qttR&0bQ9)w?6l6CmU~}0EPzu3+Alpr zo*7{LL&t4h&4h>8L&Qo9^$LZDMnFBR){+?QY=fh9_skQ$6zEnD{-nS@orPumYl-9g zNBt{Zg?a^MS#kb6p&)KdWPnh0fU^zeZ5|we0brk{wbsF`{D17dd8{p4dLQ(ys@i*> z@y_?YpiibY_f9dHGC4Xe5EBp@3~0`YV~cD4Wy(wuxdfG-LsN~?fE$e?>T zd;A!l{ox-)E*gW0BQ$URNCp{d=IS6`XAwzfkf-gaMIW7+VHB7HNQaO5*1Ns8eA5 zyv9gGj3Fq30e!gm{QfKLP)hUL{j6={N)c}xrV6b$8rffJHAsE;s2>YJbXTwO{jdq3 zSKer@K@%i2$6Ol7A*_~&7nae_OZ$>ZGpO#`&p&$Lt?UIjwL{weU6n_{;CE2B^>{(!bsr;&jeYk zf)W@d8D9-({TXsOweaw$7Xcu?9V^n?Le7WuuA%m>qDqbOhH(0eKLa;@_%92Kz(oUm z0q!x_uU>drM+g&S|`5`8jfdu4(c&9)@s`MCH2FOet*G*@&@Ma6t4cs_v_?`@@ z2$%>g>zC!PT590>szYtM-^C*QDLcVuS?V^cls=m{fy{Rq(c!dD3jnzQT%(5z4ez&% zd)Xbp^oy^<>BZ!_BEJ1dIIjSn$SlNh$pHA=6C_HI-aBI14BUo z!R)yF7G)GLQ4}ii7Y}1$fHk^+USMF~Fi^MMgd2eWhACr}f>E30_pcUzK$^e1*`i;i zE~yS%rno+=^Z84_9|{%)>G&SCb!$9>hi$K(0EK2_!Nub6^axIV_MdE)01$&arTs;z zfbn|_iU3~Fm{nSTSk#zh8hZwy(`J2z#$F2W5{rN>z-PXP%H%;bzk~5PJo)|4Ms5-| zRLl=Fn8cJ35N0Cm>%;;u&74Mq1DRp(Sx%Q>scMi!7(*2dCqlr9g#i|&7ONUY-5HMx#Zz!@~0sI9PK>G8f7Xctl zn1C3|0y?vJ&e42zM8}2m&-{kS%cp$$Ue>KR-=8Ye31Esrf0dS(0AK;&(*T(TU?u@< z)cD(_1$V+&2q*wFlmy+S0X}=3)o%a^c~B1ES4%gw6T(bf0GG+%2d>ln0P3i7jQW}Q@v zlKTpX26p=TXJPi*AHx2(eP{bmV#^HEylO zt_E~j%mJ1Z@F~~&&Ep81p$EsWe-S2+pRNly)tSi5F$cO>+%wLA@mbfKo%*nh(Hy9CEdsvAv3CJVBK|LS%Aal{wvj+s z;aFo@Kg&r0YFC0FlkX=6AimQtlJ$mkHyemGyi@z4F!<^_NxDxV7Q_)CuQ1opmQ z`-?R8EPsApJJ$oWEXqD>zDLP9MYB9e{QfF!8YCw9)aM2ByDXhA8zZ2$N+kC{-fr<8 z$=gW(1~zoy(eHc~g2e*7osrRluGgel%nQ(OMgW!w0%btIHgGcOdFkUsdLjR0hEdFb z7Y7gyQo_I%$Tw?S^8rKxfcY48NA#2b%;CU4Vp!`pcMkg%QvOtTomSbvI;GD-<5y(| zL=8=#X92)py=0a^uUHJ_3Q9ahT?fuT{c8|TCxUIS`h1DOKGE(u=x5CN`Hm>d+DbrA zqO}XRwuz5C&GeV~UT0AVW4C#>52)eaSC!qB03AU?~J-zgG(Zvg3VGzmi4ig)2cICL!7i0~@#PAk_tM zD$T=A!Jqod%4%+0UhO}*Ce;LBn64HJRr2}eTEA>`)(6k{tMgt2fOsL@FT4AQCBtMm zW5ru<2(!1|fHSHP_&wimtleYcxA&uhJW;WqI66OVE(eXDy#}9s9uUje_R31=$^afq z{Pg8TdTf55B$L6!ZDG(q#~Hxcz58(b&OLBaDW7O9pG&L&d{OnWek=g1vG}m`b5YAB zU@in?Y=%M*h=hTNHaUb5MD79yTH+emZdTifgkxs9Ja&`rC!1HJ3f2AE(*D~d{3+Xf z5&PiO&F44J`U`G`G4z}U_<^c<6lil2t|cGh<3IcLUs4MIX;VH`-xC_XpUS<5wFVDr z)4dizr2<0HFK!Ed%G`ahX#>Eh%&$omKNFw5s*RF+q;i`ef0&;B@t44#%)rf<|Lp?+ z^Ba{54xyb`0A{()FsSYlP?^!nECDhhW6tl%Jl5ut0K#EP7}#0{y5Bq@n4w7fWCp;m zlW3db_g7W-tBSN2!}M?V+%Fl*LEA8&U+3pn3J=l8Q|K=UP~4`V6``^5@q1n?O73~4i@MEx#*!3dw_&WE!`2smolR98MjogYqUq!Yf0c=gcAXY6R zlt~?|S41e}8v5fucwH1|YJRa`f*~;Ipi-a-fS0)h>a=Yuv`~8lI0@(sQmz7TD-3jM zQcem3%?$$qRepc0aBWlYcNuQfJ?pdOCFsFFKUS=$*Oyuj6avJgHvu5VhGAVmxBb#_ z9hkiLE_~*Pe+a(y@BTO(eDEtox!#P~9P-*YNZ9b!e&=j~9kB5Er|ERd=x)nW^H3RJ zmt_P5DQCa5f4O7J1M%ck!I>aIZA^jc9zl_RKoTrS5&!4+9>Mv0k3=j$mAO+E9O!hI z5nuwEEc-l3BZkYhdbG9zlnDg$B%2^*85lqmL*TT&@IK$0Ft76oF<}N;JL@*xFUj?< z1DqE*@K3gp3m{AYvwA+i4e%!|Oxw0Z=_CMJ2i|XVtI+(5vXB7^qIj}kF#gQ%!)yP= zUx#n`+y7IPs+TX3s|7y|zzaM|6*)|^^JP9a1$a;d<&^_ z4KM@sav{LRn!qHM0f>o*NEjf(8qebQZ8tltqWkLzaZ7V=S(OTb)y@7%u7Cg9dKZL0 zcF&LR@O#4{u^`85a`~C;nKJ|aWP8|~01*FBr!AnDYXAI~PZj|@8!zDS${sxU`Cov0 zKlzjJ{=e{p5R7LEAH1BSUTfADcqB1}r-T4hvj|%}y<`fOe z9a8*a4F02<;NLWw_Zjss7XWbmyx8aS%fDl#!b6W1fXF5IN*zGA890Xn#QEHZqsfv> zqR|uJj7D(!+UMb&fB28!BY*YZ1Aj7>n5=CC08POfEX&o`WfI8E=4O3Rv-HW^2SqAg zk=oZNS3mPTRF5er=>wVk&+fhlv(s^g{SO;`RMQWbBOa@EG6Kr20%gQM)hz+dx&q3M zV>!#fl;78cbZ8X+-DVV26ae^ha>hleyf3+lTz}Ix+?qr`&58z_GnstOzvK z_-*+BWs|i3VEl8(*N03+$s=MTc8 z^TkS=a&nW}84lpyPyI7^>3cs8!|T^0;-69tTMzIotuZTe_3Z%EE-s-6l(qn$uQXWZ zvo{wqB=^W#$XI{w3|tsLd2J)jPTq%6;7Y?(2ChCB{us#$_+SQ)Q%R=~5w$Ta_mPGdJ zG=8-kAPfAtuO9R!0Px#)1(H}F6Bz()zf5ihgX75(&KHsPFEgk*-T)@|-i7-={r|$N zf9VqtkN|+8LgR-bAfk*r0Ofh>nJD;taUN(O?_Q>DC+8c)Dx{8$n$>X&L^@i&-)3%; zFg{G-vd9Po>S9GvHN*gp-hKc+A7gjucDiIl+H5n>XU^W&W>MlM`&$1u$g&BN&nRAC z8VdsnC2^8oxQ!WzemezKj=^bU?wj6AqWJYT^nPq&%V`ThVZO6+CP1dqDwwLMK=jdB zoA40J8iC3L!}w*HCITS@)kxGdz3ip>PH0 zrvzF)xTu=DIX$VlSOAkKf1M>jYXtx(jR&Y33()jux>3nf5=WK+XXPf?g~$Y*n4zCX zVPGeDX01WK2GLIgz}ehbZC=#BtgVPIBZR#qXwxpAU#|7*+n^c%ICGruu!RZ*owuEseUNeLg>^zSRg2Q&_VQ_h114xCK$5s=?hxjTWYu!uiT3~fxuNDVT*D&u*~)E?hZEz{@C(wn5UwN8esuUeUP{R#FYShv;ZI+g2WvUXtqM4CSQAjQ8__L0R7B?8U;HGz@Ta~-)RT`Y1Fpf5o&H?R8Q(-wH9iu z@qL}+S*bqOog1LdYZU7fxNsh8$)i{p7+o?-;&oksGSReJwmv;|BNjH=-%V+yYvIHf z;miPzeLlY;dq6&}F(w}Ieb%D|0AAFR18l3ODtb5LgS#s(FDW z+9?*hnTm!4R00LZ?La(Zp?k7?)ov=cWx&i-9*8XLdD!P+Y8E}-> zi_7!*O||~?apwRnvY3@x09GnyjhinymvG>G5yJ7@SDL-F3l={q3<7xY$xp+rZ~7=O z&lS}ID;2EKY3M3;Jxfk}qo6!pK^{#l0cqWUbYUZfUtR~`dV!z_^3wN-0KgxVXZN28 zQmHxtfOW(KnGoRA)J>`Ys!Rybwqt;kUHI+WzJ_W0iTU3bEQFCTkW?<*i3I`|E~cA+ z`n)6R0=T8%Z>o2RHl5H?e7l&Y|E7O~s)ZoVCE87Fq2~Gg_M89!Pud=XG7G>?9iUfj zq?kUL`r@w)6HKzi-Qf^UzVsFxzxD;V`3+wK!73Oq?ZcLH)T6|&Zc`RlM|Z1qIpj?A z#Xvuh^g#vu2~1Z5cs<}}0lW<0@;q=id^pzJc2NtH~x--pBZ-TPd=J<;S z>}_oS#c!9QLEBOP*yxb1mY5(9uQR~lAL=|BSf6R!QAEdy{^`2(&MB>Vv0{p4@K^{@V5 zTqQ6Ez_tLt`rZWKb3#Ure;?5V;6YzRNEUpj19-*vSVM!?0esne=D2Y7^b97)lT7r# ze2SG*$fmbzK1$0f;vRIGvPbXDng{+*KLl-8gO_DP_FLmH`R` zOb0`on*H;i3t@s-{#Y~5%%*Gq*kRvLq-%x(xYMLpbvOa?34y8a9`!2#B+nLBADR5b z^keNG5tQbC7n#ujv4IE2Uw8|SKmR6Nd-W9v=8Ie%dO3@qU6nu+fVZ(CfZQ#R2K0V3h4JS42UXQv8l8@%wL6 z{>-d?C^7-Ul@*|!OMmPMf6n)jQ%-z+B&F{l|A51*Yrc7A%+$jKo6yQOBDO9yP*7jq^X8y{N0pAWsFJd zCKth8T(rpT84{^4=Z3R4|2g^miR`DzzHhbv?6)+x7EzV73|EasWWNdUQyal1SOA8V zZZpcY|053mGasQ04{TglWCd89jp5<%d=9?yd%gqwe3ih`OaLgFFsc|c1 z+#E>N!c~dMUh+Mf3L?h+%3o*wJ>~o#KRgyBK+I*9bEuj0KOO92N;^!WtO*URjS$d8 zTHt2rS?mI|X)Yin!Ju=#FwKE#t~$aRK#};nBKkS940M@ZC<+6GVTLQq1pF}u|3M}2 z-xB`Vv>*fkK1YIBsB9MaGe^<1eAurA07~qmSbkfR$9&FPI$DIK+CNw<3#-e!4m^GB zEqLiqd;|vj{L%FTIX^w7Q|lxZ`clFH%DC;zG--vVj2-#pjWznpfN$7OV*gtPaQgT> zd0SIMXtzdKDAEEkFV9z^`Rz+X@57gWp*JitxsmUE#v(UCWEqHJ21XrH5)We5!v&a^ z2PW_zHLUr!q5WUz$&!0FN4n?fng9miuXP!){O5$dleT}EQ~>zYS6-(-dwhQ(e-p66 zI1BB65x_Dm*Zv*J%`Cfw!?n%HlM{IQItc+Ef^g}lh;J0+J(=LUaz6Vq;6#l8U<90H z@7n};%YI@>Kgs7mo6O`u)sg8((CTD|Mc+-M#`+K z1pU0$FRug$QnZVYB?iEEzw_N^-3tJ5K-?e}0*uOYsmNo9@^{K*nPaXInri=5%x>go ze)QQl;MRv<7661{2!+zNX`nPstuq361-L4KGUk-R+!Bd~u7ZS;3T$)!%>)nB_8W6` zYm5D+)$#1<80J$d{^MkRhmB9a%VI%MKwv06i>(U$HVtf-%d~!(HkMkz7s6HGiQ255 zNG%Lt50mu5X59n{AHWH?rGbEhRB@k6Vfyc(WvuWmt!Hy$Ze&al1IYniuJNyrl@tWZ zTBK+(n)YG=Nd5Xik9P*%T>dkjaqT|{p;Y@v&0<^n;BcThe|!SRZ@mjQUws)w0eWL# ztm~t<)#y>mw~uJyldl2rviE4(?~K5N(tgmIboA(?adUpP_DstNRRhg!0N&-_(!pMo zUU$`k`+vlGWW7;q!vSN)nP8I+%oTaL66f}R*&URSaq&gk8Vy*r6_tXgs z02YCtNp=6+cXD%oF4b4OxeqPV0GC++i0$yY=^ar8MNLA4vt%iGIa z0Z<{DHd%eo%3NMSvA>MI{7vY8nv(d8xq`iK7@O{QQ(Oa8+yo*Jkheo+krxWWYA^Qr zSBJswQgU%a+p4PlCmXQ=hAdSX&@8gQh;>XZGH^IM>td>Vnx9TW?G@|0pNjgTQ%L&{ z0l=|%z^i(V9nXQ|dynD#(J>sna1FvRv;*{7nsgrEF}rG)Rnik*844njei{ROCBZ}8 z&lSHx{9DQAe||K9*?2B8G;9F9n}uC1l7w-M00s>q@D@}r^_FIWTaw_*g@H3J3^*92 z74AVG+yp~QVL-S6cpGz892+;*{5N|hS_&sUr2N$zcP0b?UyLmSle9jt1Ap2cbn#m} z{rF*MdjIp7LlgcyKo|#T4E_*fOM22<4K?{>$O`bq`*3*YDqqpV*6D7sRC7kn`&_@! zu%G#^*wh1%eh-p<%Fjn#KVxt`JsN}0$HAi_O)W|5*uwG<`Mj9$^FHsOc#(epCiFEE zCMDFjH6<}w1|oqVq9=AsgaK-cTni`6%ZRH2{GG5y0Ad}TwNRJ8sw{n2GX>BN;APjXmJ%2SAsjtA1IKX+y0#7ff4x~?{(ZiOVN4FJD-_f( z-R)K=xCnhslpayJkVV2kRJo7~0{kJ{kE<7|*1J($9yqZXIyvxfM`v%YmCF|Rm!Dh0 z0wC%wu+=)J$mf@VJ7}{5qA%|EX90*d$^h8a0lgG+Vrl5qN0_3W_74Eo6TCcQ4D zzTKL$46xX`G@&xa{LQl%Qd3It?% z&7R4v0e0X|ucuuMfzAR@=?;k{LQ(>CaSC z&Vy+kTHb;T(4a<{F^50dg12I2i1*AfrfaGU3lA2N5=XwHXFNRAXzCXZX-G@W%0Hb=6llH$ru-5)%0f1E|0J#As$76VQ_X*tjsuzS=TCE*70PqD6 zs>|YM(N9PR;z8qNL#p?f>zAnX$ZzxU(@89F_09iZ$FdNaZUDtNRdiNBGl@=HG?(Z{PkTwg9kv0w9wswDOceh^?iC?-u=80HT}m zvh96|f+M&95LS;;ty`uO<3>n0BP+no_uq^HHA1Wf@V0DtjRAZelYMQ#&k25-ev;K? zK3T%q>8w=yZ*nO@tlFOb`w+5u*xPNpwJ8WdN*EyF(+wOh008W9?f-1#z|>1(`nCX68qbpeg$ux`@i1Tmla5jXPad7X8Q-tIa5ZKIv;#^s z22Ks2TLONo0H6O%2k^@G`RlBw|M|%b=Cc4?m$eW8Xa?ve1%S*n3=}LJgDpO7w+;c+ zqY|u3ANE4F$}hheIxz|a++SHdt*ZUWfIs<{Sf`Ks7687&wy|SB%8hht zbjXoRZLB!l6bo?l-VscW&tdm)ZygI@Z5lV%;AP(z;KLN~t%LG%5Lw9*VJ~>lyk7E! z>-=mXU75OCjN6DE2%z44-h%yhGr89k1o+}IfSnxpr$ORi8CeL9Mr@;KsV*zwPx;z_ z!VPc$S-uk$_^U~RazTQT|9{rE0AM`763X9kh_x2WYW{z+OmDD%?yh5`2q6ge>FQG#8!aI5e=}l zOl($PX>RR?WcCjPt6Z8?CQB$2z1ZavsWaz7z>q<}z_M;?kJ|qQB>d4GErOooR6s|J z8_K~`mK~r5{^TWT|4;iC0IY5d`TpxlrOfDTyVy`F67=-$6L|51w+ktOtpI$!Q#yc` zYVo!Judzl{>?fA=t9U$vGcEx5K?t7flzQ9kA4FUJf2{f7XTPUdfFU$*{a=4T*l(&O&u@QvNn8>K_&B&pgisV65@$ zG6#eOVBWU?@Kq)a2+H4(ECBVuUrc^%erga?6Oq##Jvf3pAGi&HADYqKR?v*=lK5bg z0AE9+x3Q22Ul?D&PEO|HUfV7meYpp0Hqz1pz!t0k+Z==Eb)z}8Pny3ULLtjfr5&ce zAMyrn%_AXT?xerJxP(95fqz3!F9T5)ILy})WeQbRA}BEV=O?fME&wCz0QpFdgRq$! zsu;rBDS`Y!dvy0H+<4)dFjt2*DS?dxyhiw_$tGAC;4Lj8>Gx#vpN^L>p7_G$(&oB> z9j#BY>m*iy&DTb^LdE8TKZ7fL4Z6d@-$5A=Xtl%S$rBkWx0e7<`HQJjPF%Gm{Ao`6 zPsU;<1c0bcgC?b~IIgO+Kst(bqy3kGeCb^x?Vn8lv#^-@)Bnt_hp`pFZGfrL=G;xrFnC_FADX^rSA@?$#p}-$wd9!+AXaUW z0C9T(@Qe!q=dOAkz8HT0%}e>yi`q;G0K$6BSe6gKYFt@9bKrhg^HC=Nyi%rT_(J=? z7#1et0eF1>8CwI+05p&ILIWS9X&pS>Dd%^ z_l9dXfDO>rqzg7p@iQ~oHx2NR19*jilzLAZ|8(lZ*?1}S|2GNfWu6zE#$QK2$cc(V z=ye+aPOD|QcdP#8bSrdet)O;qaPYtB$EBv3!pAT56EmqBU=1G8C)a~$L4W3D1G1kN z!XIp^Qx->)O?1MQ%YE17V}XScRgWvv)CAZJ3qXnFQ;+hu$}&^SH9%Cg(*-WO4L16?x#f1D7Aouxe>y(I>XsO7dni?27 zs|2VM07%K%(@pGSF3tMb97zg;Vj5uMu>g((j~|@C3ol;-Mu3ITP=O#lkeUIlrXK*6 zNPMtFgD5d$_(`){v;0<94g2SD-9Ar}4o z7031Mz6AiP1h}hu9A^CPoChuVnlR%bZ+x&QN_{$>!_kv7xc$Nv5x7=pp&~mTb_wvA z%Quj!s03D2eoqs5u|PPV_^VlrH2}X3pxXohHZhaZu>iWW8UZk7(`LV>`u+iXb6ge4 zy|}~I$!kFZ{$>8)Qq2%dOv`lbeTvTwTzKdOBBb2uYE(DU^xs~4v?fk5jKw;vsPPwU zKD}E2Lfw5J?Z0V?)O4-vHV2)2|4$yC!i}5z(e*0i(wp<@99?HnQ(f1+N$9gQPxp<*9ErvI{vo7 zZlP(u#P<#1S_vvrMK(L*SHfabuA|$jipnB$2Vs`7VY9*54+%2PCr=w%#rwm5bv@LH z;*G^pOCSv;6(Gq1xqlDd15z4E87W%jK&&V?({b~eI)$ml{QOzq zmFvWXXkr8;skWV%?MY%ee^6l`T!kM~E;iQH(1VcFas;>y_1$!PkP;nqOp(nuUBpX)%>+;GA(vKp?77DmEm0XbG!-v<$CS4260QDWywKk7RsY%Ja2=1qL) z8u>wvtMKyL4XnWdwEg1{IFZs*(S*J=LAYs$1)LL1E8`B1u$+Z4R4W}++K*oO)$xyT z-biXBNi$_KW7>zOMG;^Wo}gbhi_Iw+#FLO;4aJEgS;ydFejNe2D*n2HuG=3oF1-DR zzc7huKhw_j({%k=^E8|+eI{vP=FZWWqY}8R%R) zjnzpl_vgq6|9wiY+G?}46jx9Yr{?8DbT+Rg&eYv6{dod|+fh*(pq>9Ij|M1z9r&e> z;!DDsJ1u^`VlRnpP~a{WmGJB86phhTM@;RokAYHxciu4jSSfbA!v65yhhl>Nf^B=s zzj!G1eB|d(0fv&cGYoip97z!m@aj4j+rD)D`aA+UB#@CTU5b#+n4f)xi!T4#yooIn z;Ln&i|3ub=w9)vT)j6#j=G;*L`UQ?~B6vBUP54x=Exy8J?cUPzyQ8t5@E_-Ey^zi98_?AryKP6{UM)2Zt!_8?03G-)!x}M&{+7>!}RVbdjZNrcaVL>*> znH(a|rd=SRBcO4woUDI4--Qwz9*(}rrd~R79hyv}Y&{94lVaR69;bD z0Z)By%N}0)7Uq^-hOT_)HP7<%my6+=eq}R+aCi7?LwjEAL_5cS?O*M~u%CG*d3MKx zFcAtcw~Oq+huL>Ktk>^mW(D%^MBVvh?O@SL@rXtGitW+yCo3&P1Qo7>2KNXCQw(8= zp=RDsv7B7uWCxSshQoW=8=e>Jx=+uQ7)jgZmJq5iFn)Kyi9Qy|EI∾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 + + + + + + + + + + + + + + + + Class List + + + + +
+

Class List

+ + + + +
+ + diff --git a/src/clients/lib/ruby/html/classes/Xmms.html b/src/clients/lib/ruby/html/classes/Xmms.html new file mode 100644 index 000000000..a97ce034c --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms.html @@ -0,0 +1,287 @@ + + + + + Xmms + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + +
Methods
+
+ +
D
+
+ +
+ +
U
+
+ +
+ +
+ + + + + + + + + + + + + + +
Constants
+ + + + + + + + + + + + + + +
VERSION=rb_str_new2 (XMMS_VERSION)
 
+ + + + + + + + +
Class Public methods
+ +
+
+ + Xmms.decode_url(url) → String + + + +
+ + +
+

Decodes a url-encoded string url and returns it in UNKNOWN +ENCODING. Use with caution.

+
+ + + + + + + + +
+ + +
+
static VALUE
+m_decode_url (VALUE self, VALUE str)
+{
+        const unsigned char *burl;
+        unsigned int blen;
+        xmmsv_t *strv, *decoded;
+        VALUE url = Qnil;
+
+        strv = xmmsv_new_string (StringValuePtr (str));
+
+        decoded = xmmsv_decode_url (strv);
+
+        if (!decoded)
+                goto out;
+
+        if (!xmmsv_get_bin (decoded, &burl, &blen))
+                goto out;
+
+        url = rb_str_new ((char *) burl, blen);
+
+out:
+        if (decoded)
+                xmmsv_unref (decoded);
+
+        xmmsv_unref (strv);
+
+        return url;
+}
+
+
+ +
+ +
+
+ + Xmms.userconfdir → String + + + +
+ + +
+

Returns the xmms2 configuration directory for the current user.

+
+ + + + + + + + +
+ + +
+
static VALUE
+m_userconfdir_get (VALUE self)
+{
+        const char *p;
+        char path[XMMS_PATH_MAX];
+
+        p = xmmsc_userconfdir_get (path, XMMS_PATH_MAX);
+
+        return p ? rb_str_new2 (p) : Qnil;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/BroadcastResult.html b/src/clients/lib/ruby/html/classes/Xmms/BroadcastResult.html new file mode 100644 index 000000000..4bf174573 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/BroadcastResult.html @@ -0,0 +1,140 @@ + + + + + Xmms::BroadcastResult + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
D
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Instance Public methods
+ +
+
+ + disconnect() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Client.html b/src/clients/lib/ruby/html/classes/Xmms/Client.html new file mode 100644 index 000000000..de2a4e314 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Client.html @@ -0,0 +1,4010 @@ + + + + + Xmms::Client + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + +
Methods
+
+ +
B
+
+ +
+ +
C
+
+ +
+ +
D
+
+ +
+ +
I
+
+ +
+ +
L
+
+ +
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
O
+
+ +
+ +
P
+
+ +
+ +
Q
+
+
    + + +
  • + quit +
  • + +
+
+ +
S
+
+ +
+ +
X
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + Xmms::Client.new(name) → xc + + + +
+ + +
+

Creates an Xmms::Client object.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_init (VALUE self, VALUE name)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        if (!(xmms->real = xmmsc_init (StringValuePtr (name)))) {
+                rb_raise (rb_eNoMemError, "failed to allocate memory");
+                return Qnil;
+        }
+
+        xmms->deleted = false;
+        xmms->result_callbacks = rb_ary_new ();
+        xmms->disconnect_cb = Qnil;
+        xmms->io_need_out_cb = Qnil;
+
+        return self;
+}
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + xc.bindata_add(str) → result + + + +
+ + +
+

Stores binary data on the server.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_bindata_add (VALUE self, VALUE data)
+{
+        METHOD_ADD_HANDLER_BIN (bindata_add, data);
+}
+
+
+ +
+ +
+
+ + xc.bindata_list → result + + + +
+ + +
+

List all bindata hashes stored on the server.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_bindata_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (bindata_list);
+}
+
+
+ +
+ +
+
+ + xc.bindata_remove(hash) → result + + + +
+ + +
+

Remove a datafile from the server.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_bindata_remove (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_remove, hash);
+}
+
+
+ +
+ +
+
+ + xc.bindata_retrieve(hash) → result + + + +
+ + +
+

Retrieves the bindata entry specified by hash (hex string) from the server.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_bindata_retrieve (VALUE self, VALUE hash)
+{
+        METHOD_ADD_HANDLER_STR (bindata_retrieve, hash);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_coll_changed → result + + + +
+ + +
+

The collection_changed broadcast, if requested, is called anytime a +collection is altered.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_coll_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_collection_changed)
+}
+
+
+ +
+ +
+
+ + xc.broadcast_config_value_changed → result + + + +
+ + +
+

Retrieves configuration properties as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_config_value_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_config_value_changed);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_mediainfo_reader_status → result + + + +
+ + +
+

Requests the status of the mediainfo reader.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_mediainfo_reader_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_mediainfo_reader_status);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_medialib_entry_added → result + + + +
+ + +
+

Retrieves the id of an added medialib entry as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_medialib_entry_added (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_added);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_medialib_entry_changed → result + + + +
+ + +
+

Retrieves the id of a changed medialib entry as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_medialib_entry_changed (VALUE self)
+{
+        RB_XMMS_DEPRECATED (broadcast_medialib_entry_changed, broadcast_medialib_entry_updated);
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_medialib_entry_removed → result + + + +
+ + +
+

Retrieves the id of an removed medialib entry as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_medialib_entry_removed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_removed);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_medialib_entry_changed → result + + + +
+ + +
+

Retrieves the id of a changed medialib entry as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_medialib_entry_updated (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_medialib_entry_updated);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_playback_current_id → result + + + +
+ + +
+

Retrieves the media id of the currently played track as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_current_id);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_playback_status → result + + + +
+ + +
+

Retrieves the playback status as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_status);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_volume_changed → result + + + +
+ + +
+

Registers a broadcast handler that's evoked when the playback volume +changes.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playback_volume_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playback_volume_changed);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_playlist_changed → result + + + +
+ + +
+

Retrieves a hash describing the change to the playlist as a broadcast.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playlist_changed (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_changed);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_playlist_current_pos → result + + + +
+ + +
+

Retrieves the current playlist position as a broadcast. See +playlist_current_pos.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playlist_current_pos (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_current_pos);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_playlist_loaded → result + + + +
+ + +
+

Will be called when a playlist has been loaded.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_playlist_loaded (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_playlist_loaded);
+}
+
+
+ +
+ +
+
+ + xc.broadcast_quit → result + + + +
+ + +
+

Will be called when the server is terminating.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_broadcast_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (broadcast_quit);
+}
+
+
+ +
+ +
+
+ + xc.coll_find(id, ns) → result + + + +
+ + +
+

Find all collections in the given namespace ns which contain +id.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_find (VALUE self, VALUE id, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_coll_find (xmms->real, check_int32 (id),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_get(name, [ns]) + + + +
+ + +
+

Returns a result containing an Xmms::Collection object referencing the +collection named name. The namespace ns is searched or +all namespaces if unspecified.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_get (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_get (xmms->real, StringValuePtr (name),
+                                      StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_idlist_from_playlist_file(path) → result + + + +
+ + +
+

Returns a collection of the idlist type from the playlist file at +path. path must be an unencoded string.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_idlist_from_playlist_file (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (coll_idlist_from_playlist_file, path)
+}
+
+
+ +
+ +
+
+ + xc.coll_list([ns]) → result + + + +
+ + +
+

Retrieves an array of the names of all the collections stored in the +medialib under the namespace ns. If ns is not specified, +it defaults to ALL.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "01", &ns);
+
+        if (NIL_P (ns))
+                ns = rb_str_new2 (XMMS_COLLECTION_NS_ALL);
+
+        res = xmmsc_coll_list (xmms->real, StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_query(coll, spec) → result + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_query (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, spec;
+        xmmsv_t *cspec;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "2", &coll, &spec);
+
+        cspec = xmmsv_new_dict ();
+
+        VALUE args = rb_ary_new3(4, xmms, coll, spec, (VALUE) cspec);
+
+        res = (xmmsc_result_t *) rb_ensure (c_coll_query_fragile, args,
+                                            c_coll_query_cleanup, (VALUE) cspec);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_query_ids(coll, [order], [start], [len]) → result + + + +
+ + +
+

Retrieves a list of all the ids of media matched by the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving ids and the maximum number of ids to retrieve, +respectively.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_query_ids (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len = Qnil;
+        xmmsv_t *corder = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "13", &coll, &order, &start, &len);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_coll_query_ids (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len));
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_query_info(coll, fetch, [order], [start], [len], [group]) → result + + + +
+ + +
+

Retrieves media info of media matched by the collection. fetch +should contain an array of properties to retrieve from the collection. +order specifies a list of properties to order by or no order if +omitted. start and len determine the offset at which to +start retrieving info and the maximum number of ids to retrieve, +respectively. group defines a list of properties to group by or no +grouping if omitted.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_query_info (int argc, VALUE *argv, VALUE self)
+{
+        VALUE coll, order = Qnil, start, len, fetch, group = Qnil;
+        xmmsv_t *cfetch = NULL, *corder = NULL, *cgroup = NULL;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "24", &coll, &fetch, &order, &start, &len,
+                      &group);
+
+        cfetch = parse_string_array2 (fetch);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        if (!NIL_P (group))
+                cgroup = parse_string_array2 (group);
+
+        res = xmmsc_coll_query_infos (xmms->real,
+                                    FROM_XMMS_CLIENT_COLLECTION (coll),
+                                    corder,
+                                    NIL_P (start) ? 0 : NUM2INT (start),
+                                    NIL_P (start) ? 0 : NUM2INT (len),
+                                    cfetch,
+                                    cgroup);
+        xmmsv_unref (cfetch);
+        if (corder) {
+                xmmsv_unref (corder);
+        }
+        if (cgroup) {
+                xmmsv_unref (cgroup);
+        }
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_remove(name, [ns]) → result + + + +
+ + +
+

Remove the collection named name from the media library. The +collection is removed from the namespace ns or all namespaces if +unspecified.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE name, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "11", &name, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_remove (xmms->real, StringValuePtr (name),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_rename(old, new, [ns]) → result + + + +
+ + +
+

Rename the saved collection from old to new within the +namespace ns or all namespaces.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_rename (int argc, VALUE *argv, VALUE self)
+{
+        VALUE old, new, ns = Qnil;
+        METHOD_HANDLER_HEADER
+
+        rb_scan_args (argc, argv, "21", &old, &new, &ns);
+
+        if (NIL_P (ns))
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         XMMS_COLLECTION_NS_ALL);
+        else
+                res = xmmsc_coll_rename (xmms->real,
+                                         StringValuePtr (old),
+                                         StringValuePtr (new),
+                                         StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.coll_save(coll, name, ns) → result + + + +
+ + +
+

Save the collection coll named name under the namespace +ns to the media library.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_save (VALUE self, VALUE coll, VALUE name, VALUE ns)
+{
+        METHOD_HANDLER_HEADER
+
+        /* FIXME: Check that we actually have a Collection object */
+
+        res = xmmsc_coll_save (xmms->real,
+                               FROM_XMMS_CLIENT_COLLECTION (coll),
+                               StringValuePtr (name),
+                               StringValuePtr (ns));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.config_get_value(key) → result + + + +
+ + +
+

Retrieves the value of the configuration property at key.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_config_get_value (VALUE self, VALUE key)
+{
+        METHOD_ADD_HANDLER_STR (config_get_value, key);
+}
+
+
+ +
+ +
+
+ + xc.config_list_values → result + + + +
+ + +
+

Retrieves a list of all config values.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_config_list_values (VALUE self)
+{
+        METHOD_ADD_HANDLER (config_list_values);
+}
+
+
+ +
+ +
+
+ + xc.config_register_value(key, default_value) → result + + + +
+ + +
+

Registers a configuration property at key with the given default +value.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_config_register_value (VALUE self, VALUE key, VALUE defval)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_register_value, key, defval);
+}
+
+
+ +
+ +
+
+ + xc.config_set_value(key, value) → result + + + +
+ + +
+

Sets the value of the configuration property at key to +value.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_config_set_value (VALUE self, VALUE key, VALUE val)
+{
+        METHOD_ADD_HANDLER_STR_STR (config_set_value, key, val);
+}
+
+
+ +
+ +
+
+ + xc.connect([path]) → self + + + +
+ + +
+

Connects xc to the XMMS2 daemon listening at path. If +path isn't given, the default path is used.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_connect (int argc, VALUE *argv, VALUE self)
+{
+        VALUE path;
+        RbXmmsClient *xmms = NULL;
+        char *p = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "01", &path);
+
+        if (!NIL_P (path))
+                p = StringValuePtr (path);
+
+        if (!xmmsc_connect (xmms->real, p))
+                rb_raise (eClientError,
+                          "cannot connect to daemon (%s)",
+                          xmmsc_get_last_error (xmms->real));
+
+        return self;
+}
+
+
+ +
+ +
+
+ + delete!() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_delete (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_unref (xmms->real);
+        xmms->deleted = true;
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + xc.io_disconnect → nil + + + +
+ + +
+

Disconnects the IPC socket. This should only be used by event loop +implementations.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_disconnect (xmms->real);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + xc.io_fd → integer + + + +
+ + +
+

Returns the file descriptor of the Xmms::Client +IPC socket.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_fd (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return INT2NUM (xmmsc_io_fd_get (xmms->real));
+}
+
+
+ +
+ +
+
+ + xc.io_in_handle → nil + + + +
+ + +
+

Retrieves one incoming (from server) clientlib command if there are any in +the buffer.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_in_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_in_handle (xmms->real);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + xc.io_on_need_out { |flag| } + + + +
+ + +
+

Sets the block that's called when the output socket state changes.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_on_need_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->io_need_out_cb = rb_block_proc ();
+
+        xmmsc_io_need_out_callback_set (xmms->real,
+                                        on_io_need_out, (void *) self);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + xc.io_out_handle → nil + + + +
+ + +
+

Sends one outgoing (to server) clientlib command. You should check io_want_out before calling this +method.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_out_handle (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmmsc_io_out_handle (xmms->real);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + xc.io_want_out → true or false + + + +
+ + +
+

Returns true if an outgoing (to server) clientlib command is +pending, false otherwise.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_io_want_out (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        return xmmsc_io_want_out (xmms->real) ? Qtrue : Qfalse;
+}
+
+
+ +
+ +
+
+ + xc.last_error → string or nil + + + +
+ + +
+

Returns the last error that occured in xc or nil, if +no error occured yet.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_last_error_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        const char *s;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        s = xmmsc_get_last_error (xmms->real);
+
+        return s ? rb_str_new2 (s) : Qnil;
+}
+
+
+ +
+ +
+
+ + xc.main_stats → result + + + +
+ + +
+

Retrieves a hash containing statistics about the daemon.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_main_stats (VALUE self)
+{
+        METHOD_ADD_HANDLER (main_stats);
+}
+
+
+ +
+ +
+
+ + xc.medialib_add_entry(url) → result + + + +
+ + +
+

Adds url to the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_add_entry (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_add_entry, url);
+}
+
+
+ +
+ +
+
+ + xc.medialib_entry_move(id, url) → result + + + +
+ + +
+

Moves the entry specified by id to a new URL without changing +mediainfo.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_entry_move (VALUE self, VALUE id, VALUE url)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_medialib_move_entry (xmms->real, check_int32 (id),
+                                         StringValuePtr (url));
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.medialib_entry_property_remove(id, key, *source) → result + + + +
+ + +
+

Remove a custom field in the medialib associated with the entry +id. source is an optional argument that describes where +to write the mediainfo. If source is omitted, +“client/<yourclient>” is used, where <yourclient> is the name +you specified in ::new.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_entry_property_remove (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        int32_t id;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "21", &tmp, &key, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_remove (xmms->real, id,
+                                                            ckey);
+        else
+                res = xmmsc_medialib_entry_property_remove_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+
+ +
+ +
+
+ + xc.medialib_entry_property_set(id, key, value, *source) → result + + + +
+ + +
+

Write info to the medialib at id. source is an optional +argument that describes where to write the mediainfo. If source is +omitted, the mediainfo is written to “client/<yourclient>” where +<yourclient> is the name you specified in ::new.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_entry_property_set (int argc, VALUE *argv, VALUE self)
+{
+        VALUE tmp, key, value, src = Qnil;
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+        const char *ckey;
+        bool is_str = false;
+        int32_t id, ivalue;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        rb_scan_args (argc, argv, "31", &tmp, &key, &value, &src);
+
+        id = check_int32 (tmp);
+        Check_Type (key, T_SYMBOL);
+
+        if (!NIL_P (rb_check_string_type (value)))
+                is_str = true;
+        else
+                ivalue = check_int32 (value);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        if (NIL_P (src) && is_str)
+                res = xmmsc_medialib_entry_property_set_str (xmms->real, id,
+                                                             ckey,
+                                                             StringValuePtr (value));
+        else if (NIL_P (src))
+                res = xmmsc_medialib_entry_property_set_int (xmms->real, id,
+                                                             ckey, ivalue);
+        else if (is_str)
+                res = xmmsc_medialib_entry_property_set_str_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey,
+                        StringValuePtr (value));
+        else
+                res = xmmsc_medialib_entry_property_set_int_with_source (
+                        xmms->real, id,
+                        StringValuePtr (src),
+                        ckey, ivalue);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+
+ +
+ +
+
+ + xc.medialib_entry_remove(id) → result + + + +
+ + +
+

Removes the entry specified by id from the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_entry_remove (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_remove_entry, id)
+}
+
+
+ +
+ +
+
+ + xc.medialib_get_id(url) → result + + + +
+ + +
+

Retrieves the id corresponding to url.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_get_id (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (medialib_get_id, url);
+}
+
+
+ +
+ +
+
+ + xc.medialib_get_info(id) → result + + + +
+ + +
+

Retrieves medialib info for id.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_get_info (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_get_info, id);
+}
+
+
+ +
+ +
+
+ + xc.medialib_path_import(path) → result + + + +
+ + +
+

Recursively imports all media files under path to the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_path_import (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path, path);
+}
+
+
+ +
+ +
+
+ + xc.medialib_path_import(path) → result + + + +
+ + +
+

Recursively imports all media files under the url encoded path to +the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_path_import_encoded (VALUE self, VALUE path)
+{
+        METHOD_ADD_HANDLER_STR (medialib_import_path_encoded, path);
+}
+
+
+ +
+ +
+
+ + xc.medialib_rehash(id) → result + + + +
+ + +
+

Rehashes the medialib entry at id or the whole medialib if +id == 0.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_medialib_rehash (VALUE self, VALUE id)
+{
+        METHOD_ADD_HANDLER_INT (medialib_rehash, id);
+}
+
+
+ +
+ +
+
+ + xc.on_disconnect { } → self + + + +
+ + +
+

Sets the block that's executed when xc is disconnected from +the XMMS2 daemon.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_on_disconnect (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        xmms->disconnect_cb = rb_block_proc ();
+
+        xmmsc_disconnect_callback_set (xmms->real,
+                                       on_disconnect, (void *) self);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + xc.playback_current_id → result + + + +
+ + +
+

Retrieves the media id of the currently played track.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_current_id (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_current_id);
+}
+
+
+ +
+ +
+
+ + xc.playback_pause → result + + + +
+ + +
+

Pauses playback.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_pause (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_pause);
+}
+
+
+ +
+ +
+
+ + xc.playback_playtime → result + + + +
+ + +
+

Retrieves the playtime.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_playtime);
+}
+
+
+ +
+ +
+
+ + xc.playback_seek_ms(ms) → result + + + +
+ + +
+

Seek to the song position given in ms.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_seek_ms (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.playback_seek_ms_rel(ms) → result + + + +
+ + +
+

Seek in the song by the offset given in ms.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_seek_ms_rel (VALUE self, VALUE ms)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_ms (xmms->real,
+                                      check_int32 (ms),
+                                      XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.playback_seek_samples(samples) → result + + + +
+ + +
+

Seek to the song position given in samples.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_seek_samples (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_SET);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.playback_seek_samples_rel(samples) → result + + + +
+ + +
+

Seek in the song position by the offset given in samples.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_seek_samples_rel (VALUE self, VALUE samples)
+{
+        METHOD_HANDLER_HEADER
+
+        res = xmmsc_playback_seek_samples (xmms->real,
+                                           check_int32 (samples),
+                                           XMMS_PLAYBACK_SEEK_CUR);
+
+        METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + xc.playback_start → result + + + +
+ + +
+

Starts playback.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_start (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_start);
+}
+
+
+ +
+ +
+
+ + xc.playback_status → result + + + +
+ + +
+

Retrieves the playback status.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_status (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_status);
+}
+
+
+ +
+ +
+
+ + xc.playback_stop → result + + + +
+ + +
+

Stops playback.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_stop (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_stop);
+}
+
+
+ +
+ +
+
+ + xc.playback_tickle → result + + + +
+ + +
+

Advances to the next playlist entry.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_tickle (VALUE self)
+{
+        METHOD_ADD_HANDLER (playback_tickle);
+}
+
+
+ +
+ +
+
+ + xc.playback_volume_get → result + + + +
+ + +
+

Gets the current playback volume.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_volume_get (VALUE self)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        res = xmmsc_playback_volume_get (xmms->real);
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+
+ +
+ +
+
+ + xc.playback_volume_set(channel, volume) → result + + + +
+ + +
+

Sets playback volume for channel to volume.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playback_volume_set (VALUE self, VALUE channel, VALUE volume)
+{
+        RbXmmsClient *xmms = NULL;
+        xmmsc_result_t *res;
+
+        Data_Get_Struct (self, RbXmmsClient, xmms);
+
+        CHECK_DELETED (xmms);
+
+        Check_Type (channel, T_SYMBOL);
+        Check_Type (volume, T_FIXNUM);
+
+        res = xmmsc_playback_volume_set (xmms->real,
+                                         rb_id2name (SYM2ID (channel)),
+                                         NUM2INT (volume));
+
+        return TO_XMMS_CLIENT_RESULT (self, res);
+}
+
+
+ +
+ +
+
+ + xc.playlist([name]) → p + + + +
+ + +
+

Shortcut for Xmms::Playlist.new. +Creates a new Xmms::Playlist object tied to the +current Xmms::Client instance. name is +is the name of the playlist and the active playlist will be used if it is +not specified. Raises PlaylistError if the playlist name is invalid.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playlist (int argc, VALUE *argv, VALUE self)
+{
+        VALUE args[2] = {self, Qnil};
+
+        rb_scan_args (argc, argv, "01", &args[1]);
+
+        return rb_class_new_instance (2, args, cPlaylist);
+}
+
+
+ +
+ +
+
+ + xc.playlist_current_active → result + + + +
+ + +
+

Retrieves the name of the active playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playlist_current_active (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_current_active);
+}
+
+
+ +
+ +
+
+ + xc.playlist_list → result + + + +
+ + +
+

Retrieves a list of all saved playlists from the medialib. Note that +clients should treat internally used playlists (marked with a leading +underscore) carefully.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playlist_list (VALUE self)
+{
+        METHOD_ADD_HANDLER (playlist_list);
+}
+
+
+ +
+ +
+
+ + xc.playlist_set_next(pos) → result + + + +
+ + +
+

Sets the next song to be played to pos (an absolute position).

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playlist_set_next (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next, pos);
+}
+
+
+ +
+ +
+
+ + xc.playlist_set_next_rel(pos) → result + + + +
+ + +
+

Sets the next song to be played based on the current position where +pos is a value relative to the current position.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_playlist_set_next_rel (VALUE self, VALUE pos)
+{
+        METHOD_ADD_HANDLER_INT (playlist_set_next_rel, pos);
+}
+
+
+ +
+ +
+
+ + xc.plugin_list → result + + + +
+ + +
+

Retrieves an array containing a hash of information for each plugin.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_plugin_list (int argc, VALUE *argv, VALUE self)
+{
+        VALUE type = Qnil;
+
+        rb_scan_args (argc, argv, "01", &type);
+
+        if (NIL_P (type))
+                type = INT2FIX (XMMS_PLUGIN_TYPE_ALL);
+
+        METHOD_ADD_HANDLER_INT (main_list_plugins, type);
+}
+
+
+ +
+ +
+
+ + xc.quit → result + + + +
+ + +
+

Shuts down the XMMS2 daemon.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_quit (VALUE self)
+{
+        METHOD_ADD_HANDLER (quit);
+}
+
+
+ +
+ +
+
+ + xc.signal_mediainfo_reader_unindexed → result + + + +
+ + +
+

Requests the number of unindexed entries in the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_signal_mediainfo_reader_unindexed (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_mediainfo_reader_unindexed);
+}
+
+
+ +
+ +
+
+ + xc.signal_playback_playtime → result + + + +
+ + +
+

Retrieves the playtime as a signal.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_signal_playback_playtime (VALUE self)
+{
+        METHOD_ADD_HANDLER (signal_playback_playtime);
+}
+
+
+ +
+ +
+
+ + xc.xform_media_browse(url) → result + + + +
+ + +
+

returns a list of files from the server

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_xform_media_browse (VALUE self, VALUE url)
+{
+        METHOD_ADD_HANDLER_STR (xform_media_browse, url);
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Client/Async.html b/src/clients/lib/ruby/html/classes/Xmms/Client/Async.html new file mode 100644 index 000000000..fadf46aa6 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Client/Async.html @@ -0,0 +1,211 @@ + + + + + Xmms::Client::Async + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(name) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 22
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args, &block) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 26
+def method_missing(id, *args, &block)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(block_given? && (ret.is_a?(Xmms::Result) ||
+           ret.is_a?(Xmms::BroadcastResult) || ret.is_a?(Xmms::SignalResult)))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Async.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Async.new(ret)
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Client/ClientError.html b/src/clients/lib/ruby/html/classes/Xmms/Client/ClientError.html new file mode 100644 index 000000000..82ea80be1 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Client/ClientError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Client::ClientError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Client/DisconnectedError.html b/src/clients/lib/ruby/html/classes/Xmms/Client/DisconnectedError.html new file mode 100644 index 000000000..c6bbc2337 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Client/DisconnectedError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Client::DisconnectedError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Client/Sync.html b/src/clients/lib/ruby/html/classes/Xmms/Client/Sync.html new file mode 100644 index 000000000..5aed99b72 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Client/Sync.html @@ -0,0 +1,211 @@ + + + + + Xmms::Client::Sync + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(name) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 22
+def initialize(name)
+        @real = Xmms::Client.new(name)
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 26
+def method_missing(id, *args)
+        args.push(&block) if(id == 'on_disconnect')
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result) || ret.is_a?(Xmms::BroadcastResult) ||
+           ret.is_a?(Xmms::SignalResult))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Client))
+                self
+        elsif(ret.is_a?(Xmms::Collection))
+                Xmms::Collection::Sync.new(ret)
+        elsif(ret.is_a?(Xmms::Playlist))
+                Xmms::Playlist::Sync.new(ret)
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection.html b/src/clients/lib/ruby/html/classes/Xmms/Collection.html new file mode 100644 index 000000000..f1d9475d6 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection.html @@ -0,0 +1,968 @@ + + + + + Xmms::Collection + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + +
Methods
+
+ +
#
+
+
    + + +
  • + & +
  • + +
+
+ +
A
+
+ +
+ +
C
+
+ +
+ +
I
+
+ +
+ +
N
+
+
    + + +
  • + new, +
  • + + +
  • + not +
  • + +
+
+ +
O
+
+ +
+ +
P
+
+ +
+ +
T
+
+
    + + +
  • + type +
  • + +
+
+ +
U
+
+ +
+ +
#
+
+
    + + +
  • + |, +
  • + + +
  • + ~ +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + c = Xmms::Collection.new(type) + + + +
+ + +
+

Returns a new Xmms::Collection object of type +type.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_init (VALUE self, VALUE type)
+{
+        COLL_METHOD_HANDLER_HEADER
+
+        coll->real = xmmsv_new_coll (check_int32 (type));
+
+        return self;
+}
+
+
+ +
+ +
+
+ + c = Xmms::Collection.parse(pattern) + + + +
+ + +
+

Returns a collection matching a String pattern. See the wiki for +details on how to construct a pattern string.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_parse (VALUE klass, VALUE pattern)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        if (!xmmsv_coll_parse (StringValuePtr (pattern), &coll->real)) {
+                rb_raise (ePatternError, "invalid pattern");
+        }
+
+        return obj;
+}
+
+
+ +
+ +
+
+ + c = Xmms::Collection.universe + + + +
+ + +
+

Returns a collection referencing the “All Media” set.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_universe (VALUE klass)
+{
+        VALUE obj = rb_obj_alloc (klass);
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (obj, RbCollection, coll);
+
+        coll->real = xmmsv_new_coll (XMMS_COLLECTION_TYPE_UNIVERSE);
+
+        return obj;
+}
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + &(other) + + +
+ + +
+ +
+ + + + + +
+ Alias for: intersect +
+ + + +
+ +
+
+ + and(other) + + +
+ + +
+ +
+ + + + + +
+ Alias for: intersect +
+ + + +
+ +
+
+ + c.attributes + + + +
+ + +
+

Returns the attributes of the collection.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_attributes (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->attributes))
+                coll->attributes = rb_class_new_instance (1, &self, cAttributes);
+
+        return coll->attributes;
+}
+
+
+ +
+ +
+
+ + c.complement → collection + + + +
+ + +
+

Returns a new collection that is the logical complement of c.

+
+ + + +
+ Also aliased as: not, ~ +
+ + + + + + +
+ + +
+
# File xmmsclient.rb, line 49
+def complement
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_COMPLEMENT)
+        c.operands << self
+        c
+end
+
+
+ +
+ +
+
+ + c.idlist + + + +
+ + +
+

Gets the list of media ids that make up the collection.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_idlist_get (VALUE self)
+{
+        VALUE ary = rb_ary_new ();
+        xmmsv_t *ret = NULL;
+        xmmsv_list_iter_t *it = NULL;
+        int32_t entry;
+
+        COLL_METHOD_ADD_HANDLER_RET (idlist_get)
+
+        xmmsv_get_list_iter (ret, &it);
+        for (xmmsv_list_iter_first (it);
+             xmmsv_list_iter_valid (it);
+             xmmsv_list_iter_next (it)) {
+
+                xmmsv_list_iter_entry_int (it, &entry);
+                rb_ary_push (ary, INT2NUM (entry));
+        }
+        xmmsv_list_iter_explicit_destroy (it);
+
+        return ary;
+}
+
+
+ +
+ +
+
+ + c.idlist=(_idlist_) + + + +
+ + +
+

Sets the list of media ids that make up the collection.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_idlist_set (VALUE self, VALUE ids)
+{
+        int i;
+        int *ary = NULL;
+        VALUE *rb_ary;
+        int rb_ary_len;
+
+        Check_Type (ids, T_ARRAY);
+        COLL_METHOD_HANDLER_HEADER
+
+        rb_ary = RARRAY_PTR (ids);
+        rb_ary_len = RARRAY_LEN (ids);
+
+        ary = malloc (sizeof (int) * (rb_ary_len + 1));
+
+        for (i = 0; i < rb_ary_len; i++)
+                ary[i] = NUM2INT (rb_ary[i]);
+
+        ary[i] = 0;
+
+        xmmsv_coll_set_idlist (coll->real, ary);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + c.intersect(other) → collection + + + +
+ + +
+

Returns a new collection that is the logical AND of c and +other.

+
+ + + +
+ Also aliased as: and, & +
+ + + + + + +
+ + +
+
# File xmmsclient.rb, line 37
+def intersect(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_INTERSECTION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+
+ +
+ +
+
+ + not() + + +
+ + +
+ +
+ + + + + +
+ Alias for: complement +
+ + + +
+ +
+
+ + c.operands + + + +
+ + +
+

Gets a list of the operands that make up the collection.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_operands (VALUE self)
+{
+        RbCollection *coll = NULL;
+
+        Data_Get_Struct (self, RbCollection, coll);
+
+        if (NIL_P (coll->operands))
+                coll->operands = rb_class_new_instance (1, &self, cOperands);
+
+        return coll->operands;
+}
+
+
+ +
+ +
+
+ + or(other) + + +
+ + +
+ +
+ + + + + +
+ Alias for: union +
+ + + +
+ +
+
+ + c.type + + + +
+ + +
+

Returns the type of the collection as an Integer.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_coll_type_get (VALUE self)
+{
+        xmmsc_coll_type_t ret;
+
+        COLL_METHOD_ADD_HANDLER_RET (get_type)
+
+        return INT2NUM (ret);
+}
+
+
+ +
+ +
+
+ + c.union(other) → collection + + + +
+ + +
+

Returns a new collection that is the logical OR of c and +other.

+
+ + + +
+ Also aliased as: or, | +
+ + + + + + +
+ + +
+
# File xmmsclient.rb, line 25
+def union(other)
+        c = Xmms::Collection.new(Xmms::Collection::TYPE_UNION)
+        c.operands << self
+        c.operands << other
+        c
+end
+
+
+ +
+ +
+
+ + |(other) + + +
+ + +
+ +
+ + + + + +
+ Alias for: union +
+ + + +
+ +
+
+ + ~() + + +
+ + +
+ +
+ + + + + +
+ Alias for: complement +
+ + + +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/Async.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/Async.html new file mode 100644 index 000000000..4451480c3 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/Async.html @@ -0,0 +1,205 @@ + + + + + Xmms::Collection::Async + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(coll) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 47
+def initialize(coll)
+        @real = coll
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args, &block) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 51
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/Attributes.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/Attributes.html new file mode 100644 index 000000000..77199580b --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/Attributes.html @@ -0,0 +1,754 @@ + + + + + Xmms::Collection::Attributes + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
#
+
+
    + + +
  • + [], +
  • + + +
  • + []= +
  • + +
+
+ +
D
+
+ +
+ +
E
+
+ +
+ +
H
+
+ +
+ +
I
+
+ +
+ +
K
+
+
    + + +
  • + key? +
  • + +
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + +
Included Modules
+
    + +
  • + + Enumerable + +
  • + +
+ + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + new(p1) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + [](p1) + + +
+ + +
+

HAVE_RB_PROTECT_INSPECT

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_aref (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+        const char *value;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), &value);
+        if (!s)
+                return Qnil;
+
+        return rb_str_new2 (value);
+}
+
+
+ +
+ +
+
+ + []=(p1, p2) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_aset (VALUE self, VALUE key, VALUE value)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+        StringValue (value);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_set_string (coll->real, StringValuePtr (key),
+                                         StringValuePtr (value));
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + delete(p1) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_delete (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        xmmsv_coll_attribute_remove (coll->real, StringValuePtr (key));
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + each() + + +
+ + +
+ +
+ + + +
+ Also aliased as: each_pair +
+ + + + + + +
+ + +
+
static VALUE
+c_attrs_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_PAIR));
+
+        return self;
+}
+
+
+ +
+ +
+
+ + each_key() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_each_key (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_KEY));
+
+        return self;
+}
+
+
+ +
+ +
+
+ + each_pair() + + +
+ + +
+ +
+ + + + + +
+ Alias for: each +
+ + + +
+ +
+
+ + each_value() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_each_value (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *attributes;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        attributes = xmmsv_coll_attributes_get (coll->real);
+
+        xmmsv_dict_foreach (attributes, attr_each,
+                            XINT_TO_POINTER (EACH_VALUE));
+
+        return self;
+}
+
+
+ +
+ +
+
+ + has_key?(p1) + + +
+ + +
+ +
+ + + +
+ Also aliased as: include?, key?, member? +
+ + + + + + +
+ + +
+
static VALUE
+c_attrs_has_key (VALUE self, VALUE key)
+{
+        RbCollection *coll = NULL;
+        VALUE tmp;
+        int s;
+
+        StringValue (key);
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        s = xmmsv_coll_attribute_get_string (coll->real, StringValuePtr (key), NULL);
+
+        return s ? Qtrue : Qfalse;
+}
+
+
+ +
+ +
+
+ + include?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+ +
+
+ + inspect() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_attrs_inspect (VALUE self)
+{
+        return rb_protect_inspect (attrs_inspect, self, 0);
+}
+
+
+ +
+ +
+
+ + key?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+ +
+
+ + member?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/ClientError.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/ClientError.html new file mode 100644 index 000000000..b5e4acd2b --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/ClientError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Collection::ClientError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/CollectionError.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/CollectionError.html new file mode 100644 index 000000000..6a8e4840c --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/CollectionError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Collection::CollectionError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/DisconnectedError.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/DisconnectedError.html new file mode 100644 index 000000000..619908a2f --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/DisconnectedError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Collection::DisconnectedError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/Operands.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/Operands.html new file mode 100644 index 000000000..551008efe --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/Operands.html @@ -0,0 +1,372 @@ + + + + + Xmms::Collection::Operands + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
#
+
+
    + + +
  • + << +
  • + +
+
+ +
D
+
+ +
+ +
E
+
+
    + + +
  • + each +
  • + +
+
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
P
+
+
    + + +
  • + push +
  • + +
+
+ +
+ + + + +
Included Modules
+
    + +
  • + + Enumerable + +
  • + +
+ + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + new(p1) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_operands_init (VALUE self, VALUE collection)
+{
+        rb_iv_set (self, "collection", collection);
+
+        return self;
+}
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + <<(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: push +
+ + + +
+ +
+
+ + delete(p1) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_operands_delete (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_remove_operand (coll->real, coll2->real);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + each() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_operands_each (VALUE self)
+{
+        RbCollection *coll = NULL;
+        xmmsv_t *operands_list;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        operands_list = xmmsv_coll_operands_get (coll->real);
+
+        xmmsv_list_foreach (operands_list, operands_each, NULL);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + push(p1) + + +
+ + +
+ +
+ + + +
+ Also aliased as: << +
+ + + + + + +
+ + +
+
static VALUE
+c_operands_push (VALUE self, VALUE arg)
+{
+        RbCollection *coll = NULL, *coll2 = NULL;
+        VALUE tmp;
+
+        tmp = rb_iv_get (self, "collection");
+        Data_Get_Struct (tmp, RbCollection, coll);
+
+        Data_Get_Struct (arg, RbCollection, coll2);
+
+        xmmsv_coll_add_operand (coll->real, coll2->real);
+
+        return self;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/PatternError.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/PatternError.html new file mode 100644 index 000000000..66dc5d32a --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/PatternError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Collection::PatternError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection/Sync.html b/src/clients/lib/ruby/html/classes/Xmms/Collection/Sync.html new file mode 100644 index 000000000..461184cd7 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection/Sync.html @@ -0,0 +1,205 @@ + + + + + Xmms::Collection::Sync + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(coll) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 48
+def initialize(coll)
+        @real = coll
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 52
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Collection2.html b/src/clients/lib/ruby/html/classes/Xmms/Collection2.html new file mode 100644 index 000000000..3b634f210 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Collection2.html @@ -0,0 +1,112 @@ + + + + + Xmms::Collection2 + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Constants
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NS_ALL=rb_str_new2 (XMMS_COLLECTION_NS_ALL)
 
NS_COLLECTIONS=rb_str_new2 (XMMS_COLLECTION_NS_COLLECTIONS)
 
NS_PLAYLISTS=rb_str_new2 (XMMS_COLLECTION_NS_PLAYLISTS)
 
+ + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Dict.html b/src/clients/lib/ruby/html/classes/Xmms/Dict.html new file mode 100644 index 000000000..d32cfc8b3 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Dict.html @@ -0,0 +1,722 @@ + + + + + Xmms::Dict + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
#
+
+
    + + +
  • + [] +
  • + +
+
+ +
E
+
+ +
+ +
H
+
+ +
+ +
I
+
+ +
+ +
K
+
+
    + + +
  • + key? +
  • + +
+
+ +
L
+
+ +
+ +
M
+
+ +
+ +
S
+
+
    + + +
  • + size +
  • + +
+
+ +
+ + + + +
Included Modules
+
    + +
  • + + Enumerable + +
  • + +
+ + + + + + + + + + + + + + + + + + +
Instance Public methods
+ +
+
+ + [](p1) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_dict_aref (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        xmmsv_t *value;
+        const char *ckey;
+        int s;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        s = xmmsv_dict_iter_find (it, ckey);
+        if (!s)
+                return Qnil;
+
+        xmmsv_dict_iter_pair (it, NULL, &value);
+
+        return extract_value (self, value);
+}
+
+
+ +
+ +
+
+ + each() + + +
+ + +
+ +
+ + + +
+ Also aliased as: each_pair +
+ + + + + + +
+ + +
+
static VALUE
+c_dict_each (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_pair, &self);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + each_key() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_dict_each_key (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_key, NULL);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + each_pair() + + +
+ + +
+ +
+ + + + + +
+ Alias for: each +
+ + + +
+ +
+
+ + each_value() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_dict_each_value (VALUE self)
+{
+        RbDict *dict = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        xmmsv_dict_foreach (dict->real, dict_each_value, &self);
+
+        return self;
+}
+
+
+ +
+ +
+
+ + empty?() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_dict_empty (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return size == 0 ? Qtrue : Qfalse;
+}
+
+
+ +
+ +
+
+ + has_key?(p1) + + +
+ + +
+ +
+ + + +
+ Also aliased as: include?, key?, member? +
+ + + + + + +
+ + +
+
static VALUE
+c_dict_has_key (VALUE self, VALUE key)
+{
+        RbDict *dict = NULL;
+        xmmsv_dict_iter_t *it;
+        const char *ckey;
+
+        Check_Type (key, T_SYMBOL);
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        ckey = rb_id2name (SYM2ID (key));
+
+        xmmsv_get_dict_iter (dict->real, &it);
+
+        return xmmsv_dict_iter_find (it, ckey) ? Qtrue : Qfalse;
+}
+
+
+ +
+ +
+
+ + include?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+ +
+
+ + inspect() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_dict_inspect (VALUE self)
+{
+        return rb_protect_inspect (dict_inspect, self, 0);
+}
+
+
+ +
+ +
+
+ + key?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+ +
+
+ + length() + + +
+ + +
+ +
+ + + + + +
+ Alias for: size +
+ + + +
+ +
+
+ + member?(p1) + + +
+ + +
+ +
+ + + + + +
+ Alias for: has_key? +
+ + + +
+ +
+
+ + size() + + +
+ + +
+ +
+ + + +
+ Also aliased as: length +
+ + + + + + +
+ + +
+
static VALUE
+c_dict_size (VALUE self)
+{
+        RbDict *dict = NULL;
+        int size;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        size = xmmsv_dict_get_size (dict->real);
+
+        return INT2NUM (size);
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist.html new file mode 100644 index 000000000..11d072294 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist.html @@ -0,0 +1,978 @@ + + + + + Xmms::Playlist + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + +
Methods
+
+ +
A
+
+ +
+ +
C
+
+ +
+ +
E
+
+ +
+ +
I
+
+ +
+ +
L
+
+
    + + +
  • + load +
  • + +
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + name, +
  • + + +
  • + new +
  • + +
+
+ +
R
+
+ +
+ +
S
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Class Public methods
+ +
+
+ + pl = Xmms::Playlist.new(xc, [name]) + + + +
+ + +
+

Initializes a new Xmms::Playlist using the +playlist named name and the Xmms::Client +instance xc. Xmms::Client#playlist is a useful +shortcut. name is is the name of the playlist and the active +playlist will be used if it is not specified. Raises PlaylistError if the playlist name +is invalid.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_init (int argc, VALUE *argv, VALUE self)
+{
+        RbPlaylist *pl = NULL;
+        VALUE name, xmms = Qnil;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        rb_scan_args (argc, argv, "11", &xmms, &name);
+
+        /* FIXME: Check type! */
+        pl->xmms = xmms;
+
+        if (NIL_P (name))
+                pl->name_value = rb_str_new2 (XMMS_ACTIVE_PLAYLIST);
+        else
+                pl->name_value = rb_str_dup (name);
+
+        OBJ_FREEZE (pl->name_value);
+
+        pl->name = StringValuePtr (pl->name_value);
+
+        return self;
+}
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + pl.add_collection(coll [, order]) → result + + + +
+ + +
+

Adds the collection coll to the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_add_collection (int argc, VALUE *argv, VALUE self)
+{
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        VALUE rbcoll, order = Qnil;
+        xmmsv_t *corder = NULL;
+        xmmsc_coll_t *coll;
+
+        rb_scan_args (argc, argv, "11", &rbcoll, &order);
+
+        coll = FROM_XMMS_CLIENT_COLLECTION (rbcoll);
+
+        if (!NIL_P (order))
+                corder = parse_string_array2 (order);
+
+        res = xmmsc_playlist_add_collection (xmms->real, pl->name,
+                                             coll, corder);
+
+        if (corder)
+                xmmsv_unref (corder);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + pl.add_entry(arg) → result + + + +
+ + +
+

Adds an entry to the playlist. arg can be either a URL or an id.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_add_entry (VALUE self, VALUE arg)
+{
+        int32_t id;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_add_url (xmms->real, pl->name,
+                                              StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_add_id (xmms->real, pl->name, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + pl.clear → result + + + +
+ + +
+

Clears the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_clear (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (clear)
+}
+
+
+ +
+ +
+
+ + pl.current_pos → result + + + +
+ + +
+

Retrieves the current position of the playlist. May raise an Xmms::Result::ValueError exception if the +current position is undefined.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_current_pos (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (current_pos)
+}
+
+
+ +
+ +
+
+ + pl.entries → result + + + +
+ + +
+

Retrieves an array containing ids for each position of the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_list_entries (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (list_entries)
+}
+
+
+ +
+ +
+
+ + pl.insert_entry(pos, arg) → result + + + +
+ + +
+

Inserts an entry to the current playlist at position pos in the +playlist. arg can be either a URL or an id.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_insert_entry (VALUE self, VALUE pos, VALUE arg)
+{
+        int32_t id;
+        int32_t ipos;
+
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        ipos = check_int32 (pos);
+
+        if (!NIL_P (rb_check_string_type (arg)))
+                res = xmmsc_playlist_insert_url (xmms->real, pl->name,
+                                                 ipos, StringValuePtr (arg));
+        else {
+                id = check_int32 (arg);
+                res = xmmsc_playlist_insert_id (xmms->real, pl->name,
+                                                ipos, id);
+        }
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+
+ +
+ +
+
+ + pl.load → result + + + +
+ + +
+

Loads the playlist as the current active playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_load (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (load);
+}
+
+
+ +
+ +
+
+ + pl.playlist_move_entry(current_pos, new_pos) → result + + + +
+ + +
+

Moves the entry at current_pos to new_pos in the +playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_move_entry (VALUE self, VALUE cur_pos, VALUE new_pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_INT (move_entry, cur_pos, new_pos)
+}
+
+
+ +
+ +
+
+ + pl.name → string + + + +
+ + +
+

Returns the name of the playlist in the medialib as a String.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_name (VALUE self)
+{
+        RbPlaylist *pl = NULL;
+
+        Data_Get_Struct (self, RbPlaylist, pl);
+
+        return pl->name_value;
+}
+
+
+ +
+ +
+
+ + pl.radd(path) → result + + + +
+ + +
+

Recursively imports all media files under path to the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_radd (VALUE self, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_STR (radd, path);
+}
+
+
+ +
+ +
+
+ + pl.remove → result + + + +
+ + +
+

Removes the playlist from the medialib.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_remove (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (remove);
+}
+
+
+ +
+ +
+
+ + pl.remove_entry(pos) → result + + + +
+ + +
+

Removes the entry at pos from the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_remove_entry (VALUE self, VALUE pos)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT (remove_entry, pos)
+}
+
+
+ +
+ +
+
+ + pl.rinsert(pos, path) → result + + + +
+ + +
+

Recursively imports all media files under path at position +pos in the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_rinsert (VALUE self, VALUE pos, VALUE path)
+{
+        PLAYLIST_METHOD_ADD_HANDLER_INT_STR (rinsert, pos, path);
+}
+
+
+ +
+ +
+
+ + pl.shuffle → result + + + +
+ + +
+

Shuffles the playlist.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_shuffle (VALUE self)
+{
+        PLAYLIST_METHOD_ADD_HANDLER (shuffle)
+}
+
+
+ +
+ +
+
+ + pl.sort(properties) → result + + + +
+ + +
+

Sorts the playlist on properties, which is an array of medialib +properties such as [“title”, “artist”].

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_sort (VALUE self, VALUE props)
+{
+        xmmsv_t *cprops;
+        PLAYLIST_METHOD_HANDLER_HEADER
+
+        cprops = parse_string_array2 (props);
+        res = xmmsc_playlist_sort (xmms->real, pl->name, cprops);
+        xmmsv_unref (cprops);
+
+        PLAYLIST_METHOD_HANDLER_FOOTER
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist/Async.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist/Async.html new file mode 100644 index 000000000..7ff7547bb --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist/Async.html @@ -0,0 +1,205 @@ + + + + + Xmms::Playlist::Async + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(plist) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 66
+def initialize(plist)
+        @real = plist
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args, &block) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File async.rb, line 70
+def method_missing(id, *args, &block)
+        ret = @real.send(id, *args)
+        if(block_given? && ret.is_a?(Xmms::Result))
+                ret.notifier(&block)
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist/ClientError.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist/ClientError.html new file mode 100644 index 000000000..dc9d09315 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist/ClientError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Playlist::ClientError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist/DisconnectedError.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist/DisconnectedError.html new file mode 100644 index 000000000..aabf5ecd0 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist/DisconnectedError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Playlist::DisconnectedError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist/PlaylistError.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist/PlaylistError.html new file mode 100644 index 000000000..b87660cf3 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist/PlaylistError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Playlist::PlaylistError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Playlist/Sync.html b/src/clients/lib/ruby/html/classes/Xmms/Playlist/Sync.html new file mode 100644 index 000000000..7dbb9ba5e --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Playlist/Sync.html @@ -0,0 +1,205 @@ + + + + + Xmms::Playlist::Sync + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(plist) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 67
+def initialize(plist)
+        @real = plist
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 71
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/RawDict.html b/src/clients/lib/ruby/html/classes/Xmms/RawDict.html new file mode 100644 index 000000000..ac223877e --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/RawDict.html @@ -0,0 +1,164 @@ + + + + + Xmms::RawDict + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
T
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Instance Public methods
+ +
+
+ + rawdict.to_propdict( src_prefs ) → propdict + + + +
+ + +
+

Transforms a RawDict (key-source-value) to a +regular key-value dict. The optional src_prefs argument restricts which +sources are considered. The value may be a string or an array of strings, +which may contain wildcards. Example: rawdict.to_propdict( +['server','plugin/*'] )

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_raw_dict_to_propdict (int argc, VALUE *argv, VALUE self)
+{
+        VALUE value, sources = Qnil;
+        RbDict *dict = NULL, *dict2 = NULL;
+        xmmsv_t *inner_dict;
+        const char **csources = NULL;
+
+        Data_Get_Struct (self, RbDict, dict);
+
+        rb_scan_args (argc, argv, "01", &sources);
+
+        if (!NIL_P (sources))
+                csources = parse_string_array (sources);
+        inner_dict = xmmsv_propdict_to_dict (dict->real, csources);
+        if (csources)
+                free (csources);
+
+        value = Data_Make_Struct (cDict, RbDict,
+                                  c_dict_mark, c_dict_free,
+                                  dict2);
+
+        // don't add a second reference here
+        dict2->real = inner_dict;
+        dict2->parent = dict->parent;
+
+        rb_obj_call_init (value, 0, NULL);
+
+        return value;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Result.html b/src/clients/lib/ruby/html/classes/Xmms/Result.html new file mode 100644 index 000000000..3a281e030 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Result.html @@ -0,0 +1,390 @@ + + + + + Xmms::Result + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + +
Methods
+
+ +
E
+
+ +
+ +
N
+
+ +
+ +
V
+
+ +
+ +
W
+
+
    + + +
  • + wait +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + +
Instance Public methods
+ +
+
+ + error() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_get_error (VALUE self)
+{
+        RbResult *res;
+        xmmsv_t *val;
+        const char *error;
+        int ret;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        ret = xmmsv_get_error (val, &error);
+
+        return rb_str_new2 (ret ? error : "");
+}
+
+
+ +
+ +
+
+ + error?() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_is_error (VALUE self)
+{
+        RbResult *res;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        return xmmsc_result_iserror (res->real) ? Qtrue : Qfalse;
+}
+
+
+ +
+ +
+
+ + res.notifier { |res| } + + + +
+ + +
+

Sets the block that's executed when res is handled. Used by +asyncronous results only.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_notifier_set (VALUE self)
+{
+        VALUE callback;
+        RbResult *res = NULL;
+        RbXmmsClient *xmms = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        if (!rb_block_given_p ())
+                return Qnil;
+
+        callback = rb_block_proc ();
+
+        Data_Get_Struct (res->xmms, RbXmmsClient, xmms);
+        rb_ary_push (xmms->result_callbacks, callback);
+
+        xmmsc_result_notifier_set (res->real, on_signal, (void *) callback);
+
+        return Qnil;
+}
+
+
+ +
+ +
+
+ + value() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_value_get (VALUE self)
+{
+        RbResult *res = NULL;
+        xmmsv_t *val;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        val = xmmsc_result_get_value (res->real);
+
+        return extract_value (self, val);
+}
+
+
+ +
+ +
+
+ + res.wait → self + + + +
+ + +
+

Waits for res to be handled.

+
+ + + + + + + + +
+ + +
+
static VALUE
+c_wait (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_wait (res->real);
+
+        return self;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Result/ResultError.html b/src/clients/lib/ruby/html/classes/Xmms/Result/ResultError.html new file mode 100644 index 000000000..16d3f7139 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Result/ResultError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Result::ResultError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Result/ValueError.html b/src/clients/lib/ruby/html/classes/Xmms/Result/ValueError.html new file mode 100644 index 000000000..760a464a6 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Result/ValueError.html @@ -0,0 +1,76 @@ + + + + + Xmms::Result::ValueError + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/SignalResult.html b/src/clients/lib/ruby/html/classes/Xmms/SignalResult.html new file mode 100644 index 000000000..c5f730910 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/SignalResult.html @@ -0,0 +1,140 @@ + + + + + Xmms::SignalResult + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
D
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
Instance Public methods
+ +
+
+ + disconnect() + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
static VALUE
+c_disconnect (VALUE self)
+{
+        RbResult *res = NULL;
+
+        Data_Get_Struct (self, RbResult, res);
+
+        xmmsc_result_disconnect (res->real);
+
+        return self;
+}
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms.html new file mode 100644 index 000000000..10f84ab22 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms.html @@ -0,0 +1,83 @@ + + + + + Xmms::Xmms + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms.html new file mode 100644 index 000000000..8c52559a4 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms.html @@ -0,0 +1,84 @@ + + + + + Xmms::Xmms::Xmms + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection.html new file mode 100644 index 000000000..0338d1916 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection.html @@ -0,0 +1,79 @@ + + + + + Xmms::Xmms::Xmms::Collection + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection/Sync.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection/Sync.html new file mode 100644 index 000000000..6c531f126 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Collection/Sync.html @@ -0,0 +1,205 @@ + + + + + Xmms::Xmms::Xmms::Collection::Sync + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(coll) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 48
+def initialize(coll)
+        @real = coll
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 52
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist.html new file mode 100644 index 000000000..270d19e0a --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist.html @@ -0,0 +1,79 @@ + + + + + Xmms::Xmms::Xmms::Playlist + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + +
Namespace
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist/Sync.html b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist/Sync.html new file mode 100644 index 000000000..e26dd333f --- /dev/null +++ b/src/clients/lib/ruby/html/classes/Xmms/Xmms/Xmms/Playlist/Sync.html @@ -0,0 +1,205 @@ + + + + + Xmms::Xmms::Xmms::Playlist::Sync + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + +
Methods
+
+ +
M
+
+ +
+ +
N
+
+
    + + +
  • + new +
  • + +
+
+ +
+ + + + + + + + + + + + + + + + + +
Attributes
+ + + + + + + + +
+ [R] + real
+ + + + + +
Class Public methods
+ +
+
+ + new(plist) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 67
+def initialize(plist)
+        @real = plist
+end
+
+
+ +
+ +
Instance Public methods
+ +
+
+ + method_missing(id, *args) + + +
+ + +
+ +
+ + + + + + + + +
+ + +
+
# File sync.rb, line 71
+def method_missing(id, *args)
+        ret = @real.send(id, *args)
+        if(ret.is_a?(Xmms::Result))
+                ret.wait.value
+        elsif(ret.is_a?(Xmms::Collection))
+                self
+        else
+                ret
+        end
+end
+
+
+ +
+
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/classes/unknown.html b/src/clients/lib/ruby/html/classes/unknown.html new file mode 100644 index 000000000..133cd4a21 --- /dev/null +++ b/src/clients/lib/ruby/html/classes/unknown.html @@ -0,0 +1,76 @@ + + + + + unknown + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/created.rid b/src/clients/lib/ruby/html/created.rid new file mode 100644 index 000000000..f7f1231a3 --- /dev/null +++ b/src/clients/lib/ruby/html/created.rid @@ -0,0 +1,15 @@ +Thu, 17 Mar 2016 01:54:05 +0100 +async.rb Thu, 17 Mar 2016 01:41:02 +0100 +rb_collection.c Thu, 17 Mar 2016 01:41:30 +0100 +rb_collection.h Sat, 30 Jan 2016 15:11:02 +0100 +rb_playlist.c Wed, 16 Mar 2016 20:44:59 +0100 +rb_playlist.h Sat, 30 Jan 2016 15:11:02 +0100 +rb_result.c Wed, 16 Mar 2016 21:12:57 +0100 +rb_result.h Sat, 30 Jan 2016 15:11:02 +0100 +rb_xmmsclient.c Wed, 16 Mar 2016 21:38:31 +0100 +rb_xmmsclient_ecore.c Sat, 30 Jan 2016 15:11:02 +0100 +rb_xmmsclient_glib.c Wed, 16 Mar 2016 21:42:22 +0100 +rb_xmmsclient.h Sat, 30 Jan 2016 15:11:02 +0100 +rb_xmmsclient_main.c Sat, 30 Jan 2016 15:11:02 +0100 +sync.rb Thu, 17 Mar 2016 01:40:54 +0100 +xmmsclient.rb Sat, 30 Jan 2016 15:11:02 +0100 diff --git a/src/clients/lib/ruby/html/css/common.css b/src/clients/lib/ruby/html/css/common.css new file mode 100644 index 000000000..cf25c4523 --- /dev/null +++ b/src/clients/lib/ruby/html/css/common.css @@ -0,0 +1 @@ +/* Override this file with custom rules */ \ No newline at end of file diff --git a/src/clients/lib/ruby/html/css/fonts.css b/src/clients/lib/ruby/html/css/fonts.css new file mode 100644 index 000000000..e9e721183 --- /dev/null +++ b/src/clients/lib/ruby/html/css/fonts.css @@ -0,0 +1,167 @@ +/* + * Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + * with Reserved Font Name "Source". All Rights Reserved. Source is a + * trademark of Adobe Systems Incorporated in the United States and/or other + * countries. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 400; + src: local("Source Code Pro"), + local("SourceCodePro-Regular"), + url("fonts/SourceCodePro-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Source Code Pro"; + font-style: normal; + font-weight: 700; + src: local("Source Code Pro Bold"), + local("SourceCodePro-Bold"), + url("fonts/SourceCodePro-Bold.ttf") format("truetype"); +} + +/* + * Copyright (c) 2010, Łukasz Dziedzic (dziedzic@typoland.com), + * with Reserved Font Name Lato. + * + * This Font Software is licensed under the SIL Open Font License, Version + * 1.1. + * + * This license is copied below, and is also available with a FAQ at: + * http://scripts.sil.org/OFL + */ + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 300; + src: local("Lato Light"), + local("Lato-Light"), + url("fonts/Lato-Light.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 300; + src: local("Lato Light Italic"), + local("Lato-LightItalic"), + url("fonts/Lato-LightItalic.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: normal; + font-weight: 700; + src: local("Lato Regular"), + local("Lato-Regular"), + url("fonts/Lato-Regular.ttf") format("truetype"); +} + +@font-face { + font-family: "Lato"; + font-style: italic; + font-weight: 700; + src: local("Lato Italic"), + local("Lato-Italic"), + url("fonts/Lato-RegularItalic.ttf") format("truetype"); +} + +/* + * ----------------------------------------------------------- + * SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 + * ----------------------------------------------------------- + * + * PREAMBLE + * The goals of the Open Font License (OFL) are to stimulate worldwide + * development of collaborative font projects, to support the font creation + * efforts of academic and linguistic communities, and to provide a free and + * open framework in which fonts may be shared and improved in partnership + * with others. + * + * The OFL allows the licensed fonts to be used, studied, modified and + * redistributed freely as long as they are not sold by themselves. The + * fonts, including any derivative works, can be bundled, embedded, + * redistributed and/or sold with any software provided that any reserved + * names are not used by derivative works. The fonts and derivatives, + * however, cannot be released under any other type of license. The + * requirement for fonts to remain under this license does not apply + * to any document created using the fonts or their derivatives. + * + * DEFINITIONS + * "Font Software" refers to the set of files released by the Copyright + * Holder(s) under this license and clearly marked as such. This may + * include source files, build scripts and documentation. + * + * "Reserved Font Name" refers to any names specified as such after the + * copyright statement(s). + * + * "Original Version" refers to the collection of Font Software components as + * distributed by the Copyright Holder(s). + * + * "Modified Version" refers to any derivative made by adding to, deleting, + * or substituting -- in part or in whole -- any of the components of the + * Original Version, by changing formats or by porting the Font Software to a + * new environment. + * + * "Author" refers to any designer, engineer, programmer, technical + * writer or other person who contributed to the Font Software. + * + * PERMISSION & CONDITIONS + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of the Font Software, to use, study, copy, merge, embed, modify, + * redistribute, and sell modified and unmodified copies of the Font + * Software, subject to the following conditions: + * + * 1) Neither the Font Software nor any of its individual components, + * in Original or Modified Versions, may be sold by itself. + * + * 2) Original or Modified Versions of the Font Software may be bundled, + * redistributed and/or sold with any software, provided that each copy + * contains the above copyright notice and this license. These can be + * included either as stand-alone text files, human-readable headers or + * in the appropriate machine-readable metadata fields within text or + * binary files as long as those fields can be easily viewed by the user. + * + * 3) No Modified Version of the Font Software may use the Reserved Font + * Name(s) unless explicit written permission is granted by the corresponding + * Copyright Holder. This restriction only applies to the primary font name as + * presented to the users. + * + * 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font + * Software shall not be used to promote, endorse or advertise any + * Modified Version, except to acknowledge the contribution(s) of the + * Copyright Holder(s) and the Author(s) or with their explicit written + * permission. + * + * 5) The Font Software, modified or unmodified, in part or in whole, + * must be distributed entirely under this license, and must not be + * distributed under any other license. The requirement for fonts to + * remain under this license does not apply to any document created + * using the Font Software. + * + * TERMINATION + * This license becomes null and void if any of the above conditions are + * not met. + * + * DISCLAIMER + * THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT + * OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL + * DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM + * OTHER DEALINGS IN THE FONT SOFTWARE. + */ + diff --git a/src/clients/lib/ruby/html/css/full_list.css b/src/clients/lib/ruby/html/css/full_list.css new file mode 100644 index 000000000..c918cf190 --- /dev/null +++ b/src/clients/lib/ruby/html/css/full_list.css @@ -0,0 +1,57 @@ +body { + margin: 0; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + height: 101%; + overflow-x: hidden; +} + +h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; } +.clear { clear: both; } +#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; } +#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; } +#full_list { padding: 0; list-style: none; margin-left: 0; } +#full_list ul { padding: 0; } +#full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; } +#noresults { padding: 7px 12px; } +#content.insearch #noresults { margin-left: 7px; } +ul.collapsed ul, ul.collapsed li { display: none; } +ul.collapsed.search_uncollapsed { display: block; } +ul.collapsed.search_uncollapsed li { display: list-item; } +li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; } +li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; } +li { color: #888; cursor: pointer; } +li.deprecated { text-decoration: line-through; font-style: italic; } +li.r1 { background: #f0f0f0; } +li.r2 { background: #fafafa; } +li:hover { background: #ddd; } +li small:before { content: "("; } +li small:after { content: ")"; } +li small.search_info { display: none; } +a:link, a:visited { text-decoration: none; color: #05a; } +li.clicked { background: #05a; color: #ccc; } +li.clicked a:link, li.clicked a:visited { color: #eee; } +li.clicked a.toggle { opacity: 0.5; background-position: bottom right; } +li.collapsed.clicked a.toggle { background-position: top right; } +#search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; } +#nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; } +#nav a:link, #nav a:visited { color: #358; } +#nav a:hover { background: transparent; color: #5af; } +.frames #nav span:after { content: ' | '; } +.frames #nav span:last-child:after { content: ''; } + +.frames #content h1 { margin-top: 0; } +.frames li { white-space: nowrap; cursor: normal; } +.frames li small { display: block; font-size: 0.8em; } +.frames li small:before { content: ""; } +.frames li small:after { content: ""; } +.frames li small.search_info { display: none; } +.frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; } +.frames #content.insearch #search { background-position: center right; } +.frames #search input { width: 110px; } +.frames #nav { display: block; } + +#full_list.insearch li { display: none; } +#full_list.insearch li.found { display: list-item; padding-left: 10px; } +#full_list.insearch li a.toggle { display: none; } +#full_list.insearch li small.search_info { display: block; } diff --git a/src/clients/lib/ruby/html/css/github.css b/src/clients/lib/ruby/html/css/github.css new file mode 100644 index 000000000..ea7cde820 --- /dev/null +++ b/src/clients/lib/ruby/html/css/github.css @@ -0,0 +1,123 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .javadoc { + color: #998; + font-style: italic +} + +pre .keyword, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .lisp .title, +pre .subst { + color: #000; + font-weight: bold +} + +pre .number, +pre .hexcolor { + color: #40a070 +} + +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula { + color: #d14 +} + +pre .title, +pre .id { + color: #900; + font-weight: bold +} + +pre .javascript .title, +pre .lisp .title, +pre .subst { + font-weight: normal +} + +pre .class .title, +pre .haskell .label, +pre .tex .command { + color: #458; + font-weight: bold +} + +pre .tag, +pre .tag .title, +pre .rules .property, +pre .django .tag .keyword { + color: #000080; + font-weight: normal +} + +pre .attribute, +pre .variable, +pre .instancevar, +pre .lisp .body { + color: #008080 +} + +pre .regexp { + color: #009926 +} + +pre .class { + color: #458; + font-weight: bold +} + +pre .symbol, +pre .ruby .symbol .string, +pre .ruby .symbol .keyword, +pre .ruby .symbol .keymethods, +pre .lisp .keyword, +pre .tex .special, +pre .input_number { + color: #990073 +} + +pre .builtin, +pre .built_in, +pre .lisp .title { + color: #0086b3 +} + +pre .preprocessor, +pre .pi, +pre .doctype, +pre .shebang, +pre .cdata { + color: #999; + font-weight: bold +} + +pre .deletion { + background: #fdd +} + +pre .addition { + background: #dfd +} + +pre .diff .change { + background: #0086b3 +} + +pre .chunk { + color: #aaa +} + +pre .tex .formula { + opacity: 0.5; +} diff --git a/src/clients/lib/ruby/html/css/main.css b/src/clients/lib/ruby/html/css/main.css new file mode 100755 index 000000000..dcfdb8824 --- /dev/null +++ b/src/clients/lib/ruby/html/css/main.css @@ -0,0 +1,323 @@ +body { + font-family: "Helvetica Neue", Arial, sans-serif; + background: #FFF; + color: #000; + margin: 0px; + font-size: 0.82em; + line-height: 1.25em; +} + +a { + color: #00F; + text-decoration: none; +} + +a:hover { + color: #333; + background: #FE8; +} + +p { + margin-bottom: 1em; +} + +h1 { + font-size: 2.1em; + font-weight: normal; + line-height: 1.2em; + margin: 1.4em 0 0.7em 0; +} + +h2 { + font-size: 1.6em; + margin: 1.8em 0 0.8em 0; + font-weight: normal; + line-height: 1.2em; +} + +h3 { + font-size: 1.4em; + color:#555; + margin: 1.4em 0 0.7em 0; + font-weight: normal; +} + +h4 { + margin: 1.4em 0 0.5em 0; + font-size: 1em; +} + +table +{ + margin-bottom: 1em; +} + +td, th +{ + padding: 0 0.7em 0.3em 0; +} + +th +{ + font-weight: bold; +} + +.clear +{ + clear: both; + width: 0; height: 0; +} + +dt +{ + margin-bottom: 0.3em; + font-weight: bold; +} + +dd +{ + margin-left: 2em; + margin-bottom: 1em; +} + +dd p +{ + margin-top: 0.6em; +} + +li +{ + margin: 0 0 0.5em 2em; +} + +.banner +{ + background: #EDF3FE; + border-bottom: 1px solid #ccc; + padding: 1em 2em 0.5em 2em; +} +.banner h1 +{ + font-size: 1.2em; + margin: 0; +} + +.banner h1 .type +{ + font-size: 0.833em; + display:block; +} + +.banner h1 .type, +.banner h1 .parent +{ + color: #666; +} + +.banner ul +{ + margin-top: 0.3em; + margin-bottom: 0; + font-size: 0.85em; +} + +.banner li +{ + list-style: none; + margin-left: 0; + margin-bottom: 0; +} + +pre +{ + margin-bottom: 1em; +} + +.methods dt +{ + width: 1em; + font-size: 1.5em; + color:#AAA; + position: absolute; + font-weight: normal; + margin: 0; +} + +.methods dd +{ + margin-left: 2.5em; + min-height: 1.8em; + -height: 1.8em; + padding-bottom: 0.8em; +} + + +.methods ul li +{ + margin-right: 0.7em; + margin-left: 0; + list-style: none; + display: inline; +} + +#content { + margin: 2em; + margin-left: 3.5em; + margin-right: 3.5em; +} + + +.sectiontitle { + margin-top: 2em; + margin-bottom: 1.3em; + margin-left: -1.2em; + font-size: 1.2em; + padding: 0 0 0.25em 0; + font-weight: bold; + border-bottom: 1px solid #000; +} + +.contenttitle { + margin-top: 4em; + margin-bottom: 1.3em; + margin-left: -0.9em; + font-size: 1.6em; + padding: 0 0 0.25em 0; + font-weight: bold; +} + +.attr-rw { + padding-right: 1em; + text-align: center; + color: #055; +} + +.attr-name { + font-weight: bold; + padding-right: 1em; +} + +.attr-desc { +} + +tt { + font-size: 1.15em; +} + +.attr-value { + font-family: monospace; + padding-left: 1em; + font-size: 1.15em; +} + +.dyn-source { + display: none; + background: #fffde8; + color: #000; + border: #ffe0bb dotted 1px; + margin: 0.5em 2em 0.5em 0; + padding: 0.5em; +} + +.dyn-source .cmt { + color: #00F; + font-style: italic; +} + +.dyn-source .kw { + color: #070; + font-weight: bold; +} + +.description pre { + padding: 0.5em; + border: #ffe0bb dotted 1px; + background: #fffde8; +} + +.method { + margin-bottom: 2em; +} +.method .description, +.method .sourcecode +{ + margin-left: 1.2em; +} +.method h4 +{ + border-bottom: 1px dotted #999; + padding: 0 0 0.2em 0; + margin-bottom: 0.8em; + font-size: 1.1em; + color:#333; +} +.method .method-title { + border-bottom: 1px dotted #666; + padding: 0 0 0.15em 0; + margin: 0 0 0.5em 0; + font-size: 1.2em; + line-height: 1.25em; + position: relative; +} + +.method .method-title a.permalink { + position: absolute; + font-size: 0.75em; + right: 0; +} + +.method .sourcecode p.source-link { + text-indent: 0em; + margin-top: 0.5em; +} + +.method .aka { + margin-top: 0.3em; + margin-left: 1em; + font-style: italic; + text-indent: 2em; +} + +.method .source-link +{ + font-size: 0.85em; +} + +.ruby-constant { + color: teal; +} +.ruby-keyword { + color: #000; + font-weight: bold +} +.ruby-title { + color: #900; + font-weight: bold; +} +.ruby-ivar { + color: teal; +} +.ruby-operator { + color: #000; + font-weight: bold +} +.ruby-identifier { + color: #000; +} +.ruby-string, +.ruby-node { + color: #D14; +} +.ruby-comment { + color: #998; + font-style: italic; +} +.ruby-regexp { + color: #009926; +} +.ruby-value { + color: #990073; +} +.ruby-number { + color: #40A070; +} diff --git a/src/clients/lib/ruby/html/css/panel.css b/src/clients/lib/ruby/html/css/panel.css new file mode 100755 index 000000000..9bd8027b7 --- /dev/null +++ b/src/clients/lib/ruby/html/css/panel.css @@ -0,0 +1,384 @@ +/* Panel (begin) */ + .panel + { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background: #FFF; + z-index: 2; + font-family: "Helvetica Neue", "Arial", sans-serif; + //zoom: 1; + } + + .panel_tree .results, + .panel_results .tree + { + display: none; + } + + /* Header with search box (begin) */ + .panel .header + { + width: 100%; + height: 29px; + border-bottom: 1px solid #666; + position: relative; + left: 0; top: 0; + background: #e8e8e8; + } + + .panel .header div + { + margin: 0 7px; + } + .panel .header table + { + height: 29px; + width: 100%; + } + + .panel .header table td + { + vertical-align: middle; + text-align: middle; + } + + .panel .header label + { + position: absolute; + font-size: 12px; + line-height: 29px; + margin-left: 3px; + color: #999; + cursor: text; + } + + .panel .header table input + { + width: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + display: inline-block; + -webkit-appearance: searchfield; + height: 22px; + //height: auto; + } + + /* Header with search box (end) */ + + + /* Results (begin) */ + .panel .result + { + position: absolute; + top: 30px; + bottom: 0; + left: 0; + width: 100%; + //height: expression((this.parentNode.offsetHeight - 31)); + overflow-y: scroll; + overflow-x: hidden; + -overflow-y: hidden; + background: #EDF3FE url(../i/results_bg.png); + z-index: 2; + //zoom:1; + } + + .panel .result ul + { + font-size: 0.8em; + width: 100%; + background: #EDF3FE url(../i/results_bg.png); + //zoom:1; + } + + .panel .result ul li + { + height: 46px; + -height: 50px; + //display: inline; + //width: 100%; + //zoom: 1; + overflow: hidden; + padding: 4px 10px 0 10px; + cursor: pointer; + } + + .panel .result ul li h1 + { + font-size: 13px; + font-weight: normal; + color: #333; + margin-bottom: 2px; + white-space: nowrap; + } + + .panel .result ul li p + { + font-size: 11px; + color: #333; + margin-bottom: 2px; + white-space: nowrap; + } + + .panel .result ul li h1 i, + .panel .result ul li p.snippet + { + color: #999; + } + + .panel .result ul li b + { + color: #000; + } + + .panel .result ul li.current + { + background: #3875D7; + } + + .panel .result ul li.current h1, + .panel .result ul li.current p + { + color: #DDD; + } + + .panel .result ul li.current h1 i, + .panel .result ul li.current p.snippet + { + color: #AAA; + } + + .panel .result ul li.current b + { + color: #FFF; + } + + + .panel .result ul li:hover, + .panel .result ul li.selected + { + background: #d0d0d0; + } + + .panel .result ul li.current:hover + { + background: #2965C0; + } + + .panel .result ul li .badge + { + margin-right: 0.4em; + margin-left: -0.2em; + padding: 0 0.2em; + color: #000; + border-radius: 3px; + } + + .panel .result ul li .badge_1 + { + background: #ACDBF4; + } + + .panel .result ul li.current .badge_1 + { + background: #97BFD7; + } + + .panel .result ul li .badge_2 + { + background: #ACF3C3; + } + + .panel .result ul li.current .badge_2 + { + background: #98D7AC; + } + + .panel .result ul li .badge_3 + { + background: #E0F3AC; + } + + .panel .result ul li.current .badge_3 + { + background: #C4D798; + } + + .panel .result ul li .badge_4 + { + background: #D7CA98; + } + + .panel .result ul li.current .badge_4 + { + background: #A6B0AC; + } + + .panel .result ul li .badge_5 + { + background: #F3C8AC; + } + + .panel .result ul li.current .badge_5 + { + background: #D7B198; + } + + .panel .result ul li .badge_6 + { + background: #F3ACC3; + } + + .panel .result ul li.current .badge_6 + { + background: #D798AB; + } + + /* Results (end) */ + + /* Tree (begin) */ /**/ + .panel .tree + { + position: absolute; + top: 30px; + bottom: 0; + left: 0; + width: 100%; + //zoom: 1; + //height: expression((this.parentNode.offsetHeight - 31)); + overflow-y: scroll; + overflow-x: hidden; + -overflow-y: hidden; + background: #EDF3FE url(../i/tree_bg.png); + z-index: 30; + } + + .panel .tree ul + { + background: #EDF3FE url(../i/tree_bg.png); + } + + .panel .tree li + { + cursor: pointer; + overflow: hidden; + //height: 23px; + //display: inline; + //zoom: 1; + //width: 100%; + } + + + .panel .tree li .content + { + padding-left: 18px; + padding-top: 5px; + height: 18px; + overflow: hidden; + position: relative; + } + + .panel .tree li .icon + { + width: 10px; + height: 9px; + background: url(../i/arrows.png); + background-position: 0 -9px; + position: absolute; + left: 1px; + top: 8px; + cursor: default; + } + + .panel .tree li.closed .icon + { + background-position: 0 0; + } + + .panel .tree ul li h1 + { + font-size: 13px; + font-weight: normal; + color: #000; + margin-bottom: 2px; + white-space: nowrap; + } + + .panel .tree ul li p + { + font-size: 11px; + color: #666; + margin-bottom: 2px; + white-space: nowrap; + } + + .panel .tree ul li h1 i + { + color: #999; + font-style: normal; + } + + .panel .tree ul li.empty + { + cursor: text; + } + + .panel .tree ul li.empty h1, + .panel .tree ul li.empty p + { + color: #666; + font-style: italic; + } + + .panel .tree ul li.current + { + background: #3875D7; + } + + .panel .tree ul li.current .icon + { + background-position: -10px -9px; + } + + .panel .tree ul li.current.closed .icon + { + background-position: -10px 0; + } + + .panel .tree ul li.current h1 + { + color: #FFF; + } + + .panel .tree ul li.current p + { + color: #CCC; + } + + .panel .tree ul li.current.empty h1, + .panel .tree ul li.current.empty p + { + color: #999; + } + + .panel .tree ul li:hover + { + background: #d0d0d0; + } + + .panel .tree ul li.current:hover + { + background: #2965C0; + } + + .panel .tree .stopper + { + display: none; + } + /* Tree (end) */ /**/ + +/* Panel (end) */ \ No newline at end of file diff --git a/src/clients/lib/ruby/html/css/rdoc.css b/src/clients/lib/ruby/html/css/rdoc.css new file mode 100644 index 000000000..2f4dca7e0 --- /dev/null +++ b/src/clients/lib/ruby/html/css/rdoc.css @@ -0,0 +1,590 @@ +/* + * "Darkfish" Rdoc CSS + * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* vim: ft=css et sw=2 ts=2 sts=2 */ +/* Base Green is: #6C8C22 */ + +* { padding: 0; margin: 0; } + +body { + background: #fafafa; + font-family: Lato, sans-serif; + font-weight: 300; +} + +h1 span, +h2 span, +h3 span, +h4 span, +h5 span, +h6 span { + position: relative; + + display: none; + padding-left: 1em; + line-height: 0; + vertical-align: baseline; + font-size: 10px; +} + +h1 span { top: -1.3em; } +h2 span { top: -1.2em; } +h3 span { top: -1.0em; } +h4 span { top: -0.8em; } +h5 span { top: -0.5em; } +h6 span { top: -0.5em; } + +h1:hover span, +h2:hover span, +h3:hover span, +h4:hover span, +h5:hover span, +h6:hover span { + display: inline; +} + +:link, +:visited { + color: #6C8C22; + text-decoration: none; +} + +:link:hover, +:visited:hover { + border-bottom: 1px dotted #6C8C22; +} + +code, +pre { + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @group Generic Classes */ + +.initially-hidden { + display: none; +} + +#search-field { + width: 98%; + background: white; + border: none; + height: 1.5em; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + text-align: left; +} +#search-field:focus { + background: #f1edba; +} +#search-field:-moz-placeholder, +#search-field::-webkit-input-placeholder { + font-weight: bold; + color: #666; +} + +.missing-docs { + font-size: 120%; + background: white url(images/wrench_orange.png) no-repeat 4px center; + color: #ccc; + line-height: 2em; + border: 1px solid #d00; + opacity: 1; + padding-left: 20px; + text-indent: 24px; + letter-spacing: 3px; + font-weight: bold; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} + +.target-section { + border: 2px solid #dcce90; + border-left-width: 8px; + padding: 0 1em; + background: #fff3c2; +} + +/* @end */ + +/* @group Index Page, Standalone file pages */ +.table-of-contents ul { + margin: 1em; + list-style: none; +} + +.table-of-contents ul ul { + margin-top: 0.25em; +} + +.table-of-contents ul :link, +.table-of-contents ul :visited { + font-size: 16px; +} + +.table-of-contents li { + margin-bottom: 0.25em; +} + +.table-of-contents li .toc-toggle { + width: 16px; + height: 16px; + background: url(images/add.png) no-repeat; +} + +.table-of-contents li .toc-toggle.open { + background: url(images/delete.png) no-repeat; +} + +/* @end */ + +/* @group Top-Level Structure */ + +nav { + float: left; + width: 260px; + font-family: Helvetica, sans-serif; + font-size: 14px; +} + +main { + display: block; + margin: 0 2em 5em 260px; + padding-left: 20px; + min-width: 340px; + font-size: 16px; +} + +main h1, +main h2, +main h3, +main h4, +main h5, +main h6 { + font-family: Helvetica, sans-serif; +} + +.table-of-contents main { + margin-left: 2em; +} + +#validator-badges { + clear: both; + margin: 1em 1em 2em; + font-size: smaller; +} + +/* @end */ + +/* @group navigation */ +nav { + margin-bottom: 1em; +} + +nav .nav-section { + margin-top: 2em; + border-top: 2px solid #aaa; + font-size: 90%; + overflow: hidden; +} + +nav h2 { + margin: 0; + padding: 2px 8px 2px 8px; + background-color: #e8e8e8; + color: #555; + font-size: 125%; + text-align: center; +} + +nav h3, +#table-of-contents-navigation { + margin: 0; + padding: 2px 8px 2px 8px; + text-align: right; + background-color: #e8e8e8; + color: #555; +} + +nav ul, +nav dl, +nav p { + padding: 4px 8px 0; + list-style: none; +} + +#project-navigation .nav-section { + margin: 0; + border-top: 0; +} + +#home-section h2 { + text-align: center; +} + +#table-of-contents-navigation { + font-size: 1.2em; + font-weight: bold; + text-align: center; +} + +#search-section { + margin-top: 0; + border-top: 0; +} + +#search-field-wrapper { + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + padding: 3px 8px; + background-color: #e8e8e8; + color: #555; +} + +ul.link-list li { + white-space: nowrap; + line-height: 1.4em; +} + +ul.link-list .type { + font-size: 8px; + text-transform: uppercase; + color: white; + background: #969696; + padding: 2px 4px; + -webkit-border-radius: 5px; +} + +.calls-super { + background: url(images/arrow_up.png) no-repeat right center; +} + +/* @end */ + +/* @group Documentation Section */ +main { + color: #333; +} + +main > h1:first-child, +main > h2:first-child, +main > h3:first-child, +main > h4:first-child, +main > h5:first-child, +main > h6:first-child { + margin-top: 0px; +} + +main sup { + vertical-align: super; + font-size: 0.8em; +} + +/* The heading with the class name */ +main h1[class] { + margin-top: 0; + margin-bottom: 1em; + font-size: 2em; + color: #6C8C22; +} + +main h1 { + margin: 2em 0 0.5em; + font-size: 1.7em; +} + +main h2 { + margin: 2em 0 0.5em; + font-size: 1.5em; +} + +main h3 { + margin: 2em 0 0.5em; + font-size: 1.2em; +} + +main h4 { + margin: 2em 0 0.5em; + font-size: 1.1em; +} + +main h5 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main h6 { + margin: 2em 0 0.5em; + font-size: 1em; +} + +main p { + margin: 0 0 0.5em; + line-height: 1.4em; +} + +main pre { + margin: 1.2em 0.5em; + padding: 1em; + font-size: 0.8em; +} + +main hr { + margin: 1.5em 1em; + border: 2px solid #ddd; +} + +main blockquote { + margin: 0 2em 1.2em 1.2em; + padding-left: 0.5em; + border-left: 2px solid #ddd; +} + +main ol, +main ul { + margin: 1em 2em; +} + +main li > p { + margin-bottom: 0.5em; +} + +main dl { + margin: 1em 0.5em; +} + +main dt { + margin-bottom: 0.5em; + font-weight: bold; +} + +main dd { + margin: 0 1em 1em 0.5em; +} + +main header h2 { + margin-top: 2em; + border-width: 0; + border-top: 4px solid #bbb; + font-size: 130%; +} + +main header h3 { + margin: 2em 0 1.5em; + border-width: 0; + border-top: 3px solid #bbb; + font-size: 120%; +} + +.documentation-section-title { + position: relative; +} +.documentation-section-title .section-click-top { + position: absolute; + top: 6px; + left: 12px; + font-size: 10px; + color: #9b9877; + visibility: hidden; + padding-left: 0.5px; +} + +.documentation-section-title:hover .section-click-top { + visibility: visible; +} + +.constants-list > dl { + margin: 1em 0 2em; + border: 0; +} + +.constants-list > dl dt { + margin-bottom: 0.75em; + padding-left: 0; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; +} + +.constants-list > dl dt a { + color: inherit; +} + +.constants-list > dl dd { + margin: 0 0 2em 0; + padding: 0; + color: #666; +} + +.documentation-section h2 { + position: relative; +} + +.documentation-section h2 a { + position: absolute; + top: 8px; + right: 10px; + font-size: 12px; + color: #9b9877; + visibility: hidden; +} + +.documentation-section h2:hover a { + visibility: visible; +} + +/* @group Method Details */ + +main .method-source-code { + display: none; +} + +main .method-description .method-calls-super { + color: #333; + font-weight: bold; +} + +main .method-detail { + margin-bottom: 2.5em; + cursor: pointer; +} + +main .method-detail:target { + margin-left: -10px; + border-left: 10px solid #f1edba; +} + +main .method-heading { + position: relative; + font-family: "Source Code Pro", Monaco, monospace; + font-size: 110%; + font-weight: bold; + color: #333; +} +main .method-heading :link, +main .method-heading :visited { + color: inherit; +} +main .method-click-advice { + position: absolute; + top: 2px; + right: 5px; + font-size: 12px; + color: #9b9877; + visibility: hidden; + padding-right: 20px; + line-height: 20px; + background: url(images/zoom.png) no-repeat right top; +} +main .method-heading:hover .method-click-advice { + visibility: visible; +} + +main .method-alias .method-heading { + color: #666; +} + +main .method-description, +main .aliases { + margin-top: 0.75em; + color: #333; +} + +main .aliases { + padding-top: 4px; + font-style: italic; + cursor: default; +} +main .method-description ul { + margin-left: 1.5em; +} + +main #attribute-method-details .method-detail:hover { + background-color: transparent; + cursor: default; +} +main .attribute-access-type { + text-transform: uppercase; + padding: 0 1em; +} +/* @end */ + +/* @end */ + +/* @group Source Code */ + +pre { + margin: 0.5em 0; + border: 1px dashed #999; + padding: 0.5em; + background: #262626; + color: white; + overflow: auto; +} + +.ruby-constant { color: #7fffd4; background: transparent; } +.ruby-keyword { color: #00ffff; background: transparent; } +.ruby-ivar { color: #eedd82; background: transparent; } +.ruby-operator { color: #00ffee; background: transparent; } +.ruby-identifier { color: #ffdead; background: transparent; } +.ruby-node { color: #ffa07a; background: transparent; } +.ruby-comment { color: #dc0000; background: transparent; } +.ruby-regexp { color: #ffa07a; background: transparent; } +.ruby-value { color: #7fffd4; background: transparent; } + +/* @end */ + + +/* @group search results */ +#search-results { + font-family: Lato, sans-serif; + font-weight: 300; +} + +#search-results .search-match { + font-family: Helvetica, sans-serif; + font-weight: normal; +} + +#search-results .search-selected { + background: #e8e8e8; + border-bottom: 1px solid transparent; +} + +#search-results li { + list-style: none; + border-bottom: 1px solid #aaa; + margin-bottom: 0.5em; +} + +#search-results li:last-child { + border-bottom: none; + margin-bottom: 0; +} + +#search-results li p { + padding: 0; + margin: 0.5em; +} + +#search-results .search-namespace { + font-weight: bold; +} + +#search-results li em { + background: yellow; + font-style: normal; +} + +#search-results pre { + margin: 0.5em; + font-family: "Source Code Pro", Monaco, monospace; +} + +/* @end */ + diff --git a/src/clients/lib/ruby/html/css/reset.css b/src/clients/lib/ruby/html/css/reset.css new file mode 100755 index 000000000..da4a2394a --- /dev/null +++ b/src/clients/lib/ruby/html/css/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ */ +/* v1.0 | 20080212 */ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, font, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: baseline; + background: transparent; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +/* remember to highlight inserts somehow! */ +ins { + text-decoration: none; +} +del { + text-decoration: line-through; +} + +/* tables still need 'cellspacing="0"' in the markup */ +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/src/clients/lib/ruby/html/css/style.css b/src/clients/lib/ruby/html/css/style.css new file mode 100644 index 000000000..96307c561 --- /dev/null +++ b/src/clients/lib/ruby/html/css/style.css @@ -0,0 +1,339 @@ +body { + padding: 0 20px; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; +} +body.frames { padding: 0 5px; } +h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; } +h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; } +h1.title { margin-bottom: 10px; } +h1.alphaindex { margin-top: 0; font-size: 22px; } +h2 { + padding: 0; + padding-bottom: 3px; + border-bottom: 1px #aaa solid; + font-size: 1.4em; + margin: 1.8em 0 0.5em; +} +h2 small { font-weight: normal; font-size: 0.7em; display: block; float: right; } +.clear { clear: both; } +.inline { display: inline; } +.inline p:first-child { display: inline; } +.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; } +.docstring h1 { font-size: 1.2em; } +.docstring h2 { font-size: 1.1em; } +.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; } +.summary_desc .object_link, .docstring .object_link { font-family: monospace; } +.rdoc-term { padding-right: 25px; font-weight: bold; } +.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; } + +/* style for */ +#filecontents table, .docstring table { border-collapse: collapse; } +#filecontents table th, #filecontents table td, +.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } +#filecontents table tr:nth-child(odd), +.docstring table tr:nth-child(odd) { background: #eee; } +#filecontents table tr:nth-child(even), +.docstring table tr:nth-child(even) { background: #fff; } +#filecontents table th, .docstring table th { background: #fff; } + +/* style for
    */ +#filecontents li > p, .docstring li > p { margin: 0px; } +#filecontents ul, .docstring ul { padding-left: 20px; } +/* style for
    */ +#filecontents dl, .docstring dl { border: 1px solid #ccc; } +#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; } +#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; } +#filecontents dd > p, .docstring dd > p { margin: 0px; } + +.note { + color: #222; + -moz-border-radius: 3px; -webkit-border-radius: 3px; + background: #e3e4e3; border: 1px solid #d5d5d5; padding: 7px 10px; + display: block; +} +.note.todo { background: #ffffc5; border-color: #ececaa; } +.note.returns_void { background: #efefef; } +.note.deprecated { background: #ffe5e5; border-color: #e9dada; } +.note.private { background: #ffffc5; border-color: #ececaa; } +.note.title { padding: 1px 5px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; } +.summary_signature + .note.title { margin-left: 7px; } +h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; } +.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; } +.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.private { background: #d5d5d5; border-color: #c5c5c5; } +.note.title.not_defined_here { background: transparent; border: none; font-style: italic; } +.discussion .note { margin-top: 6px; } +.discussion .note:first-child { margin-top: 0; } + +h3.inherited { + font-style: italic; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + padding: 0; + margin: 0; + margin-top: 12px; + margin-bottom: 3px; + font-size: 13px; +} +p.inherited { + padding: 0; + margin: 0; + margin-left: 25px; +} + +#filecontents dl.box, dl.box { + border: 0; + width: 520px; + font-size: 1em; +} +#filecontents dl.box dt, dl.box dt { + float: left; + display: block; + width: 100px; + margin: 0; + text-align: right; + font-weight: bold; + background: transparent; + border: 1px solid #aaa; + border-width: 1px 0px 0px 1px; + padding: 6px 0; + padding-right: 10px; +} +#filecontents dl.box dd, dl.box dd { + float: left; + display: block; + width: 380px; + margin: 0; + padding: 6px 0; + padding-right: 20px; + border: 1px solid #aaa; + border-width: 1px 1px 0 0; +} +#filecontents dl.box .last, dl.box .last { + border-bottom: 1px solid #aaa; +} +#filecontents dl.box .r1, dl.box .r1 { background: #eee; } + +ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; } +.index_inline_list { padding-left: 0; font-size: 1.1em; } +.index_inline_list li { list-style: none; display: inline; padding: 7px 12px; line-height: 35px; } + +dl.constants { margin-left: 40px; } +dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; } +dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; } + +.summary_desc { margin-left: 32px; display: block; font-family: sans-serif; } +.summary_desc tt { font-size: 0.9em; } +dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; } +dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; } +dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; } +dl.constants .discussion *:first-child { margin-top: 0; } +dl.constants .discussion *:last-child { margin-bottom: 0; } + +.method_details { border-top: 1px dotted #aaa; margin-top: 15px; padding-top: 0; } +.method_details.first { border: 0; } +p.signature, h3.signature { + font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace; + padding: 6px 10px; margin-top: 18px; + background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px; +} +p.signature tt, +h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; } +p.signature .overload, +h3.signature .overload { display: block; } +p.signature .extras, +h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; } +p.signature .not_defined_here, +h3.signature .not_defined_here, +p.signature .aliases, +h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; } +p.signature .aliases .names, +h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; } + +.tags .tag_title { font-size: 1em; margin-bottom: 0; font-weight: bold; } +.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; } +.tags ul li { margin-bottom: 3px; } +.tags ul .name { font-family: monospace; font-weight: bold; } +.tags ul .note { padding: 3px 6px; } +.tags { margin-bottom: 12px; } + +.tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; } +.tags .examples .inline p { padding: 0; margin: 0; margin-left: 15px; font-weight: bold; font-size: 0.9em; } + +.tags .overload .overload_item { list-style: none; margin-bottom: 25px; } +.tags .overload .overload_item .signature { + padding: 2px 8px; + background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px; +} +.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; } +.tags .overload .docstring { margin-top: 15px; } + +.defines { display: none; } + +#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; } + +.showSource { font-size: 0.9em; } +.showSource a:link, .showSource a:visited { text-decoration: none; color: #666; } + +#content a:link, #content a:visited { text-decoration: none; color: #05a; } +#content a:hover { background: #ffffa5; } +div.docstring, p.docstring { margin-right: 6em; } + +ul.summary { + list-style: none; + font-family: monospace; + font-size: 1em; + line-height: 1.5em; +} +ul.summary a:link, ul.summary a:visited { + text-decoration: none; font-size: 1.1em; +} +ul.summary li { margin-bottom: 5px; } +.summary .summary_signature { + padding: 1px 10px; + background: #eaeaff; border: 1px solid #dfdfe5; + -moz-border-radius: 3px; -webkit-border-radius: 3px; +} +.summary_signature:hover { background: #eeeeff; cursor: pointer; } +ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;} +ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; } +#content .summary_signature:hover a:link, +#content .summary_signature:hover a:visited { + background: transparent; + color: #48f; +} + +p.inherited a { font-family: monospace; font-size: 0.9em; } +p.inherited { word-spacing: 5px; font-size: 1.2em; } + +p.children { font-size: 1.2em; } +p.children a { font-size: 0.9em; } +p.children strong { font-size: 0.8em; } +p.children strong.modules { padding-left: 5px; } + +ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; } +ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; } +ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,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) no-repeat top center; } +ul.fullTree li:first-child { padding-top: 0; background: transparent; } +ul.fullTree li:last-child { padding-bottom: 0; } +.showAll ul.fullTree { display: block; } +.showAll .inheritName { display: none; } + +#search { position: absolute; right: 14px; top: 0px; } +#search a:link, #search a:visited { + display: block; float: left; margin-right: 4px; + padding: 8px 10px; text-decoration: none; color: #05a; + border: 1px solid #d8d8e5; + -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; + background: #eaf0ff; + -webkit-box-shadow: -1px 1px 3px #ddd; +} +#search a:hover { background: #f5faff; color: #06b; } +#search a.active { + background: #568; padding-bottom: 20px; color: #fff; border: 1px solid #457; + -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; + -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; +} +#search a.inactive { color: #999; } +.frames #search { display: none; } +.inheritanceTree, .toggleDefines { float: right; } + +#menu { font-size: 1.3em; color: #bbb; top: -5px; position: relative; } +#menu .title, #menu a { font-size: 0.7em; } +#menu .title a { font-size: 1em; } +#menu .title { color: #555; } +#menu a:link, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; } +#menu a:hover { color: #05a; } +#menu .noframes { display: inline; } +.frames #menu .noframes { display: inline; float: right; } + +#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; } +#footer a:link, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; } +#footer a:hover { color: #05a; } + +#listing ul.alpha { font-size: 1.1em; } +#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; } +#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; } +#listing ul.alpha ul { margin: 0; padding-left: 15px; } +#listing ul small { color: #666; font-size: 0.7em; } + +li.r1 { background: #f0f0f0; } +li.r2 { background: #fafafa; } + +#search_frame { + z-index: 9999; + background: #fff; + display: none; + position: absolute; + top: 36px; + right: 18px; + width: 500px; + height: 80%; + overflow-y: scroll; + border: 1px solid #999; + border-collapse: collapse; + -webkit-box-shadow: -7px 5px 25px #aaa; + -moz-box-shadow: -7px 5px 25px #aaa; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; +} + +#content ul.summary li.deprecated .summary_signature a:link, +#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; } + +#toc { + padding: 20px; padding-right: 30px; border: 1px solid #ddd; float: right; background: #fff; margin-left: 20px; margin-bottom: 20px; + max-width: 300px; + -webkit-box-shadow: -2px 2px 6px #bbb; + -moz-box-shadow: -2px 2px 6px #bbb; + z-index: 5000; + position: relative; + overflow-x: auto; +} +#toc.nofloat { float: none; max-width: none; border: none; padding: 0; margin: 20px 0; -webkit-box-shadow: none; -moz-box-shadow: none; } +#toc.nofloat.hidden { padding: 0; background: 0; margin-bottom: 5px; } +#toc .title { margin: 0; } +#toc ol { padding-left: 1.8em; } +#toc li { font-size: 1.1em; line-height: 1.7em; } +#toc > ol > li { font-size: 1.1em; font-weight: bold; } +#toc ol > ol { font-size: 0.9em; } +#toc ol ol > ol { padding-left: 2.3em; } +#toc ol + li { margin-top: 0.3em; } +#toc.hidden { padding: 10px; background: #f6f6f6; -webkit-box-shadow: none; -moz-box-shadow: none; } +#filecontents h1 + #toc.nofloat { margin-top: 0; } + +/* syntax highlighting */ +.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; } +#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; } +#filecontents pre.code, .docstring pre.code { display: block; } +.source_code .lines { padding-right: 12px; color: #555; text-align: right; } +#filecontents pre.code, .docstring pre.code, +.tags pre.example { padding: 5px 12px; margin-top: 4px; border: 1px solid #eef; background: #f5f5ff; } +pre.code { color: #000; } +pre.code .info.file { color: #555; } +pre.code .val { color: #036A07; } +pre.code .tstring_content, +pre.code .heredoc_beg, pre.code .heredoc_end, +pre.code .qwords_beg, pre.code .qwords_end, +pre.code .tstring, pre.code .dstring { color: #036A07; } +pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s, +pre.code .rubyid_to_sym, pre.code .rubyid_to_f, +pre.code .dot + pre.code .id, +pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; } +pre.code .comment { color: #0066FF; } +pre.code .const, pre.code .constant { color: #585CF6; } +pre.code .label, +pre.code .symbol { color: #C5060B; } +pre.code .kw, +pre.code .rubyid_require, +pre.code .rubyid_extend, +pre.code .rubyid_include { color: #0000FF; } +pre.code .ivar { color: #318495; } +pre.code .gvar, +pre.code .rubyid_backref, +pre.code .rubyid_nth_ref { color: #6D79DE; } +pre.code .regexp, .dregexp { color: #036A07; } +pre.code a { border-bottom: 1px dotted #bbf; } diff --git a/src/clients/lib/ruby/html/favicon.ico b/src/clients/lib/ruby/html/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e0e80cf8f15fa622499bd8879479cbbe1dcd9ba9 GIT binary patch literal 1150 zcmZ8fYfKzf6h5;%yF0tHGqW?ZyF3GKON82FHI4qT(#H>D{8Q5ywf<>hOKOT5ntoKE zbIjb(M@elCdD82Ca>*UblF~je zs-YW_-a09p;kfK;d*AKvY*f;E%G8X35+g9WKkcE3X9JH;?{sIKkz7WkN%6KoHlmQE zKDd-l2<|f=cRfV429g$q+Z=?Nasfu>Wu$EU3YnYcU~Cvb-q!gb-@o8g+n{A!gpoA~ zS?z|^9cKQ!uqq7@mD7+or&}L~o-zqD^BN>y7@}E^tj&x0lBaW7_6{QO#1F`R{3i7D zF^H~kvIdLNn&jJ*ayZj*hmzTi7hm}jdrFqD zWA9C9*)h)F$Zy&Rn^p(W$@ftxcJJO_+Lmo?3uLcJas~fc2!7VDcfsZBMQwNi!xO8J zyzL<8d+cd6>8V|F0JrBDc zflE6vm*6MH8sI57G&4@(IX>5)>D(-n+k%j@j* zd2J2y;nJ@MN$zK@A8;Mxu%=yRKd<6w_a2J zv;?KQcs1>qV1y9&pX`D2cZ=S5>-OY{ znqPk|t6Ex0&zo7aYL^y7wc~r2UR|%HmTE-#uM%zFO;mV@X!ky%;%A5s + + + + + + + + + + + + + + + + File List + + + + +
    +

    File List

    + + + +
      + + +
    +
    + + diff --git a/src/clients/lib/ruby/html/files/async_rb.html b/src/clients/lib/ruby/html/files/async_rb.html new file mode 100644 index 000000000..0a49170c1 --- /dev/null +++ b/src/clients/lib/ruby/html/files/async_rb.html @@ -0,0 +1,120 @@ + + + + + async.rb + + + + + + + + + + + + + + +
    +
    + +
    + +

    XMMS2 - X Music Multiplexer System Copyright (C) 2003-2016 XMMS2 Team

    + +

    PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!

    + +

    This library is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at +your option) any later version.

    + +

    This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details.

    + +
    + + + + + +
    Required Files
    +
      + +
    • xmmsclient
    • + +
    + + + + + + + + + +
    Namespace
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_collection_c.html b/src/clients/lib/ruby/html/files/rb_collection_c.html new file mode 100644 index 000000000..442d68de9 --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_collection_c.html @@ -0,0 +1,68 @@ + + + + + rb_collection.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_collection_h.html b/src/clients/lib/ruby/html/files/rb_collection_h.html new file mode 100644 index 000000000..e53adfc3b --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_collection_h.html @@ -0,0 +1,68 @@ + + + + + rb_collection.h + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_playlist_c.html b/src/clients/lib/ruby/html/files/rb_playlist_c.html new file mode 100644 index 000000000..ac64dab5f --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_playlist_c.html @@ -0,0 +1,68 @@ + + + + + rb_playlist.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_playlist_h.html b/src/clients/lib/ruby/html/files/rb_playlist_h.html new file mode 100644 index 000000000..5f63f990b --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_playlist_h.html @@ -0,0 +1,68 @@ + + + + + rb_playlist.h + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_result_c.html b/src/clients/lib/ruby/html/files/rb_result_c.html new file mode 100644 index 000000000..e7fa7a689 --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_result_c.html @@ -0,0 +1,68 @@ + + + + + rb_result.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_result_h.html b/src/clients/lib/ruby/html/files/rb_result_h.html new file mode 100644 index 000000000..e72c782ea --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_result_h.html @@ -0,0 +1,68 @@ + + + + + rb_result.h + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_xmmsclient_c.html b/src/clients/lib/ruby/html/files/rb_xmmsclient_c.html new file mode 100644 index 000000000..13bcbeab2 --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_xmmsclient_c.html @@ -0,0 +1,68 @@ + + + + + rb_xmmsclient.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_xmmsclient_ecore_c.html b/src/clients/lib/ruby/html/files/rb_xmmsclient_ecore_c.html new file mode 100644 index 000000000..35414a299 --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_xmmsclient_ecore_c.html @@ -0,0 +1,68 @@ + + + + + rb_xmmsclient_ecore.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_xmmsclient_glib_c.html b/src/clients/lib/ruby/html/files/rb_xmmsclient_glib_c.html new file mode 100644 index 000000000..5c9d73c28 --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_xmmsclient_glib_c.html @@ -0,0 +1,68 @@ + + + + + rb_xmmsclient_glib.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_xmmsclient_h.html b/src/clients/lib/ruby/html/files/rb_xmmsclient_h.html new file mode 100644 index 000000000..0c9efa64a --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_xmmsclient_h.html @@ -0,0 +1,68 @@ + + + + + rb_xmmsclient.h + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/rb_xmmsclient_main_c.html b/src/clients/lib/ruby/html/files/rb_xmmsclient_main_c.html new file mode 100644 index 000000000..1a3d563be --- /dev/null +++ b/src/clients/lib/ruby/html/files/rb_xmmsclient_main_c.html @@ -0,0 +1,68 @@ + + + + + rb_xmmsclient_main.c + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/sync_rb.html b/src/clients/lib/ruby/html/files/sync_rb.html new file mode 100644 index 000000000..de66e512d --- /dev/null +++ b/src/clients/lib/ruby/html/files/sync_rb.html @@ -0,0 +1,135 @@ + + + + + sync.rb + + + + + + + + + + + + + + +
    +
    + +
    + +

    XMMS2 - X Music Multiplexer System Copyright (C) 2003-2016 XMMS2 Team

    + +

    PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!

    + +

    This library is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at +your option) any later version.

    + +

    This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details.

    + +
    + + + + + +
    Required Files
    +
      + +
    • xmmsclient
    • + +
    + + + + + + + + + +
    Namespace
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/files/xmmsclient_rb.html b/src/clients/lib/ruby/html/files/xmmsclient_rb.html new file mode 100644 index 000000000..2559c7201 --- /dev/null +++ b/src/clients/lib/ruby/html/files/xmmsclient_rb.html @@ -0,0 +1,110 @@ + + + + + xmmsclient.rb + + + + + + + + + + + + + + +
    +
    + +
    + +

    XMMS2 - X Music Multiplexer System Copyright (C) 2003-2016 XMMS2 Team

    + +

    PLUGINS ARE NOT CONSIDERED TO BE DERIVED WORK !!!

    + +

    This library is free software; you can redistribute it and/or modify it +under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or (at +your option) any later version.

    + +

    This library is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public +License for more details.

    + +
    + + + + + +
    Required Files
    +
      + +
    • xmmsclient_ext
    • + +
    + + + + + + + + + +
    Namespace
    + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + diff --git a/src/clients/lib/ruby/html/fonts/Lato-Light.ttf b/src/clients/lib/ruby/html/fonts/Lato-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b49dd43729d456e489a8f4c8ec323a47ab8b9ae8 GIT binary patch literal 94668 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

    FsulxL_Yn=fqW!JSYn4UZz_VI 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 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/fonts/Lato-LightItalic.ttf b/src/clients/lib/ruby/html/fonts/Lato-LightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7959fef0756e905627298817d86513fdf26d6922 GIT binary patch literal 94196 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 Sv(kH?wp@?o-S`p3*#7{ysOP%? literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/fonts/Lato-Regular.ttf b/src/clients/lib/ruby/html/fonts/Lato-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..839cd589dc5eba0da98b43451b4ec6c328ca48b8 GIT binary patch literal 96184 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

    ucu-&%9a>XM7550A4YWv99%x~0LA&?HZ)eRytM zPHec+8a%l$)f^k4(?!IZQwx0$^QU^#)A`B04@j;xyCZZiZ(EM1K0m=7ZJBwkGb153 zIWIP&KyTKYdoQGTb+$N*CDx`ZlI;3+dbYrJ!{o@B{=d@KF@F^_s@v4riyvu*mJg2%jgV^ThXbF4 zt-iPKv%6gO`>6BcC%iiw4AFph7s57FdCS$ooJ6bQd2I7ZTZ5=f7F?=Pa)KajP{=u{ zR8z{v#CkAENwK#Gzbeeh&dNwliI3H}TspJEWp?O75-5*BWo2f23@%YM-GTxWIA;cuvfX!pkAgCV#hsPF#27yq5^_O&|0Br<`H^*sRY@~1Q>(WngMJAb<@B{k|rXNm`aHt z&?XSmD3pc$!`niJ-q!kz%jU-arKSWSnZ^KLjN2>*@E$m?h%(g4Y}6u?x}3>e3~%Eh zZJY+)R|2J(>`Wm~jqDd{o_?|9m8vXRsM?TPF|jPVV*Tvm+_?|UP;jB<67|e21qsGb zbzEL;nxkq{XL-TG-Lr$aFjEQL673zG<}99C?&|xKv!Fi3Ry<*tEm%3RrctSOrzOid zgDGp&>WRZ|o>MNl-C#SeYRoIKSsf0UFWj8jxU7Bb_Qf^QCk+wYjpm;-UfWq zCMKfBQYayzNlFDl1&r1_>BQ{`-*-E1WWSL%L2;R+AVSI&cS|IqPiXY^pSkpb&W$C-fjjPycIB$1yUKX51aQs$VhqOygfQ&UGT zEGxZsRNBqqX~oge#i?OosqB~*&aF~Kgsi&oks{o%R>;a6v+&~WU87SsUVgizsQJdW z)YP^cn@6u}PfcxKH@c)fKQuJIy`;D;*J{mequ1#S->y|@X=C$RcH`RS(d*fb>qnQ2 z%L@(78&^_1mfbiOB!Yfu?Ef5o_FhC#HDrTVFF+b{C`6$uAv#Qu@;n5<1`@=>fWUb0 zGe9ZQB!iLwr649v0+mRBPN_8TQ349Y{-c{AG2*>K6Nq3E%38ffN-D}yl49LXyG|1% zBSo}Gu1TOwAQ=C`# za+~jD>c}aXod?Q%t+Qqedo!Bn7nrG9ADWYFv*(UTa(Ro(-M(?9cU2qA3*VmT`-9qi zN87CI>6^z@teDko8*%5z;j1QiF1%Yjxy;pAMjy+4kl~s#J3uo;I}qs&4`LP>CYhN4 zju|JWbVbF_U!wRgYWtx&UVPp<-&-7&Y7jw44;mFT7L2R6*r>?}9qZR79`UP8%2CI> z8B&Q_SywZ&*k&u9SyQJ}D`w8+u6@%t_Zg*DuGY&^7oL0XgQZJ8eD_>enoO_O7@qdc z!D}$?YTsM*<-mIkLF_%5Tny9yMbxjHWHAi?*`91Yjh{PHap`L$(i!vc9=iEyg9fij z>pJ)Dhf9`z@ZPzFsd$ZCt9*uvp&BI}`~>cK;T(3ysP-C?;$oxhkzod{Mk$v`)KI@* zMJre_m|+VMJ|SufX47GW6d_IkkA#-DdRZ`+N>W2CJa~x>3k)hkO`I^+9TBWmsg=>G zc@Dh;4i4tT1#^wuPUu~{6DJ19flIVpr{#3;n@o-=^e;X=xAR{AI9uSOHDH_uqW5YB z#%Q8tu~E2v=n&b+S}ymy=3VJ#Ap-jE{ztj5gd>Q%#b;84o)oH}%;m&0Eu#Ho#`R&f zC!&UHRi!#=OfIMJA9g47U_t+1CAH9l%vRaFVWL68uSG3~R1$&fR>sVO!~iMdM9o8C zAoQa3ruxfGgrv4%({JX^`}L;!`c1!{H}^N28lLrxTUt`GwB6%rXUB0K?&R~n|2ovt za)=t9f1VnjYH4}O_v!Py-r10!zu}!-yWVEUw;5*0tMED^h5L~Yi}%I^!*%DNH^49O z)tEjGE`@VKB#lhFO3HLPqgyK&6QUiuOpg$7A87{TA24|)-%k|AAWeughwi(BhW3#S z{2vpO-jd5yK_loj-+sCQ?_*w06mXG2^1V4JRKhFqMy`awMdBrh9(bNW?~5h?Yzubf zR9qPnNAXckqd}`888k!cSK`cbkwI@~IMN|m4kn7U5Ppu|o(?#-g*?~VwtZnqYUAtz z-}=}_H|>dV_LgaM^xt#Gmqx`_jL*()uS`?O?V*BFHcnl?>_K5K)b05C4J)o4=3A*$ zIm6}*GsNoX@A78PnO{^ip)k^(J2E8#4x@I`z0 zIVa)Nv1LgEn*|xedI;LzKLr7|{+-|*ykj#z^O=Ytia&*y8teL!hetzzh zo9gXBI=v)Fh#2loOdHvelGjlYyPCR7+H(rq3t-CXk}skNG7t;8cfdYrk)J}`1lug3 zB_On4IU!8+`%xga$p~eng$K*js1(`>nu&!eG=pa(cJS-}!(cq{K;MnV2#KD1_R$A; zq3`eDAz_-<>|0NlSafat1HR`%3+#RQetiJ?@IJgdnRva!1S-(P1dbQX6f{BD3QwGu zAZ#T9PZ6gQG7zUqBwQ2t&%~7(W8uF!oia1zQ|fZ?Lt;_*%#0L%=grT2Qdx|_!M~Q8 z>nkkjoY47LSAPA?&(AIDnljpvt+yF6swS4!EFP5{Q@5xtyQ{FXi`y;KxYK+aLQ1-} zk6UnfO@%c++g2MI>5fcoT|T08PHnv2=-{@qxo{${rDHCkm`%DjC4@zL437{X0=8lj z3mLk|PziC4NQ+4sL_%rk5W(>~H%wxnwD8C8-30guP7$|p^tP_Ds?|@=o%5^ZrOj=0 zwmRLu-KWV|?t3$K#Qe&tuBN2K`p(j-u7(7DUhdonr%m3sva0<0r#i>Kv6OzKxAxua zit*K!FKA3kZtN_nxTY>Xt!XZhJP#u+!1(o|CS)ScQ*qFN&=42&Q85x-0&_KFen%L- z88~1Vl@w^?eZNvA$6U{iRfXyLjJhykYrQj3bD=3TTC&|5ZwS*Zfu-nxJh~x|kv z?t>f0-#aV!)|kr41=TZ4A|p#?Ru@dJjNzV4sBBM5Zz*xROIp&?+A9+nzibA+vjeyQ zzeI>~MCV!*wQ&ixvx>@QSG!Y2iYXAm-O)btlE8%=`Mn!rY< z<%N$|X+tp6A zA{mH1W8JQ#@FCXWS7box|onVc~jI|^;FRrPb*EB3U+p+agWqfgNZh1>VLPc7rEy`xO z@X+NX#QaA0>!jgA9b%n{WSV!ffhxEbI4lYeMPy!rMJ6mX!EKSlU6C`pLKHlwXbTQP zidTtsIhJ1$WHLNJ5M)h6CdewA8YyXOZJgLNv9dfr7l}P+lJHQSMkbI3+Mv=TL?h(B z7*;d)g_jPbJqEC1GU{!}Ss~oZNROmaiOU(~X1Njx6p)1BDH@8#V-VBACZkz$+sH|( zybU7@TJj@`SN>C~ig27P3lC9S12ruDwpm#+Kxi7B(6{pPkUAC1xkn-tdBzRwwlu9BqJ!Kq^fb=?`h%-b6@?{9n*7TM=rek znb~umSy#K*m_E9g#sn2jTU%Z=hUsF2j>2%*J{27PD6c~g?-$NC3^;tDu~1^c0~u1C z&SkK}&vvjZ1@92^pfm%n4@00#7=BNvUB0ew#X6bOdJi}3W#65g<(Abt9r4c+mInlr%1`b8mUb_l>YMv*YG5S(BPeOp&|RwcRr(pS#7Ua+goYoxgfx zl(#K=Qd7c?yq8d!cn9D<|)m_)RPvqQ54eyuC!3M7ucdM>H& zb?(XDTZFCKeNkI{mhE`xkmm=HSa0-@=VPG&**x+2DxN($hy=0xgA_4u;K?qX_}tpQ zLocz1D!2D-@jsK%-wXO@k{WN70}2Y>3pkV~P*j4HlL{Q-EA}qR;wmwDZiHutm8!sc z42vJ5T@hghU9eIvC7Co6i9k`4=pbRku$-huDp1rkdd3fd4B?OjA)k~tadfTwZG(j# z&c61>Ev@(adY_*;{WnyzXVjf5W+i)cVOoQ=uysk(l4BdIM{IiW7Nt4TNDIu`d3|SM z@?s1kW9*{pBeSe2rSUCcN_A{>Xx&|ZykWziHjnhty%Xf=1eNaxo;jLmo+FXk(d0%X1s_)1Kf;0YOY z^U>uZ%Nv_V{Mur65W>kQxyBgB8ZZY#`X2prKsBtsj4Kd4a9 zi`OGt0tU~Zo!p$>*N*Po$$luxp>#Dqx=6Iw2@JA1`FVH-Qg$R5c^B~!4s*6H4yJ&@ zvjP&uNrCt*5=Lz7jKO&mV+QCj%FkDu6biGNzOM=oy=@=I`ApWN@Fc5G!SnlW3k_G% z&p2sFR#cy6~>BRblD9Rm3^dQH&qWY+k^xe@K2b zTO1aa1)}Vo2#COm%uWrAgz7`BTC5{+`zBc;HN7u!+`cKoR+aI>iO@6)|MzdFYYh^Q zHPzV5GfXgj*xvtF;m?roe=a{Z=oE;eI-nMZC~o1;(2WkHM;;uaPA~$^iJ_+1j>5j5Y>jix8^?5u=)@96Bi?SeCg67)w`-KTG4rI@_8f zboYket}U)ue`59d^G(-}PTc$0c`l^yLt$%C*RH8k9$j3zEwOH1$xYiBZhWVuEMFFm zr1Qe3l>*k*S+bff9ELJJnmrKwhz{sr@Kf`oNxUNv84bC}^ni{a()gaAx3)fwFe%#2 zh%9E=L_dVt%!@kmI}sl@va^DAJ`|N>>CIhM`ok2M`t$>ASWBMb@Z2fZjlT#hg+?zSXigB)yybb zbpz;;hg{QJpw}?wXCdG~G$dhB0~95aUC@&fjCvZ>gBUA_bP=5vWSR1F5jQx(LtReB zJbq6(;E=#iW@^+uu%hc{revu<839LnQ;<=sODdmOUOc7LnLlya>SYu2y~_?RxcU8t z9Jxhp%5GTLR6eIBHopUxI`Z>7ADO-Qc(vqNjm8=0bQLtD6x8L!C3>2dwvK;fX~oph z?Mh8jc9OfiBfq#QCnhd?^y&$AhQ*zj0qn z%YAPw$LDQh@0l}>X+#-~+rPmf^=`mLsQ4QIH|( zP=+WtKo(s>0rT*$coTcEc~H|+7ZqK8>QX-(>Xg!0xk@Ti2hj$p%bFAFkkLB5TB?xK zIKgGT*H`?6?`~xfTxH)~PlzK64=Z#!i$eMLbP*V5cxI`i0AKXs(ER0*amHxPh35j} zm3)QqhLH$ws2YgCaQ#SOxjA4Z)*0(Si;*j+(4ouv*tw-)FI?xmJ^*@Aqm;fHso% zFb*RL_gaJD-Z3vkT)zxBFNsbasKfNCeWm^E8)X!B z94lH_YLIL;_5O)ZzwieGpV$jZS2=ALZrNUI3zIC`j%VNMdx!djKKwey8^t&s2t^1D zU5pA=|C>0TEyCgPaK-R=1Kesc*9`lXxMzfq`A)U5b7a~8VGRV}HqjHN85mDb# zqndVD5=@B+zK7IoxsMRvyS%XlFZrBbDv_a9HkYjMDjm?|DFP>zae=~x7?>R-mc{4;>)XlnKuyA6WgJfXi+oI! zWk#~psOYhA{L;EmsF&E<<_UTE(`%DT?)uCAsgsLai&HH6FuA??=%P_;$0qyIQ%05- z*_Q2}lNOp-pbZ@#l^bJpluRuzm_OPhsav$f5$70fT(fi9q?;XDgVU8~c=-lZIHc){J3q^sBz~;${s3O4l>OrDdM52THrLcG+`#UbX&emI0 z7g-~OrMS%@78)R;$tY%P%+!o9-Qfh|LrMoqrpy))HX8ArE*WRV1R~$&R%nZN&lw|< za>w*>Ycmh{hJlc2*H+%T#aYr3y{v9R=?zCg##Ow!{5geH4iD5f|^p=CP$*gU#D~#9sj9287aLX?r2I7tR}gW z!b6REjSA&SQ8a3Btrv@o{&iiEu7hH40sA_@xSXqPTW1j#*~W9J&0STc6Dv}5=HPTk z`^-+y%zs;5RlM}c1*T{G+O`VnjH zURyZ5CJuazXn@-+Jb`tJab5+~A5^R$Vf0N0eZ#@7q7aMzD#4N+A)3;GLOO3K`wrYm zS})!gxQO~UNU)9Abf(N`Gm1?zbSQ;Eg^Zs~S>6p%teV3DK0L+lPE*)JX>F_O%km`D z9ub*blN~{$eShZ1sRWa8_@puG$E6xujq;G}mf~@%dmn=CPxsx$zb%nMLysWi$h}^z zoXX_sI*yYS$8!SDYRp(+PojdNgM^nMXycJH;<3<6Db|bRa?%up(SwqK%#oEzWC}1M zCsaP;%AbAbFIv6fbt5SmGiv0xx^dN2-a?ndYSF5Zoy?`VN|tgoTVUZe6eX)-K17Wb z6I;NmXPiB-vKUxkL@lNSsosI?I8*JS#uwS0eo(S7g&N`)I&-Jq+*Da)cjR>}y?$v& z9>_j_{_c662~7zZT1TqAW>oI9Tj=faRpV#ONz1KtRn4ugT2L47JC@y)6MoH{+1Etm zG)klq;U$hBZE=0|lF`XJW3o9aS}O@Mr?*rTFP)H^SUoYTW@eBh9IuVPd0h39 zQOOrxawl7Z1*tr2WVSOu!5W%c!i}_L*CdUbH*Z{0O|}g*2L|tiasE%}4HHT7#v7sd zS-P7U1*n67O#qLH9wttkh{T`}C&kMx#@)E^`r6_?wEA%9<{)&Ha1d0skV?M*o57W0CeVoRLZo^?Ee&2!Uvfd@ zS)*Pd7hManfZL@r41^tlbwb*5;Ec(IO6??<(dbG-#kR}D|E*Wa|BV(7o=aiZQZP5J z|AcR|I4&cig4U@+y<6mvogimR<&L>g>e5Ppqu zRJ53K2-rHY@)y~*?5yt?xxIXDts^^3&Z#wWy=r91cTD8Mi^FD)Oj0O1R5CieLE`<6 zNulNt^!*z2wUJbB5~6YVei*ixmt*1&Ix}nsl5@Di)IfA>v_q^p6Kg3iP0=BmNQOFK z?tM+NF;q*v8k=>8?`CzFP9LG7n;tSps(lAFHe32Z;YjZTN*x`8HO7UyP(^U0(HE@K z(+5o|UpPiY(N{!h3qJ8If5o&JMkA7)jnMBgiZ5z8ARPI&2sirqRrpM_<)fd8Q$l%& zz6>i-HA~^fkR~yP)0E0(xW=M5F^M8-LgwVKx4`ooxY#Pzp2d@RaJ9)Da)!IfoYD-X`UXY=NJYCCJ9qiZ@PLiL6t*DZc=!|>r7UR-?Lkqy6-8OdYtrIhW1L&7KeS0Mu#01Rey~`UM7Al~C$b{;n0iQ2|dAtM29q?04 zFqS;R6jpVP1iSY;ZweW_NpyQP7agR4?+iUQc+VAXuQ@i#0k_vM$YTD24HkFlE_HkF z1bbs4MJ^o2u;uwaBej-2MCt?kOr7R;Z#sGdV(NAY4nk*+7K+bpGgg%Er;?luz2}TXX z07D)$aL*OU3B&|U;xF|jvCd2{^(9|E;N3ZMz>}PGQ+BYz?c2?Qf<=B`lKnjG9Y#Cr2 zvGkpJBB+MIdMAehwabJPT!u9|zigU`*%1{zAe#tk{VGPRa`zk0X%S{gaOT$O@nsPf zS%^9>bKHt}{%_{6?X#{k=x($c=1lKfhBr`Bh?rLc*+lQNH?IIrUk(u_hztFQ58>#`i&rnznjekh%(}6x->NVzJkDm4tCg9_H)z+b?UsUeFY|vB^}Sk#q!V*7M12n>A8>rQra(>)nswkT zJTN9)1FNNj`aa5GaIy7S9UCA5F1F4y7>wy?;;h*tH|8CHHc^-CnuT?Y1paS*OBb%J zF5y1uRYuPp-s+ih>u7GB$X9wi|GzM{%kr)ehCm#qaZ=8mC5yLDv^d6Z}v@o z7_6)5>x!y!xvHYLOul;x=5XPtTrJ3r$~Oh8VT3VM_@h!M7qmggg>b_<-{D(A6+Lo= zASmSTDsAfm<12MKOQX2kHAbVRuhUiLa8yP5N9*K%Wl6DEQZ0RrPM`;4M^2r84fqKo z=-)7^rKr0JWMMT}3cNB4Ye0h>^Pc=!SU!+equ2W$d(3QF#Q*`%C|N=oO;zdUwGeVC|$oL!s6S_GO!{Jq1QjhILrjAyJ|sXBIekD zP@?)xbUIl=kA-c9E0VDExuCG{wa@y-Z?l9-sU}Dzuw=DN8lk(@_a|cry_4^@sQYd( zCt56t7H)+W6(;PR6`1=dyi>z+e9T!72pz5kQn5Od&L~#LBik%yVUdGIy8=H-t?WC? z#q|lQU@oTb9qw~}ufe76bKhL8a%s7DHu;~Q=zE7F$a{K8hBq}zbiHB8fmM_SLZ;zc zU@1=!By~_`EPp2vDs!?kQZo{Cda%C%{zDdXBm5bNd_-kzDbs9|=! zH+|BiDVgP6&B=8}{nXJpGbT?;cNb?w2L(lEdZW`PO`ef6W{TcepVHh_o;i8)B#i#N zZ!hh{-2ChO0gUOe^enbUKw{5t+$i*Yy`SN^1$aml@sQ4=I^K!c)n z5g)WJ5P?uqSyVWzAT1>^E+dZVbhuD##$w+KCOe1|kG~@bo)!>;dWwN+QQ#!Qgk_7J zm|=Y5_oJaP9yc+R(Y=`HWQK*5dZT{I7!eE6-b{vtjAFNlh0#;>#=2yNg(;IJrF-jV zi`n2Vx?Q5@31mpD*c0e1NRebVvQ3CdP^pH4z_+pF6H6Wvu9A`vvtFlBDddRM!)TaT z9F*l5uUj^;{yNOHtD zz}dm)(xB_ zb_4tNauG?R#t6_&9Sys#8fN=>hERcjZo)mo=a=L@0y~Lm4~kr zdsDTIYqOK(8g;NEsVF|PXjHyitJDjr1<(3hS3g+4B(rwm$QY%fZtc?x=0CTwfj?-B z_$at2tx&1dg@nlZq>@Nyc#y29s#^9dbf~_+<3$ViwKR9~24DjCLWm$~6ZW998GQ!G zq4Ays4(kFXa2FT{vceAJ4pCak777OPX;LYxpJd(emS{HuMfgxb=!F-TUjn@6uTC56 zR}|NZTu3KL(PWl^BQi=3*88DzW!fXwWzX9+Z{(8k|2(b9+7L~b}5bF`rZO(VQR!n+(V&JR2curvdWmUv6;zIL8-Q;xJ>aQ=au=ssnXlN zteKl6$ZFML7WG1fGow72GWG^*tR+1XiKGKjoQD*73)I0<3HZce(y&$+)C@8WTcUyu z@!BITJle%zO*lG64CwFx3tyI*9v>SX8jG@KOxP3S!NMntjXf5zv|cK+$Y6n42qTL@ zX3QhDU|wuec*ha3we8--8F{(W61KM98|idJY-!t)I3qWAY9hYdoNHZ$4Jj#2!=j>w zHKn996uP*F*rl;saI0-AZk^74dT;v{8-D8lp4`ChZb(jPEOfaF8%4S%g04+i<8qQ5 zZ?#=ciwc@Yu$PA*#) z-g|o5%;~2=xR>5Vhy&1g&?JubZ{5HIvSQ!#gKVRou5v!bp!wj^8fR~A25 z<8vb2xhV{LeyUh+j#A05FRIZew=5tu?qg|68URYGVboZn=TXK^HZLm5r zy*3|>NeO5%DNHR%jqYvCoUm?3_tdG+?N~PeO!bc}imAf=xSG)_(BVXhep_&?(%t-EeR3)PgzKU&xN=xvLdlBfRa6H)Hk`68}a*oQUeEK=?*aZp}J zV(JCU);ub)uTtvMOm+**OhKHp zG|R)OGN3sn5 zW^%+aVjRYnO1|^t#&7b}YQ=+UwMO-zAcW_oT=t!lTIh}8GP6pj^<4;2sm;C%a=koU z6;5yb2NxiHn`u7(IrlC&d)UB=0U|Cs0rJd=-QOJgPzhHah6+y@FjQS!dcO6LztGbl z>hjHe`@Mbn+`GOOzn!H2gC1tdpnQg*hiy2jRn|RKh=r|zHG>r7qh*|ol^zHrNG=4m z5jmEsByzC^LG;WZmw`n)RKa6K>&N^;Os^U;GeSD&O1e(Ec{a8d~4w8IfW# zBvfRsT{I>=eaxcLl559gWQ@7C7-u6R*40nzETCPDl6|3iny%JCD%4N2Z>p#J@_H0$byw~wxFaS>4T1zEuh9h*6-z`^=tcUV$PFPSVp zstEp1Yogsykd&OOmK${FOs>>yluor}k4T9vFU+$&B9)tsBN9~M!EaeJv$Dc6JgM<& zEll#PS#12x{Bo`l;~z$vy!E-rSs;xs7_saRt$SGyH*4FL%7~PiLVq(i@`S9@KtnO7 z?99~U__$cH=|rn0!|1TVRsBG}D6?T=)9|Ie+i-F&nIumqWi;m7uPZ5!FKZQ;X%;Hnj zP|00v;}EfOi@9susE^cPrdgZS4!f||=hLXZus}1CrEE z`^d7!IthDp1c|`Xn877330{$AbjOI*?JQ?Xu^r_=wz2eK8hKUiHI3-k!B6gQu^Tnj9>#AVweb7Dh6Vsj#G*>M)GVdytpWph~TdzgNP?y(56 z+F#eL)T)5jFf1X6YY7A2D93s=*gA^=dWdl2;nG3un!%d>r6*Psu4krf)}>dxSP92T zC<}@WHNnk+pCJ0i<|tN+MvVk^1dTuyt_3=bEh{4%7URhn6@+54qhv)vS*V2&$r zCv=94ZLsIor^Z!B>ZE^{1<4$thERR5a7(?hJlmcTWzeZTdc1Bi^hTL<0<=}#GeM9x z*jHpASX(c~M3Icgn2^Si1d2}Bk_f6%1}-2B!=({8h)dbRM<> zf^Au_?rL&8ewSo+u-Xz7^Y)w@d^7p~pobG$g48)L^er8Q*;nxe+`obU4d{`J^SW7u z|6r^Nybx&ez;a`xDe?!G8<89|)0Gw1)F&p^UsF-Jpdm4_VL@ecQ&aPprY2!;Lj6K? z&^II`G;~!}F04=J>zg@c%8VIPrugHxd*CCf;3Mg=#wdR(+N34$kv!sdDoFdHjuIQI z6j1~ER`|P&-;ePelzs@YWP7q9Th@?m7!G7>G0LJ%wnK?N`0zrlmal@-|FA^I|s35W&x4D=PFYl4{sK{Hpa zYMkpkr8jX3I(qqqO_$IVE)oCNPy4in#E4oxU7u_pL6yZy&67`RgLCN{`9lc)k|ELJ zd-lypv(O%4hm7*#T*qOqNw5HwWU6jm#K=y}m^Qh=ZRB9$6tg1RfcQolVD+#olYHX|NKJk0P4NW#|c(N=itu zQlSi1%pkHLwk6vP=&~T0f;p`SUgXj?)d1tP6QxpU(rB@3ATlY8eX!dWV;{Y4e0%Gd z=BCQ>;v$C4)a1ArN2G3~ex%4uI_T`nnaPjcK@Ig!+T6=IPJ1cG^_KikY%+g?$e6~9 zNFU0W+$%rYV)wRR%D~tc*>^vpa{*D+Fy?{5b79JygOpNKC{P}qCrEyy1QqKXYhlxJ#g_G8r9^vq&pP&@Re;xqOTXgWsM17> z1=hY0ihalV;7iV*9lT#f(M~*g|7(Ni^_QIgV(`3T=y_Sv;CUTgi1%~-AHokj1K&cA z9-}<3$AnlMD=Ju7!geFAjJG9nX)9Yx!RiF-Fk!1pNU^Zp2jNUG8da|YQSKi z*_-uz%diP>U!S3XOX+)W7&o!EH?8lDgUaa8&GZcYEvuFKn2VF!@o0K@jK?4{P6ECf1lTL*$`1!C!;cgjiiP) zg9pY6QVfi=6|PMPQ_sT+aVxsLfs|8L@4XsgNm42v`gK}H!#q~XH;{Jtu4eNgt zlXc7&;?@jthN5mh_u%LsY#`U7*}Una9op~qn-&FM`x{EOeqU?3s%c`U)HBq*0+wLdLYjL9nYG z%Y#u~Mj&4on=fTDj;*V~OgMD9XkDyBE4MKBPi&eu89A|o-W3g()g|s6B6iTHzsy<0 z#!#_YwC|&rC8yCt--Q+P6}~le6zdS>gSlJ87J9Lrp4*nrTIqe-1wJ0#^nRQOIZ~!a zP<{d2>ggGA?qWZyICqR*#QD45c|Mp9Jzh({=xlHsG|>4cMBUY+nld6ZO-#aNK!CT`^$f_S#pOrghecipl9tY$n!I-Ly!+DTFIYBv+@gf>Q`bGa?t|En_Z~g=%wqG4>?!lS zB3)bfBU~p%|65OA*Iu(*>Yu!={<}A>|JU2s=b8WI6Ar_gj?WjtCz+RBMI3D?#&|2!+EUGz_rWxi-T1Tsq;9tuX!jxx>S? zgCbJidgxs?)$2a0cd+K^-N!NifB3O>$c#)+`?N&m_`7K;Z=i4Ao}v;XH>Ahfi9`=R zuqJD5*1ap1WTY)rQqP>3I!J5u$et}Xce(D0>Yaw&vgO7S3AE=%J8y67ywOQg3eMTq zjh+p6wntZ2S%!-(H`yK*w&sLBzvi1?NQoN$;WtBP-uuNxOR^TmMnw(?n>GG{&pnp# z#Lp5(KJeI6DNAzKeq>AD>90J!d;I*9oo8%2-qzLr&)q%M_2Y$GmP`qEeK2;x1EHSu zXTHCE%IHm{8>f$+IJ!^7LfgmlmB&*bOd1}u^s&qZk7uQX#y|ON%+wgR>^-vS!7qIH zAD)<`%&8Bonz;PS%U#!ObN-^7Rd#N?oxA%z_N`?)XK#!TL)~`zQ;LlbJvzp+cYJt9 zb@%wt#%nX~7<^eg)Z^S3CJw#JrRRhbzD{d{(Y7`?_v5cuJk_PZ+%3P81MB^jHio&J zjKvA@b^=<@AWi+>j^w*-kj4S$Hb?oGMM70~r-s}*LUX-v%Lr}K+HXFR+_NEW*2nIf z>l+;wpK|Q8(H}oL%j>I@k*{=bm{V@=?fdEaL@df&9+7;@z)XI?_6=U3zi0ONf%owP zch*0tH;|a$=&mC-d1n@y}SOg?)t9lQgR9HzpeJeoV$YhN9|PV0W$fP`X{^V zyWUm(e2=x?ef__x!p3F)q53HvYrnhxF}q$*oO`<3l`>bNoR>^ze)`V`J#R+qV z4;;{6vGa79Scsg(CfohNNMM+gF@Iiq>b%VPnKP$PoS;ymp5hkAQkG?RK?_DYK-rf5 zl>T(vvbUY892Y*&Hn`4Im+U^H$@M)QvigM?pZ5K-dUWd#77co0bIn7`zPfs5NL0d#&!w*TiVpc&^~KOB;l8jT{WAwmi1dt9 zfHO5}!R%-JzP^K_?wS*L>4#tb)*tt+U%cb>?VFE0yL|lvJAay9`oTBmZ#$GTZFSnD z_y?ZKSp7fN&oFuJmJ|IqkNIJnTb-Y1{pUGb!*ZrM)6yqPR|*qrP#}X)FVndB_Dn}R=!0X0 zZ2GC?^xIac?mQK7tF8XH9v(RU*7URS1MmFX{l80Hhwqrcf4KIJ3f++IEWPVg=#0?2 zHO`!-74OH>hmO)XGhyzei593(hMI<%idec9b;q^GeRL!_lzoUd2b+KY5?P^=4Q5QA zK5xdnNg8v;S+xJATVT}Lvj@+d34>18prJ0DfA=;#4LL(zSh(1Bk=#=_KXFLP=)1nX zc&TkBxvw-SL&MFDAN(@Kb?WY%dmg`UvMX`LSMQsg(0Sj|kjFEA_N47DnJ{ko=;7y= z)CO#eNo>rfkwZWH!M@MBS0>Hh`t8n%Iw5{z<(3c6&Xx_4&y5Y)pxmC(|A`IVS^wm1 z^=3oe*Z=En^=2#G^^f(`M_R5g?Pt;clX_p0^=Y;y^fAs?()$e`rtE^yfw$~& z8L!Jey0u$R;+y+i(m(NxFbR~%3}N76~>0fyTUCjLW-YKJoVNB#U@-Dg-Hp9R3d%;ZI*)}kF>YMzRHqM0(T0h;$GRi>XmKVa zB3e$+5=l)wb1Zn|39}qhWh#U!=-Yi_Wcbj#ysn6d?o9`GNxI$VzC_!u|D+qg(S$~U z%)kFzvss(}>!+G2EXi20JY(&WwU+-fb5cxP-=WjS-;hqvNB|M)Ve%>RVs1TC;il9) zH-tMRZr<2o-j6?NVML#gKWX8nNP9#+I%)2Vf#Ku+TjwvxKWwyf5t$#xTL0C1^sZvt zoJl~xR%X5Y#*OGYOYScAUTch z)jBLk`$YO!V5ZkvN2brwnvYwy-p3MAKKWNl7VG`ZhV&6GCuY2vx1RNEkHN-cU9s9I z?dcw>_1Jh%v_?6S;|Jd~@zAgv(!X!PhZ{q_+Itw`rke`7#h7nINpFf>_Pbp6Yy15d z=nRoFJ^g%!M!z@udCwm=`+2SdcX)d-?Pg|_JcT}70Dk>Oi zXGKLjG3n#__w`yJ&<-b5zbDqwd*t5G=pnX0Ws=^&;bC)CxQ#J&{N5|B=SFtEWM}aG zX!!oxkV)siHahahof8hYr#@6X!nfXiQN%?@3-0a}diF*2& zxS_3MbjJ<*xpX$C>UWF%f1}@ak0qZJY2A)u25k{>TAS7xaIW}tuOcl@U(Lg9er`dQ z3A$}tI9G~~M*3^L;dwSd|lW{wz!(P96%azIj8lF z^&1_1{EvUbiJ|m(S*nK3P9yd*VBg9-ajIcqNb2fkz;8KgH}t}$fjyby~D_sl44CLa;k>rFm5 zxUTbi&o>{<$~xNo{P#N74NZUQl}8_a<>^I>p0UsJeDq6v3Nyt(wy}8^yyP4 zjJt9A$ZXf_$d3ty+=zs@dbc&%uvnpw?i7%2$ql&~{doVj=*Pkh=`#il?l+g<$5TH` zod3_ewjO*UJ^iU8j}-oNUi^TRN+c|t;9eUQONAqk{Us65$Tj^u#tzOT@ zBh+_aZ?W0#>myxJw_I;y>h9}*XESKE6G3d&Vz%9}S+8YEsa{uwmeIEt_Rw8Py`ID& z%CFM(pXs4{>gM&~16ALBeUt^@)lT>I=Wbm8?|L8V&Gzj+yRVPD?RvY%=t)VdfQm2$pS*IUp7q&3Q(Vm-uBPI-tP()rU zkumcUtZyU^>^{3ivm#q;H|6)&;-&k08-`!2TQFmF+VqGGFAX02{|p}1^4n2kXRc14 z(PxNjaftI_>^nc)>>rVwmErzPfA{c#cOU)5&mJBtHahxQ zPaiF6-qIdtlIaZ(8sn%n_m|YD&Roujo@VXYk*Q-jYOi}cQAo^=enY~Z>l@|?_dFLi zwC_{@eptt$dh+{tJ>Jm#us)sth5UPRMBQO}yQ|R}7y1o%hVFf^W9Rm|l`7j$25%1^rGoklwQjkK~mUn=MNLHE%l-5bR0XcA9y z?{={fy@!&xoyS7I6^DH||Ug*Xiok%<6VwmnAL}3IaZz{RP&akt= zoZF>c3ln2`ZPA^1ZHc7vbtg1FHZC!9@|3%i#*It5d&=a@#Bp2a&zg~#IAhj)Pt4Se z_>m)ZpxBfQdud(9l<7%H(`O`EE?r6IG1p&Y5u==*X;$Cv!D>{0x09~@^ZH9>!e2cX z_!P00r0jiE%(XGh^!XS@$K49X(<6gR}4R+rKuJ*sMIyMvWzOV1^TuKCXLfO809*bvT|^DHh&= zUL8oK3nF6dHK8|>J}o6-n!P1&uIuE5exnC3|GIDdc-L#~ks}AKKNU4*yk&w$^;0G& z386!VbldIhuJ=Q~ud&{EoqD5eTWvXA@!DjGX1GUjL5)`AiS%YrIil_jGCDMQWcuja zztf?jb^)GhSctS3siwy};|9*xBR3xR{ zv~#PZ(>-oq$dBFM(i6Nlr}JK`*S_Ri-#@k|WZVbuxxZC#<2Rm5|M)ka_`m9^p5G*g zyzh$hTvsMZ*c%#fYEOg(Md$atWDm=<`BHf9=#d*%B}RC>QDcTh4jdXjGUWZ)pPjw& z(2@yyOKGHc(DXU;$BfH}?b~mdRH>WX81nC~rJg_DY?o-4UQuMtOHS&e?pd`e zZrJ2`iLpahes9V2$(>IRjZK_4d06LDAr)h1_wn`%aWyH^by)Za*X*$iI=6iAe})bX z>EqgGw%mJfvz%q=88`23(pbHzZQ?jKMeEg3%G^=_z!ujdnd#iP)v&PPVHvY#4xBhq z$AsyA?N!#@udBZEe#hIWNlO{s_pOO}&+)1sd;hMTlcz8F-pXz^R_(xf|<9q#=5BkyPo_1u|Ls6@Ft-k*Kv3z~Yj!uP&D z`_8{jUg7p$;fNo4Zhf!tHs@>354%T4H(nO3RNsECJKrwsbJ^>KybuK+r)j$$guG)|tE9RSymT`*roMxp4LqLv*rQuE-}1iU z$p1gzH$3UKCAp8jx%kt(kGQzcsQ%5ka&Dd98 z>(cZsBu4X*?)Q}5OazLt_msxnNE^Q;6?tAyGPld#c@>%~+h68vN`FxA5Du9q8+U8& z)O~z`a<(J13}D9?_~Z+9j6pwFn2fYf7`qO8jWZ&`yVmjQ?17ABOVf3Jh(9rY_5`i) z42YRDF-jIWa4v^6++3*FnWp9!$LqYyQ7$_s)54e9E^j*xdsaM@yd5)dZft@*?qeo= zXV636tjR9<>C%M}QIXM;Qa`(5_dkzw$BZ1-sab)`6&y9J^RZEH?w-G9!L)J1`$hDN zSh4gs-+KJq&Ih8NFVXjis^z@-a`bUO%+#Z)Cq_;}C zU5{FFud-q6G!fZoILwLO2jGRBV8;kvPUhwAu23DHx$Lwn!p(R~n9Omw21G^7oa zLlsT5C`%l>kYeVAycO0r)Dsc$N}s5x$G+U>tZ(dqvHfZyzWi8pWZ(BsJ$owj{>b5x z`oC+IFXF@3T-#Q3zNYhi?#=A{j(b&vZ}1m8hr1fJv4k_vJSW?bbPdp6>rAMhT2Ox_2!&;x5k~71EUiS zq`#1i)jL0zxMasGTerTlV@cw}yH({?n_uS`S-MMAx zt6N9K=)RdyeYd7hc>AL-&UU-L9+NntTyArn_`|9+y>9MKX${$$t z$kIvTS@Ryx!?M2+MKN?z5^wo7^(g=@#ohMK8GBpUr16$pVR__RzVBZ9*Ap6E-P`$G zpFw^44D93i?q9#KC*)^ClP63_(aBFb_f4n%4OiQJor&q=d2aW<5z2xYoKtgSi|B1T z5*O(NVoBZg}1qB)|c!& zih(y??WeRrB_dcy?_&uf>q5W(!ROrzKYT0XrN6D#;?ol!{!`xwQTi|?;lq^gE{Yu8 zPl50ceWN2qugsmrKJLFiSJVFN4-P6rLHD5F%vAL0{|$Rh*%A}d$M(EisAqebtvs6b z=%CN&=`rK%{3%T?W%DwNp0mQ(mE?+XjX6GQit9d|5mwQ!U#O>VAJ=Q1QG>qvVO_bq za{Ltkkp7*YAD1yWEIk!wCUbOqed^fCo3`aEBD98-~W}=#H@Q3 zjUKh=-c3oV+tUs!QM1$BFHB6EHEPtXw22c_lkBUc z)XoVh_e`C7Ps#+n#rB?i0uRpV{d>-X_VVbyalk56P0xigENlF+1&Gn4U}O_T{14h9Wh|cu&p`$3w(<{_q7!<%g1;_`V1O3Jo$lzlOjUzdbK7p zYJHzbuV>qnfBWkryC0h2i@K+uFU&PE^*l(S(CN~JMqS) zw_IZflRcoGj5!s$TS^?2I686I5Q{L`xmQXq;OzlA46gTp zjc~oP%Pa?%_c8S$14qxFIib(+nC%M_zVP{nW{gSFU!!BbvUuL3TOXS7cfJeR7&&-Y z-`rU<^@cm&;NktY&7Gsy40OKgQ|(t~&r~_Gr*`sq_0J0DM^&_Ax;fw_o!aMZEt`0D#i4GG~?EjrxKD>4P1;Wg}YWk!xi>%w@>v?ag zty${bsRKrIE}J=5FXeLmaQMIv{u&ad&rnz1Gf^Y^{ZH+p?eG0x{YFMTU|kKbme5t!%niJc6#27YRBol|G{6C=l{bgNh9YB z?p!uv0A#~LhA!_cHp>5NU|)rp{%7A&QP2GC%^teXb?pj`@U)4?LFPfDBfWYzsKS{x zuDG4$0nr+P>dZi$SQw(9iJq+T@VwpTIaf)*RnqxPpv^TXqQ4G~?&BKP*)+iG=^x?# zNyxkpe*MA4kc1C^G&FX=fY_n#CGMruVg|%^#}~UgJ73Z0>z~yTy5r&;I<3bQ=ii0s zY$LY};-CMkNq1vs+=u+y^D}3>^V#&ix8%>pA3J=XY_? zs!rn8;HrAxwpRFxvuB5`=rmjv^~}9{ftiF{!ZE455|UU`Cy-1PY)k$o>PjY zeDgGU*y12o9E>51YFvp0owue}E?O)lLfc~PAtv8qd`=Lba+^KdXFmSQ^l|o6)1)zb z>(#xD$({7q&5U)lqjypC_(?-J-nx5zsAueC?~mzzNy9Ct`zJiQ=h3y_&D{F>{B4s9 zzTt}K?CfE8{<_NTi+z9H;F;b!=gL?C9K0Y=-1)>{zYxLyZ#(D#QkJgn|xB7 zov)<Y+Pv%{I<2HO!%u46j3X^4(%ijLOtO+$2SQ&_=} zIQuJ3hdp&4@pQ-E;vgd|&OIUQ+v)>vnjqp!x)NixWhwe zJ-vyIYF2l`W1McRM;7vadHnn;*@@ zSi6hW(w!ZHtAD~=b9X)e)s^elul(w_JpbpbxhV@5rhGA=+g95(VPjnX|&Ua4cDoTVO9ET&>;J3x-H>N*WEqodB^pa@EK}%tUXsm zE9B!=>MHX2ja?%7$OD8FR;O=v|Ks+Yz^T)`$_a7RSY=>&*r;(_^Rk{nNVF z<3@x0Y>c4TOrt5gjB-g`3rlwAgNl!@_Her%$>(FUwaWU!131Rb5W>&7O_jNB}^&Y48G3!{}sl6K1 zjK5KG9lc@kmSH1mbHu)*|901(AL_s0Kb_&> z%KmYjUwvoucKi38;P?J_S4QV|B7P`s+u19!O#Tze@H3stFX-d$%ILZ);)iBkxBllE z92%$HdOiQS3M8&qo!^FxaH>LgI`j2;ENr5a>3P;!AdRM=xp@-!Fe_G>-uEt?;q>$Cg)Z6BhI@aPdf`dYn)nb5PLOzw!Tw+*a9aj z^cPO8{p*R)cN3lD&^_w6r<{FiGa|ghiBte8GPK!=2z}34FFu}k|Ea50|85lhy&;O% zsO{L04z;t{sR}vlEZ4u8p~IZz?)}b)kWMFF`y_Wuv<0pYy53fOmCA?19&>hEy*`72WCjH0bl7=s(^odzHVg zPl7&0`fyFipPXFXTcmi)aG!9pLiTb^naQ5IM|9T62xqCT-|DV%*66cN*Pl1qo@8gL zdx8_t-$kl_+WlAE-(IJ}^MdmTpWRM|WIr9bo9yrSgfH%DGF_kt(?!q6{YckEwfUm{ zy{1oF*i|V=uH0_-$vhfh2BB&YPy$>LsO-P0%yMQ zr{C|6ctQOALNqe9_9#7@t?_S!%G?wXp+WERZ71Bk9zMJ6L=cIe; zob@VadA5tc2c1-X*6HuE&}W>PDkq1G>$1N0nm+cg^~FEw^PI9)Izu0KMuZ-8M(CcT z=dR28{8{A;efF!|+Wm1x>F*kSp47*#U8xUGW5>yU&v6Zi*`lybzjrm(@6)wh*uQI( zFsf^%Fq-lJ>SMH`j97}mB7!M|ZerL9>Nd^}vqUv$dC}(uNsq)gUgTiHCCb$M% z2X2F64wwh#g9T751dG68ummgxcY?dPhcd7ntN<&)D)2?HntR*NT^#@qf``Dv;1TdB z_zHJ;3_K2=08fIigQvjL;2H2NSOcB|Yq`(2X!AUG@^k7hfbURqiE@xTyn+N8z^mw@ z6}(1G8`utBSIato1vCwM(V!O%dL7fC*D(!x(V*8c4SIEsmZ53T>zD?;j%m<~2EEFG z8>6ym(5sUR-xQh#y=c&@H8m@n2EC4H(Ce56y^d+n>zD?;j%m>AmzD?;j%m>AmZj%m>AmzD?;j%m>AmzD?;j%m>Am?Fe21D#Dl6GY9Qp7kKCID)HTtkdAJ(Y%v~rDEqYrEJ zVU0el(T6qqutp!&=))S7Q!e@Yutp!&=))R)SfdYX^kI!YtkH)x`mjbH*670;eORLp zYxH4_KCID)HTtkdAJ*u@8hu!!4{P*cjXtc=hc)`JMjzJb!y0{9qYrEJVU0el(T6qq zutp!&=))R)SfdYX^kI!YtkH)x`mjbH*670;eORLpYxH4_KCID)HTtkdAJ*u@8hu!! z4{P*cjXtc=hc)`JMjzJb!y5ZL9@%Pt#|!$vsII3~6Vvs!FczE&#)Ao9V%I(T)(<9k zm8iU+>rr7EH5iIsg|e_azL+cq4)w-Z5= zLzLw3f-qSCuoT=0R?}K7G&n%oxAFk48QpbMLyT;zbc)I2V~JHUAYe2NzG_;v?10j|lXrhvOD z1dG68ummgxcY?d1UIvzf6<{S;1-=OGhnEB3LGTcG7(4(q@c$rIq{XIUA$CY32U1^B7s6;Q+3g2qt#z zRgGVF6(i5{2jK$6Tw~;U&I!|~Pp6$NU^cDgf&s9Ab_&5Fuox@>OTnFBH7(at4pP1h zl{&B;00XW`SKNgbTW|glW`lP%oG$k7Sq)m2FVT0duK&yem`RJ^|)Y zzk_msZ}X|y1;sM39IOBV33+CwBGu zeA@=LgB_}mm3MkfxDCt!^T2%Y3fKT%1KYrMVH{Q$htH)x}|TaadiP z{9B!VWmXr5)oB%6Ru_lW#bI@ESY4cBRu|`()x}BX?+VT8;^gxU&FbPbLNhe0i_-|r z(5x;_BQ!&^x;T0J*Mw$uaq{z4Hmi$s%2^fw}obPaq{_wW_5A$ z^Hw&in<9P#!v1=eO%Zp71E?9@bzbE$-~^5Br-)y>azCuoT=0zCsJfz~kTv@Fe&;_y%pBqI?=W1D*wIz;ob_ zxbnx~Pr#powb1%G*IWQEQh$l^RV332Ue}c~B)7MP{ktv+qrm~xOau$SLa+!d21~$F za3@#`UZsUr@VaVd%93k^F|w$cdWITK1>?a4aB0`?RKE<&1n*W~n5lVz)vp5|P*0z! z(a2AQ8)-R<@;2Jf0rS9oa2G9?f#qNYSP52vFM_Yo{xR@4cmg~Lz7C!OPlIQ`vtSK) z4m?k5Kc{>Fe21D#l&^4C4d6Af4Qv-4Q(K4g}B=A*&|UDJhW)R>%=R}Gq+XCdKPNO+cHTc(*RY zJ>-D7)I8p0_x1#sNBs`U0lv+rW*6<0f#qNYSP52vFM`$Fp=n{3=2nKLg;|Mg`T9~D|m7!^2mgZK5riEFWTN$3GP1C|G&8H0Cp~kc@OWww$afLf<02{gICh#h9 zZl>Gw7Ht; zUlJ~r{m+%X8D@fOz;$2&*B63CU@=$%mV!IM{j_!fJO~~F4}(X*qu?vFd<;Aeo&ZmR zuY;$+)8HBKELa1c18brC7H$5VnhW41@G4xlg4cCr0+x_~B_v=830Oh`mXLrYBwz^% zSV97pkbos5UJYq8Qh{?<&CNqzi%sgT;^N7jJBPKJ?d5P=yfG>l4L5teW zBQ}yKIR}*KWzYIVc}PQh;wSRNPjp6WHl3&^zF~|;HHkd&6Lp_fo(j(BN>VwVasrsq z6{eb{UG_e{Wnd<_Tv^G3a}Ea0$&98 z!`%V!Ab1Eo3?2cGg0H~QG4MEe0z3)64!*%XpQ3ykJOiEuYru2hkGS&3;7`Dxf;LJ~ zt{xQ6bB90Y`U~Jiu6c+0OVnIJG7X@OVG?DHhS$J0upP8fO_D6+ZJ~{7l4Ki(HmXUI zB^cVMCP@-Dv{6lxBy4D-nj}fs&_*>$>Mw>is!0+>LmSoji7og=7ZcVhes^3x4_1Z>Vgs z1-~rQ&|(XI$6^b9VheuRr?qUc1;3u@_N~Ph{Ccum*WY{BnXY{BnXY{5@#!S7gX!LOK)eQU7=zhkilzal?YW3dIl zBy4E01-~S0Xt4#qBy4E01;1?As9S8oFVA3Tu?4?8gQ3M1{PGNj7F+NuPHSkf1;667 zh8A1!D^6=@u?4^4w1yU2@M|n#Xt4#q#uA1WTkty;TkvZ{VP%Ug_%)(1wAg}QBML){ zE%+UaE%+UaE%+UaE%+UaE%;>{cK;Sz@N3j@QE0IRzeXK~7F+PkUs=7y7W^7@m}D%r z;CC#x;CC#x;Foooomgza?^tZXFH5r;i!JyS*D|!&g5R;&f?pQ+wB&8ktz=o?exX@l zG8ULD3oKDNN^#3%S)i2%aLokSU9#-WuAkBMqA){um@K=pD{XBeS$1W(T>UOtR%B&c zp-7hHyeqVbQ?jhWYH~ociey=Z;S*pU^*bn=JtWH>?D_)e7J@}!F<1hYf;++e+|>c_ zAb1Eo3?2cGg0>oxEG-+_YDluQY-pvb45e+2uAHN>Shc zgV1I}Da?ja)ZeXav!N7eTAmm2EbZ zBJCL3Y$!$YH?-MMih7x$&4yCc%M5Kcl%if{XtSXd^&O*V) z9G=2BJcV(13ghq;#^EW9!&B5FtTh{lr!WprQD3kc8;7SzsKd98YaX6Fke;n#!{`PSx23nXVld+slg zw5@D2Cgpu}JttgBo6EpVaJgnu3*=X=<<;OC>eo_UNBMrr>uKRZ${V`&==zOXNn9Ym z8W3htlg<5a<5xLgE;Wy9KCnQ2$M7jy$m81`)C9ODpPB-ADFlnaVz2}(1$Tlr^I9NX z8`{ikfpl$XGp_~GwV}rU?o@uz6icT%g4au;0f>~_&RtBJPn=!&w@4J zIq*EK{haaz@EvL{QNF@mHGtQ^Hn3foDw)&^ZH+rsy~)tlxKq`S4DC6R%5x-@=SV6~ zkW`)^sq#N|jjeH~$|enMjXPB~X=rQQsj^8!^XjR1^;EoiDqcMmubzrmPsOXJ;?+~} z>Zy43RJ?jBUOiR*$67Ogo{B$DmH)9C^Xh5DsMCm1rxBx0llCvFeu74KY2vg_Xff(E zacXEW>NN3dWs6a#X?7D3T8uhPGq|UP7Nbtn3@%G(G3qqgz^g)wQKu23PLm}V6^l`) zX&$#+Xff(EV$^B!*j8^b>NL&o>|2Xbr%8H7(PGqTlAfW(sM91pLyJ+TNqUABqfT=y zMxEwZj5^J+7OuVU5rW`oIm6ZHBzxpM_bJv#HMo9|xZRcYpz~5o`jR!4|MXxI|PA3cX-I zwYfz4vKqg}R7)gtt4X7rPI*IDgK9P@=D9@oVC5~;XY;FEFaS1!O<*(F0(J;9p_>Wa zOwHxrQ;pHhgs!sFs4=>knxWgbMmH0>nb6IIZl?5ZzcRX+(y5`*&6J!Cjc%soY-n`v z*0V1|sLUOqox*pwMs&{#qrq%ya>2))t*UmbtNf~&atqi>O^3=W(BKL* zxI*03sKzw70u8P}gDZ6ZR&N?yAzL*x4X%)t8kz=Ih$BPO;0keMXc}B0j%xHKs-@D! zN_hsuOmGdj4txbX1|A1bfG5G%!BgOA@CmxQa}PPvD=hgER53hq|H z-72_S1$V39ZWY|Eg1c34w+il7!QCpjTLpKk;BFP%t%k~KsH}#{YN)J+icayDJXb?y zHB?qZWi?b*LuEBoRzqbqR8~V}HB?qZWewK225Ve{HLk%L*IstZ@z2xCU!ngEg*&t~QX%GS@%ao8DFlnaVz2}( z1$Tn4aQ!jxICug)3BC@V0#Acyz_VZtcn++kwVzYI0A2!(qYav67+%*k8^uwrFdDoH zwhA}V<2KRbHqqlY=~;YU_15Dy=?QCSJ#Lepu!h#-Ht7j#XgzL|p0I}2<2LCDYiK=g zlb*1K*5fwm*=lG#Zj+v>=XG|o$vF!-XCdb-P^mB$T7M-M^v9IZO9% zXmZXH7gjboXNe0#lXDhw&O*+c8To8x`?4jCgTiH?<(g(o8itl@nyvAV zQM6psY>jpdE!Q+#+Bb@pYnmJF#5TZ0W+#a!s?P3oBc$X|~2-CIQPe&6e$% zE-cqHTjMUPv0T$^jk^pj*L0hF@=9SJjl{OeGh5m6*|tfiPYW%dZJV@d-&#J~HjPy8 z5n4XmHazw=tu@rDZ24^4wAS#h(DK=~$xB;1me00LUfR&|*|te9hL+E^O?ojb0WF_x zoAhF6`E1+7yOk}UZJX8?tmQh;^4Ye@=UbbW&$dmR+I?C++ctTAL(6B|CjW0`%V*1h z(;PU>fzuo~&4JS#IL(3695~H^(;PU>fzuo~&4JS#IL(3695~H^(;PU>fzuo~&4JS# zIL(3699f{ueXNbwbM&+RpmXcJXUv%M{u!ehn>CXuJ3|w49CY;`gG^ayGWJezcwSqwV6<>Mdtu zyPm>^mb0;4TpL=>#&&US?O4vnc5!WJIUC!>wV~x~Y!}ytmb0;4TwB?4Hny{Vw4L>% z?W`Yd7uVLNHHS@kP1#qFj7YF1{!iU!?J|d{HjGC>LLpE6;pTHRg+Q@kP1#qFj7YF1{!i zUzCe4%EcGu;)`LLpi!aK> z7vHHS@kP1#qFj7Y zF1{!iUzCe4%EcGu;)`jZ`i^nSv}r4cI^@NFSj1QvrOU@5p0tmap>l!KJ7tNaACo`BX9vI?s)T9)Z( zXtbVy))UZrLK?JdjMfv2}!`pMk^1`lP8K7RW=`+hv&(| z^W@=q@^mNmt@+qIJWn2;ClAk)hv&(|^W@=q^6)%)c%D2wPad8pPj_oAn2*iF^W@=q z^6)%)c%D2wPad8p56_c_=gGtK zYn8~x9s&A$fc_p3b*s0rhw}a?+t?#Oe-F^#1N8R*{XL*No2_qc>|rq&D`%*`2k7qs z`g?%>9-zMm=9-zMm= z9-zMm=9-zMm=R4>ERbayT7Qp+yJ_h!7SKAuJ$5SRfhNU0H;%Kz3qi z5yAo@gat$h3nW9MXc58!Nzc$Cgat$h3y2UF5Fsp(B$qpd$gmI@79zt!WLSs{3z1 zOORm+GAu!cCCIP@8I~Z!5@e|N63U;HAj1-5Sb_|-S}uR6^;P+q5@c9{3`>w<2{J4} zh9$_b1R0hf!xCgzf(%QLVF@xUL53yBuml;FAj1-5Sb_{okYNcjEJ21P$gl(%mLS6t zWLSa>OORm+GAu!cCCIP@8I~Z!5@c9{3`>w<2{J4}h9$_b6d9Hx!%}2eiVRDUVJR{! zMTVuwuoM}VBEwQ-Sc(iwkzpw^EJcQ;$gmU{mLkJaWLSy}OOatIGAu=grO2=p8I~f$ zQe;?)3`>z=DKacYhNZ}`6d9Hx!%}2eiVRDUVJR{!MTVuwuoM}VBEwQ-Sc(iwkzpw^ zEJcQ;$gmU{mLkJaWLSy}OOatIGTbGJJ?88ZM~1dDVwdjU&~`@bQp<+6Gh&xoFtnW! zyVQbClaT!171}I&x3pko+mEwby0Eg%vUh6?V`#JN-5SFf+AMpwq za9sx1WpG^v*JW^B2G?b9T?W@>a9sx1WpG^v*JW^B2G?b9T?W@>a9sx1WpG^v*JW^B z2G?b9T?W@>a9sx1WpG^v*JW^B2G?b9T?W@>a9sx1WpG^v*JW^B4%g*yT@Kgfa9s}9 z<#1gN*X3|s4%g*yT@Kgfa9s}9<#1gN*X3|s4%g*yT@Kgfa9s}9<#1gN*X3|s4%g*y zT@Kgfa9s}9<#1gN*X3|s4%g*yT@Kgfa9s}9<#1gN*X3|s4%ZcMT>;k>a9sh{6>wbv z*A;NBU52ua3b?L-Yvl&Yk}Kf403a+c*x(cqV z;JON~tKhl{uB+g>3a+c*x(cqV;JON~tKhl{uB+g>3a+c*x(cqV;JON~tKhl{uB+g> z3a+c*x(cqV;JON~tKhl{uB+g>3a+c*x(cqV;JON~tKhl{u3r+rZ#yrEyGugL?0rex zS&e1(zNC9Iw9MX@bZ>^1+53|2&CoJ?U(&r9T4wJ{qG&BxX75XC|7~Xv?eC%eJ+!}v z_V>{K9@^hS`+I1A5AE-v{XMk5hxYf-{vO)jL;HJZ|7F^Lnf70%{g-L~W!it4_Fty` zmudfH+JBk$U#9(+Y5!%~f0_1Qru~;`e=qItrTx9MznAv+(*9oB-%I;@X@4*6@1^~{ zw7-}3_tO4e+TTn2duhL#+`MX0$x@8Na`UQ{rC?~edDVJ4ZxLEr@OAs}b^Gvj`|x%9@OAqn2fJGvx$VQ(?UNj=#zt=Y#C4ssUtHG+ErVsh zI5o8Voc-jM?3eXg+46Jt>z)lQKWD#2^@f(8vtL{oT7J%c(KWREoc*F`X!$t@pmG2z z2cU8QDhHr)04fKdasVm^pmG2z2cU8QDhHr)04fKdasVm^prR9`L`&!EfX2%~s2qgK zL8xd&lzQXkAXE-QRrs2qaIA$U0i zl|xWD1eHTjIRuqMP&ovZLr^&cmBUau43)!BISiG)rJ1V+{mgja_Jr3RD&^->_ zJr3RD&^->_Y-4oC~0o@bO)wzU{^9kslfbI$C zo`CKN=$?S?3Fw}H?g{9ggzib`o`mj6=$?e`N$8%0?n&sLgzib`o`mj6=$?e`N$8%0 z?n&sLgzib`o`mj6=)NJkHO?ENYiRxb4YmB9(6U3{P|H@f{{DvAG&JA!2G;uq*87I2 zSdICvH$=tIeAgSIVrahW6x^MHyHjv?3hqw9-6^;`1$U?5?iAdeg1b|2cM9%K!QCmi zI|X;A;O-RMor1elaCZvsPDA%JbWcO~G;~ix_cU}*L-#avPeb=KbWcO~G;~ix_cU}* zL-#avPeb=KbWcO~G<45E_Y8E;K=%xE&p`JKbk9Kd40O*x_Y8E;K=%xE&p`JKbk9Kd z40O*x_Y8E;K=%xE&qDVsbk9QfEOgI8_bhbJLia3m&qDVsbk9QfEOgI8_bhbJLia3m z&qDVsbk9QfEOcw2TLax1=+;2D2D&xSt$}V0bZekn1Kk?v)L z-5TiDK=&MU&q4Pbbk9Ne9CXh?_Z)Q3LH8VV&q4Pbbk9Ne9CXh?_Z)Q3LH8VV&q4Pb zbk9Lor!C4i>Wn(jys^$pqio*zP3XP}-8Z58CUoC~?wink6S~U7;#cO4wJr*pH+~bk zZ$kG?=)MWvTG3tZ)QYa5t#;|WD@6lpiA>fKnXDx;SxaQHmdIo+k;z&jleHRaY4wrF zWUZw1w8|FU)ovb*-)eQwR%5GOwYpD3TkTR75>zZ7zE)DQ8e8qEl^-z7qu%o2YsH0q zYpY$gL?&yAOx6;atR*s8OJuT^$Yd>%$yy?lwL~UsiA>fKnXJ`l&F<>FMp?B)CTlfj zvl`2XuO%{BD@_?iTkWcq#0+h$-qdU%_s$t5zStdWZqM~JwE}@-EXy+2zxrBBup`A-; z=Mvhvgm!|==!4AYgUslI%;r71((ZFgCk zGPK=xm!&B~+iiDQ^8c;ScH3Q+{0(il-DSz&(01EhmgEg>x7}q)-q3d2U6$kxZMWTJ zN!41j-FBBHRYTitcUkhZvhB9JEO{E*ZoA8pm7(pnt3y6@$VaEg=~s2grw;k(6d7tv zK6S{a4*Ap}pE~4IhkSHSwd7NWeCm)-9rCF|K6S{a4*Ap}AFUVBrpZU^1E9&L4*Ap} zpE~4IhkWXgPaX29Lq2uLrw;klA)h+rQ-^%&kWU@*sY5<>$fpkZ)FGcbX1(z z@~J~Ub;ze4`P3sHov5cftVcfe$fq9p)MG#O$fq9p)FYpIXA=9@~KBY^~k3l z`P3tydgN1&eCm-;J@!+NeCn~EdgN1&eCm-;J@TnXKK00_9{JQGpL*m|k9_KpPd)Of zM?Uq)rylv#BcFQYQ;&S=kxxDHsYgEb$fq9p)FYoOdYY_suE?uj6j}!36+KN1Eld20 z{JEiJFkX@0Hnc49D|*(vAhcQk6-CT69@2Api_o&fujuJx-&&UV6+K@JEld20yrs2Z z8H`utEe$P8{EED#q2*3rk+(FoEb%MyJXW?W@hggwS<99senn9-L(84MqNkOiWr<(W zGt0`BC4NP|#cC`|{E9ruMW+Ey8{o77P8;B~0Ztp>v;j^V;Isiw8{o77P8;B~0Ztp> zv;j^V;Isiw8{o77P8;B~0Ztp>v;j^V;Isiw8{o77P8;B~0Ztp>v;j^V;Isiw8{o77 zP8;B~0Ztp>v;j^V#p7~$Udx|sl>M(1+TM*uacA|GKiMcAt!(*|jp_@Aws)gZeZkQ7 zZZwiV*+~9mBl(lsF{u2>M)efM*VI!CEnm7(J;l)WZZxW27)9H=(Wri5XnQvrB@?4) z`IC*3iJ|S?Xp~G0ZSO{-WMXK0HyYK03~ld5qk52`?cHcp4>Gj98;y$ljuF~9;f;D? z8Xg1>frmjmC%lpT$wu`!yF=T%(WoA0X!+8O>T!mzgSL00Q9aJk_HHz)#~Iq*jYjo2 zL)*L2sArNO0 z(9T$H#-5w8=Vt7=8GCNVo}01fX6(5cdv3;_o3ZC+?710xZpNOQvFB#&Sv!_x&&}9# zGxpq!JvU>|&De7@_S}p;H)GGu*mE=X+>AXpW6#alb2Ikbj6FAF&&}9#Gxpq!JvU>| z&De7@_S}p;H)GGu*mE=X+>AXpW6#alb2Ikbj6FAF&&}9#Gxpq!JvU>|&De7@_S}p; zH)GGu*mE=X+>AXpW6#alb2Ikbj6FAF&&}9#Gxpq!JvU>|&De7@_S}p;H)GGu*mE=X z+>AZz-A(dHEoiU>4Yr`c7Btv`23ycz3mR-egDq&V1r4^K!4@>wf(BdApmv)}gDq&V z1r4^K!4@>wf(BdAU<(>-L4z%5umugapurY2*n$RI&|nK1Y(ax9Xs`thwxGclG}wX$ zThL$&8f-y>EoiU>4Yr`c7Btv`23ycz3mR-egDq&V1r4^K!4@>wf(BdAU<(>-L4z%5 zumugapurY2*n$RI&|nK1Y(ax9Xs`thwxGclG}wX$ThL$&8f-y>EoiU>4Yr`cRyEb;(cm>%_|vMfaql(RwtZ{k z-fPI=8l%B$j0UeU8ob76@EW7RYm5f3F&ezaXz&`N!E3ToYr)37*JP!JHtxM9D>bxn z?=@Mep^ba5$r7w=*V zoVLShJDj$|X*-;@!)ZI5w!>*VoVLShJDj$|X*-;@!)ZI5w!>*VoVLShJDj$|X*-;@ z!)ZI5w!>*VoVLShJDj$|X*-;@!)ZI5w!>*VoVLShJDj$|X*-}cH}1e2>%0$n;|{!W2i~{?Z`^@5?!X&& z;Eg-*#vOR$4!m&(-navA+<`alz#DhqjXUth9eCpoym1HKxC3w8fj92J8+YK1JMhLG zc;gPdaR=VG18>}cH}1e2ci@dX@Wvf@;|{!W2i~{?Z`^@5?!X&&;Eg-*#vOR$4!m&( z-navA+<`alz#DhqjXUth9eCpoym1HKxC3w8fj92J8+YK1JMhLGc;gPdaR=VG18;m? zwz}N8E-N*(m6Yq!<3*vJEOcEOtP|S4q3hC}q3s*GE)81Q^5n0}dbQh%m6YqU;ipx$ zm6YqUUY$oEyR{lyNx3f1Y-lSf*QGn7Vk;@vWzSY)D=F7mNx3dynG4q^J2`YiC><$bK-9%^_!GEsWmn-_QBZaW6#A+j?0dFJ+5PN_LPVz7pJC9 zT|RaF)Q6{jdFnG$OQv3)RzK~J)BZf|gXs~|2TdP0efspI=_S*5Pv1NJ*z_~gYo}kD z{{D=T8M|lfopEf&nHjY+Luc-rd17YG%=0sUGxK*dn`ZrS_QBb&&HnN1w`X6T{od@> z+5a^sbk5E>Wpnn;IWebZ&iOgNiJu&QCcZZQQv7e@8{*sMZk@Y5AvEC^3GXKSe%{vk z6Xq|NzkUAx`LE7Dm$)ZsUDB4M?4+lYijrPP+LLrN=~U92Nf(pq{ZsvG{LlG!`hV`pn6QokT{!R!UkF1WOC)WXLW)~80MZclqQ?P%I>(*BhGZ2IpP zWi0yXqSnPj7O!0V=;DKSCEZn&k(BX5#>FKOOEQ;iUQ)X>Y3Y`w1xtUm^pDFTmL)8E zc-affe!T31%=FA>GQY<=T?cCiTDbGD6RNj!PSEMzUzP>!>ho>=W$)x1F4~cr|i)_*kAXQ!&KkiQw~==rK_hL;S6*A z-|DVBwvFt(zbBEpCGW=PntMEHEUzsNDcRn2v|h!vMNx{^iY;3{Nat7%$q_jb$>Gin zP1`7XAwdJSNm?WUlAsNeAO{vj+ehW7vrUV%Ko2BnnjmS5B1vzcf3ywKBY$??-}l~( z4tw2X3$#Ejlka=)eeb)!Z-&F+o9Pf9WV`TuQO#?p=ezt`2oJLZvEv~;g6Ceo5W;vS zRO}~1c#Iv4pT_fpd2A5k?uq9@n6m*q$5W5@;F*;{2=}rpeLok%F?OKu&qFxQR{Fjl z!hPGu`&pqsqCdc9`ac%p46-NtzaGLv@w@&19KyqFX7p1bJi^MO-wxqX{;sjv5FTUC z?D}%XZQk~rN;MEiN=L=@Hexf+J}<7@eqeizB$ROcs&K*G zcUxY`rZuUMidygZ!V-aJmF>FatqXVUp{l1N$?mtweJ0u>>szpd=Mc%Jy=Ikcv1Zks z+HFy`eW%iZk(`FMP^(^tvB(2t{OgwITkTZQB0Gk--u+y~5p8l&x4}kCtSTB4L{e*g zG%d~rP|dM@0n?Q%&t7ZQz`ba}vk=C2;kTw6*p0xkXrkmc)@n{Ea2gfS^c>f70xUiy zoIv~v+Z>ZhF-0??z*U3>#(nV(<#FaY7rbwfEDPFZCifiLuDLtvWW$- zR{*0{s$|}>3nC3S5NmF&=C&aXywUQ=wy=@iC~HIbcHK#NE~OR)MqoKLUxh4W)!O-5 zT@{0tShMXKITKOchMqyygsB}^Nhue2F6R8eYn6hQhfwfbQUiJhR?(?Bfwl^Tu-oz* zw(qB_LC`!kJ>71%kqu2%A<`wcKK-!qD0uy8og^$p`VHH-z_t*l*qY|E3BXIUO!;axa=aB@R zz*rHu0$8`P^BwlO!IR`0*dI`^WqkL&j-Jo%ptpc`huN5+wuF&3+5q$gyNq!kFOS_+ z7=kT=QbTdR019=C3LI^h0SB0wz*AX>KGCs(M{9{=OK~PTBu`bXTE(t~%jjQ(PK3Li z_D%{W=B@$913gFa7tk=RUJ+-Kv;sb)r3W56b>6P={ra8)^@xhrc#96rMfQwvQpze@ zIIk_)44zW(JXT+aTt4I>=^HE=dcwgN*_ZsO?c_psPgyPEBcQ7f91E`ia~3RV!{Vgh zx>}1T96zAxkMeH%b+6cNy9cA?wWReSqxL;TY9u9Tx`r8w456SpW@{=&Ni*_o1?zOg zI4UBxVx`+ew$!{`cBYK5dU?p?GR-D9%^mrAUqm zP}5TC?9x6xsxsgltgO98nMGct>=4kMyhnDRNY%QNyfwTUp=Eqv>bzQx@w8Bx;6Ad)4rrmxo9s){_At2OX*)g0BDb*v@nY-r)A z3Z$!lq>aw#h&LStwpY_ODA4MidAJohQ6`gg#6ceih&Dwk9pj?tEn`GW(f~wU$aa)N zE}}!*hHOMW^YEv$M#mAs@^6pk0 zq0<-sgsw+qGpaRpV7y-ZogSwn_w

    ET!_5bIrh>l`A{pG`t6a`KAoV-s}tcI4VUj?4Ii1RvnR^t6} z@#C#yxW=OX;V#)*8ru2J_u>jh53qW1y(P~2aHVB{4dO1-VO&EQWn*}jG@ihW=hg0J zd)QvKkL_m%*kkMS=Y(dmLxI z&)~f4B%TN~i!0!#a0WJqefLk}+V>e$$azHA0(JslWJ}m*`y6`#ds8p7w_rc&i#RX4 zg!8&pb_Kf&U&C2j4!i5#z>cF5LaKIY%qdl`Q3&HLD2v43SB!*7;;$o>P@+&{^F9rqvq5&I2fYKi?4 zD$duCjepF(%Kj905B~}KI=)R`W8Y%mVBciF39tNs{W9*i`!@SC`0}6FzhL)@cfxDy z$i^D-_~Y>1OR5(5s0;yWXB*#>-@?)FHtu7^-dXG}`vm)G_EWfq`m^{3?)&T&-p>cv zf3jEkARl6X!Tyf@Js;*HOtLN?c_w9VmWD@8<{jWBedb@W=TR{7L>47kr#ga3gl% z>hf}btKrPdoSg~Vg}%B~!pF)neEN3WGA;$-6SrONKkHW9hP~czg>5!$ZQb@=uu84K z?rZ2~RX4tFZs_KYYKCr<-M}gl;h{U5pyGZ!^IR<3^4$1>T?;H4I)3uxbC0O&Q22~m zx58x=&$?-+>Ds_(*@1Mvb3aG_kIw6B^JN;Z?Ark`jVMa6xLFbo1!e_S5{=~@C_NuzBM;)j3+ud zAy-y%CA>=GUv-!M`!&$2=k5G3wE949TGlcP#m7G`;osK2s&`Pd=5kYf91f3-4 zWFb+==kp24lKH$L*-FmN=ToxB6rdBEv>-w}vyzi>V_x@^L@Bg)-) zabD2O#xU=h8V8sW9nk@~?o52Lb17F?Nm!TjIU|p`GpjjFBuM&@RZ7N8*`G;npjc%J z^C=le*O)g1p1eG7$)72LnT$=PWS=QWqMmF?@@%oNpoHkxgDh!u2V#>2k?j~38BOWP z5@ZJ{65tlGlf9FMwV)RdnB90hE4j6hl7lAb2_XkFFOUfU81s2KM7_)C4WXBkL#DVJ zV?}x^fsq`}6hx;0+e6-z95&Bi$#whrLjI5(wT)XTIbxo_lsmtw2NUBM->t?+%`O|s zT+MYyMlxVOFNczO$uhEMa=trAZ$o&Kd>@R^JGqkUa##kgnD4-@U^_T9ZeUpiC-gim z>6uisd8n}j;g<@q-HPwjrQ zJ3#FLvpY!bW2PKP{+PTEg7;%slK^jO9|v!0p8#)ap9F7ep8{`c1$a|C4&KyGfH$=U zcvE}G6mu$mCQYb3S`Zl+v_KB9(8@zo<0*OAl#@w0iO72zLAHe0h(gb>W)0D~n!A4x z9!|+4oA%`UzQ1QAvN0c6dlWXeqMpG(Q~Ys|v)C16a$cx>OKNQ))PF(`em(^)c>kU6;`bdVgm zoaTJ*9&nj4!5guM{|ZI+Ws`O%Z3r>f0j*C2Uc--OBmz%EsF5oaneVCNBnT8 zk1+=|PpDxzfD930(SY5O2!fP+MyU_UdP3{4E4j3oLzyPI!a)$*X1+=E&S46HmMt0D z;<}<4p;aMMNHwY?7-#Z+YW;N0md+PS{?@f=aoe$ULpfZ#DalPO(Sx(jC06F zRI|;%id6j3k+byrf`zO@xjJXeCdRipZag1K@+ML_GTmv?a-8f-f`rm;D)tjlY_HCk z4MxeaJ1tEl$eD+XpG6(udv?ndaOO=pjV433$-;VK5oJ8G#sUfhGA0A#Wz7x7<^U`L z-~=q08(fXN8Gsr&M>uc7)C+_|zba0s|gI0WPfhk!icoC0uza0qxS;SlgP!Xe=8raZoB=66s> zp2YBr3VI`;f{Gdp&!S_Q^28=~kva;yq#(jBD~M2SQ$Dkax<(y^T2T<8Rux33jwzqr zM13c96zaNy2(_jlLam!gIbh4)Lo2tae5X)(&*P~&mvJEG@5_H_03W4F0#$NB_8LvO zKZ|m4q=0j*t0-4tUKeGLv49hzzNw9oKD_P0TYe*UWH5VqVPj;Vf2!NpyU;zv-*YJ^ i&%7t6dWWfpQw!b2DOvt5zxQq#dvBK>O{D&DdjBs5%TS{L literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/fonts/Lato-RegularItalic.ttf b/src/clients/lib/ruby/html/fonts/Lato-RegularItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bababa09e3fad2aa3e788898e7753ff8d80a8e8f GIT binary patch literal 95316 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 Zdy6Gm=sD%RPg|bPWWD$h#s3t#{x=NUkZJ$` literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/fonts/SourceCodePro-Bold.ttf b/src/clients/lib/ruby/html/fonts/SourceCodePro-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..61e3090c1c6944db11572b8d1e3177402f128c02 GIT binary patch literal 71200 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 + + + + + + + + + + + diff --git a/src/clients/lib/ruby/html/fr_file_index.html b/src/clients/lib/ruby/html/fr_file_index.html new file mode 100644 index 000000000..be9b2eb42 --- /dev/null +++ b/src/clients/lib/ruby/html/fr_file_index.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + diff --git a/src/clients/lib/ruby/html/fr_method_index.html b/src/clients/lib/ruby/html/fr_method_index.html new file mode 100644 index 000000000..9addea085 --- /dev/null +++ b/src/clients/lib/ruby/html/fr_method_index.html @@ -0,0 +1,4745 @@ + + + + + + + + + +
    +

    Method Index

    + +
    + + + +
      +
    1. #real (Xmms::Client::Async)
    2. +
    3. #real (Xmms::Client::Sync)
    4. +
    5. #real (Xmms::Collection::Async)
    6. +
    7. #real (Xmms::Collection::Sync)
    8. +
    9. #real (Xmms::Playlist::Async)
    10. +
    11. #real (Xmms::Playlist::Sync)
    12. +
    13. ::decode_url (Xmms)
    14. +
    15. ::new (Xmms::Client)
    16. +
    17. ::new (Xmms::Client::Async)
    18. +
    19. ::new (Xmms::Client::Sync)
    20. +
    21. ::new (Xmms::Collection)
    22. +
    23. ::new (Xmms::Collection::Async)
    24. +
    25. ::new (Xmms::Collection::Attributes)
    26. +
    27. ::new (Xmms::Collection::Operands)
    28. +
    29. ::new (Xmms::Collection::Sync)
    30. +
    31. ::new (Xmms::Playlist)
    32. +
    33. ::new (Xmms::Playlist::Async)
    34. +
    35. ::new (Xmms::Playlist::Sync)
    36. +
    37. ::parse (Xmms::Collection)
    38. +
    39. ::universe (Xmms::Collection)
    40. +
    41. ::userconfdir (Xmms)
    42. +
    43. #& (Xmms::Collection)
    44. +
    45. #<< (Xmms::Collection::Operands)
    46. +
    47. #[] (Xmms::Collection::Attributes)
    48. +
    49. #[] (Xmms::Dict)
    50. +
    51. #[]= (Xmms::Collection::Attributes)
    52. +
    53. #add_collection (Xmms::Playlist)
    54. +
    55. #add_entry (Xmms::Playlist)
    56. +
    57. #and (Xmms::Collection)
    58. +
    59. #attributes (Xmms::Collection)
    60. +
    61. #bindata_add (Xmms::Client)
    62. +
    63. #bindata_list (Xmms::Client)
    64. +
    65. #bindata_remove (Xmms::Client)
    66. +
    67. #bindata_retrieve (Xmms::Client)
    68. +
    69. #broadcast_coll_changed (Xmms::Client)
    70. +
    71. #broadcast_config_value_changed (Xmms::Client)
    72. +
    73. #broadcast_mediainfo_reader_status (Xmms::Client)
    74. +
    75. #broadcast_medialib_entry_added (Xmms::Client)
    76. +
    77. #broadcast_medialib_entry_changed (Xmms::Client)
    78. +
    79. #broadcast_medialib_entry_removed (Xmms::Client)
    80. +
    81. #broadcast_medialib_entry_updated (Xmms::Client)
    82. +
    83. #broadcast_playback_current_id (Xmms::Client)
    84. +
    85. #broadcast_playback_status (Xmms::Client)
    86. +
    87. #broadcast_playback_volume_changed (Xmms::Client)
    88. +
    89. #broadcast_playlist_changed (Xmms::Client)
    90. +
    91. #broadcast_playlist_current_pos (Xmms::Client)
    92. +
    93. #broadcast_playlist_loaded (Xmms::Client)
    94. +
    95. #broadcast_quit (Xmms::Client)
    96. +
    97. #clear (Xmms::Playlist)
    98. +
    99. #coll_find (Xmms::Client)
    100. +
    101. #coll_get (Xmms::Client)
    102. +
    103. #coll_idlist_from_playlist_file (Xmms::Client)
    104. +
    105. #coll_list (Xmms::Client)
    106. +
    107. #coll_query (Xmms::Client)
    108. +
    109. #coll_query_ids (Xmms::Client)
    110. +
    111. #coll_query_info (Xmms::Client)
    112. +
    113. #coll_remove (Xmms::Client)
    114. +
    115. #coll_rename (Xmms::Client)
    116. +
    117. #coll_save (Xmms::Client)
    118. +
    119. #complement (Xmms::Collection)
    120. +
    121. #config_get_value (Xmms::Client)
    122. +
    123. #config_list_values (Xmms::Client)
    124. +
    125. #config_register_value (Xmms::Client)
    126. +
    127. #config_set_value (Xmms::Client)
    128. +
    129. #connect (Xmms::Client)
    130. +
    131. #current_pos (Xmms::Playlist)
    132. +
    133. #delete (Xmms::Collection::Attributes)
    134. +
    135. #delete (Xmms::Collection::Operands)
    136. +
    137. #delete! (Xmms::Client)
    138. +
    139. #disconnect (Xmms::BroadcastResult)
    140. +
    141. #disconnect (Xmms::SignalResult)
    142. +
    143. #each (Xmms::Collection::Attributes)
    144. +
    145. #each (Xmms::Collection::Operands)
    146. +
    147. #each (Xmms::Dict)
    148. +
    149. #each_key (Xmms::Collection::Attributes)
    150. +
    151. #each_key (Xmms::Dict)
    152. +
    153. #each_pair (Xmms::Collection::Attributes)
    154. +
    155. #each_pair (Xmms::Dict)
    156. +
    157. #each_value (Xmms::Collection::Attributes)
    158. +
    159. #each_value (Xmms::Dict)
    160. +
    161. #empty? (Xmms::Dict)
    162. +
    163. #entries (Xmms::Playlist)
    164. +
    165. #error (Xmms::Result)
    166. +
    167. #error? (Xmms::Result)
    168. +
    169. #has_key? (Xmms::Collection::Attributes)
    170. +
    171. #has_key? (Xmms::Dict)
    172. +
    173. #idlist (Xmms::Collection)
    174. +
    175. #idlist= (Xmms::Collection)
    176. +
    177. #include? (Xmms::Collection::Attributes)
    178. +
    179. #include? (Xmms::Dict)
    180. +
    181. #insert_entry (Xmms::Playlist)
    182. +
    183. #inspect (Xmms::Collection::Attributes)
    184. +
    185. #inspect (Xmms::Dict)
    186. +
    187. #intersect (Xmms::Collection)
    188. +
    189. #io_disconnect (Xmms::Client)
    190. +
    191. #io_fd (Xmms::Client)
    192. +
    193. #io_in_handle (Xmms::Client)
    194. +
    195. #io_on_need_out (Xmms::Client)
    196. +
    197. #io_out_handle (Xmms::Client)
    198. +
    199. #io_want_out (Xmms::Client)
    200. +
    201. #key? (Xmms::Collection::Attributes)
    202. +
    203. #key? (Xmms::Dict)
    204. +
    205. #last_error (Xmms::Client)
    206. +
    207. #length (Xmms::Dict)
    208. +
    209. #load (Xmms::Playlist)
    210. +
    211. #main_stats (Xmms::Client)
    212. +
    213. #medialib_add_entry (Xmms::Client)
    214. +
    215. #medialib_entry_move (Xmms::Client)
    216. +
    217. #medialib_entry_property_remove (Xmms::Client)
    218. +
    219. #medialib_entry_property_set (Xmms::Client)
    220. +
    221. #medialib_entry_remove (Xmms::Client)
    222. +
    223. #medialib_get_id (Xmms::Client)
    224. +
    225. #medialib_get_info (Xmms::Client)
    226. +
    227. #medialib_path_import (Xmms::Client)
    228. +
    229. #medialib_path_import_encoded (Xmms::Client)
    230. +
    231. #medialib_rehash (Xmms::Client)
    232. +
    233. #member? (Xmms::Collection::Attributes)
    234. +
    235. #member? (Xmms::Dict)
    236. +
    237. #method_missing (Xmms::Client::Async)
    238. +
    239. #method_missing (Xmms::Client::Sync)
    240. +
    241. #method_missing (Xmms::Collection::Async)
    242. +
    243. #method_missing (Xmms::Collection::Sync)
    244. +
    245. #method_missing (Xmms::Playlist::Async)
    246. +
    247. #method_missing (Xmms::Playlist::Sync)
    248. +
    249. #move_entry (Xmms::Playlist)
    250. +
    251. #name (Xmms::Playlist)
    252. +
    253. #not (Xmms::Collection)
    254. +
    255. #notifier (Xmms::Result)
    256. +
    257. #on_disconnect (Xmms::Client)
    258. +
    259. #operands (Xmms::Collection)
    260. +
    261. #or (Xmms::Collection)
    262. +
    263. #playback_current_id (Xmms::Client)
    264. +
    265. #playback_pause (Xmms::Client)
    266. +
    267. #playback_playtime (Xmms::Client)
    268. +
    269. #playback_seek_ms (Xmms::Client)
    270. +
    271. #playback_seek_ms_rel (Xmms::Client)
    272. +
    273. #playback_seek_samples (Xmms::Client)
    274. +
    275. #playback_seek_samples_rel (Xmms::Client)
    276. +
    277. #playback_start (Xmms::Client)
    278. +
    279. #playback_status (Xmms::Client)
    280. +
    281. #playback_stop (Xmms::Client)
    282. +
    283. #playback_tickle (Xmms::Client)
    284. +
    285. #playback_volume_get (Xmms::Client)
    286. +
    287. #playback_volume_set (Xmms::Client)
    288. +
    289. #playlist (Xmms::Client)
    290. +
    291. #playlist_current_active (Xmms::Client)
    292. +
    293. #playlist_list (Xmms::Client)
    294. +
    295. #playlist_set_next (Xmms::Client)
    296. +
    297. #playlist_set_next_rel (Xmms::Client)
    298. +
    299. #plugin_list (Xmms::Client)
    300. +
    301. #push (Xmms::Collection::Operands)
    302. +
    303. #quit (Xmms::Client)
    304. +
    305. #radd (Xmms::Playlist)
    306. +
    307. #remove (Xmms::Playlist)
    308. +
    309. #remove_entry (Xmms::Playlist)
    310. +
    311. #rinsert (Xmms::Playlist)
    312. +
    313. #shuffle (Xmms::Playlist)
    314. +
    315. #signal_mediainfo_reader_unindexed (Xmms::Client)
    316. +
    317. #signal_playback_playtime (Xmms::Client)
    318. +
    319. #size (Xmms::Dict)
    320. +
    321. #sort (Xmms::Playlist)
    322. +
    323. #to_propdict (Xmms::RawDict)
    324. +
    325. #type (Xmms::Collection)
    326. +
    327. #union (Xmms::Collection)
    328. +
    329. #value (Xmms::Result)
    330. +
    331. #wait (Xmms::Result)
    332. +
    333. #xform_media_browse (Xmms::Client)
    334. +
    335. #| (Xmms::Collection)
    336. +
    337. #~ (Xmms::Collection)
    338. +
    +
    + + diff --git a/src/clients/lib/ruby/html/frames.html b/src/clients/lib/ruby/html/frames.html new file mode 100644 index 000000000..87a4a6df1 --- /dev/null +++ b/src/clients/lib/ruby/html/frames.html @@ -0,0 +1,26 @@ + + + + + + Documentation by YARD 0.8.7.6 + + + + diff --git a/src/clients/lib/ruby/html/i/arrows.png b/src/clients/lib/ruby/html/i/arrows.png new file mode 100755 index 0000000000000000000000000000000000000000..e54060f44ce73e7acfb92725eabea5440a0f9f24 GIT binary patch literal 477 zcmV<30V4j1P)dbVG7wVRUJ4ZXi@?ZDjy6FEKPPFgfE{K9m3e0X9iQ zK~y-6t(3uW!Y~j;-+EF29Y8t>owx*MmOJ5Y&5#P>PN0L70CZp~_#AB6im~h*@-MRG zr}baWmym=c-2LqC8#0QVq_d4h^%0POdBCG!pN1)M?% zO>`K|PH|?|j2)(00SDm6-OCxbJtwIIc$f?6>;cm)*T8O}P|w9eQE9;oZF~2HLKoWhCOJ#u@GmlVKhuUa>!_-# zEwIP|+X5&Tep-&kS+3~ztj<7nRaJL@ZqKqDaEIZf>}Vs9s_EuaEpi1w7m?Ele92%J zkrytFj-_AR{Yra`ZXtws7%l~~0hQEqX7-C4AHC1fnA2Z5aQ8#{9xv9hBu#Qp(hi|Z Tx-exV00000NkvXXu0mjf5Awjp literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/i/results_bg.png b/src/clients/lib/ruby/html/i/results_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..199ba692349c83b68ac3479f107cdf2f79c39509 GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0y~yV15B)r*N9O>AjNQC0nj*yCP#Ll5JNK`P=t|97DzJjSOG~Ei4q{mVF2=s rK*9w^1_lL)hK3QP0qFZ74t^YAov@rGA@oL5Daa?Du6{1-oD!M<--cx* literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/i/tree_bg.png b/src/clients/lib/ruby/html/i/tree_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..7d236633d723288991f4cafe4ee2908c6746d0e7 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^tU#>C!3HEBuv``ZQY^(zo*^7SP{WbZ0pxQQctjR6 zFi7tKVa8qC7wiTK%9OZ9lmzFem6RtIr7}3Cl$uzQnV+W+l9`*zV61OwqHkdNIMQwkP=SW0i(`n!#NDtd0LD|QyIg>2rmC~YhJDc>S6G7^>bP0l+XkKJ?K7d literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/add.png b/src/clients/lib/ruby/html/images/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/arrow_up.png b/src/clients/lib/ruby/html/images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebb193243780b8eb1919a51ef27c2a0d36ccec2 GIT binary patch literal 372 zcmV-)0gL{LP)6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000Pdwe5?6tW?r-ok|b$oDQj8FV%kZPq;(MWOV8?8;<)(iP}>hNMU> z7fbz%jjlr7h8uuoQ~J6}n}@Y@PdTk=)PxO{%7zmL?dchpZX*~n;I{!C>*(8cU;q(~ zAS%Po_@naEU!xidrBXD?;hN|x^%W|Ij)0y*r5vi|?W&Fub(NqJ@z0o=O&SR3v>A``^efOSo-hEdApp;^Jd;9y!%1UfzX6Bh- z%-mbG|0Na{7Ruai_Y+DEb1s+b!*9k%Q!whMxjtZKA*?o;i1g&jy0@( zaU=-@d-h+o%gal6JRXEXA&L3`d2 z%jIxzZ~*p9O-;EJp_Ds0If38rM<5W8ic~K>FOK&2_p!CLg^i63OioVb6k$)zWHLx3 z5;!|M!}<9+#QSi1dRlbEcxPt^;cysUuU8@%3}RwpLRIGG<|IKnoyP6$Eh3SKw7a*r zSDXP=IYc&YZf;7@?fCe($^l9ORaJ3wbAx0uiC8QqRr$2t-Cfy8%XCI3B%pxJW>XdM zw~zPt_s}#A@pxQ5Ly)4szaMtH9lgE1SXx@b+S(fW`ub$fYPE8J7#bSNDzme*Ub07{ zQKV8SjEs!%0@v5ql8ggm!@$6Rbi^E8vBqpRM-}l+@5OSMrl+TWj*gC^qoV@>u{fQb zov5v?g~?>X@bEC&+uLPaQ&Ypn-y~^mZA}+f(&2EFH8eE%dU|@ENpN*_1-)L6_4Rc* zFuq@`IjX9vp1QiaK9ZojyZhnQURP99d=u;%37VRkpwsD4U0sd3x;hEQB&e^i|3QN0 z=H|Os1fRqaw!?#igLmS4HE!G3*ce(`TF} zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/bullet_black.png b/src/clients/lib/ruby/html/images/bullet_black.png new file mode 100644 index 0000000000000000000000000000000000000000..57619706d10d9736b1849a83f2c5694fbe09c53b GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$h^>lFz(Kw&{<9vg>5sw~gS5O!4 zr|{HuUFIBKiQyL}eBJ-L{`UVT|6_O~L{G%N{Wbre{kQtZ_0LvEhC#5QQ<|d}62BjvZR2H60wE-$h^mK6y(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz1H+_;eX)`ni0%X8XBDc-`=Ph(Uan2 zYsR{H!kvIN--9isvHznRsC#5QQ<|d}62BjvZR2H60wE-$h_H=O!(Kw&{<9vg>(S^W+6Zii9 z|Nhthr~iNb*Z!}6uiN$Dz5neG3a-`baBX8yz4q@v|B?28{s)#N@CGn3@%_y|zAV9T z66e<&B4?b6oF&azg|C(V&1ZbI_D}pL`}(^FT2yXwG1Ph~$Q@h8mJYOz!PC{xWt~$( F699+YQR)By literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/date.png b/src/clients/lib/ruby/html/images/date.png new file mode 100644 index 0000000000000000000000000000000000000000..783c83357fdf90a1c7c024358e1d768b5c09c135 GIT binary patch literal 626 zcmV-&0*(ENP)5OC%H;f`~O(q$Q#t2<^v$A>fbmv%e#dKTwK=Ku{5lS|}<-`a#7b zzTCOnnT>at)D}AMFuOZ5&%EqFN(lyumd$2ASF6=;nM~%2?gqc@U=#|4PqkX@EBo-9 z7pD#bO_RUa>*faM`8;MYfVi$JnB-zcBFc6gjl$d!bF98Q!!!(Z1_R~P?e!pt#6CHJ9S&n_n&@=9 z%GP;!@Co4c*at+6vNz7o(6en^Q1%qHrc;1)9IRaz-$@S$Z-qdC^ds3X0NvQH;KS)D z-dh&rW&@X;1cS(45z)J&BVt+tv&GMVJ%!EiW) zLBGZW)#Z+gl-Lih&?>X3SS-S#ujQ;9JRXmIB7X)8`d6ETj)D#Q2+$s|<_b7-B9Xvq zwNfqlEp%y3$uY`h{Y$(Gn5@}sqEsq95lpAkFO5dyBmP6^H-51G4J|rN2Ujt<`2YX_ M07*qoM6N<$fC4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/find.png b/src/clients/lib/ruby/html/images/find.png new file mode 100644 index 0000000000000000000000000000000000000000..1547479646722bda4647df52cf3e8bc9b77428c6 GIT binary patch literal 659 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 Dl)1NK literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/macFFBgHack.png b/src/clients/lib/ruby/html/images/macFFBgHack.png new file mode 100644 index 0000000000000000000000000000000000000000..c6473b324ee1dae1faaacc0826639833f551116c GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIEX7WqAsj$Z!;#Vf4nJ za0`Jjl>Qs8<JF;+Fd5q0wCR k?u=~bH}2*0f`J3~k>FVdQ&MBb@0BAfpf&c&j literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/package.png b/src/clients/lib/ruby/html/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..da3c2a2d74bab159ba0f65d7db601768258afcb2 GIT binary patch literal 853 zcmV-b1FHOqP)5TQ^(M5v$(QKVE?W+9X! z*o}&~6c?_FreF)9NJB7b5Nbn{G0n4+%uJhR9(V5R|NFTpb|HgjefT!tIhLx@DR+N) zV+fHiR5Yt19}k|KnCsND{tH-`IMJ)3AE?OtyZ4>Un|6(d%h#JK`i&a7^xW9>`yBy` zS4SOHeOpC7$?hH5-#7Rswiue_8Ju*2N@$58=a#2OTA3png`w3v->gWif7t%e$ z$NLVS!tFT#8WL|Wa&K~+{%4P2cRfwesYV1_!F=3OaRVHl(>=`%&{x*s30c}#CNE@&;ItrAv!f!)Oy$Q9t$uS=(sD$-J{T*^(8Eez1E-l3}} zPrfHZ1`qsIFe&gipuL8-IZbo2Yg{lFGKs?ZZWcOaOdk*3`5T;$?AjbG1#`B510Er^h2)2r3Y{!8_2Gj=$KzuN5 zaErtW8W_Y2iJJjY)5pmTVJoPJYpanPOEuYHclM^C1F>${hFRpdi8a<2H|Xudf78bm(zwJ9`K%6I?q*Ua~ fW9JvIbn5*B+_J)rUMBs>00000NkvXXu0mjfH&TkY literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/page_green.png b/src/clients/lib/ruby/html/images/page_green.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e003f9fb8752c09e7f3655d5d8664b5c62fc3 GIT binary patch literal 621 zcmV-z0+RiSP)QqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/page_white_text.png b/src/clients/lib/ruby/html/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/plugin.png b/src/clients/lib/ruby/html/images/plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..6187b15aec001b7080b51a5f944f07591f26cc15 GIT binary patch literal 591 zcmV-V0eEcNHZMNv|IbJ-M`( zKwWL~opzjJe^WpCmV9E;(0&ut2;4va_(#>M8)>9$R5viQnf(Nkh~VM$y>J(jqb$cj z+nL1Nm|mV)Gm|9MnHf*7Ja4OEAQz__^LRKOLEwqpiGV^^A*T=#&inGm-62Xs;dnSp zKj&H9T*boh2i)W+(n27l!C)>fq|L%VB1i ziC4p;NwV_}ZjW7$LRW#(_bKF#hp=!IqNO26Z*w2+LEwx{PVnZ&Sn}T;mtzb$;qA*nT@@+ zV5uQ@iXDTPoTbV#FRr~z04|PPh`wXTNoCm9*tG&?e3+fYl>K6+&3|Cc$KOpL`ER+_ dcRl5U#9zn6ZO}GFk7R5;7c zlif>`Q5?tj7Yw@ZCMtTF^Q|ZedeJhM%QPCR*bs8V79p$QTo7e94yQNXRs-{0?hOn_-8n0AMO@u1Ts zNl8QzJs1#rz%RBt?ux>l+amAvh+J!{$lkaqv}+Erb-6j2xp>K4GLQnNB*W`hFg*?P z^AL@~(h~Z+wfcWEXHqV^Tq-#z$7Y#o0;yFxA!00F}F2dX# zjE$iOgT#G4*1TR6kB1Gnn@>$meCh2a>c5YuIvFn-R2W@>4@M*m@-|jiDV?b)bccgA zyPfsMM!rjy>+1O2)5Eg29Z_*2p&qGnmS!OH?vZ(4>QB01d>j%9n4QINxkyT(Dos?I zjaWF$*IQmh`SF-?xU%xMEfjq1=6qY*g&lgG_cXv$BGoIWyfO5 zp>pdV*O+y=&6@N2WWFo(%RtT`Q(H^6zn^a%epE~Kx^mEJ{c8`luC$nc*z9j|4Ms8aJK-ladKLpnAK z!yd|CC&>l1b7`m$MH$ScEIP@XgT41O>|DzL{-38CH68OyX#u=G?d7;y&_o&o)f@3U z2(tr%Ok88caOL`xiQA8o;Vzr-$A$SOu6o|$&0DQAJ1Z7?OACaeoy+)PWu&~aueW<| z*KW^(^2}#30u*~<_mXScFNd6U&sxh5*GGMNytZGxkIGqL%v6329^u`FD6T?b?K!4B z@Hzh?O2Au=((Gu;rvgLMt^pS|u1rEkBgC8$oH%zgT`TvZiK#VDrVG?-i~6a_+WZb> zc1>>lb)xcuo^Cl8k%q3c_d*It_Vtj>RSovF&w;hS=6uYrT2e@-@l@P~uBN`zu!v>e zTm(is&jcQ6vuP?|;!e+(n8w)-Xjd!hwk@r2D0i00ygdKo2Xvs?&w_lajj5DHS@9I! z;_&ji2e{!uusGnVn};Pu|dl5x-FhQyC8^-4Uo_;BLiOXzcE z&4PS2TBWSC=hsw0og;z#(mly@Ed2E1E$_VDaM?kloE4ob2XK&K;OS~-nhIGlA4~UZrJu6*|}wi#TT?|yWUH+_&n($t0xta zBwTzSfE)uAw*L0>+`pTps}L-$jIP5Q_E$Am+l|{XfsKr0Vi~`Em?SJQ#0y)8vsxb1 zMdxJl^){_CDwI^}>)Pw${G?Ajc@P}x{Fvhoi0jbY^427?KPmoA_G)sqK}u$2(79Xg zC%}xm5JDcrsm5^vQEQpGEdJDc^yfuNAlqV1pZQVkOSceV<|{=|=@?=o4i_1RFUZth zC7cu<6%V3dVCI}P6DL4iUgTc@&(nXY)ox}HZ z(a#EgiNj%{kjRLL2t?{m_aKN`{5-&u+HAtQ-Qq#@!I@<(M+B3i@|g=LY6 z90tpW!JuMn_Lcy1q7g&LUSuLE3XS}K#P^nHVUmL`L)dbP| z0bt(+Cp#M-bH!LM*DzJ0Lfn;eTBV@|JvGSgpdoc1RhhV>(G-2(vE|>MrVgA9+?+0m4OzUqbT>-U-jg|v zLZMntq`r?fy1UCMh>z2Koi1SL-~N2ZrIf+dZW|;SWszsde}Dl!HOMc1Fa>K9)e&RI z)A?aK zcviCdKDUg_%#u7YAE`A`Y3$(P4&m^@fEWAvjAwVmRWeUnmkrxA;E!fKoc{9Vi=lvFL}KmoS;g* zdjL?Y!VHUFq63aLj6VZE+tHts?Z1pFkiO9^k*5pGpFpU&5#5G4ATd{t>a&9zKBVB9=Ns^HFU|DTGH8C+Xr2UqOU`Zxe)!|%j4=-QojGePq)pRGe;!f)Czk!u3vP_Jxu8(e6 zf4Q`F$Qio2Jw@N*E@k?c`+Sw}AYQjkT+x)OAe6eq(AT!iRuksKQn%Ao_Ac1T-p#Js I_CnHs0qX}mlmGw# literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/tag_green.png b/src/clients/lib/ruby/html/images/tag_green.png new file mode 100644 index 0000000000000000000000000000000000000000..83ec984bd73364134da0f98d27a800c5d3264180 GIT binary patch literal 613 zcmV-r0-F7aP)^5T)AZ%#@G{_P{NCN^P z(J0zvSn~SSm(Ur);-M~8^*;61*VRI`T1BN&LAhK;sZ>I-SVW;vfUfJv=ko^ugnc0x zhJodBxe>iyk3%w<%wC8holUJ4(iv>tL{`DQt zPOsyUbO_Cmc&*iHkqbm3ku`|GcC^OhF>jj9W*GkH;^g!iUVpib_h*=@udp4h(P+e*zL_~ZmJjh(y^BxULwq>9zXoYE8sq{#pN~U0C6!8vY)5N2 z9P*}mw}7X$O^qTtJef1ACWvJT9^wt-)Zh0r~j#0bT`f;-zv6 z^Tmw22!%rMcs!TaUX<-8s;X-B`+Xbo+_uWuFa z1yIPc?DTrQ7KvRhmt*TG|L=EYQ=LqFX;=Lp`4}jx6BE-@00000NkvXXu0mjf=s_29 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/transparent.png b/src/clients/lib/ruby/html/images/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..d665e179efd797451084235f105425247fea0a14 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5X>;M1%mmiTn0pv241o;Is pI6S+N2ITN~x;Tb#$R;N!@B(=T42&&nK2`x)44$rjF6*2UngG277DE64 literal 0 HcmV?d00001 diff --git a/src/clients/lib/ruby/html/images/wrench.png b/src/clients/lib/ruby/html/images/wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8213fef5ab969f03189d4367e32e597e38bd7f GIT binary patch literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vpg}f4o)2%U3C;eEDoiEh?94d(rV57VIF#8VqzW$HrDC|#U`x@QDbgi zVl)t9GGz&YY#D?gc%>hISA+_EBpnXt#pnC`p6@xw0$8TCbULjhlgVx(kuc)%xbgqq zR5+DNDFRN0!y)7Gm}oT0i39}h4h928qY?Rho^UvPGJ#kuW|-Amtrn`Pmd&+bFo@sp z$LI4IQw7BG?|#2ewOS<<3VjL$0=lMY^m;wqZujv5kx1l%Sl;V&Iy4#$ip3&@LV2!7vhhN=PCz%^9v24`qb(+m4W?!q-&~=?ssf5GfnAmJKV;3bvpDm0(NhahZ=&^sqo6Odj6>)Dq_3p~4~ zvb`d3Mydwjt&Df^hVmLtI2x=U&h9(JVYX-!y~z3zi;1>=LY;o(bL$(Yf$lf)dMf0-u^0HrpTG Wk@)HE*94aU0000m+BBgry{~j2fHLegbHP( zrgXNbr0}2;^nywdjLjZe?uxtrd3D(pZH@fFFc0{BW_~jxoO1w7-VX;6vK@ROA$$R6 zEmo;Ht-Mj|>5jUy{bQ^V5@53LRI8AgLpUm|m+15sqcz@QtVSo|oz7ArM8?pIn+>gN z0b=4_b5O|4A*;Q+vc9Vqr~%3V155*NV~@gTz}KSUiKB-uJzjMZ>5%Q#n24H!V{ zTY(LLAE*NAHZ}C#wnj%Bw5OFIkRhkkAW#kDC3j9Wm0YXRaXlyyp>#mVfYG)eC;@ab zDb=T-BCAY4LI(Z@GOTr2V_A{pRwSmz+8Be>CjAw(=gnbVWAeguvZa93JmL(EDxv1m z0OP4q=fpAK1Mq!C2`OkEn37o;m#wF#(t(8Pu#S?2f#x<~4EO{@fmm`p9veD6RZ_jp z@Au4};q&`XuKEYgIiB4((kgxOs#YdqJw0fY>9^K_agEu5+$#k;w#%I2N>n_?)YIqu z`tq&#_^p?-%K*U0^}|7+9U(&k0?s;=r=uCZ%)H9_edH8wK}gB(nUB1FFk+2Ol%BXV zHoFY`D~2x|2 + + + + + +RDoc Documentation + + + + + + + + + + + + + + +
    +

    This is the API documentation for RDoc Documentation. +

    + + + + + diff --git a/src/clients/lib/ruby/html/js/app.js b/src/clients/lib/ruby/html/js/app.js new file mode 100644 index 000000000..d933ebcf5 --- /dev/null +++ b/src/clients/lib/ruby/html/js/app.js @@ -0,0 +1,219 @@ +function createSourceLinks() { + $('.method_details_list .source_code'). + before("[View source]"); + $('.toggleSource').toggle(function() { + $(this).parent().nextAll('.source_code').slideDown(100); + $(this).text("Hide source"); + }, + function() { + $(this).parent().nextAll('.source_code').slideUp(100); + $(this).text("View source"); + }); +} + +function createDefineLinks() { + var tHeight = 0; + $('.defines').after(" more..."); + $('.toggleDefines').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).prev().show(); + $(this).parent().prev().height($(this).parent().height()); + $(this).text("(less)"); + }, + function() { + $(this).prev().hide(); + $(this).parent().prev().height(tHeight); + $(this).text("more..."); + }); +} + +function createFullTreeLinks() { + var tHeight = 0; + $('.inheritanceTree').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).parent().toggleClass('showAll'); + $(this).text("(hide)"); + $(this).parent().prev().height($(this).parent().height()); + }, + function() { + $(this).parent().toggleClass('showAll'); + $(this).parent().prev().height(tHeight); + $(this).text("show all"); + }); +} + +function fixBoxInfoHeights() { + $('dl.box dd.r1, dl.box dd.r2').each(function() { + $(this).prev().height($(this).height()); + }); +} + +function searchFrameLinks() { + $('.full_list_link').click(function() { + toggleSearchFrame(this, $(this).attr('href')); + return false; + }); +} + +function toggleSearchFrame(id, link) { + var frame = $('#search_frame'); + $('#search a').removeClass('active').addClass('inactive'); + if (frame.attr('src') == link && frame.css('display') != "none") { + frame.slideUp(100); + $('#search a').removeClass('active inactive'); + } + else { + $(id).addClass('active').removeClass('inactive'); + frame.attr('src', link).slideDown(100); + } +} + +function linkSummaries() { + $('.summary_signature').click(function() { + document.location = $(this).find('a').attr('href'); + }); +} + +function framesInit() { + if (hasFrames) { + document.body.className = 'frames'; + $('#menu .noframes a').attr('href', document.location); + try { + window.top.document.title = $('html head title').text(); + } catch(error) { + // some browsers will not allow this when serving from file:// + // but we don't want to stop the world. + } + } + else { + $('#menu .noframes a').text('frames').attr('href', framesUrl); + } +} + +function keyboardShortcuts() { + if (window.top.frames.main) return; + $(document).keypress(function(evt) { + if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return; + if (typeof evt.target !== "undefined" && + (evt.target.nodeName == "INPUT" || + evt.target.nodeName == "TEXTAREA")) return; + switch (evt.charCode) { + case 67: case 99: $('#class_list_link').click(); break; // 'c' + case 77: case 109: $('#method_list_link').click(); break; // 'm' + case 70: case 102: $('#file_list_link').click(); break; // 'f' + default: break; + } + }); +} + +function summaryToggle() { + $('.summary_toggle').click(function() { + if (localStorage) { + localStorage.summaryCollapsed = $(this).text(); + } + $('.summary_toggle').each(function() { + $(this).text($(this).text() == "collapse" ? "expand" : "collapse"); + var next = $(this).parent().parent().nextAll('ul.summary').first(); + if (next.hasClass('compact')) { + next.toggle(); + next.nextAll('ul.summary').first().toggle(); + } + else if (next.hasClass('summary')) { + var list = $('
      '); + list.html(next.html()); + list.find('.summary_desc, .note').remove(); + list.find('a').each(function() { + $(this).html($(this).find('strong').html()); + $(this).parent().html($(this)[0].outerHTML); + }); + next.before(list); + next.toggle(); + } + }); + return false; + }); + if (localStorage) { + if (localStorage.summaryCollapsed == "collapse") { + $('.summary_toggle').first().click(); + } + else localStorage.summaryCollapsed = "expand"; + } +} + +function fixOutsideWorldLinks() { + $('a').each(function() { + if (window.location.host != this.host) this.target = '_parent'; + }); +} + +function generateTOC() { + if ($('#filecontents').length === 0) return; + var _toc = $('
        '); + var show = false; + var toc = _toc; + var counter = 0; + var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; + var i; + if ($('#filecontents h1').length > 1) tags.unshift('h1'); + for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } + var lastTag = parseInt(tags[0][1], 10); + $(tags.join(', ')).each(function() { + if ($(this).parents('.method_details .docstring').length != 0) return; + if (this.id == "filecontents") return; + show = true; + var thisTag = parseInt(this.tagName[1], 10); + if (this.id.length === 0) { + var proposedId = $(this).attr('toc-id'); + if (typeof(proposedId) != "undefined") this.id = proposedId; + else { + var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); + if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; } + this.id = proposedId; + } + } + if (thisTag > lastTag) { + for (i = 0; i < thisTag - lastTag; i++) { + var tmp = $('
          '); toc.append(tmp); toc = tmp; + } + } + if (thisTag < lastTag) { + for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); + } + var title = $(this).attr('toc-title'); + if (typeof(title) == "undefined") title = $(this).text(); + toc.append('
        1. ' + title + '
        2. '); + lastTag = thisTag; + }); + if (!show) return; + html = ''; + $('#content').prepend(html); + $('#toc').append(_toc); + $('#toc .hide_toc').toggle(function() { + $('#toc .top').slideUp('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }, function() { + $('#toc .top').slideDown('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }); + $('#toc .float_toc').toggle(function() { + $(this).text('float'); + $('#toc').toggleClass('nofloat'); + }, function() { + $(this).text('left'); + $('#toc').toggleClass('nofloat'); + }); +} + +$(framesInit); +$(createSourceLinks); +$(createDefineLinks); +$(createFullTreeLinks); +$(fixBoxInfoHeights); +$(searchFrameLinks); +$(linkSummaries); +$(keyboardShortcuts); +$(summaryToggle); +$(fixOutsideWorldLinks); +$(generateTOC); diff --git a/src/clients/lib/ruby/html/js/darkfish.js b/src/clients/lib/ruby/html/js/darkfish.js new file mode 100644 index 000000000..b789a6563 --- /dev/null +++ b/src/clients/lib/ruby/html/js/darkfish.js @@ -0,0 +1,161 @@ +/** + * + * Darkfish Page Functions + * $Id: darkfish.js 53 2009-01-07 02:52:03Z deveiant $ + * + * Author: Michael Granger + * + */ + +/* Provide console simulation for firebug-less environments */ +if (!("console" in window) || !("firebug" in console)) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", + "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; + + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +}; + + +/** + * Unwrap the first element that matches the given @expr@ from the targets and return them. + */ +$.fn.unwrap = function( expr ) { + return this.each( function() { + $(this).parents( expr ).eq( 0 ).after( this ).remove(); + }); +}; + + +function showSource( e ) { + var target = e.target; + var codeSections = $(target). + parents('.method-detail'). + find('.method-source-code'); + + $(target). + parents('.method-detail'). + find('.method-source-code'). + slideToggle(); +}; + +function hookSourceViews() { + $('.method-heading').click( showSource ); +}; + +function hookSearch() { + var input = $('#search-field').eq(0); + var result = $('#search-results').eq(0); + $(result).show(); + + var search_section = $('#search-section').get(0); + $(search_section).show(); + + var search = new Search(search_data, input, result); + + search.renderItem = function(result) { + var li = document.createElement('li'); + var html = ''; + + // TODO add relative path to + + + + + Method List + + + + +
          +

          Method List

          + + + + +
          + + diff --git a/src/clients/lib/ruby/html/panel/index.html b/src/clients/lib/ruby/html/panel/index.html new file mode 100755 index 000000000..f815a1132 --- /dev/null +++ b/src/clients/lib/ruby/html/panel/index.html @@ -0,0 +1,73 @@ + + + + + + search index + + + + + + + + + + +
          +
          +
          + +

    + +
    + +
    + +
    +
      +
    +
    +
    +
      +
    +
    + + index + + diff --git a/src/clients/lib/ruby/html/panel/links.html b/src/clients/lib/ruby/html/panel/links.html new file mode 100644 index 000000000..fd77f1367 --- /dev/null +++ b/src/clients/lib/ruby/html/panel/links.html @@ -0,0 +1,34 @@ + + File index + + + async.rb + + rb_collection.c + + rb_collection.h + + rb_playlist.c + + rb_playlist.h + + rb_result.c + + rb_result.h + + rb_xmmsclient.c + + rb_xmmsclient.h + + rb_xmmsclient_ecore.c + + rb_xmmsclient_glib.c + + rb_xmmsclient_main.c + + sync.rb + + xmmsclient.rb + + + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/panel/tree.js b/src/clients/lib/ruby/html/panel/tree.js new file mode 100644 index 000000000..2bdf12e4e --- /dev/null +++ b/src/clients/lib/ruby/html/panel/tree.js @@ -0,0 +1 @@ +var tree = [["","","files",[["async.rb","files/async_rb.html","",[]],["rb_collection.c","files/rb_collection_c.html","",[]],["rb_collection.h","files/rb_collection_h.html","",[]],["rb_playlist.c","files/rb_playlist_c.html","",[]],["rb_playlist.h","files/rb_playlist_h.html","",[]],["rb_result.c","files/rb_result_c.html","",[]],["rb_result.h","files/rb_result_h.html","",[]],["rb_xmmsclient.c","files/rb_xmmsclient_c.html","",[]],["rb_xmmsclient.h","files/rb_xmmsclient_h.html","",[]],["rb_xmmsclient_ecore.c","files/rb_xmmsclient_ecore_c.html","",[]],["rb_xmmsclient_glib.c","files/rb_xmmsclient_glib_c.html","",[]],["rb_xmmsclient_main.c","files/rb_xmmsclient_main_c.html","",[]],["sync.rb","files/sync_rb.html","",[]],["xmmsclient.rb","files/xmmsclient_rb.html","",[]]]],["Xmms","classes/Xmms.html","",[["BroadcastResult","classes/Xmms/BroadcastResult.html"," < Xmms::Result",[]],["Client","classes/Xmms/Client.html"," < Object",[["Async","classes/Xmms/Client/Async.html"," < Object",[]],["ClientError","classes/Xmms/Client/ClientError.html"," < StandardError",[]],["DisconnectedError","classes/Xmms/Client/DisconnectedError.html"," < Xmms::Client::ClientError",[]],["Sync","classes/Xmms/Client/Sync.html"," < Object",[]]]],["Collection","classes/Xmms/Collection.html"," < Object",[["Async","classes/Xmms/Collection/Async.html"," < Object",[]],["Attributes","classes/Xmms/Collection/Attributes.html"," < Object",[]],["ClientError","classes/Xmms/Collection/ClientError.html"," < StandardError",[]],["CollectionError","classes/Xmms/Collection/CollectionError.html"," < StandardError",[]],["DisconnectedError","classes/Xmms/Collection/DisconnectedError.html"," < Xmms::Collection::ClientError",[]],["Operands","classes/Xmms/Collection/Operands.html"," < Object",[]],["PatternError","classes/Xmms/Collection/PatternError.html"," < StandardError",[]],["Sync","classes/Xmms/Collection/Sync.html"," < Object",[]]]],["Dict","classes/Xmms/Dict.html"," < Object",[]],["Playlist","classes/Xmms/Playlist.html"," < Object",[["Async","classes/Xmms/Playlist/Async.html"," < Object",[]],["ClientError","classes/Xmms/Playlist/ClientError.html"," < StandardError",[]],["DisconnectedError","classes/Xmms/Playlist/DisconnectedError.html"," < Xmms::Playlist::ClientError",[]],["PlaylistError","classes/Xmms/Playlist/PlaylistError.html"," < StandardError",[]],["Sync","classes/Xmms/Playlist/Sync.html"," < Object",[]]]],["RawDict","classes/Xmms/RawDict.html"," < Xmms::Dict",[]],["Result","classes/Xmms/Result.html"," < Object",[["ResultError","classes/Xmms/Result/ResultError.html"," < StandardError",[]],["ValueError","classes/Xmms/Result/ValueError.html"," < Xmms::Result::ResultError",[]]]],["SignalResult","classes/Xmms/SignalResult.html"," < Xmms::Result",[]]]],["unknown","classes/unknown.html"," < Object",[]]] \ No newline at end of file diff --git a/src/clients/lib/ruby/html/table_of_contents.html b/src/clients/lib/ruby/html/table_of_contents.html new file mode 100644 index 000000000..1ccd23147 --- /dev/null +++ b/src/clients/lib/ruby/html/table_of_contents.html @@ -0,0 +1,917 @@ + + + + + + +Table of Contents - RDoc Documentation + + + + + + + + + + + + +
    +

    Table of Contents - RDoc Documentation

    + + +

    Classes and Modules

    + + +

    Methods

    + +
    + + + + diff --git a/src/clients/lib/ruby/html/top-level-namespace.html b/src/clients/lib/ruby/html/top-level-namespace.html new file mode 100644 index 000000000..64205f455 --- /dev/null +++ b/src/clients/lib/ruby/html/top-level-namespace.html @@ -0,0 +1,112 @@ + + + + + + Top Level Namespace + + — Documentation by YARD 0.8.7.6 + + + + + + + + + + + + + + + + + + + + + +

    Top Level Namespace + + + +

    + +
    + + + + + + + + +
    +
    + +

    Defined Under Namespace

    +

    + + + Modules: Xmms + + + + +

    + + + + + + + + + +
    + + + + + \ No newline at end of file diff --git a/src/clients/lib/ruby/html/unknown.html b/src/clients/lib/ruby/html/unknown.html new file mode 100644 index 000000000..93638aa0d --- /dev/null +++ b/src/clients/lib/ruby/html/unknown.html @@ -0,0 +1,102 @@ + + + + + + +class unknown - RDoc Documentation + + + + + + + + + + + + + + +
    +

    + class unknown +

    + +
    + +
    + + + + +
    + + + + + + + + + +
    +
    + + + + diff --git a/src/clients/lib/ruby/rb_collection.c b/src/clients/lib/ruby/rb_collection.c index 56e23f837..92f2ecb80 100644 --- a/src/clients/lib/ruby/rb_collection.c +++ b/src/clients/lib/ruby/rb_collection.c @@ -537,6 +537,10 @@ c_operands_each (VALUE self) void Init_Collection (VALUE mXmms) { +#if RDOC_CAN_PARSE_DOCUMENTATION + mXmms= rb_define_module("Xmms"); +#endif + cColl = rb_define_class_under (mXmms, "Collection", rb_cObject); rb_define_alloc_func (cColl, c_alloc); diff --git a/src/clients/lib/ruby/rb_playlist.c b/src/clients/lib/ruby/rb_playlist.c index 92148ade5..6976b4b58 100644 --- a/src/clients/lib/ruby/rb_playlist.c +++ b/src/clients/lib/ruby/rb_playlist.c @@ -108,6 +108,7 @@ c_alloc (VALUE klass) /* * call-seq: * pl = Xmms::Playlist.new(xc, [name]) + * * Initializes a new Xmms::Playlist using the playlist named _name_ and the * Xmms::Client instance _xc_. Xmms::Client#playlist(name) is a useful * shortcut. _name_ is is the name of the playlist and the active playlist will @@ -142,6 +143,7 @@ c_init (int argc, VALUE *argv, VALUE self) /* * call-seq: * pl.name -> string + * * Returns the name of the playlist in the medialib as a String. */ static VALUE @@ -384,6 +386,10 @@ c_add_collection (int argc, VALUE *argv, VALUE self) VALUE Init_Playlist (VALUE mXmms) { +#if RDOC_CAN_PARSE_DOCUMENTATION + mXmms= rb_define_module("Xmms"); +#endif + VALUE c; c = rb_define_class_under (mXmms, "Playlist", rb_cObject); diff --git a/src/clients/lib/ruby/rb_result.c b/src/clients/lib/ruby/rb_result.c index 0e0dcf654..9156ca7bb 100644 --- a/src/clients/lib/ruby/rb_result.c +++ b/src/clients/lib/ruby/rb_result.c @@ -367,7 +367,7 @@ c_dict_inspect (VALUE self) { return rb_protect_inspect (dict_inspect, self, 0); } -#endif /* HAVE_RB_PROTECT_INSPECT */ +#endif static VALUE c_dict_size (VALUE self) @@ -544,6 +544,10 @@ c_raw_dict_to_propdict (int argc, VALUE *argv, VALUE self) void Init_Result (VALUE mXmms) { +#if RDOC_CAN_PARSE_DOCUMENTATION + mXmms= rb_define_module("Xmms"); +#endif + cResult = rb_define_class_under (mXmms, "Result", rb_cObject); /* ugh, we have to define the "new" method, @@ -576,7 +580,7 @@ Init_Result (VALUE mXmms) #ifdef HAVE_RB_PROTECT_INSPECT rb_define_method (cDict, "inspect", c_dict_inspect, 0); -#endif /* HAVE_RB_PROTECT_INSPECT */ +#endif rb_define_method (cDict, "size", c_dict_size, 0); rb_define_method (cDict, "empty?", c_dict_empty, 0); diff --git a/src/clients/lib/ruby/rb_xmmsclient.c b/src/clients/lib/ruby/rb_xmmsclient.c index b836bce38..c6ff3d51e 100644 --- a/src/clients/lib/ruby/rb_xmmsclient.c +++ b/src/clients/lib/ruby/rb_xmmsclient.c @@ -346,7 +346,7 @@ c_io_in_handle (VALUE self) * xc.io_out_handle -> nil * * Sends one outgoing (to server) clientlib command. You should check - * Xmms::Client#io_want_out before calling this method. + * #io_want_out before calling this method. */ static VALUE c_io_out_handle (VALUE self) @@ -785,7 +785,7 @@ c_playlist_set_next_rel (VALUE self, VALUE pos) /* call-seq: * xc.playlist([name]) -> p * - * Shortcut for Xmms::Playlist#new(xc, [name]). Creates a new Xmms::Playlist + * Shortcut for Xmms::Playlist.new. Creates a new Xmms::Playlist * object tied to the current Xmms::Client instance. _name_ is is the name of * the playlist and the active playlist will be used if it is not specified. * Raises PlaylistError if the playlist name is invalid. @@ -843,7 +843,7 @@ c_medialib_get_info (VALUE self, VALUE id) * Write info to the medialib at _id_. _source_ is an optional argument that * describes where to write the mediainfo. If _source_ is omitted, the * mediainfo is written to "client/" where is the - * name you specified in _Xmms::Client.new(name)_. + * name you specified in ::new. */ static VALUE c_medialib_entry_property_set (int argc, VALUE *argv, VALUE self) @@ -900,8 +900,7 @@ c_medialib_entry_property_set (int argc, VALUE *argv, VALUE self) * Remove a custom field in the medialib associated with the entry _id_. * _source_ is an optional argument that describes where to write the * mediainfo. If _source_ is omitted, "client/" is used, - * where is the name you specified in - * _Xmms::Client.new(name)_. + * where is the name you specified in ::new. */ static VALUE c_medialib_entry_property_remove (int argc, VALUE *argv, VALUE self) @@ -1603,6 +1602,10 @@ parse_string_array2 (VALUE value) void Init_Client (VALUE mXmms) { +#if RDOC_CAN_PARSE_DOCUMENTATION + mXmms= rb_define_module("Xmms"); +#endif + VALUE c; c = rb_define_class_under (mXmms, "Client", rb_cObject); diff --git a/src/clients/lib/ruby/sync.rb b/src/clients/lib/ruby/sync.rb index 812299e4d..37ad73462 100644 --- a/src/clients/lib/ruby/sync.rb +++ b/src/clients/lib/ruby/sync.rb @@ -15,65 +15,68 @@ require 'xmmsclient' -class Xmms::Client::Sync - attr_reader(:real) +module Xmms + class Client::Sync + attr_reader(:real) - def initialize(name) - @real = Xmms::Client.new(name) - end + def initialize(name) + @real = Xmms::Client.new(name) + end - def method_missing(id, *args) - args.push(&block) if(id == 'on_disconnect') - ret = @real.send(id, *args) - if(ret.is_a?(Xmms::Result) || ret.is_a?(Xmms::BroadcastResult) || - ret.is_a?(Xmms::SignalResult)) - ret.wait.value - elsif(ret.is_a?(Xmms::Client)) - self - elsif(ret.is_a?(Xmms::Collection)) - Xmms::Collection::Sync.new(ret) - elsif(ret.is_a?(Xmms::Playlist)) - Xmms::Playlist::Sync.new(ret) - else - ret + def method_missing(id, *args) + args.push(&block) if(id == 'on_disconnect') + ret = @real.send(id, *args) + if(ret.is_a?(Xmms::Result) || ret.is_a?(Xmms::BroadcastResult) || + ret.is_a?(Xmms::SignalResult)) + ret.wait.value + elsif(ret.is_a?(Xmms::Client)) + self + elsif(ret.is_a?(Xmms::Collection)) + Xmms::Collection::Sync.new(ret) + elsif(ret.is_a?(Xmms::Playlist)) + Xmms::Playlist::Sync.new(ret) + else + ret + end end end -end -class Xmms::Collection::Sync - attr_reader(:real) - def initialize(coll) - @real = coll - end + class Collection::Sync + attr_reader(:real) - def method_missing(id, *args) - ret = @real.send(id, *args) - if(ret.is_a?(Xmms::Result)) - ret.wait.value - elsif(ret.is_a?(Xmms::Collection)) - self - else - ret + def initialize(coll) + @real = coll + end + + def method_missing(id, *args) + ret = @real.send(id, *args) + if(ret.is_a?(Xmms::Result)) + ret.wait.value + elsif(ret.is_a?(Xmms::Collection)) + self + else + ret + end end end -end -class Xmms::Playlist::Sync - attr_reader(:real) + class Playlist::Sync + attr_reader(:real) - def initialize(plist) - @real = plist - end + def initialize(plist) + @real = plist + end - def method_missing(id, *args) - ret = @real.send(id, *args) - if(ret.is_a?(Xmms::Result)) - ret.wait.value - elsif(ret.is_a?(Xmms::Collection)) - self - else - ret + def method_missing(id, *args) + ret = @real.send(id, *args) + if(ret.is_a?(Xmms::Result)) + ret.wait.value + elsif(ret.is_a?(Xmms::Collection)) + self + else + ret + end end end end