├── .github ├── dependabot.yml └── workflows │ └── jekyll.yml ├── .gitignore ├── 404.md ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── _config.yml ├── _data └── authors.yml ├── _i18n ├── en.yml ├── en │ └── _posts │ │ ├── 2017-05-12-introducing-gitlocalize.md │ │ ├── 2017-08-02-github-marketplace-launch.md │ │ ├── 2017-09-25-ruby-on-rails-support.md │ │ ├── 2017-11-27-gitlocalize-webfundamentals.md │ │ ├── 2019-02-03-gitlocalize-now-part-of-alconost.md │ │ ├── 2019-05-28-gitlocalize-is-now-free.md │ │ └── 2020-03-27-badges-filters-and-more.md ├── ja.yml ├── ja │ └── _posts │ │ ├── 2017-05-12-introducing-gitlocalize.md │ │ ├── 2017-08-02-github-marketplace-launch.md │ │ ├── 2017-09-25-ruby-on-rails-support.md │ │ └── 2017-11-27-gitlocalize-webfundamentals.md ├── ru.yml └── ru │ └── _posts │ ├── 2019-02-03-gitlocalize-now-part-of-alconost.md │ ├── 2019-05-28-gitlocalize-is-now-free.md │ └── 2020-03-27-badges-filters-and-more.md ├── _includes ├── disqus.html ├── footer.html ├── head.html ├── header.html ├── icons.html └── muut.html ├── _layouts ├── default.html ├── page.html └── post.html ├── _sass ├── base │ ├── _global.scss │ ├── _utility.scss │ └── _variables.scss ├── external │ ├── _reset.scss │ └── _syntax.scss ├── includes │ ├── _footer.scss │ └── _header.scss └── layouts │ ├── _index.scss │ └── _posts.scss ├── css └── main.scss ├── favicon.ico ├── img ├── alconost_gitlocalize.png ├── badge.svg ├── badge_1.png ├── badge_de.svg ├── badge_fr.svg ├── badge_ptbr.svg ├── batch_PR.png ├── diff_management.png ├── filter_1.png ├── filter_2.png ├── flow.png ├── ghm │ └── main.png ├── gitlocalize-is-free-now.png ├── gitlocalize-is-free.png ├── gitlocalize.png ├── icon.png ├── logo.png ├── ror │ └── path_rule.png └── webfundamentals_gitlocalize.png ├── index.html └── js ├── jquery-3.2.1.min.js └── katex_init.js /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'bundler' 4 | directory: '/' 5 | schedule: 6 | interval: 'daily' -------------------------------------------------------------------------------- /.github/workflows/jekyll.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Jekyll 2 | 3 | on: 4 | push: 5 | branches: [ "main" ] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: read 10 | pages: write 11 | id-token: write 12 | 13 | concurrency: 14 | group: "pages" 15 | cancel-in-progress: true 16 | 17 | jobs: 18 | build: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - uses: actions/checkout@v3 22 | - uses: ruby/setup-ruby@v1 23 | with: 24 | ruby-version: '3.0' 25 | bundler-cache: true 26 | cache-version: 0 27 | - uses: actions/configure-pages@v2 28 | id: pages 29 | - run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" 30 | env: 31 | JEKYLL_ENV: production 32 | - uses: actions/upload-pages-artifact@v1 33 | 34 | deploy: 35 | environment: 36 | name: github-pages 37 | url: ${{ steps.deployment.outputs.page_url }} 38 | runs-on: ubuntu-latest 39 | needs: build 40 | steps: 41 | - uses: actions/deploy-pages@v1 42 | id: deployment 43 | 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .bundle/ 2 | .jekyll-cache/ 3 | .sass-cache/ 4 | _site/ 5 | vendor/ 6 | 7 | Gemfile.lock 8 | -------------------------------------------------------------------------------- /404.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: page 3 | title: "Page not found" 4 | permalink: /404 5 | hide: true 6 | --- 7 | Sorry, the requested page wasn't found on the server. 8 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem 'jekyll', '~>4' 4 | 5 | group :jekyll_plugins do 6 | gem 'jekyll-avatar', '~> 0.8' 7 | gem 'jekyll-feed', '~> 0.17' 8 | gem 'jekyll-sitemap', '~> 1.4' 9 | gem 'jekyll-paginate', '~> 1.1' 10 | gem 'jekyll-multiple-languages-plugin', '~> 1.8' 11 | end -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Rohan Chandra 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitLocalize blog 2 | 3 | ## Get started 4 | 5 | ```sh 6 | bundle install 7 | rake prepare 8 | ``` 9 | 10 | ## Run locally 11 | 12 | ```sh 13 | rake watch 14 | ``` 15 | 16 | ## Deploy 17 | 18 | ```sh 19 | rake deploy 20 | ``` 21 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require 'jekyll-gh-pages' 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # SITE CONFIGURATION 2 | baseurl: "" # the subpath of your site, e.g. /blog/ 3 | url: "http://blog.gitlocalize.com" # the base hostname & protocol for your site 4 | 5 | # THEME-SPECIFIC CONFIGURATION 6 | theme_settings: 7 | # Meta 8 | title: GitLocalize blog 9 | avatar: icon.png 10 | gravatar: # Email MD5 hash 11 | description: "GitLocalize: Continuous localization platform for GitHub repositories" # used by search engines 12 | 13 | # Header and footer text 14 | #header_text: > 15 | #

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

16 | 17 | #

Remove all header text in _config.yml to disable this feature.

18 | #header_text_feature_image: 19 | #footer_text: > 20 | # Powered by Jekyll with Type Theme 21 | 22 | # Icons 23 | rss: true 24 | email_address: "info@gitlocalize.com" # Full email address, e.g. "sam@example.com" 25 | behance: 26 | bitbucket: 27 | dribbble: 28 | facebook: gitlocalize 29 | flickr: 30 | github: gitlocalize 31 | google_plus: 32 | instagram: 33 | linkedin: # Full URL 34 | pinterest: 35 | reddit: 36 | soundcloud: 37 | stack_exchange: # Full URL 38 | steam: 39 | tumblr: 40 | twitter: gitlocalize 41 | wordpress: 42 | youtube: 43 | 44 | # Scripts 45 | google_analytics: "UA-79830225-4" 46 | disqus_shortname: 47 | muut_community_name: # From muut.com settings, e.g. "muttcommunityname" 48 | katex: true # Enable if using math markup 49 | 50 | # Localization strings 51 | str_follow_on: "Follow on" 52 | str_rss_follow: "Follow RSS feed" 53 | str_email: "Email" 54 | str_next: "Next" 55 | str_prev: "Prev" 56 | str_continue_reading: "Read More " 57 | 58 | # Colours, typography and padding 59 | # Open the "_sass > base" folder, and open "_variables.scss" 60 | google_fonts: "Source+Sans+Pro:300,400,700,700italic,400italic" 61 | 62 | # Post navigation 63 | post_navigation: false 64 | 65 | # PAGINATION 66 | paginate: 5 67 | paginate_path: "page:num" 68 | 69 | # BUILD SETTINGS 70 | markdown: kramdown 71 | highlighter: rouge 72 | sass: 73 | sass_dir: _sass 74 | style: :compressed 75 | plugins: 76 | - jekyll-avatar 77 | - jekyll-feed 78 | - jekyll-sitemap 79 | - jekyll-paginate 80 | - jekyll-multiple-languages-plugin 81 | languages: ["en", "ja", "ru"] 82 | permalink: /posts/:categories/:title 83 | future: true 84 | -------------------------------------------------------------------------------- /_data/authors.yml: -------------------------------------------------------------------------------- 1 | chikathreesix: Ryo Chikazawa 2 | ilyaspiridonov: Ilya Spiridonov 3 | -------------------------------------------------------------------------------- /_i18n/en.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/_i18n/en.yml -------------------------------------------------------------------------------- /_i18n/en/_posts/2017-05-12-introducing-gitlocalize.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Introducing GitLocalize, a continuous localization platform for GitHub repository 4 | author: chikathreesix 5 | languages: 6 | - ja 7 | image: gitlocalize.png 8 | --- 9 | 10 | We are excited to announce the beta launch of our new localization platform, [GitLocalize](https://gitlocalize.com)! 11 | 12 | GitLocalize is a continuous localization platform for GitHub repositories and automates the process for developers. Because of the ever-changing nature of Internet-related product, keeping localizing them has been really challenging. GitLocalize solves this by connecting to your GitHub repository and naturally integrating with your development workflow in just a few clicks. 13 | 14 | We started supporting from Markdown files. Try GitLocalize in a minute if you have a documentation project that you want to localize. 15 | 16 | 17 | Get started now with GitHub 18 | 19 | 20 | # How it works 21 | 22 | You can immediately get started with your GitHub account, choose your repository to integrate with GitLocalize and localize your files. Here are the key features of the platform: 23 | 24 | ### GitHub based workflow 25 | 26 | ![GitHub based workflow](/img/flow.png) 27 | 28 | Once you integrate your repo with GitLocalize, it starts pulling all the localization related files into its platform and watching the changes. 29 | 30 | When you finish translating a file, you then make a review request and ask the team to review the changes, like what you do with a pull request. 31 | 32 | After the review process, you can send a pull request back to your repo. It makes each contribution on GitLocalize each user's commit on the repository. 33 | 34 | With GitLocalize, your team no longer need to do anything extra to localize your project and developers only need to look at those pull request coming. 35 | 36 | ### Diff management on translations 37 | 38 | ![Diff management](/img/diff_management.png) 39 | 40 | Since it automatically links a translation with its original sentence, it can show you which part needs to be translated when the original one is updated. 41 | 42 | No need to manually check which parts are affected due to the original updated. You just need to look at GitLocalize editor and fill in the missing translations. 43 | 44 | And of course, more features are lined up and will be shipped soon! 45 | 46 | # More details 47 | 48 | Check out the video below to see how it works in more depth! 49 | 50 | 51 | 52 | # Happy localizing! 53 | 54 | We need your feedback to improve and bring the product to create the better future for localization. Please feel free to give us any feedbacks [here](https://gitlocalize.com/inquiries/new). We will respond within a day. 55 | 56 | Also, we have [a Gitter channel](https://gitter.im/gitlocalize/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link) to chat. Feel free to join and jump into the conversation. 57 | 58 | And of course, this blog is localized into [Japanese](http://blog.gitlocalize.com/ja/posts/introducing-gitlocalize.html) with GitLocalize, make a suggestion for the translation from [here](https://gitlocalize.com/repo/80). 59 | 60 | We hope to make your localization far easier and smoother and support your product's global success! Happy localizing! 61 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2017-08-02-github-marketplace-launch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalize is Now Available on GitHub Marketplace! 4 | author: chikathreesix 5 | languages: 6 | - ja 7 | image: ghm/main.png 8 | --- 9 | 10 | We are excited to announce that we have launched [GitLocalize](https://github.com/marketplace/gitlocalize) on [GitHub Marketplace](https://github.com/marketplace) as the first localization app! 11 | 12 | ![GitHub Marketplace top page](/img/ghm/main.png) 13 | 14 | [GitLocalize](https://gitlocalize.com) is a one of the seven new apps that lauched on [GitHub Marketplace](https://github.com/marketplace) on August 1st and our category [localization](https://github.com/marketplace/category/localization) is the new category on the marketplace! 15 | 16 | GitHub introduces the new apps including [GitLocalize](https://gitlocalize.com) in their official blog post, ["Introducing seven new apps to GitHub Marketplace"](https://github.com/blog/2411-introducing-seven-new-apps-to-github-marketplace). Check out the article to know more about other cool apps on the marketplace. 17 | 18 | Go to our [app page](https://github.com/marketplace/gitlocalize) to find out more and sign up for a free account today! 19 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2017-09-25-ruby-on-rails-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Localize Your Ruby on Rails App with GitLocalize 4 | author: chikathreesix 5 | languages: 6 | - ja 7 | image: gitlocalize.png 8 | --- 9 | 10 | Struggling to manage your i18n YAML files and the accompanying localization work with Ruby on Rails? Well, we have great news for you. GitLocalize is now here to help you take care of all that tedious Rails i18n work! 11 | 12 | # Get Started 13 | 14 | If you haven't signed up yet, register with GitLocalize for free and get ready to localize your Rails app with zero stress. 15 | 16 | 17 | Get Started for Free 18 | 19 | 20 | Read [our blog article](/posts/introducing-gitlocalize.html) to learn more about how GitLocalize works and what it can do for you. 21 | 22 | # Register Your Rails App 23 | 24 | Navigate to the `Add Repository` page from your profile. Here, you'll see the form to register your GitHub repository with the GitLocalize platform. 25 | 26 | In the middle of the page, specify where your source i18n files are located and where you want to generate translated files. 27 | 28 | For example, let's say that you have source English i18n YAML files at `config/locales/en.yml` and want to have translated ones at `config/locales/ja.yml` or `config/locales/es.yml`. Set the drop-down menu on the left to `File`, then type `config/locales/en.yml` for `Source Path` and `config/locales/%lang%.yml` for `Translation Path`. 29 | 30 | ![Add Rules](/img/ror/path_rule.png) 31 | 32 | This `%lang%` is a placeholder for the two-character code of your translation target languages. For example, if you're translating to Japanese and Spanish, `ja.yml` and `es.yml` will be generated, respectively. 33 | 34 | If you have multiple i18n files, simply click the `+ Add Rule` button to register more rules. 35 | 36 | # Start Localizing 37 | 38 | Once you submit and add your repository, you can start continuous localization work with your Rails app on GitLocalize. 39 | 40 | Simply go to your repository page from your profile, choose a language, navigate to the YAML file, and open the editor. You're all set! 41 | 42 | Check out the video below or [our docs](http://docs.gitlocalize.com/getting_started.html) to see how the rest of the process works! 43 | 44 | 45 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2017-11-27-gitlocalize-webfundamentals.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: Google’s Web Fundamentals Is Now Localizing With GitLocalize 4 | author: chikathreesix 5 | languages: 6 | - ja 7 | image: webfundamentals_gitlocalize.png 8 | --- 9 | 10 | ![Web Fundamentals x GitLocalize](/img/webfundamentals_gitlocalize.png) 11 | 12 | We are excited to announce that [Google is now experimenting with GitLocalize](https://developers.google.com/web/resources/translations)! We’re assisting the Web Fundamentals community with localizing their website. 13 | 14 | So far, the Web Fundamentals community has been able to localize the site into 17 languages. But keeping the translations up-to-date has proven to be more than challenging. We believe that GitLocalize is the perfect solution to this problem! 15 | 16 | Join the Web Fundamentals community to localize their vast knowledge of cutting-edge web technology into your language today. Innovation should never get lost in translation. 17 | 18 | [Contribute to the project](https://gitlocalize.com/repo/107) 19 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2019-02-03-gitlocalize-now-part-of-alconost.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalize Is Now Part of Alconost! 4 | author: ilyaspiridonov 5 | languages: 6 | - ru 7 | image: alconost_gitlocalize.png 8 | --- 9 | 10 | ![GitLocalize Is Now Part of Alconost](/img/alconost_gitlocalize.png) 11 | 12 | ### Good news everyone! 13 | 14 | We are excited to announce that [GitLocalize](https://gitlocalize.com) is now part of [Alconost](https://alconost.com)! 15 | 16 | Alconost Inc. is a U.S.-based Multi-Language Vendor that helps companies around the world with localization of their products and content into 80+ languages. Alconost will use its professional team and expertise in localization to support and improve GitLocalize, and to bring professional language services closer to developers. 17 | 18 | Stay tuned for future updates! 19 | 20 | 21 | Should you have any questions, feel free to [join our community chat](https://gitter.im/gitlocalize/Lobby) or [book a call with us directly](https://calendly.com/is-alconost)! 22 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2019-05-28-gitlocalize-is-now-free.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalize Is Free! 4 | author: ilyaspiridonov 5 | languages: 6 | - ru 7 | image: gitlocalize-is-free-now.png 8 | --- 9 | 10 | ![GitLocalize Is Free](/img/gitlocalize-is-free-now.png) 11 | 12 | We are excited to announce that [GitLocalize](https://gitlocalize.com) is now free for everyone! 13 | 14 | ### Is everything free? 15 | Yes. All the features — the synchronization of repositories, the webhook to keep your projects up-to-date, manual and machine translation into all the supported languages, and teamwork — are available for free. 16 | 17 | ### Is it free for anyone? 18 | Practically. Whether you own OSS or private projects, you can sync them to GitLocalize and translate their documentation, guides and resource strings into all the languages. We intend to keep the platform free for every project, except really huge ones — in such cases we will have to discuss an Enterprise plan with additional technical support from our team. 19 | 20 | ### Is it always going to be free? 21 | Yes, we intend to keep it that way. 22 | 23 | GitLocalize is still far from perfect, and what we need now is as much feedback as possible. Feel free to sign in or sign up with your GitHub account, add a new repo, and start translating right away. Our team will be more than happy to answer any questions — [join the community chat](https://gitter.im/gitlocalize/Lobby) or [book a call](https://calendly.com/is-alconost) to share your experience! 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /_i18n/en/_posts/2020-03-27-badges-filters-and-more.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: 🚀 Badges, Filters and More 4 | author: ilyaspiridonov 5 | languages: 6 | - ru 7 | --- 8 | 9 | 10 | We've been working hard to make GitLocalize better. Check out the cool features that we've added recently. 11 | 12 | --- 13 | 14 | ### 🔍 Filters 15 | 16 | 17 | Translating updates just got easier. You can now select to display only untranslated strings or only machine translated strings, which is especially important if you’re working with large markdown or json files. Just click on the filter icon in the top right part of the editor 18 | 19 | ![Filters](/img/filter_1.png) 20 | 21 | and select the desired view: 22 | 23 | ![Filters](/img/filter_2.png) 24 | 25 | --- 26 | 27 | ### 🏷 The GitLocalized badge 28 | 29 | 30 | If you want your community to see the translation progress of your project, feel free to add our ![GitLocalized](/img/badge.svg) badge to your Readme file, Wiki or Contributing Guidelines. 31 | 32 | To generate the badge link, head to the Badge tab in Project Overview: 33 | ![GitLocalized Badge](/img/badge_1.png) 34 | 35 | You can also generate badges for each of the project languages: 36 | 37 | ![de](/img/badge_de.svg) 38 | ![fr](/img/badge_fr.svg) 39 | ![ptbr](/img/badge_ptbr.svg) 40 | 41 | 42 | Check out how other GitHub projects are using our badge: 43 | 44 | [Hacker Laws](https://github.com/dwmkerr/hacker-laws#translations) 45 | 46 | [SlimeFun4](https://github.com/TheBusyBiscuit/Slimefun4/wiki/Translating-Slimefun) 47 | 48 | --- 49 | 50 | ### 🗞 Group multiple files in a single pull request 51 | 52 | If you're a language moderator or project owner, you may now find it easier to send multiple translated files (review requests) in a single pull request 53 | ![Batch Pull Request](/img/batch_PR.png) 54 | 55 | --- 56 | 57 | _Stay tuned for future updates!_ 58 | 59 | 60 | Should you have any questions, feel free to [join our community chat](https://gitter.im/gitlocalize/Lobby) or [send us an email](mailto:info@gitlocalize.com). 61 | -------------------------------------------------------------------------------- /_i18n/ja.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/_i18n/ja.yml -------------------------------------------------------------------------------- /_i18n/ja/_posts/2017-05-12-introducing-gitlocalize.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: 'GitLocalizeのご紹介: GitHubリポジトリのための継続的ローカライゼーションツール' 4 | author: chikathreesix 5 | languages: 6 | - en 7 | image: gitlocalize.png 8 | --- 9 | 10 | 新しいローカライゼーションプラットフォーム、[GitLocalize](https://gitlocalize.com)のベータ版がローンチしました! 11 | 12 | GitLocalizeは、GitHubリポジトリ用の継続的なローカリゼーションプラットフォームで、開発者向けにプロセスを自動化します。インターネット関連の製品はアップデートが頻繁に起こるため、ローカライズを維持することは本当に難しい作業でしたが、 GitLocalizeはGitHubリポジトリに接続し、数回のクリックで開発ワークフローと自然に統合することで、継続的なローカライゼーションの問題を解決します。 13 | 14 | 現在Markdownファイルをサポートしてますので、ローカライズするドキュメントプロジェクトがある場合は、是非GitLocalizeを試してみてください。 15 | 16 | GitHubですぐに始める 17 | 18 | # 主な特徴 19 | 20 | GitHubアカウントを使ってすぐに始めることができます。リポジトリを選択してGitLocalizeと統合し、ファイルをローカライズします。プラットフォームの主な機能は次のとおりです。 21 | 22 | ### GitHubベースのワークフロー 23 | 24 | ![GitHub based workflow](/img/flow.png) 25 | 26 | リポジトリをGitLocalizeと統合すると、ローカライゼーション関連のすべてのファイルがプラットフォームにpullされ、変更が監視され始めます。 27 | 28 | ファイルの翻訳が完了したら、レビューリクエストを作り、変更をレビューするようチームに依頼します。GitHubで行なっている、プルリクエストと同じようなフローです。 29 | 30 | レビューが完了したら、プルリクエストをリポジトリに送り返すことができます。GitLocalizeでの貢献が、それぞれのユーザーのコミットとなります。 31 | 32 | GitLocalizeを利用すると、チームはプロジェクトをローカライズするために余分な作業を行う必要がなくなり、開発者はプルリクエストを見るだけで済みます。 33 | 34 | ### 翻訳文の差分管理 35 | 36 | ![Diff management](/img/diff_management.png) 37 | 38 | 自動的に元の文と翻訳をリンクするので、元の文が更新されたときに、どこを翻訳すれば良いのかすぐにわかります。 39 | 40 | オリジナルの更新によって影響を受ける部分を目視で確認する必要はありません。GitLocalizeエディタを見て足りない翻訳を行うだけです。 41 | 42 | もちろん、これから続々と機能が追加されて行きます! 43 | 44 | # もっと詳しく 45 | 46 | どのように動くのか、詳しくは以下のビデオをご覧ください! 47 | 48 | 49 | 50 | 51 | 52 | # 楽しいローカライゼーションを! 53 | 54 | 製品を改善し、ローカライゼーションのより良い未来を作るため、皆様のご意見が必要です。[こちらに](https://gitlocalize.com/inquiries/new)是非フィードバックをお寄せください。即日でご返信します。 55 | 56 | こちらの[Gitterチャンネル](https://gitter.im/gitlocalize/Lobby?utm_source=share-link&utm_medium=link&utm_campaign=share-link)もありますので、自由に参加して会話に参加してください。 57 | 58 | もちろん、このブログはGitLocalizeを使って日本語にローカライズされていますので、[ここ](https://gitlocalize.com/repo/80)から翻訳を提案してください。 59 | 60 | ローカライゼーションを簡単かつスムーズにし、製品のグローバルな成功をサポートできるよう願っています! 61 | -------------------------------------------------------------------------------- /_i18n/ja/_posts/2017-08-02-github-marketplace-launch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalizeがGitHubマーケットプレイスにローンチされました! 4 | author: chikathreesix 5 | languages: 6 | - en 7 | image: ghm/main.png 8 | --- 9 | 10 | [GitLocalize](https://github.com/marketplace/gitlocalize)が[GitHub Marketplace](https://github.com/marketplace)にて最初のローカリゼーションアプリとしてローンチされました! 11 | 12 | ![GitHub Marketplace top page](/img/ghm/main.png) 13 | 14 | [GitLocalize](https://gitlocalize.com)は、8月1日に[GitHub Marketplace](https://github.com/marketplace)にローンチされた7つの新しいアプリケーションの1つで、[ローカリゼーション](https://github.com/marketplace/category/localization)は新しいカテゴリです! 15 | 16 | GitHubは、 [GitLocalize](https://gitlocalize.com)を含む新しいアプリを、公式のブログ記事["Introducing seven new apps to GitHub Marketplace"](https://github.com/blog/2411-introducing-seven-new-apps-to-github-marketplace)にて紹介しています。記事を読んで、他の素晴らしいアプリについてもチェックして見てください。 17 | 18 | [アプリのページ](https://github.com/marketplace/gitlocalize)から、価格の詳細を確認して、是非今すぐ無料プランを始めてみてください! 19 | -------------------------------------------------------------------------------- /_i18n/ja/_posts/2017-09-25-ruby-on-rails-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalizeを使ってRuby on Rails アプリをローカライズ 4 | author: chikathreesix 5 | languages: 6 | - en 7 | image: gitlocalize.png 8 | --- 9 | 10 | Ruby on Railsのi18n YAMLファイルを管理とそれに伴うローカリゼーション作業に苦労していませんか? GitLocalizeは面倒なRails i18nのすべての作業を簡単にすることができます! 11 | 12 | # 開始する 13 | 14 | まだサインアップしていない場合は、無料でGitLocalizeに登録して、Railsアプリをストレスなくローカライズする準備をしましょう。 15 | 16 | 17 | 18 | 無料で始める 19 | 20 | 21 | GitLocalizeが実際にどう動くのか、[こちらのブログ記事](/posts/ja/introducing-gitlocalize.html) をチェックしてみてください。 22 | 23 | # Railsアプリを登録する 24 | 25 | プロフィールから `Repository追加` ページへ移動すると、GitHubリポジトリをGitLocalizeに追加するフォームがあります。 26 | 27 | ページの中央で、ソースi18nファイルの場所と翻訳ファイルの生成場所を指定します。 28 | 29 | たとえば英語のi18n YAMLファイルが`config/locales/en.yml`にあり、 翻訳したいファイルが`config/locales/ja.yml`や`config/locales/es.yml`にあるとします。この場合、左側のドロップダウンメニューで`File`を選択し、 `Source Path`に`config/locales/en.yml` 、`Translation Path`に`config/locales/%lang%.yml`を入力します。 30 | 31 | ![Add Rules](/img/ror/path_rule.png) 32 | 33 | この `%lang%` は翻訳対象言語の二文字の言語コードのプレースホルダーです。例えば、日本語とスペイン語を翻訳している場合、`ja.yml` と `es.yml` がそれぞれ生成されます。 34 | 35 | i18nファイルが複数ある場合は、 `+ Add Rule`ボタンをクリックすることで、複数のルールを登録できます。 36 | 37 | # ローカライズを始める 38 | 39 | リポジトリの登録が完了したら、GitLocalizeであなたのRailsアプリの継続的ローカライズを始めることができます。 40 | 41 | プロフィールページからリポジトリページに移動し、言語を選択し、YAMLファイルに移動してエディタを開きます。 42 | 43 | 以下のビデオや [ドキュメンテーション](http://docs.gitlocalize.com/getting_started.html) をみて、この後のプロセスについて学んでみてください。 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /_i18n/ja/_posts/2017-11-27-gitlocalize-webfundamentals.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GoogleのWeb FundamentalsがローカライズにGitLocalizeを試験運用開始 4 | author: chikathreesix 5 | languages: 6 | - en 7 | image: webfundamentals_gitlocalize.png 8 | --- 9 | 10 | ![Web Fundamentals x GitLocalize](/img/webfundamentals_gitlocalize.png) 11 | 12 | [GitLocalizeがGoogleのプロジェクトにて試験的に導入が開始されました](https://developers.google.com/web/resources/translations)! Web Fundamentalsのウェブサイトを、コミュニティと共にGitLocalizeを活用してローカライズを進めて行きます。 13 | 14 | 現在Web Fundamentalsのコミュニティはウェブサイトを17の言語にローカライズしてきました。しかし翻訳を常に最新の状態に保つのはとても難しいことでした。GitLocalizeがそれを解決することを願っています! 15 | 16 | Web Fundamentalsのコミュニティに参加して、最新のウェブ技術の知見を自分の言語にローカライズしてみましょう! イノベーションに言語の壁が邪魔してはいけないはずです。 17 | 18 | [プロジェクトに参加する](https://gitlocalize.com/repo/107) 19 | -------------------------------------------------------------------------------- /_i18n/ru.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/_i18n/ru.yml -------------------------------------------------------------------------------- /_i18n/ru/_posts/2019-02-03-gitlocalize-now-part-of-alconost.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalize объединяется с Alconost! 4 | author: ilyaspiridonov 5 | languages: 6 | - en 7 | image: alconost_gitlocalize.png 8 | --- 9 | 10 | ![GitLocalize Is Now Part of Alconost](/img/alconost_gitlocalize.png) 11 | 12 | ### Отличные новости! 13 | 14 | Рады сообщить, что [GitLocalize](https://gitlocalize.com) стал частью компании [Alconost](https://alconost.com)! 15 | 16 | Alconost Inc. — студия локализации из США, которая помогает компаниям во всем мире локализовывать продукты и контент более чем на 80 языков. Благодаря опыту и профессиональной команде Alconost, GitLocalize будет продолжать совершенствоваться, а пользователям платформы станут доступны профессиональные услуги перевода. 17 | 18 | Следите за новостями! 19 | 20 | Если у вас возникли вопросы, вы можете задать их в [чате коммьюнити](https://gitter.im/gitlocalize/Lobby) или [запланировать с нами звонок](https://calendly.com/is-alconost)! 21 | -------------------------------------------------------------------------------- /_i18n/ru/_posts/2019-05-28-gitlocalize-is-now-free.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: GitLocalize – теперь бесплатно! 4 | author: ilyaspiridonov 5 | languages: 6 | - en 7 | image: gitlocalize-is-free-now.png 8 | --- 9 | 10 | ![GitLocalize Is Free](/img/gitlocalize-is-free-now.png) 11 | 12 | Мы рады сообщить, что платформа [GitLocalize](https://gitlocalize.com) стала бесплатной! 13 | 14 | ### Что доступно в бесплатной версии? 15 | 16 | Весь функционал: синхронизация репозиториев, вебхуки для обновления проектов, ручной и машинный перевод на все поддерживаемые языки — все это доступно в бесплатной версии. 17 | 18 | ### Бесплатно для всех? 19 | 20 | Практически для всех. Независимо от того, приватный у вас проект либо OSS, его можно синхронизировать с GitLocalize и переводить документацию, руководства и ресурсные строки на любые языки. Мы будем делать все, чтобы платформа оставалась бесплатной для любых проектов, за исключением очень крупных: для таких случаев есть индивидуальный план Enterprise с дополнительной технической поддержкой. 21 | 22 | ### Бесплатно всегда? 23 | 24 | Да, мы сделаем все возможное, чтобы платформа всегда оставалась бесплатной. 25 | 26 | GitLocalize — далеко не совершенный продукт, и сейчас мы хотим получить как можно больше обратной связи от пользователей. Регистрируйтесь или авторизуйтесь с помощью аккаунта GitHub, добавляйте репозиторий и начинайте переводить. Наша команда будет рада ответить на любые вопросы — [присоединяйтесь к чату комьюнити](https://gitter.im/gitlocalize/Lobby) или [забронируйте звонок с нами](https://calendly.com/is-alconost), чтобы поделиться впечатлениями! 27 | -------------------------------------------------------------------------------- /_i18n/ru/_posts/2020-03-27-badges-filters-and-more.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: post 3 | title: 🚀 Бэджи, фильтры и не только 4 | author: ilyaspiridonov 5 | languages: 6 | - en 7 | --- 8 | 9 | Мы прилагаем все усилия, чтобы сделать GitLocalize лучше. Вот какой интересный функционал мы недавно добавили. 10 | 11 | --- 12 | 13 | 14 | 15 | ### 🔍 Фильтры 16 | 17 | Переводить обновления стало проще. Теперь можно переключиться в режим отображения только непереведенных строк (либо переведенных машинным переводом). Это особенно важно при работе с большими файлами .md или .json. 18 | Нажмите иконку фильтра в правой верхней части редактора 19 | 20 | ![Filters](/img/filter_1.png) 21 | 22 | и выберите нужный режим отображения: 23 | 24 | ![Filters](/img/filter_2.png) 25 | 26 | --- 27 | 28 | 29 | 30 | ### 🏷 Бэдж GitLocalized 31 | 32 | Если вы хотите, чтобы участники вашего коммьюнити видели прогресс перевода вашего проекта, добавьте наш бэдж ![GitLocalized](/img/badge.svg) в Readme, вики или гайды для контрибьюторов. 33 | 34 | Сгенерировать ссылку на бэдж можно во вкладке Badge: 35 | ![GitLocalized Badge](/img/badge_1.png) 36 | 37 | Кроме того, можно генерировать отдельные бэджи для каждого языка проекта: 38 | 39 | ![de](/img/badge_de.svg) ![fr](/img/badge_fr.svg) 40 | ![ptbr](/img/badge_ptbr.svg) 41 | 42 | Посмотрите, как другие проекты на GitHub используют наш бэдж: 43 | 44 | [Hacker Laws](https://github.com/dwmkerr/hacker-laws#translations) 45 | 46 | [SlimeFun4](https://github.com/TheBusyBiscuit/Slimefun4/wiki/Translating-Slimefun) 47 | 48 | --- 49 | 50 | 51 | 52 | ### 🗞 Объединяйте несколько файлов в один pull request 53 | 54 | Если вы модератор языка или владелец проекта, возможно, вам будет удобнее отправлять несколько переведенных файлов (review request-ов) в одном пуллреквесте. 55 | ![Batch Pull Request](/img/batch_PR.png) 56 | 57 | --- 58 | 59 | Следите за нашими новостями! 60 | 61 | Если у вас возникли вопросы, вы можете задать их в [чате коммьюнити](https://gitter.im/gitlocalize/Lobby) или [отправить нам письмо](mailto:info@gitlocalize.com). 62 | -------------------------------------------------------------------------------- /_includes/disqus.html: -------------------------------------------------------------------------------- 1 |
2 | 10 | 11 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | {% if site.theme_settings.katex %} 2 | 3 | {% endif %} 4 | 5 | {% if site.theme_settings.footer_text %} 6 | 9 | {% endif %} 10 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if page.title %}{{ page.title }} |{% endif %} {{ site.theme_settings.title }} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | {% if site.theme_settings.google_fonts %} 30 | 31 | {% endif %} 32 | 33 | 34 | {% if site.theme_settings.katex %} 35 | 36 | 37 | {% endif %} 38 | 39 | 40 | {% if site.theme_settings.google_analytics %} 41 | 50 | {% endif %} 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 34 | -------------------------------------------------------------------------------- /_includes/icons.html: -------------------------------------------------------------------------------- 1 | {% if site.theme_settings.rss %} 2 |
  • 3 | 4 | 5 | 6 |
  • 7 | {% endif %} 8 | 9 | {% if site.theme_settings.email_address %} 10 |
  • 11 | 12 | 13 | 14 |
  • 15 | {% endif %} 16 | 17 | {% if site.theme_settings.behance %} 18 |
  • 19 | 20 | 21 | 22 |
  • 23 | {% endif %} 24 | 25 | {% if site.theme_settings.bitbucket %} 26 |
  • 27 | 28 | 29 | 30 |
  • 31 | {% endif %} 32 | 33 | {% if site.theme_settings.dribbble %} 34 |
  • 35 | 36 | 37 | 38 |
  • 39 | {% endif %} 40 | 41 | {% if site.theme_settings.facebook %} 42 |
  • 43 | 44 | 45 | 46 |
  • 47 | {% endif %} 48 | 49 | {% if site.theme_settings.flickr %} 50 |
  • 51 | 52 | 53 | 54 |
  • 55 | {% endif %} 56 | 57 | {% if site.theme_settings.github %} 58 |
  • 59 | 60 | 61 | 62 |
  • 63 | {% endif %} 64 | 65 | {% if site.theme_settings.google_plus %} 66 |
  • 67 | 68 | 69 | 70 |
  • 71 | {% endif %} 72 | 73 | {% if site.theme_settings.instagram %} 74 |
  • 75 | 76 | 77 | 78 |
  • 79 | {% endif %} 80 | 81 | {% if site.theme_settings.linkedin %} 82 |
  • 83 | 84 | 85 | 86 |
  • 87 | {% endif %} 88 | 89 | {% if site.theme_settings.pinterest %} 90 |
  • 91 | 92 | 93 | 94 |
  • 95 | {% endif %} 96 | 97 | {% if site.theme_settings.reddit %} 98 |
  • 99 | 100 | 101 | 102 |
  • 103 | {% endif %} 104 | 105 | {% if site.theme_settings.soundcloud %} 106 |
  • 107 | 108 | 109 | 110 |
  • 111 | {% endif %} 112 | 113 | {% if site.theme_settings.stack_exchange %} 114 |
  • 115 | 116 | 117 | 118 |
  • 119 | {% endif %} 120 | 121 | {% if site.theme_settings.steam %} 122 |
  • 123 | 124 | 125 | 126 |
  • 127 | {% endif %} 128 | 129 | {% if site.theme_settings.tumblr %} 130 |
  • 131 | 132 | 133 | 134 |
  • 135 | {% endif %} 136 | 137 | {% if site.theme_settings.twitter %} 138 |
  • 139 | 140 | 141 | 142 |
  • 143 | {% endif %} 144 | 145 | {% if site.theme_settings.wordpress %} 146 |
  • 147 | 148 | 149 | 150 |
  • 151 | {% endif %} 152 | 153 | {% if site.theme_settings.youtube %} 154 |
  • 155 | 156 | 157 | 158 |
  • 159 | {% endif %} 160 | -------------------------------------------------------------------------------- /_includes/muut.html: -------------------------------------------------------------------------------- 1 | 2 | {{site.theme_settings.muut_community_name}} 3 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include head.html %} 4 | 5 | {% include header.html %} 6 |
    7 | {{ content }} 8 |
    9 | {% include footer.html %} 10 | 11 | 12 | -------------------------------------------------------------------------------- /_layouts/page.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
    5 |
    6 |

    {{ page.title }}

    7 |
    8 |
    {{ content }}
    9 |
    10 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 |
    5 |
    6 |

    {{ page.title }}

    7 |

    8 | {{ page.date | date: "%B %-d, %Y" }} 9 | {% if page.author %} - {% avatar {{ page.author }} size=24 %} {{ site.data.authors[page.author] }}{% endif %} 10 | {% if page.languages %} 11 |

    22 | {% endif %} 23 |

    24 |
    25 |
    {{ content }}
    26 |
    27 | 28 | 29 | {% if site.theme_settings.post_navigation %} 30 |
    31 | {% if page.previous.url %} 32 | 38 | {% endif %} 39 | {% if page.next.url %} 40 | 46 | {% endif %} 47 |
    48 | {% endif %} 49 | 50 | 51 | {% if site.theme_settings.disqus_shortname %} 52 |
    53 | {% include disqus.html %} 54 |
    55 | {% endif %} 56 | 57 | 58 | {% if site.theme_settings.muut_community_name %} 59 |
    60 | {% include muut.html %} 61 |
    62 | {% endif %} 63 | -------------------------------------------------------------------------------- /_sass/base/_global.scss: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | figure { 7 | margin: 0; 8 | } 9 | // For correct line number width in Github Gists 10 | .gist table tbody tr td { 11 | box-sizing: content-box; 12 | } 13 | html { 14 | background: $background-color; 15 | } 16 | 17 | // Typography 18 | ::selection { 19 | background: $selection-color; 20 | } 21 | ::-moz-selection { 22 | background: $selection-color; 23 | } 24 | body { 25 | color: $text-color !important; 26 | font-family: $font-family-main !important; 27 | font-size: $font-size; 28 | font-weight: 300; 29 | word-wrap: break-word; 30 | 31 | @media (max-width: 768px) { 32 | font-size: 14px; 33 | } 34 | } 35 | h1, h2, h3, h4, h5, h6 { 36 | font-family: $font-family-headings; 37 | line-height: 1.3; 38 | font-weight: 700; 39 | margin: 0.67em 0; 40 | a { 41 | color: $text-color; 42 | } 43 | } 44 | h1 { 45 | font-size: 2.5em; 46 | } 47 | h2 { 48 | font-size: 2em; 49 | } 50 | h3 { 51 | font-size: 1.5em; 52 | } 53 | h4 { 54 | font-size: 1.15em; 55 | } 56 | blockquote { 57 | border-left: 2px solid; 58 | padding: 1em 1em; 59 | } 60 | blockquote p:last-child, 61 | footer p:last-child { 62 | margin-bottom: 0; 63 | } 64 | table { 65 | table-layout:fixed; 66 | width:100%; 67 | word-wrap:break-word; 68 | @media (max-width: 1100px) { 69 | overflow-x: scroll; 70 | display: inline-block; 71 | } 72 | } 73 | td, 74 | th { 75 | padding: 0.5em 1em; 76 | border: 1px solid $border-color; 77 | text-align: left; 78 | } 79 | table, 80 | dl, 81 | blockquote, 82 | code, 83 | kbd, 84 | pre, 85 | samp { 86 | margin: 1em 0; 87 | } 88 | dt { 89 | font-weight: bold; 90 | } 91 | dd { 92 | margin-left: 2em; 93 | } 94 | p, ol, ul, dl, .math-display { 95 | line-height: 1.6; 96 | font-size: 18px; 97 | margin-bottom: 1em; 98 | } 99 | // KaTeX math display 100 | .math-display { 101 | display: inline-block; 102 | width: 100%; 103 | } 104 | // Lists within lists 105 | li > ul, li > ol { 106 | margin-bottom: 0; 107 | margin-left: 1em; 108 | } 109 | ol, ul { 110 | list-style-position: inside; 111 | } 112 | hr { 113 | border: 0; 114 | border-top: 1px solid $border-color; 115 | border-bottom: 1px solid #fff; 116 | margin: 1em 0; 117 | } 118 | a { 119 | color: $link-color; 120 | text-decoration: none; 121 | } 122 | .nav { 123 | list-style: none; 124 | margin: 0; 125 | padding: 0; 126 | } 127 | // Responsive media 128 | iframe, img, embed, object, video { 129 | max-width: 100%; 130 | } 131 | img[align=left] { 132 | margin-right: 3%; 133 | } 134 | img[align=right] { 135 | margin-left: 3%; 136 | } 137 | -------------------------------------------------------------------------------- /_sass/base/_utility.scss: -------------------------------------------------------------------------------- 1 | // Mix-ins 2 | %padding-small { 3 | padding: $padding-x-small $padding-x-small * 2; 4 | @media (max-width: 1000px) { 5 | padding: $padding-x-small $padding-x-small; 6 | } 7 | } 8 | %padding-regular { 9 | padding: $padding-small $padding-large; 10 | @media (max-width: 1000px) { 11 | padding: $padding-small * 1.5 $padding-large / 1.6; 12 | } 13 | } 14 | %link-hover { 15 | text-decoration: underline; 16 | color: darken($link-color, 15%); 17 | } 18 | // Buttons 19 | .button { 20 | border-radius: 0.3em; 21 | border: 1px solid; 22 | display: inline-block; 23 | margin: 1em 0; 24 | padding: 0.5em 0.75em; 25 | } 26 | a.button:hover { 27 | background: $link-color; 28 | border: 1px solid $link-color; 29 | color: $background-color; 30 | text-decoration: none; 31 | } 32 | // States 33 | .disabled { 34 | opacity: 0.7; 35 | } 36 | 37 | .content-container { 38 | max-width: 740px; 39 | } 40 | 41 | .btn-hero { 42 | background-color: #FFCD19; 43 | font-size: 16px; 44 | color: #333333; 45 | padding: 10px 20px; 46 | -moz-border-radius: 25px; 47 | -webkit-border-radius: 25px; 48 | border-radius: 25px; 49 | } 50 | 51 | .languages { 52 | list-style: none; 53 | margin: 0; 54 | padding: 0; 55 | 56 | &:after{ 57 | content: "."; 58 | display: block; 59 | height: 0; 60 | font-size: 0; 61 | clear: both; 62 | visibility:hidden; 63 | } 64 | 65 | li { 66 | float: left; 67 | a { 68 | padding-top: 2px; 69 | display: block; 70 | background-color: #bbb; 71 | text-decoration: none; 72 | text-transform: uppercase; 73 | color: white; 74 | width: 34px; 75 | height: 34px; 76 | text-align: center; 77 | -moz-border-radius: 16px; 78 | -webkit-border-radius: 16px; 79 | border-radius: 20px; 80 | 81 | &:hover { 82 | background-color: #ccc; 83 | } 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /_sass/base/_variables.scss: -------------------------------------------------------------------------------- 1 | // Typography 2 | $font-family-main: 'Source Sans Pro', Helvetica, Arial, sans-serif; 3 | $font-family-headings: 'Source Sans Pro', Helvetica, Arial, sans-serif; 4 | $font-size: 15px; 5 | 6 | // Padding 7 | $padding-large: 20%; 8 | $padding-small: 5%; 9 | $padding-x-small: 3%; 10 | 11 | // Brand colours 12 | $brand-color: #fff; 13 | $background-color: #fff; 14 | $border-color: rgba(0, 0, 0, 0.1); // rgba recommended if using feature images 15 | 16 | // Typography colours 17 | $text-color: #383838; 18 | $link-color: #1ABC9C; 19 | $selection-color: #D4D4D4; // visible when highlighting text 20 | 21 | // Header colours 22 | $header-link-color: #383838; 23 | 24 | // Feature image for articles 25 | $feature-image-text-color: #fff; 26 | $feature-image-size: cover; // options include "cover", "contain", "auto" 27 | 28 | // Header description box 29 | $header-desc-background-color: #F98752; 30 | $header-desc-text-color: #FFF; 31 | -------------------------------------------------------------------------------- /_sass/external/_reset.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ 2 | 3 | /** 4 | * 1. Set default font family to sans-serif. 5 | * 2. Prevent iOS text size adjust after orientation change, without disabling 6 | * user zoom. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove default margin. 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Correct `block` display not defined for any HTML5 element in IE 8/9. 28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 29 | * and Firefox. 30 | * Correct `block` display not defined for `main` in IE 11. 31 | */ 32 | 33 | article, 34 | aside, 35 | details, 36 | figcaption, 37 | figure, 38 | footer, 39 | header, 40 | hgroup, 41 | main, 42 | menu, 43 | nav, 44 | section, 45 | summary { 46 | display: block; 47 | } 48 | 49 | /** 50 | * 1. Correct `inline-block` display not defined in IE 8/9. 51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. 52 | */ 53 | 54 | audio, 55 | canvas, 56 | progress, 57 | video { 58 | display: inline-block; /* 1 */ 59 | vertical-align: baseline; /* 2 */ 60 | } 61 | 62 | /** 63 | * Prevent modern browsers from displaying `audio` without controls. 64 | * Remove excess height in iOS 5 devices. 65 | */ 66 | 67 | audio:not([controls]) { 68 | display: none; 69 | height: 0; 70 | } 71 | 72 | /** 73 | * Address `[hidden]` styling not present in IE 8/9/10. 74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. 75 | */ 76 | 77 | [hidden], 78 | template { 79 | display: none; 80 | } 81 | 82 | /* Links 83 | ========================================================================== */ 84 | 85 | /** 86 | * Remove the gray background color from active links in IE 10. 87 | */ 88 | 89 | a { 90 | background-color: transparent; 91 | } 92 | 93 | /** 94 | * Improve readability when focused and also mouse hovered in all browsers. 95 | */ 96 | 97 | a:active, 98 | a:hover { 99 | outline: 0; 100 | } 101 | 102 | /* Text-level semantics 103 | ========================================================================== */ 104 | 105 | /** 106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. 107 | */ 108 | 109 | abbr[title] { 110 | border-bottom: 1px dotted; 111 | } 112 | 113 | /** 114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. 115 | */ 116 | 117 | b, 118 | strong { 119 | font-weight: bold; 120 | } 121 | 122 | /** 123 | * Address styling not present in Safari and Chrome. 124 | */ 125 | 126 | dfn { 127 | font-style: italic; 128 | } 129 | 130 | /** 131 | * Address variable `h1` font-size and margin within `section` and `article` 132 | * contexts in Firefox 4+, Safari, and Chrome. 133 | */ 134 | 135 | h1 { 136 | font-size: 2em; 137 | margin: 0.67em 0; 138 | } 139 | 140 | /** 141 | * Address styling not present in IE 8/9. 142 | */ 143 | 144 | mark { 145 | background: #ff0; 146 | color: #000; 147 | } 148 | 149 | /** 150 | * Address inconsistent and variable font size in all browsers. 151 | */ 152 | 153 | small { 154 | font-size: 80%; 155 | } 156 | 157 | /** 158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. 159 | */ 160 | 161 | sub, 162 | sup { 163 | font-size: 75%; 164 | line-height: 0; 165 | position: relative; 166 | vertical-align: baseline; 167 | } 168 | 169 | sup { 170 | top: -0.5em; 171 | } 172 | 173 | sub { 174 | bottom: -0.25em; 175 | } 176 | 177 | /* Embedded content 178 | ========================================================================== */ 179 | 180 | /** 181 | * Remove border when inside `a` element in IE 8/9/10. 182 | */ 183 | 184 | img { 185 | border: 0; 186 | } 187 | 188 | /** 189 | * Correct overflow not hidden in IE 9/10/11. 190 | */ 191 | 192 | svg:not(:root) { 193 | overflow: hidden; 194 | } 195 | 196 | /* Grouping content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Address margin not present in IE 8/9 and Safari. 201 | */ 202 | 203 | figure { 204 | margin: 1em 40px; 205 | } 206 | 207 | /** 208 | * Address differences between Firefox and other browsers. 209 | */ 210 | 211 | hr { 212 | -moz-box-sizing: content-box; 213 | box-sizing: content-box; 214 | height: 0; 215 | } 216 | 217 | /** 218 | * Contain overflow in all browsers. 219 | */ 220 | 221 | pre { 222 | overflow: auto; 223 | } 224 | 225 | /** 226 | * Address odd `em`-unit font size rendering in all browsers. 227 | */ 228 | 229 | code, 230 | kbd, 231 | pre, 232 | samp { 233 | font-family: monospace, monospace; 234 | font-size: 1em; 235 | } 236 | 237 | /* Forms 238 | ========================================================================== */ 239 | 240 | /** 241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited 242 | * styling of `select`, unless a `border` property is set. 243 | */ 244 | 245 | /** 246 | * 1. Correct color not being inherited. 247 | * Known issue: affects color of disabled elements. 248 | * 2. Correct font properties not being inherited. 249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. 250 | */ 251 | 252 | button, 253 | input, 254 | optgroup, 255 | select, 256 | textarea { 257 | color: inherit; /* 1 */ 258 | font: inherit; /* 2 */ 259 | margin: 0; /* 3 */ 260 | } 261 | 262 | /** 263 | * Address `overflow` set to `hidden` in IE 8/9/10/11. 264 | */ 265 | 266 | button { 267 | overflow: visible; 268 | } 269 | 270 | /** 271 | * Address inconsistent `text-transform` inheritance for `button` and `select`. 272 | * All other form control elements do not inherit `text-transform` values. 273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. 274 | * Correct `select` style inheritance in Firefox. 275 | */ 276 | 277 | button, 278 | select { 279 | text-transform: none; 280 | } 281 | 282 | /** 283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` 284 | * and `video` controls. 285 | * 2. Correct inability to style clickable `input` types in iOS. 286 | * 3. Improve usability and consistency of cursor style between image-type 287 | * `input` and others. 288 | */ 289 | 290 | button, 291 | html input[type="button"], /* 1 */ 292 | input[type="reset"], 293 | input[type="submit"] { 294 | -webkit-appearance: button; /* 2 */ 295 | cursor: pointer; /* 3 */ 296 | } 297 | 298 | /** 299 | * Re-set default cursor for disabled elements. 300 | */ 301 | 302 | button[disabled], 303 | html input[disabled] { 304 | cursor: default; 305 | } 306 | 307 | /** 308 | * Remove inner padding and border in Firefox 4+. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | input::-moz-focus-inner { 313 | border: 0; 314 | padding: 0; 315 | } 316 | 317 | /** 318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in 319 | * the UA stylesheet. 320 | */ 321 | 322 | input { 323 | line-height: normal; 324 | } 325 | 326 | /** 327 | * It's recommended that you don't attempt to style these elements. 328 | * Firefox's implementation doesn't respect box-sizing, padding, or width. 329 | * 330 | * 1. Address box sizing set to `content-box` in IE 8/9/10. 331 | * 2. Remove excess padding in IE 8/9/10. 332 | */ 333 | 334 | input[type="checkbox"], 335 | input[type="radio"] { 336 | box-sizing: border-box; /* 1 */ 337 | padding: 0; /* 2 */ 338 | } 339 | 340 | /** 341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain 342 | * `font-size` values of the `input`, it causes the cursor style of the 343 | * decrement button to change from `default` to `text`. 344 | */ 345 | 346 | input[type="number"]::-webkit-inner-spin-button, 347 | input[type="number"]::-webkit-outer-spin-button { 348 | height: auto; 349 | } 350 | 351 | /** 352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. 353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome 354 | * (include `-moz` to future-proof). 355 | */ 356 | 357 | input[type="search"] { 358 | -webkit-appearance: textfield; /* 1 */ 359 | -moz-box-sizing: content-box; 360 | -webkit-box-sizing: content-box; /* 2 */ 361 | box-sizing: content-box; 362 | } 363 | 364 | /** 365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. 366 | * Safari (but not Chrome) clips the cancel button when the search input has 367 | * padding (and `textfield` appearance). 368 | */ 369 | 370 | input[type="search"]::-webkit-search-cancel-button, 371 | input[type="search"]::-webkit-search-decoration { 372 | -webkit-appearance: none; 373 | } 374 | 375 | /** 376 | * Define consistent border, margin, and padding. 377 | */ 378 | 379 | fieldset { 380 | border: 1px solid #c0c0c0; 381 | margin: 0 2px; 382 | padding: 0.35em 0.625em 0.75em; 383 | } 384 | 385 | /** 386 | * 1. Correct `color` not being inherited in IE 8/9/10/11. 387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. 388 | */ 389 | 390 | legend { 391 | border: 0; /* 1 */ 392 | padding: 0; /* 2 */ 393 | } 394 | 395 | /** 396 | * Remove default vertical scrollbar in IE 8/9/10/11. 397 | */ 398 | 399 | textarea { 400 | overflow: auto; 401 | } 402 | 403 | /** 404 | * Don't inherit the `font-weight` (applied by a rule above). 405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. 406 | */ 407 | 408 | optgroup { 409 | font-weight: bold; 410 | } 411 | 412 | /* Tables 413 | ========================================================================== */ 414 | 415 | /** 416 | * Remove most spacing between table cells. 417 | */ 418 | 419 | table { 420 | border-collapse: collapse; 421 | border-spacing: 0; 422 | } 423 | 424 | td, 425 | th { 426 | padding: 0; 427 | } 428 | -------------------------------------------------------------------------------- /_sass/external/_syntax.scss: -------------------------------------------------------------------------------- 1 | // pygments-css (https://github.com/richleland/pygments-css) 2 | 3 | .hll { background-color: #ffffcc } 4 | .c { color: #999988; font-style: italic } /* Comment */ 5 | .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 6 | .k { color: #000000; font-weight: bold } /* Keyword */ 7 | .o { color: #000000; font-weight: bold } /* Operator */ 8 | .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 9 | .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */ 10 | .c1 { color: #999988; font-style: italic } /* Comment.Single */ 11 | .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 12 | .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 13 | .ge { color: #000000; font-style: italic } /* Generic.Emph */ 14 | .gr { color: #aa0000 } /* Generic.Error */ 15 | .gh { color: #999999 } /* Generic.Heading */ 16 | .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 17 | .go { color: #888888 } /* Generic.Output */ 18 | .gp { color: #555555 } /* Generic.Prompt */ 19 | .gs { font-weight: bold } /* Generic.Strong */ 20 | .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .kc { color: #000000; font-weight: bold } /* Keyword.Constant */ 23 | .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */ 24 | .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */ 25 | .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */ 26 | .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */ 27 | .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 28 | .m { color: #009999 } /* Literal.Number */ 29 | .s { color: #d01040 } /* Literal.String */ 30 | .na { color: #008080 } /* Name.Attribute */ 31 | .nb { color: #0086B3 } /* Name.Builtin */ 32 | .nc { color: #445588; font-weight: bold } /* Name.Class */ 33 | .no { color: #008080 } /* Name.Constant */ 34 | .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */ 35 | .ni { color: #800080 } /* Name.Entity */ 36 | .ne { color: #990000; font-weight: bold } /* Name.Exception */ 37 | .nf { color: #990000; font-weight: bold } /* Name.Function */ 38 | .nl { color: #990000; font-weight: bold } /* Name.Label */ 39 | .nn { color: #555555 } /* Name.Namespace */ 40 | .nt { color: #000080 } /* Name.Tag */ 41 | .nv { color: #008080 } /* Name.Variable */ 42 | .ow { color: #000000; font-weight: bold } /* Operator.Word */ 43 | .w { color: #bbbbbb } /* Text.Whitespace */ 44 | .mf { color: #009999 } /* Literal.Number.Float */ 45 | .mh { color: #009999 } /* Literal.Number.Hex */ 46 | .mi { color: #009999 } /* Literal.Number.Integer */ 47 | .mo { color: #009999 } /* Literal.Number.Oct */ 48 | .sb { color: #d01040 } /* Literal.String.Backtick */ 49 | .sc { color: #d01040 } /* Literal.String.Char */ 50 | .sd { color: #d01040 } /* Literal.String.Doc */ 51 | .s2 { color: #d01040 } /* Literal.String.Double */ 52 | .se { color: #d01040 } /* Literal.String.Escape */ 53 | .sh { color: #d01040 } /* Literal.String.Heredoc */ 54 | .si { color: #d01040 } /* Literal.String.Interpol */ 55 | .sx { color: #d01040 } /* Literal.String.Other */ 56 | .sr { color: #009926 } /* Literal.String.Regex */ 57 | .s1 { color: #d01040 } /* Literal.String.Single */ 58 | .ss { color: #990073 } /* Literal.String.Symbol */ 59 | .bp { color: #999999 } /* Name.Builtin.Pseudo */ 60 | .vc { color: #008080 } /* Name.Variable.Class */ 61 | .vg { color: #008080 } /* Name.Variable.Global */ 62 | .vi { color: #008080 } /* Name.Variable.Instance */ 63 | .il { color: #009999 } /* Literal.Number.Integer.Long */ 64 | -------------------------------------------------------------------------------- /_sass/includes/_footer.scss: -------------------------------------------------------------------------------- 1 | .site-footer { 2 | @extend %padding-regular; 3 | display: inline-block; 4 | text-align: center; 5 | width: 100%; 6 | color: lighten($text-color, 30%); 7 | font-size: 0.9em; 8 | } 9 | -------------------------------------------------------------------------------- /_sass/includes/_header.scss: -------------------------------------------------------------------------------- 1 | .gl-header { 2 | min-height: 70px !important; 3 | .navbar-header { 4 | .navbar-brand { 5 | position: absolute; 6 | img { 7 | display: inline-block; 8 | height: 32px; 9 | margin-right: 10px; 10 | } 11 | } 12 | } 13 | 14 | .navbar-nav { 15 | @media (min-width: 768px) { 16 | padding-top: 8px; 17 | li { 18 | margin: 0; 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /_sass/layouts/_index.scss: -------------------------------------------------------------------------------- 1 | // Header text feature 2 | .call-out { 3 | @extend %padding-regular; 4 | display: inline-block; 5 | width: 100%; 6 | background-color:$header-desc-background-color; 7 | background-size: cover; 8 | font-size: 1.2em; 9 | text-align: center; 10 | color: $header-desc-text-color; 11 | } 12 | .call-out p:last-child { 13 | margin-bottom: 0; 14 | } 15 | // Post listing 16 | .posts { 17 | .post { 18 | margin: 4rem auto; 19 | padding-bottom: 4rem; 20 | border-bottom: #EBF2F6 1px solid; 21 | 22 | .post-link:hover { 23 | text-decoration: none; 24 | } 25 | } 26 | 27 | .post-teaser { 28 | @extend %padding-regular; 29 | width: 100%; 30 | margin-bottom: 0; 31 | display: inline-block; 32 | background-size: $feature-image-size; 33 | border-bottom: 1px solid $border-color; 34 | p a:hover { 35 | @extend %link-hover; 36 | } 37 | } 38 | .excerpt { 39 | margin-top: 1em; 40 | 41 | // Continue reading 42 | .button { 43 | border: none; 44 | padding: 0; 45 | margin: 0; 46 | font-weight: 500; 47 | } 48 | 49 | a.button:hover { 50 | background: none; 51 | color: $link-color; 52 | opacity: 0.7; 53 | } 54 | } 55 | } 56 | // Pagination 57 | .pagination .button { 58 | margin: 0 1.5em; 59 | i { 60 | vertical-align: middle; 61 | } 62 | } 63 | .pagination { 64 | padding: $padding-small $padding-large 0 $padding-large; 65 | text-align: center; 66 | } 67 | -------------------------------------------------------------------------------- /_sass/layouts/_posts.scss: -------------------------------------------------------------------------------- 1 | .comments { 2 | border-bottom: 1px solid $border-color; 3 | } 4 | article { 5 | margin-bottom: 40px; 6 | 7 | header { 8 | margin-bottom: 6%; 9 | } 10 | a:hover { 11 | @extend %link-hover; 12 | } 13 | .footnotes { 14 | font-size: 0.9em; 15 | } 16 | } 17 | header { 18 | h1 { 19 | margin: 0; 20 | line-height: 1.04; 21 | } 22 | .meta { 23 | color: rgba($text-color, .5); 24 | font-size: 0.9em; 25 | letter-spacing: 0.1em; 26 | margin: 1rem 0; 27 | text-transform: uppercase; 28 | 29 | .avatar-small { 30 | border-radius: 50%; 31 | } 32 | } 33 | } 34 | .feature-image { 35 | padding: 0%; 36 | .post-link { 37 | color: $feature-image-text-color; 38 | } 39 | header { 40 | color: $feature-image-text-color; 41 | background-size: $feature-image-size; 42 | margin-bottom: 0; 43 | padding: $padding-large/2.5 $padding-large; 44 | .meta { 45 | color: rgba($feature-image-text-color, .7); 46 | } 47 | } 48 | .post-content { 49 | @extend %padding-regular; 50 | } 51 | } 52 | // Post navigation 53 | #post-nav { 54 | width:100%; 55 | border-bottom: 1px solid $border-color; 56 | display: flex; 57 | float: left; 58 | 59 | a, .page-title { 60 | display: inline-block; 61 | } 62 | 63 | .page-title { 64 | font-size: 1.2em; 65 | margin-bottom: 1em; 66 | width: 100%; 67 | } 68 | 69 | a { 70 | padding: 2em 3em; 71 | border: 1px solid rgba(255, 255, 255, 0); 72 | text-align: center; 73 | width: 50%; 74 | } 75 | a:hover { 76 | @extend a.button:hover; 77 | } 78 | 79 | i { 80 | vertical-align: middle; 81 | } 82 | } 83 | 84 | -------------------------------------------------------------------------------- /css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | // External 4 | @import 'external/reset'; 5 | @import 'external/syntax'; 6 | 7 | // Base 8 | @import 'base/variables'; 9 | @import 'base/global'; 10 | @import 'base/utility'; 11 | 12 | // Posts 13 | @import 'layouts/posts'; 14 | @import 'layouts/index'; 15 | 16 | // Partials 17 | @import 'includes/header'; 18 | @import 'includes/footer'; 19 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/favicon.ico -------------------------------------------------------------------------------- /img/alconost_gitlocalize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/alconost_gitlocalize.png -------------------------------------------------------------------------------- /img/badge.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | gitlocalized 16 | 17 | 100% 18 | 19 | -------------------------------------------------------------------------------- /img/badge_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/badge_1.png -------------------------------------------------------------------------------- /img/badge_de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | gitlocalized 16 | de 17 | 23% 18 | 19 | -------------------------------------------------------------------------------- /img/badge_fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | gitlocalized 16 | fr 17 | 99% 18 | 19 | -------------------------------------------------------------------------------- /img/badge_ptbr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | gitlocalized 16 | pt-BR 17 | 0% 18 | 19 | -------------------------------------------------------------------------------- /img/batch_PR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/batch_PR.png -------------------------------------------------------------------------------- /img/diff_management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/diff_management.png -------------------------------------------------------------------------------- /img/filter_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/filter_1.png -------------------------------------------------------------------------------- /img/filter_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/filter_2.png -------------------------------------------------------------------------------- /img/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/flow.png -------------------------------------------------------------------------------- /img/ghm/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/ghm/main.png -------------------------------------------------------------------------------- /img/gitlocalize-is-free-now.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/gitlocalize-is-free-now.png -------------------------------------------------------------------------------- /img/gitlocalize-is-free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/gitlocalize-is-free.png -------------------------------------------------------------------------------- /img/gitlocalize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/gitlocalize.png -------------------------------------------------------------------------------- /img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/icon.png -------------------------------------------------------------------------------- /img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/logo.png -------------------------------------------------------------------------------- /img/ror/path_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/ror/path_rule.png -------------------------------------------------------------------------------- /img/webfundamentals_gitlocalize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitlocalize/blog/1cfe3e0dba70a90360f1902dbdd65d56fdc9a26a/img/webfundamentals_gitlocalize.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 |
    6 | {% if site.theme_settings.header_text %} 7 |
    9 | {{ site.theme_settings.header_text }} 10 |
    11 | {% endif %} 12 | 13 |
    14 | {% assign posts=site.posts | where:"lang", page.lang %} 15 | {% for post in paginator.posts %} 16 |
    17 |
    18 |

    19 | 20 | {{ post.title }} 21 | 22 |

    23 |

    24 | {{ post.date | date: "%B %-d, %Y" }} 25 |

    26 |
    27 | 33 |
    34 | {% endfor %} 35 |
    36 | 37 | {% if paginator.total_pages > 1 %} 38 | 52 | {% endif %} 53 |
    54 | -------------------------------------------------------------------------------- /js/jquery-3.2.1.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ 2 | !function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), 3 | a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), 4 | null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("