text:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="864a03cf-aef5-4c19-b8ed-137a070b673e" name="Default" comment="">
      <change type="DELETED" beforePath="$PROJECT_DIR$/main/static/min/script/ext.js" afterPath="" />
      <change type="DELETED" beforePath="$PROJECT_DIR$/main/static/min/script/script.js" afterPath="" />
      <change type="DELETED" beforePath="$PROJECT_DIR$/main/static/min/style/style.css" afterPath="" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/api/v1/post_api.py" afterPath="$PROJECT_DIR$/main/api/v1/post_api.py" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/control/helpers.py" afterPath="$PROJECT_DIR$/main/control/helpers.py" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/control/search.py" afterPath="$PROJECT_DIR$/main/control/search.py" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/control/welcome.py" afterPath="$PROJECT_DIR$/main/control/welcome.py" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/static/dev/script/ext.js" afterPath="$PROJECT_DIR$/main/static/dev/script/ext.js" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/about.html" afterPath="$PROJECT_DIR$/main/templates/about.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/bit/header.html" afterPath="$PROJECT_DIR$/main/templates/bit/header.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/landing_page.html" afterPath="$PROJECT_DIR$/main/templates/landing_page.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/no_post_found.html" afterPath="$PROJECT_DIR$/main/templates/no_post_found.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/recommender/recommender_overview.html" afterPath="$PROJECT_DIR$/main/templates/recommender/recommender_overview.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/user/user_forgot.html" afterPath="$PROJECT_DIR$/main/templates/user/user_forgot.html" />
      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/main/templates/welcome.html" afterPath="$PROJECT_DIR$/main/templates/welcome.html" />
    </list>
    <ignored path="$PROJECT_DIR$/.idea/" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file leaf-file-name="header.html" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/templates/bit/header.html">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="1300">
              <caret line="65" column="110" lean-forward="false" selection-start-line="65" selection-start-column="110" selection-end-line="65" selection-end-column="110" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="post_api.py" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/api/v1/post_api.py">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="-110">
              <caret line="87" column="67" lean-forward="false" selection-start-line="87" selection-start-column="67" selection-end-line="87" selection-end-column="67" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="welcome.py" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/control/welcome.py">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="650">
              <caret line="39" column="67" lean-forward="false" selection-start-line="39" selection-start-column="5" selection-end-line="39" selection-end-column="67" />
              <folding>
                <element signature="e#17#30#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="search.py" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/control/search.py">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="-510">
              <caret line="63" column="28" lean-forward="false" selection-start-line="63" selection-start-column="28" selection-end-line="63" selection-end-column="28" />
              <folding>
                <element signature="e#1#14#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="README.md" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/README.md">
          <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
            <state split_layout="SPLIT">
              <first_editor relative-caret-position="140">
                <caret line="7" column="3" lean-forward="false" selection-start-line="7" selection-start-column="3" selection-end-line="7" selection-end-column="3" />
                <folding />
              </first_editor>
              <second_editor />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="resource.py" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/control/resource.py">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="130">
              <caret line="142" column="51" lean-forward="false" selection-start-line="142" selection-start-column="51" selection-end-line="142" selection-end-column="51" />
              <folding>
                <element signature="e#0#13#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="recommender_overview.html" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/templates/recommender/recommender_overview.html">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="1096">
              <caret line="65" column="93" lean-forward="false" selection-start-line="65" selection-start-column="93" selection-end-line="65" selection-end-column="93" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="welcome.html" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/templates/welcome.html">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="2880">
              <caret line="153" column="0" lean-forward="false" selection-start-line="153" selection-start-column="0" selection-end-line="155" selection-end-column="15" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="helpers.py" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/main/control/helpers.py">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="400">
              <caret line="20" column="0" lean-forward="false" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
              <folding>
                <element signature="e#17#30#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="FileTemplateManagerImpl">
    <option name="RECENT_TEMPLATES">
      <list>
        <option value="Python Script" />
        <option value="HTML File" />
      </list>
    </option>
  </component>
  <component name="FindInProjectRecents">
    <findStrings>
      <find>admin_require</find>
      <find>admin_required</find>
      <find>admin</find>
      <find>r</find>
      <find>re</find>
      <find>res</find>
      <find>rest</find>
      <find>resta</find>
      <find>restau</find>
      <find>restaur</find>
      <find>restaura</find>
      <find>restaurant</find>
      <find>restauran</find>
      <find>key</find>
      <find>s</find>
      <find>se</find>
      <find>searc</find>
      <find>url</find>
      <find>search</find>
      <find>SENDGRID_API_KEY</find>
      <find>initMap</find>
      <find>init</find>
      <find>post_list</find>
      <find>w</find>
      <find>we</find>
      <find>wel</find>
      <find>welco</find>
      <find>welcome</find>
      <find>search_page</find>
      <find>post_</find>
    </findStrings>
    <dirStrings>
      <dir>$PROJECT_DIR$/main/static/src/style</dir>
      <dir>$PROJECT_DIR$</dir>
      <dir>$PROJECT_DIR$/main</dir>
      <dir>$PROJECT_DIR$/main/templates/bit</dir>
      <dir>$PROJECT_DIR$/main/templates</dir>
    </dirStrings>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
    <option name="RECENT_BRANCH_BY_REPOSITORY">
      <map>
        <entry key="$PROJECT_DIR$" value="master" />
      </map>
    </option>
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/main/static/src/style/style.less" />
        <option value="$PROJECT_DIR$/main/static/dev/script/ext.js" />
        <option value="$PROJECT_DIR$/main/static/src/style/recommender-overview.less" />
        <option value="$PROJECT_DIR$/main/templates/newsletter.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/newsletter.less" />
        <option value="$PROJECT_DIR$/bower_components/gifffer/build/gifffer.min.js" />
        <option value="$PROJECT_DIR$/main/static/ext/gifffer/build/gifffer.min.js" />
        <option value="$PROJECT_DIR$/main/templates/landing_page.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/jumbotronNewsletter.less" />
        <option value="$PROJECT_DIR$/main/static/src/style/about.less" />
        <option value="$PROJECT_DIR$/main/model/keyword.py" />
        <option value="$PROJECT_DIR$/main/model/post.py" />
        <option value="$PROJECT_DIR$/main/templates/post_create.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/welcome.less" />
        <option value="$PROJECT_DIR$/main/static/src/style/base.less" />
        <option value="$PROJECT_DIR$/bower.json" />
        <option value="$PROJECT_DIR$/gulp/config.coffee" />
        <option value="$PROJECT_DIR$/main/static/src/style/accordion.less" />
        <option value="$PROJECT_DIR$/main/templates/bit/user_menu.html" />
        <option value="$PROJECT_DIR$/main/templates/bit/style.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/icons.less" />
        <option value="$PROJECT_DIR$/main/templates/search/search_keywords.html" />
        <option value="$PROJECT_DIR$/main/settings.py" />
        <option value="$PROJECT_DIR$/requirements.txt" />
        <option value="$PROJECT_DIR$/main/appengine_config.py" />
        <option value="$PROJECT_DIR$/main/api/v1/post.py" />
        <option value="$PROJECT_DIR$/main/api/v1/__init__.py" />
        <option value="$PROJECT_DIR$/main/templates/map.html" />
        <option value="$PROJECT_DIR$/main/templates/base.html" />
        <option value="$PROJECT_DIR$/main/app.yaml" />
        <option value="$PROJECT_DIR$/main/static/src/script/load.js" />
        <option value="$PROJECT_DIR$/main/templates/bit/script.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/jumbotron.less" />
        <option value="$PROJECT_DIR$/main/static/src/style/fonts.less" />
        <option value="$PROJECT_DIR$/main/static/src/style/links.less" />
        <option value="$PROJECT_DIR$/main/templates/bit/welcome_header.html" />
        <option value="$PROJECT_DIR$/main/static/src/style/misc.less" />
        <option value="$PROJECT_DIR$/main/templates/recommender/recommender_view.html" />
        <option value="$PROJECT_DIR$/main/control/post.py" />
        <option value="$PROJECT_DIR$/main/control/recommender.py" />
        <option value="$PROJECT_DIR$/main/static/src/script/maps.js" />
        <option value="$PROJECT_DIR$/main/templates/welcome.html" />
        <option value="$PROJECT_DIR$/main/templates/about.html" />
        <option value="$PROJECT_DIR$/main/templates/user/user_forgot.html" />
        <option value="$PROJECT_DIR$/main/templates/no_post_found.html" />
        <option value="$PROJECT_DIR$/main/control/helpers.py" />
        <option value="$PROJECT_DIR$/main/control/search.py" />
        <option value="$PROJECT_DIR$/main/templates/bit/header.html" />
        <option value="$PROJECT_DIR$/main/api/v1/post_api.py" />
        <option value="$PROJECT_DIR$/main/templates/recommender/recommender_overview.html" />
        <option value="$PROJECT_DIR$/main/control/welcome.py" />
      </list>
    </option>
  </component>
  <component name="ProjectFrameBounds">
    <option name="y" value="27" />
    <option name="width" value="1920" />
    <option name="height" value="1053" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="Scratches" />
      <pane id="Scope" />
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="main" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="dasapp" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="main" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="control" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="last_opened_file_path" value="$PROJECT_DIR$/main/control/helpers.py" />
    <property name="DefaultHtmlFileTemplate" value="HTML File" />
    <property name="Git.Branch.Popup.ShowAllRemotes" value="true" />
  </component>
  <component name="RecentsManager">
    <key name="CopyFile.RECENT_KEYS">
      <recent name="$PROJECT_DIR$/main/lib" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="$PROJECT_DIR$/main/templates/bit" />
    </key>
  </component>
  <component name="RunDashboard">
    <option name="ruleStates">
      <list>
        <RuleState>
          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
        </RuleState>
        <RuleState>
          <option name="name" value="StatusDashboardGroupingRule" />
        </RuleState>
      </list>
    </option>
  </component>
  <component name="RunManager">
    <configuration default="true" type="ApexTest" factoryName="Apex Test">
      <method />
    </configuration>
    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
      <option name="INTERPRETER_OPTIONS" value="" />
      <option name="PARENT_ENVS" value="true" />
      <envs>
        <env name="PYTHONUNBUFFERED" value="1" />
      </envs>
      <option name="SDK_HOME" value="" />
      <option name="WORKING_DIRECTORY" value="" />
      <option name="IS_MODULE_SDK" value="false" />
      <option name="ADD_CONTENT_ROOTS" value="true" />
      <option name="ADD_SOURCE_ROOTS" value="true" />
      <module name="dasapp" />
      <option name="SCRIPT_NAME" value="" />
      <option name="PARAMETERS" value="" />
      <option name="SHOW_COMMAND_LINE" value="false" />
      <option name="EMULATE_TERMINAL" value="false" />
      <method />
    </configuration>
    <configuration default="true" type="Tox" factoryName="Tox">
      <option name="INTERPRETER_OPTIONS" value="" />
      <option name="PARENT_ENVS" value="true" />
      <envs />
      <option name="SDK_HOME" value="" />
      <option name="WORKING_DIRECTORY" value="" />
      <option name="IS_MODULE_SDK" value="false" />
      <option name="ADD_CONTENT_ROOTS" value="true" />
      <option name="ADD_SOURCE_ROOTS" value="true" />
      <module name="dasapp" />
      <method />
    </configuration>
    <configuration default="true" type="tests" factoryName="Doctests">
      <option name="INTERPRETER_OPTIONS" value="" />
      <option name="PARENT_ENVS" value="true" />
      <envs />
      <option name="SDK_HOME" value="" />
      <option name="WORKING_DIRECTORY" value="" />
      <option name="IS_MODULE_SDK" value="false" />
      <option name="ADD_CONTENT_ROOTS" value="true" />
      <option name="ADD_SOURCE_ROOTS" value="true" />
      <module name="dasapp" />
      <option name="SCRIPT_NAME" value="" />
      <option name="CLASS_NAME" value="" />
      <option name="METHOD_NAME" value="" />
      <option name="FOLDER_NAME" value="" />
      <option name="TEST_TYPE" value="TEST_SCRIPT" />
      <option name="PATTERN" value="" />
      <option name="USE_PATTERN" value="false" />
      <method />
    </configuration>
    <configuration default="true" type="tests" factoryName="Nosetests">
      <option name="INTERPRETER_OPTIONS" value="" />
      <option name="PARENT_ENVS" value="true" />
      <envs />
      <option name="SDK_HOME" value="" />
      <option name="WORKING_DIRECTORY" value="" />
      <option name="IS_MODULE_SDK" value="false" />
      <option name="ADD_CONTENT_ROOTS" value="true" />
      <option name="ADD_SOURCE_ROOTS" value="true" />
      <module name="dasapp" />
      <option name="_new_regexPattern" value="""" />
      <option name="_new_additionalArguments" value="""" />
      <option name="_new_target" value=""."" />
      <option name="_new_targetType" value=""PATH"" />
      <method />
    </configuration>
  </component>
  <component name="ShelveChangesManager" show_recycled="false">
    <option name="remove_strategy" value="false" />
  </component>
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="864a03cf-aef5-4c19-b8ed-137a070b673e" name="Default" comment="" />
      <created>1502806914943</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1502806914943</updated>
    </task>
    <task id="LOCAL-00001" summary="Changed header and removed keywords">
      <created>1502807582800</created>
      <option name="number" value="00001" />
      <option name="presentableId" value="LOCAL-00001" />
      <option name="project" value="LOCAL" />
      <updated>1502807582800</updated>
    </task>
    <task id="LOCAL-00002" summary="Added possibility to add images to posts">
      <created>1502991698725</created>
      <option name="number" value="00002" />
      <option name="presentableId" value="LOCAL-00002" />
      <option name="project" value="LOCAL" />
      <updated>1502991698725</updated>
    </task>
    <task id="LOCAL-00003" summary="* Adding image to post is optional
* Added recommenders">
      <created>1504120247979</created>
      <option name="number" value="00003" />
      <option name="presentableId" value="LOCAL-00003" />
      <option name="project" value="LOCAL" />
      <updated>1504120247979</updated>
    </task>
    <task id="LOCAL-00004" summary="Added link between recommenders and post">
      <created>1504207223996</created>
      <option name="number" value="00004" />
      <option name="presentableId" value="LOCAL-00004" />
      <option name="project" value="LOCAL" />
      <updated>1504207223996</updated>
    </task>
    <task id="LOCAL-00005" summary="Added link to website">
      <created>1504273709791</created>
      <option name="number" value="00005" />
      <option name="presentableId" value="LOCAL-00005" />
      <option name="project" value="LOCAL" />
      <updated>1504273709791</updated>
    </task>
    <task id="LOCAL-00006" summary="Added keyword search">
      <created>1504715483433</created>
      <option name="number" value="00006" />
      <option name="presentableId" value="LOCAL-00006" />
      <option name="project" value="LOCAL" />
      <updated>1504715483433</updated>
    </task>
    <task id="LOCAL-00007" summary="Added list view of post created by recommender">
      <created>1504720949949</created>
      <option name="number" value="00007" />
      <option name="presentableId" value="LOCAL-00007" />
      <option name="project" value="LOCAL" />
      <updated>1504720949949</updated>
    </task>
    <task id="LOCAL-00008" summary="added search bar">
      <created>1504724767599</created>
      <option name="number" value="00008" />
      <option name="presentableId" value="LOCAL-00008" />
      <option name="project" value="LOCAL" />
      <updated>1504724767599</updated>
    </task>
    <task id="LOCAL-00009" summary="added search bar">
      <created>1504724801984</created>
      <option name="number" value="00009" />
      <option name="presentableId" value="LOCAL-00009" />
      <option name="project" value="LOCAL" />
      <updated>1504724801984</updated>
    </task>
    <task id="LOCAL-00010" summary="added search bar">
      <created>1504724824980</created>
      <option name="number" value="00010" />
      <option name="presentableId" value="LOCAL-00010" />
      <option name="project" value="LOCAL" />
      <updated>1504724824980</updated>
    </task>
    <task id="LOCAL-00011" summary="Fixed search bars">
      <created>1504733183637</created>
      <option name="number" value="00011" />
      <option name="presentableId" value="LOCAL-00011" />
      <option name="project" value="LOCAL" />
      <updated>1504733183637</updated>
    </task>
    <task id="LOCAL-00012" summary="Fixed security for admin only post pages">
      <created>1505092041323</created>
      <option name="number" value="00012" />
      <option name="presentableId" value="LOCAL-00012" />
      <option name="project" value="LOCAL" />
      <updated>1505092041323</updated>
    </task>
    <task id="LOCAL-00013" summary="Fixed security for admin only recommender pages">
      <created>1505092089815</created>
      <option name="number" value="00013" />
      <option name="presentableId" value="LOCAL-00013" />
      <option name="project" value="LOCAL" />
      <updated>1505092089815</updated>
    </task>
    <task id="LOCAL-00014" summary="Fixed security for resource pages">
      <created>1505092137714</created>
      <option name="number" value="00014" />
      <option name="presentableId" value="LOCAL-00014" />
      <option name="project" value="LOCAL" />
      <updated>1505092137714</updated>
    </task>
    <task id="LOCAL-00015" summary="Posts are deletable - this also removes images and "cleans" tags - post is removed from tag if there are more post related to tag OR tag is removed if only 1 post is related to tag">
      <created>1505095979182</created>
      <option name="number" value="00015" />
      <option name="presentableId" value="LOCAL-00015" />
      <option name="project" value="LOCAL" />
      <updated>1505095979182</updated>
    </task>
    <task id="LOCAL-00016" summary="Recommenders are deletable">
      <created>1505226595666</created>
      <option name="number" value="00016" />
      <option name="presentableId" value="LOCAL-00016" />
      <option name="project" value="LOCAL" />
      <updated>1505226595666</updated>
    </task>
    <task id="LOCAL-00017" summary="Added recommender overview">
      <created>1505235417213</created>
      <option name="number" value="00017" />
      <option name="presentableId" value="LOCAL-00017" />
      <option name="project" value="LOCAL" />
      <updated>1505235417213</updated>
    </task>
    <task id="LOCAL-00018" summary="Merge remote-tracking branch 'remotes/origin/UI-index' into add-recommenders

# Conflicts:
#	main/control/static_pages.py
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css
#	main/static/src/style/style.less
#	main/templates/bit/header.html">
      <created>1505236031283</created>
      <option name="number" value="00018" />
      <option name="presentableId" value="LOCAL-00018" />
      <option name="project" value="LOCAL" />
      <updated>1505236031283</updated>
    </task>
    <task id="LOCAL-00019" summary="fixed css search">
      <created>1505238302336</created>
      <option name="number" value="00019" />
      <option name="presentableId" value="LOCAL-00019" />
      <option name="project" value="LOCAL" />
      <updated>1505238302336</updated>
    </task>
    <task id="LOCAL-00020" summary="searchbar only keywords">
      <created>1505269458131</created>
      <option name="number" value="00020" />
      <option name="presentableId" value="LOCAL-00020" />
      <option name="project" value="LOCAL" />
      <updated>1505269458132</updated>
    </task>
    <task id="LOCAL-00021" summary="Added option to star a review">
      <created>1505506218156</created>
      <option name="number" value="00021" />
      <option name="presentableId" value="LOCAL-00021" />
      <option name="project" value="LOCAL" />
      <updated>1505506218156</updated>
    </task>
    <task id="LOCAL-00022" summary="You can only star when logged in">
      <created>1505743623093</created>
      <option name="number" value="00022" />
      <option name="presentableId" value="LOCAL-00022" />
      <option name="project" value="LOCAL" />
      <updated>1505743623093</updated>
    </task>
    <task id="LOCAL-00023" summary="You can view your saved items">
      <created>1505746677992</created>
      <option name="number" value="00023" />
      <option name="presentableId" value="LOCAL-00023" />
      <option name="project" value="LOCAL" />
      <updated>1505746677992</updated>
    </task>
    <task id="LOCAL-00024" summary="test commit">
      <created>1507824766110</created>
      <option name="number" value="00024" />
      <option name="presentableId" value="LOCAL-00024" />
      <option name="project" value="LOCAL" />
      <updated>1507824766110</updated>
    </task>
    <task id="LOCAL-00025" summary="merged branches">
      <created>1507832220625</created>
      <option name="number" value="00025" />
      <option name="presentableId" value="LOCAL-00025" />
      <option name="project" value="LOCAL" />
      <updated>1507832220625</updated>
    </task>
    <task id="LOCAL-00026" summary="Fixed moving gif layout
Added landing page">
      <created>1507848239319</created>
      <option name="number" value="00026" />
      <option name="presentableId" value="LOCAL-00026" />
      <option name="project" value="LOCAL" />
      <updated>1507848239319</updated>
    </task>
    <task id="LOCAL-00027" summary="changed link sneak preview to welcome page">
      <created>1507848420437</created>
      <option name="number" value="00027" />
      <option name="presentableId" value="LOCAL-00027" />
      <option name="project" value="LOCAL" />
      <updated>1507848420437</updated>
    </task>
    <task id="LOCAL-00028" summary="frontend updates">
      <created>1508505705947</created>
      <option name="number" value="00028" />
      <option name="presentableId" value="LOCAL-00028" />
      <option name="project" value="LOCAL" />
      <updated>1508505705947</updated>
    </task>
    <task id="LOCAL-00029" summary="asf">
      <created>1509048333937</created>
      <option name="number" value="00029" />
      <option name="presentableId" value="LOCAL-00029" />
      <option name="project" value="LOCAL" />
      <updated>1509048333937</updated>
    </task>
    <task id="LOCAL-00030" summary="Merge remote-tracking branch 'remotes/origin/mvp'

# Conflicts:
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css
#	main/static/src/style/welcome.less
#	main/templates/welcome.html">
      <created>1509462937783</created>
      <option name="number" value="00030" />
      <option name="presentableId" value="LOCAL-00030" />
      <option name="project" value="LOCAL" />
      <updated>1509462937783</updated>
    </task>
    <task id="LOCAL-00031" summary="Merge remote-tracking branch 'remotes/origin/mvp'

# Conflicts:
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css
#	main/static/src/style/welcome.less
#	main/templates/welcome.html">
      <created>1509469222717</created>
      <option name="number" value="00031" />
      <option name="presentableId" value="LOCAL-00031" />
      <option name="project" value="LOCAL" />
      <updated>1509469222717</updated>
    </task>
    <task id="LOCAL-00032" summary="extra space between tags">
      <created>1509634783058</created>
      <option name="number" value="00032" />
      <option name="presentableId" value="LOCAL-00032" />
      <option name="project" value="LOCAL" />
      <updated>1509634783058</updated>
    </task>
    <task id="LOCAL-00033" summary="Improved expendable posts with masonery">
      <created>1509644898578</created>
      <option name="number" value="00033" />
      <option name="presentableId" value="LOCAL-00033" />
      <option name="project" value="LOCAL" />
      <updated>1509644898578</updated>
    </task>
    <task id="LOCAL-00034" summary="removed unnecessary console.log">
      <created>1509645504132</created>
      <option name="number" value="00034" />
      <option name="presentableId" value="LOCAL-00034" />
      <option name="project" value="LOCAL" />
      <updated>1509645504132</updated>
    </task>
    <task id="LOCAL-00035" summary="small layout changes">
      <created>1510435273463</created>
      <option name="number" value="00035" />
      <option name="presentableId" value="LOCAL-00035" />
      <option name="project" value="LOCAL" />
      <updated>1510435273463</updated>
    </task>
    <task id="LOCAL-00036" summary="fixed javascript">
      <created>1511810685222</created>
      <option name="number" value="00036" />
      <option name="presentableId" value="LOCAL-00036" />
      <option name="project" value="LOCAL" />
      <updated>1511810685222</updated>
    </task>
    <task id="LOCAL-00037" summary="Changed order of posts">
      <created>1511811581758</created>
      <option name="number" value="00037" />
      <option name="presentableId" value="LOCAL-00037" />
      <option name="project" value="LOCAL" />
      <updated>1511811581758</updated>
    </task>
    <task id="LOCAL-00038" summary="Added search index">
      <created>1511817719516</created>
      <option name="number" value="00038" />
      <option name="presentableId" value="LOCAL-00038" />
      <option name="project" value="LOCAL" />
      <updated>1511817719516</updated>
    </task>
    <task id="LOCAL-00039" summary="changed URL's and added masonery again">
      <created>1512489018393</created>
      <option name="number" value="00039" />
      <option name="presentableId" value="LOCAL-00039" />
      <option name="project" value="LOCAL" />
      <updated>1512489018393</updated>
    </task>
    <task id="LOCAL-00040" summary="Fixed masonery again :)">
      <created>1512494882363</created>
      <option name="number" value="00040" />
      <option name="presentableId" value="LOCAL-00040" />
      <option name="project" value="LOCAL" />
      <updated>1512494882363</updated>
    </task>
    <task id="LOCAL-00041" summary="Added full text search">
      <created>1512507830188</created>
      <option name="number" value="00041" />
      <option name="presentableId" value="LOCAL-00041" />
      <option name="project" value="LOCAL" />
      <updated>1512507830188</updated>
    </task>
    <task id="LOCAL-00042" summary="Added search API and google maps">
      <created>1512766071481</created>
      <option name="number" value="00042" />
      <option name="presentableId" value="LOCAL-00042" />
      <option name="project" value="LOCAL" />
      <updated>1512766071481</updated>
    </task>
    <task id="LOCAL-00043" summary="Changed map to center with hide / list button">
      <created>1513019034530</created>
      <option name="number" value="00043" />
      <option name="presentableId" value="LOCAL-00043" />
      <option name="project" value="LOCAL" />
      <updated>1513019034530</updated>
    </task>
    <task id="LOCAL-00044" summary="working clean version with maps">
      <created>1513092594154</created>
      <option name="number" value="00044" />
      <option name="presentableId" value="LOCAL-00044" />
      <option name="project" value="LOCAL" />
      <updated>1513092594154</updated>
    </task>
    <task id="LOCAL-00045" summary="fixed updating of recommenders / posts">
      <created>1513642374580</created>
      <option name="number" value="00045" />
      <option name="presentableId" value="LOCAL-00045" />
      <option name="project" value="LOCAL" />
      <updated>1513642374580</updated>
    </task>
    <task id="LOCAL-00046" summary="Added searching closest places">
      <created>1518143652381</created>
      <option name="number" value="00046" />
      <option name="presentableId" value="LOCAL-00046" />
      <option name="project" value="LOCAL" />
      <updated>1518143652381</updated>
    </task>
    <task id="LOCAL-00047" summary="Merge remote-tracking branch 'remotes/origin/master' into find-nearest-spots

# Conflicts:
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css">
      <created>1520983542502</created>
      <option name="number" value="00047" />
      <option name="presentableId" value="LOCAL-00047" />
      <option name="project" value="LOCAL" />
      <updated>1520983542502</updated>
    </task>
    <task id="LOCAL-00048" summary="Added nearest maps">
      <created>1520983722521</created>
      <option name="number" value="00048" />
      <option name="presentableId" value="LOCAL-00048" />
      <option name="project" value="LOCAL" />
      <updated>1520983722521</updated>
    </task>
    <task id="LOCAL-00049" summary="fixed api">
      <created>1520985871909</created>
      <option name="number" value="00049" />
      <option name="presentableId" value="LOCAL-00049" />
      <option name="project" value="LOCAL" />
      <updated>1520985871910</updated>
    </task>
    <option name="localTasksCounter" value="50" />
    <servers />
  </component>
  <component name="ToolWindowManager">
    <frame x="0" y="27" width="1920" height="1053" extended-state="0" />
    <editor active="true" />
    <layout>
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Debug Logs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32896176" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Execute Anonymous" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.45225027" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25747862" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Salesforce" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
    </layout>
    <layout-to-restore>
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Debug Logs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32930845" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
      <window_info id="Execute Anonymous" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.27991217" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.21367522" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
      <window_info id="Salesforce" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
    </layout-to-restore>
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="VcsManagerConfiguration">
    <MESSAGE value="test commit" />
    <MESSAGE value="merged branches" />
    <MESSAGE value="Fixed moving gif layout
Added landing page" />
    <MESSAGE value="changed link sneak preview to welcome page" />
    <MESSAGE value="frontend updates" />
    <MESSAGE value="asf" />
    <MESSAGE value="Merge remote-tracking branch 'remotes/origin/mvp'

# Conflicts:
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css
#	main/static/src/style/welcome.less
#	main/templates/welcome.html" />
    <MESSAGE value="extra space between tags" />
    <MESSAGE value="Improved expendable posts with masonery" />
    <MESSAGE value="removed unnecessary console.log" />
    <MESSAGE value="small layout changes" />
    <MESSAGE value="fixed javascript" />
    <MESSAGE value="Changed order of posts" />
    <MESSAGE value="Added search index" />
    <MESSAGE value="changed URL's and added masonery again" />
    <MESSAGE value="Fixed masonery again :)" />
    <MESSAGE value="Added full text search" />
    <MESSAGE value="Added search API and google maps" />
    <MESSAGE value="Changed map to center with hide / list button" />
    <MESSAGE value="working clean version with maps" />
    <MESSAGE value="fixed updating of recommenders / posts" />
    <MESSAGE value="Added searching closest places" />
    <MESSAGE value="Merge remote-tracking branch 'remotes/origin/master' into find-nearest-spots

# Conflicts:
#	main/static/dev/script/script.js
#	main/static/dev/style/style.css" />
    <MESSAGE value="Added nearest maps" />
    <MESSAGE value="fixed api" />
    <option name="LAST_COMMIT_MESSAGE" value="fixed api" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
      <breakpoints>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/model/__init__.py</url>
          <line>2</line>
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/api/v1/resource.py</url>
          <line>2</line>
          <option name="timeStamp" value="1" />
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/api/helpers.py</url>
          <line>2</line>
          <option name="timeStamp" value="2" />
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/api/v1/__init__.py</url>
          <line>2</line>
          <option name="timeStamp" value="3" />
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/control/admin.py</url>
          <line>2</line>
          <option name="timeStamp" value="5" />
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/api/v1/star.py</url>
          <line>1</line>
          <option name="timeStamp" value="6" />
        </line-breakpoint>
        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
          <url>file://$PROJECT_DIR$/main/control/__init__.py</url>
          <line>2</line>
          <option name="timeStamp" value="7" />
        </line-breakpoint>
      </breakpoints>
      <option name="time" value="8" />
    </breakpoint-manager>
    <watches-manager />
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/main/static/src/style/style.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-540">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/test.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/user.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/mixins.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/app.yaml">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="420">
          <caret line="21" column="2" lean-forward="false" selection-start-line="21" selection-start-column="2" selection-end-line="21" selection-end-column="2" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/lib/googlemaps/client.py" />
    <entry file="file://$PROJECT_DIR$/main/templates/bit/style.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/base.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="560">
          <caret line="28" column="14" lean-forward="false" selection-start-line="28" selection-start-column="14" selection-end-line="28" selection-end-column="14" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/bit/script.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="100">
          <caret line="5" column="92" lean-forward="false" selection-start-line="5" selection-start-column="92" selection-end-line="5" selection-end-column="92" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/jumbotron.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="489">
          <caret line="26" column="1" lean-forward="false" selection-start-line="26" selection-start-column="1" selection-end-line="26" selection-end-column="1" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/img/DASPOTS_FBHEADER-02-grey.jpg">
      <provider selected="true" editor-type-id="images">
        <state />
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/img/jumbotron1_1000x561.jpg" />
    <entry file="file://$PROJECT_DIR$/main/static/src/style/fonts.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="489">
          <caret line="188" column="1" lean-forward="false" selection-start-line="188" selection-start-column="1" selection-end-line="188" selection-end-column="1" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/links.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="3520">
          <caret line="176" column="22" lean-forward="false" selection-start-line="176" selection-start-column="22" selection-end-line="176" selection-end-column="22" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/script/gifffer.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/accordion.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/bit/user_menu.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/script/follow_code.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="460">
          <caret line="23" column="25" lean-forward="false" selection-start-line="23" selection-start-column="25" selection-end-line="23" selection-end-column="25" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/script/load.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="2100">
          <caret line="105" column="42" lean-forward="false" selection-start-line="105" selection-start-column="42" selection-end-line="105" selection-end-column="42" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/script/star_code.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="580">
          <caret line="29" column="0" lean-forward="false" selection-start-line="29" selection-start-column="0" selection-end-line="30" selection-end-column="36" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/style/misc.less">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1600">
          <caret line="80" column="0" lean-forward="false" selection-start-line="80" selection-start-column="0" selection-end-line="80" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/settings.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="40">
          <caret line="2" column="61" lean-forward="false" selection-start-line="2" selection-start-column="61" selection-end-line="2" selection-end-column="61" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/post_create.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="420">
          <caret line="21" column="39" lean-forward="false" selection-start-line="21" selection-start-column="39" selection-end-line="21" selection-end-column="39" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/macro/forms.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/macro/utils.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/recommender/recommender_view.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="440">
          <caret line="22" column="55" lean-forward="false" selection-start-line="22" selection-start-column="55" selection-end-line="22" selection-end-column="55" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/model/post.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1420">
          <caret line="75" column="65" lean-forward="false" selection-start-line="75" selection-start-column="11" selection-end-line="75" selection-end-column="65" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/api/v1/auth.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/api/v1/follow_api.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-246">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/api/v1/star.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="260">
          <caret line="34" column="0" lean-forward="true" selection-start-line="34" selection-start-column="0" selection-end-line="34" selection-end-column="0" />
          <folding>
            <element signature="e#1#39#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/api/v1/resource.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="0">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/post.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-2086">
          <caret line="210" column="61" lean-forward="false" selection-start-line="210" selection-start-column="61" selection-end-line="210" selection-end-column="61" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/recommender.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="320">
          <caret line="16" column="34" lean-forward="false" selection-start-line="16" selection-start-column="31" selection-end-line="16" selection-end-column="34" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/model/recommender.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="60">
          <caret line="7" column="17" lean-forward="false" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="17" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/recommender/recommender_create.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="15" column="45" lean-forward="false" selection-start-line="15" selection-start-column="34" selection-end-line="15" selection-end-column="45" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/__init__.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="300">
          <caret line="15" column="27" lean-forward="false" selection-start-line="15" selection-start-column="27" selection-end-line="15" selection-end-column="27" />
          <folding>
            <element signature="e#17#36#0" expanded="false" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/static/src/script/maps.js">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="440">
          <caret line="22" column="5" lean-forward="false" selection-start-line="22" selection-start-column="5" selection-end-line="22" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/main.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-450">
          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/about.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="520">
          <caret line="26" column="57" lean-forward="false" selection-start-line="26" selection-start-column="57" selection-end-line="26" selection-end-column="57" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/user/user_forgot.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="440">
          <caret line="22" column="103" lean-forward="false" selection-start-line="22" selection-start-column="103" selection-end-line="22" selection-end-column="103" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/bit/header.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1300">
          <caret line="65" column="110" lean-forward="false" selection-start-line="65" selection-start-column="110" selection-end-line="65" selection-end-column="110" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/resource.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="130">
          <caret line="142" column="51" lean-forward="false" selection-start-line="142" selection-start-column="51" selection-end-line="142" selection-end-column="51" />
          <folding>
            <element signature="e#0#13#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/bit/welcome_header.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="100">
          <caret line="5" column="17" lean-forward="false" selection-start-line="5" selection-start-column="17" selection-end-line="5" selection-end-column="17" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/no_post_found.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="401">
          <caret line="23" column="83" lean-forward="false" selection-start-line="23" selection-start-column="83" selection-end-line="23" selection-end-column="83" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/helpers.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="400">
          <caret line="20" column="0" lean-forward="false" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
          <folding>
            <element signature="e#17#30#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/api/v1/post_api.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-110">
          <caret line="87" column="67" lean-forward="false" selection-start-line="87" selection-start-column="67" selection-end-line="87" selection-end-column="67" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/recommender/recommender_overview.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1096">
          <caret line="65" column="93" lean-forward="false" selection-start-line="65" selection-start-column="93" selection-end-line="65" selection-end-column="93" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/templates/welcome.html">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="2880">
          <caret line="153" column="0" lean-forward="false" selection-start-line="153" selection-start-column="0" selection-end-line="155" selection-end-column="15" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/welcome.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="650">
          <caret line="39" column="67" lean-forward="false" selection-start-line="39" selection-start-column="5" selection-end-line="39" selection-end-column="67" />
          <folding>
            <element signature="e#17#30#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main/control/search.py">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="-510">
          <caret line="63" column="28" lean-forward="false" selection-start-line="63" selection-start-column="28" selection-end-line="63" selection-end-column="28" />
          <folding>
            <element signature="e#1#14#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
        <state split_layout="SPLIT">
          <first_editor relative-caret-position="140">
            <caret line="7" column="3" lean-forward="false" selection-start-line="7" selection-start-column="3" selection-end-line="7" selection-end-column="3" />
            <folding />
          </first_editor>
          <second_editor />
        </state>
      </provider>
    </entry>
  </component>
</project>


text:
var Promise = require('bluebird');
// var utils = require('./utils');
var db = require('../models');
var sequelize = db.sequelize;
var Player = db.Player;
var User = db.User;
var EmergencyContact = db.EmergencyContact;

function nullIfEmpty(optional) {
    if (optional === '') {
        return null;
    }
    return optional;
}

function nullEmptyOptionals(newPlayer) {
    newPlayer.address2 = nullIfEmpty(newPlayer.address2);
    newPlayer.ukuName = nullIfEmpty(newPlayer.ukuName);
    newPlayer.wfdfID = nullIfEmpty(newPlayer.wfdfID);
    newPlayer.medicalInfo = nullIfEmpty(newPlayer.medicalInfo);
    return newPlayer;
}

function registerPlayer(newUser, newPlayer) {
    return new Promise(function (resolve, reject) {
        // newUser = JSON.parse(newUser);
        // newPlayer = JSON.parse(newPlayer);
        if (!newUser.profilePicture) {
            newUser.profilePicture = 'assets/empty_user.jpg';
        }

        var user = User.build({
            username: newUser.username,
            encryptedPassword: User.generateHash(newUser.password),
            profilePicture: newUser.profilePicture
        });
        var nullPlayer = nullEmptyOptionals(newPlayer);
        var player = Player.build(nullPlayer);

        user.validate().then(function (validErrors) {
            let issues = [];
            if (validErrors) {
                for (let i = 0; i < validErrors.errors.length; i++) {
                    let error = validErrors.errors[i];
                    let messageHead = 'Invalid ' + error.path;
                    issues.push({
                        messageTitle: messageHead,
                        message: error.message
                    });
                }
            }
            player.validate().then(function (validErrors) {
                if (validErrors) {
                    for (let i = 0; i < validErrors.errors.length; i++) {
                        let error = validErrors.errors[i];
                        let messageHead = 'Invalid ' + error.path;
                        issues.push({
                            messageTitle: messageHead,
                            message: error.message
                        });
                    }
                }
                validateECs(newPlayer.emergencyContacts).then(function (validECs) {
                    if (validECs.invalid) {
                        issues = issues.concat(validECs.invalid);
                    }

                    if (issues.length > 0) {
                        return resolve({
                            'success': false,
                            'issues': issues
                        });
                    }

                    if (validECs.valid) {
                        sequelize.transaction(function (t) {
                            return user.save({ transaction: t }).then(function (savedUser) {
                                return player.save({ transaction: t }).then(function (savedPlayer) {
                                    savedUser.setPlayer(savedPlayer);
                                    return EmergencyContact.bulkCreate(validECs.valid, { transaction: t }).then(function (savedECs) {
                                        savedPlayer.addEmergencyContacts(savedECs);
                                        return {
                                            user: savedUser,
                                            player: savedPlayer,
                                            emergencyContacts: savedECs
                                        };
                                    });
                                });
                            });
                        }).then(function (result) {
                            return resolve({
                                success: true,
                                user: result.user,
                                player: result.player,
                                emergencyContacts: result.emergencyContacts
                            });
                        }).catch(function (error) {
                            // console.error(error);
                            return reject({
                                success: false,
                                message: 'Register passed validation, but something went wrong when saving',
                                error: error
                            });
                        });

                    } else {
                        return reject('Didn\'t submit an emergency contact');
                    }
                });
            });
        });
    });
}

function validateECs(emergContArray) {
    return new Promise(function (resolve, reject) {
        let issues = [];
        let valids = [];
        for (let i = 0; i < emergContArray.length; i++) {
            let ecPrev = emergContArray[i];
            let ec = EmergencyContact.build(ecPrev);
            ec.validate().then(function (validErrors) {
                if (validErrors) {
                    for (let i = 0; i < validErrors.errors.length; i++) {
                        let error = validErrors.errors[i];
                        let messageHead = 'Invalid ' + error.path;
                        issues.push({
                            messageTitle: messageHead,
                            message: error.message
                        });
                    }
                } else {
                    valids.push(ecPrev);
                }
                if (i == emergContArray.length - 1) {
                    if (issues.length > 0) {
                        return resolve({ invalid: issues });
                    }
                    return resolve({ valid: valids });
                }
            }).catch(function (error) {
                return reject(error);
            });
        }
    });
}

module.exports = {
    registerPlayer
};

redpajama_set_name: RedPajamaGithub


text:
package cn.iaicc.smgk.web.action.manage.edit;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import cn.iaicc.smgk.business.IEmployeeInfoService;
import cn.iaicc.smgk.business.IPartInfoService;
import cn.iaicc.smgk.business.IPartQuestionInfoService;
import cn.iaicc.smgk.business.IQuestionInfoService;
import cn.iaicc.smgk.po.EmployeeInfo;
import cn.iaicc.smgk.po.PartInfo;
import cn.iaicc.smgk.po.PartQuestionInfo;
import cn.iaicc.smgk.po.QuestionInfo;
import cn.iaicc.smgk.web.conf.QuestionTypeConstants;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class EditPartQuestionAction extends ActionSupport {

	/**
	 *
	 */
	private static final long serialVersionUID = -8214185261887712162L;
	private static Log logger = LogFactory.getLog(EditPartQuestionAction.class);
	private IPartQuestionInfoService partQuestionInfoService = null;
	private IEmployeeInfoService employeeInfoService = null;
	private IQuestionInfoService questionInfoService = null;
	private IPartInfoService partInfoService = null;

	private Long questionID = null;
	private Integer showNum = null;
	private Long fatherPqID = null;

	private Long partQuestionID = null;

	@Override
	public String execute() throws Exception {
		try{
			String username = (String)ActionContext.getContext().getSession().get("LOGINUSERNAME");
			String password = (String)ActionContext.getContext().getSession().get("LOGINPASSWORD");
			if(username == null || password == null) {
				return LOGIN;
			}

			PartQuestionInfo info = (PartQuestionInfo) ActionContext.getContext().getSession().get("PARTQUESTIONINFOEDIT");
			logger.debug("partQuestionInfo:"+info);
			if(info != null) {
				if(fatherPqID != null) {
					info.setFatherPqID(fatherPqID);
				}

				Long partID = (Long)ActionContext.getContext().getSession().get("SELECTPARTID");
				if(partID != null && partID != info.getPartID()) {
					PartInfo pi = partInfoService.getPartInfo(partID);
					if(pi != null) {
						info.setPartID(partID);
						info.setInquisitionID(pi.getInquisitionID());
					}
				}
				logger.debug("questionID:"+questionID);
				if(questionID != null) {
					QuestionInfo qi = questionInfoService.getQuestionInfo(questionID);
					if(qi != null) {
						info.setQuestionID(qi.getQuestionID());
						info.setQuestionType(qi.getQuestionType());
					}
				}
				if(showNum != null) {
					if(info.getQuestionType() != null && info.getQuestionType() <= 4) {
						info.setFieldName("h"+showNum+"s");
					}else{
						info.setFieldName("h"+showNum+"");
					}
					info.setShowNum(showNum);
				}
				partQuestionInfoService.updatePartQuestionInfo(info);
			}
		}catch(Exception e) {
			logger.error(""+e.getMessage(),e.getCause());
		}
		return SUCCESS;
	}
	@SuppressWarnings("unchecked")
	public String edit() throws Exception {
		try{
			String username = (String)ActionContext.getContext().getSession().get("LOGINUSERNAME");
			String password = (String)ActionContext.getContext().getSession().get("LOGINPASSWORD");

			if(username == null || password == null) {
				return LOGIN;
			}
			if(partQuestionID == null) {
				this.addActionError("非法操作!找不到要操作的数据!");
				return ERROR;
			}
			PartQuestionInfo info = partQuestionInfoService.getPartQuestionInfo(partQuestionID);
			if(info == null) {
				this.addActionError("找不到你要管理的部分问题!");
				return ERROR;
			}
			ActionContext.getContext().getSession().put("PARTQUESTIONINFOEDIT", info);
			if(info.getPartID() == null) {
				this.addActionError("非法操作,找不到要操作的部分!");
				return ERROR;
			}
			if(info.getFatherPqID() != null) {
				PartQuestionInfo fatherInfo = partQuestionInfoService.getPartQuestionInfo(info.getFatherPqID());
				java.util.Map<Long,String> fqMap = new java.util.HashMap<Long, String>();
				if(fatherInfo != null && fatherInfo.getQuestionID() != null) {
					QuestionInfo qi = questionInfoService.getQuestionInfo(fatherInfo.getQuestionID());
					if(qi != null) {
						fqMap.put(partQuestionID, ""+qi.getQuestion());
					}
				}
				ActionContext.getContext().put("FATHERINFOMAP", fqMap);
			}
			PartInfo pi = partInfoService.getPartInfo(info.getPartID());
			if(pi != null) {
				ActionContext.getContext().getSession().put("PARTNAME", ""+pi.getName());
			}
			if(info.getQuestionID() != null && info.getQuestionID() != -1) {
				QuestionInfo qInfo = questionInfoService.getQuestionInfo(info.getQuestionID());
				ActionContext.getContext().getSession().put("EDITQUESTIONNAME",qInfo.getQuestion());
				ActionContext.getContext().getSession().put("EDITQUESTIONVALUE",info.getQuestionID());
			}else{
				ActionContext.getContext().getSession().put("EDITQUESTIONNAME","请选择问题");
				ActionContext.getContext().getSession().put("EDITQUESTIONVALUE","-1");
			}
			ActionContext.getContext().getSession().put("VALIDATIONSELECT",QuestionTypeConstants.ValidationDict);
		}catch(Exception e) {
			logger.error(e.getMessage(),e.getCause());
		}

		return SUCCESS;
	}
	public void setEmployeeInfoService(IEmployeeInfoService employeeInfoService) {
		this.employeeInfoService = employeeInfoService;
	}

	public Long getQuestionID() {
		return questionID;
	}

	public void setQuestionID(Long questionID) {
		this.questionID = questionID;
	}

	public Integer getShowNum() {
		return showNum;
	}

	public void setShowNum(Integer showNum) {
		this.showNum = showNum;
	}

	public void setPartQuestionInfoService(
			IPartQuestionInfoService partQuestionInfoService) {
		this.partQuestionInfoService = partQuestionInfoService;
	}

	public Long getFatherPqID() {
		return fatherPqID;
	}

	public void setFatherPqID(Long fatherPqID) {
		this.fatherPqID = fatherPqID;
	}

	public void setQuestionInfoService(IQuestionInfoService questionInfoService) {
		this.questionInfoService = questionInfoService;
	}

	public void setPartInfoService(IPartInfoService partInfoService) {
		this.partInfoService = partInfoService;
	}
	public Long getPartQuestionID() {
		return partQuestionID;
	}
	public void setPartQuestionID(Long partQuestionID) {
		this.partQuestionID = partQuestionID;
	}

}


text:
<?php

use Illuminate\Database\Migrations\Migration;

class CreateAfterAlertDeleteTrigger extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        DB::unprepared('
CREATE FUNCTION after_alert_delete() RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
	UPDATE users
 	SET alerts = (alerts -1), alerts_unread = (alerts_unread - CASE WHEN OLD.read_at IS NOT NULL THEN 0 ELSE 1 END)
 	WHERE "id" = OLD.user_id;

	RETURN NEW;
END;$$;

CREATE TRIGGER after_alert_delete AFTER DELETE ON alerts FOR EACH ROW EXECUTE PROCEDURE "after_alert_delete"();
        ');
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::unprepared('DROP TRIGGER IF EXISTS "after_alert_delete" ON alerts;');
        DB::unprepared('DROP FUNCTION after_alert_delete();');
    }
}


text:
module AWSCloudSearch
  class SearchRequest

    attr_accessor :q, :bq, :rank, :results_type, :return_fields, :size, :start, :facet
    attr_accessor :facet_constraints, :facet_sort, :facet_top_n, :t

    def initialize
      @facet_constraints, @facet_sort, @facet_top_n, @t, @rank_expressions = {}, {}, {}, {}, {}
    end

    # Specifies the facet constraints for a field
    # @param [String] field The field for which to add the facet constraints
    # @param [String] constraints The facet contraints
    def add_facet_constraints(field, constraints)
      @facet_constraints["facet-#{field}-constraints"] = constraints
    end

    # Specifies how to sort a facet field.
    # @param [String] field The field for which to add the facet sort
    # @param [String] sort The facet sort method: alpha, count, max, sum
    def add_facet_sort(field, sort)
      @facet_sort["facet-#{field}-sort"] = sort
    end

    # Specifies how many facet constraints to return.
    # @param [String] field The field for which to add the facet top n constraints.
    # @param [Integer] top_n The maximum number of facet constraints to add for a field.
    def add_facet_top_n(field, top_n)
      raise ArgumentError.new("top_n must be of type Integer") unless top_n.kind_of? Integer
      @facet_top_n["facet-#{field}-top-n"] = top_n
    end

    # Restricts the records returned based on the values from the rank expression. The t-field value is a range.
    # @param [String] field The field for which to add.
    # @param [Integer] t_from Beginning of the range, may be nil or blank string.
    # @param [Integer] t_to   End of the range, may be nil or blank string.
    def add_t(field, t_from, t_to)
      raise ArgumentError.new("Range must have a beginning or ending value or both.") if t_from.nil? and t_to.nil?
      raise ArgumentError.new("Range values must be of type Integer") unless t_from.kind_of? Integer and t_to.kind_of? Integer
      @t["t-#{field}"] = "#{t_from}..#{t_to}"
    end

    # Adds a query time rank expression to the query. In order to use this rank expression, you are still required to
    # include it in the rank value.
    #
    # All expression names passed to this method are prefixed by 'rank-'
    # For instance passing in 'expression1' will use 'rank-expression1' in the query to AWS CloudSearch.
    #
    # For more information please see:
    # http://docs.aws.amazon.com/cloudsearch/latest/developerguide/rankexpressionquery.html
    #
    # @param [String] expression_name The name of the query time rank expression
    # @param [String] value The rank expression
    def add_rank_expression(expression_name, value)
      @rank_expressions['rank-'+expression_name] = value
    end

    # Returns the hash of all the values for this SearchRequest. Useful for creating URL params.
    # @return [Hash] The object converted to a Hash
    def to_hash
      hash = {}
      hash['q']     = @q unless @q.nil?
      hash['bq']    = @bq unless @bq.nil?
      hash['rank']  = @rank unless @rank.nil?
      hash['size']  = @size unless @size.nil?
      hash['start'] = @start unless @start.nil?
      hash['results-type']  = @results_type unless @results_type.nil?
      hash['return-fields'] = @return_fields.join(',') unless @return_fields.nil?
      hash['facet'] = @facet unless @facet.nil?
      hash.merge(@facet_constraints).merge(@facet_sort).merge(@facet_top_n).merge(@t).merge(@rank_expressions)
    end

  end
end


text:
package context

import (
	"bytes"
	"compress/flate"
	"compress/gzip"
	"encoding/json"
	"encoding/xml"
	"errors"
	"fmt"
	"html/template"
	"io"
	"mime"
	"net/http"
	"path/filepath"
	"strconv"
	"strings"
)

// BeegoOutput does work for sending response header.
type BeegoOutput struct {
	Context    *Context
	Status     int
	EnableGzip bool
}

// NewOutput returns new BeegoOutput.
// it contains nothing now.
func NewOutput() *BeegoOutput {
	return &BeegoOutput{}
}

// Header sets response header item string via given key.
func (output *BeegoOutput) Header(key, val string) {
	output.Context.ResponseWriter.Header().Set(key, val)
}

// Body sets response body content.
// if EnableGzip, compress content string.
// it sends out response body directly.
func (output *BeegoOutput) Body(content []byte) {
	output_writer := output.Context.ResponseWriter.(io.Writer)
	if output.EnableGzip == true && output.Context.Input.Header("Accept-Encoding") != "" {
		splitted := strings.SplitN(output.Context.Input.Header("Accept-Encoding"), ",", -1)
		encodings := make([]string, len(splitted))

		for i, val := range splitted {
			encodings[i] = strings.TrimSpace(val)
		}
		for _, val := range encodings {
			if val == "gzip" {
				output.Header("Content-Encoding", "gzip")
				output_writer, _ = gzip.NewWriterLevel(output.Context.ResponseWriter, gzip.BestSpeed)

				break
			} else if val == "deflate" {
				output.Header("Content-Encoding", "deflate")
				output_writer, _ = flate.NewWriter(output.Context.ResponseWriter, flate.BestSpeed)
				break
			}
		}
	} else {
		output.Header("Content-Length", strconv.Itoa(len(content)))
	}

	// Write status code if it has been set manually
	// Set it to 0 afterwards to prevent "multiple response.WriteHeader calls"
	if output.Status != 0 {
		output.Context.ResponseWriter.WriteHeader(output.Status)
		output.Status = 0
	}

	output_writer.Write(content)
	switch output_writer.(type) {
	case *gzip.Writer:
		output_writer.(*gzip.Writer).Close()
	case *flate.Writer:
		output_writer.(*flate.Writer).Close()
	}
}

// Cookie sets cookie value via given key.
// others are ordered as cookie's max age time, path,domain, secure and httponly.
func (output *BeegoOutput) Cookie(name string, value string, others ...interface{}) {
	var b bytes.Buffer
	fmt.Fprintf(&b, "%s=%s", sanitizeName(name), sanitizeValue(value))
	if len(others) > 0 {
		switch v := others[0].(type) {
		case int:
			if v > 0 {
				fmt.Fprintf(&b, "; Max-Age=%d", v)
			} else if v < 0 {
				fmt.Fprintf(&b, "; Max-Age=0")
			}
		case int64:
			if v > 0 {
				fmt.Fprintf(&b, "; Max-Age=%d", v)
			} else if v < 0 {
				fmt.Fprintf(&b, "; Max-Age=0")
			}
		case int32:
			if v > 0 {
				fmt.Fprintf(&b, "; Max-Age=%d", v)
			} else if v < 0 {
				fmt.Fprintf(&b, "; Max-Age=0")
			}
		}
	}

	// the settings below
	// Path, Domain, Secure, HttpOnly
	// can use nil skip set

	// default "/"
	if len(others) > 1 {
		if v, ok := others[1].(string); ok && len(v) > 0 {
			fmt.Fprintf(&b, "; Path=%s", sanitizeValue(v))
		}
	} else {
		fmt.Fprintf(&b, "; Path=%s", "/")
	}

	// default empty
	if len(others) > 2 {
		if v, ok := others[2].(string); ok && len(v) > 0 {
			fmt.Fprintf(&b, "; Domain=%s", sanitizeValue(v))
		}
	}

	// default empty
	if len(others) > 3 {
		var secure bool
		switch v := others[3].(type) {
		case bool:
			secure = v
		default:
			if others[3] != nil {
				secure = true
			}
		}
		if secure {
			fmt.Fprintf(&b, "; Secure")
		}
	}

	// default false. for session cookie default true
	httponly := false
	if len(others) > 4 {
		if v, ok := others[4].(bool); ok && v {
			// HttpOnly = true
			httponly = true
		}
	}

	if httponly {
		fmt.Fprintf(&b, "; HttpOnly")
	}

	output.Context.ResponseWriter.Header().Add("Set-Cookie", b.String())
}

var cookieNameSanitizer = strings.NewReplacer("\n", "-", "\r", "-")

func sanitizeName(n string) string {
	return cookieNameSanitizer.Replace(n)
}

var cookieValueSanitizer = strings.NewReplacer("\n", " ", "\r", " ", ";", " ")

func sanitizeValue(v string) string {
	return cookieValueSanitizer.Replace(v)
}

// Json writes json to response body.
// if coding is true, it converts utf-8 to \u0000 type.
func (output *BeegoOutput) Json(data interface{}, hasIndent bool, coding bool) error {
	output.Header("Content-Type", "application/json; charset=utf-8")
	var content []byte
	var err error
	if hasIndent {
		content, err = json.MarshalIndent(data, "", "  ")
	} else {
		content, err = json.Marshal(data)
	}
	if err != nil {
		http.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)
		return err
	}
	if coding {
		content = []byte(stringsToJson(string(content)))
	}
	output.Body(content)
	return nil
}

// Jsonp writes jsonp to response body.
func (output *BeegoOutput) Jsonp(data interface{}, hasIndent bool) error {
	output.Header("Content-Type", "application/javascript; charset=utf-8")
	var content []byte
	var err error
	if hasIndent {
		content, err = json.MarshalIndent(data, "", "  ")
	} else {
		content, err = json.Marshal(data)
	}
	if err != nil {
		http.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)
		return err
	}
	callback := output.Context.Input.Query("callback")
	if callback == "" {
		return errors.New(`"callback" parameter required`)
	}
	callback_content := bytes.NewBufferString(" " + template.JSEscapeString(callback))
	callback_content.WriteString("(")
	callback_content.Write(content)
	callback_content.WriteString(");\r\n")
	output.Body(callback_content.Bytes())
	return nil
}

// Xml writes xml string to response body.
func (output *BeegoOutput) Xml(data interface{}, hasIndent bool) error {
	output.Header("Content-Type", "application/xml; charset=utf-8")
	var content []byte
	var err error
	if hasIndent {
		content, err = xml.MarshalIndent(data, "", "  ")
	} else {
		content, err = xml.Marshal(data)
	}
	if err != nil {
		http.Error(output.Context.ResponseWriter, err.Error(), http.StatusInternalServerError)
		return err
	}
	output.Body(content)
	return nil
}

// Download forces response for download file.
// it prepares the download response header automatically.
func (output *BeegoOutput) Download(file string, filename ...string) {
	output.Header("Content-Description", "File Transfer")
	output.Header("Content-Type", "application/octet-stream")
	if len(filename) > 0 && filename[0] != "" {
		output.Header("Content-Disposition", "attachment; filename="+filename[0])
	} else {
		output.Header("Content-Disposition", "attachment; filename="+filepath.Base(file))
	}
	output.Header("Content-Transfer-Encoding", "binary")
	output.Header("Expires", "0")
	output.Header("Cache-Control", "must-revalidate")
	output.Header("Pragma", "public")
	http.ServeFile(output.Context.ResponseWriter, output.Context.Request, file)
}

// ContentType sets the content type from ext string.
// MIME type is given in mime package.
func (output *BeegoOutput) ContentType(ext string) {
	if !strings.HasPrefix(ext, ".") {
		ext = "." + ext
	}
	ctype := mime.TypeByExtension(ext)
	if ctype != "" {
		output.Header("Content-Type", ctype)
	}
}

// SetStatus sets response status code.
// It writes response header directly.
func (output *BeegoOutput) SetStatus(status int) {
	output.Status = status
}

// IsCachable returns boolean of this request is cached.
// HTTP 304 means cached.
func (output *BeegoOutput) IsCachable(status int) bool {
	return output.Status >= 200 && output.Status < 300 || output.Status == 304
}

// IsEmpty returns boolean of this request is empty.
// HTTP 201,204 and 304 means empty.
func (output *BeegoOutput) IsEmpty(status int) bool {
	return output.Status == 201 || output.Status == 204 || output.Status == 304
}

// IsOk returns boolean of this request runs well.
// HTTP 200 means ok.
func (output *BeegoOutput) IsOk(status int) bool {
	return output.Status == 200
}

// IsSuccessful returns boolean of this request runs successfully.
// HTTP 2xx means ok.
func (output *BeegoOutput) IsSuccessful(status int) bool {
	return output.Status >= 200 && output.Status < 300
}

// IsRedirect returns boolean of this request is redirection header.
// HTTP 301,302,307 means redirection.
func (output *BeegoOutput) IsRedirect(status int) bool {
	return output.Status == 301 || output.Status == 302 || output.Status == 303 || output.Status == 307
}

// IsForbidden returns boolean of this request is forbidden.
// HTTP 403 means forbidden.
func (output *BeegoOutput) IsForbidden(status int) bool {
	return output.Status == 403
}

// IsNotFound returns boolean of this request is not found.
// HTTP 404 means forbidden.
func (output *BeegoOutput) IsNotFound(status int) bool {
	return output.Status == 404
}

// IsClient returns boolean of this request client sends error data.
// HTTP 4xx means forbidden.
func (output *BeegoOutput) IsClientError(status int) bool {
	return output.Status >= 400 && output.Status < 500
}

// IsServerError returns boolean of this server handler errors.
// HTTP 5xx means server internal error.
func (output *BeegoOutput) IsServerError(status int) bool {
	return output.Status >= 500 && output.Status < 600
}

func stringsToJson(str string) string {
	rs := []rune(str)
	jsons := ""
	for _, r := range rs {
		rint := int(r)
		if rint < 128 {
			jsons += string(r)
		} else {
			jsons += "\\u" + strconv.FormatInt(int64(rint), 16) // json
		}
	}
	return jsons
}

// Sessions sets session item value with given key.
func (output *BeegoOutput) Session(name interface{}, value interface{}) {
	output.Context.Input.CruSession.Set(name, value)
}


text:
require 'rails_helper'

RSpec.describe Api::V1::ArticlesController, type: :controller do

end


text:
package cl.rgaticav94.shelke.resource.cliente.domain;

import java.util.Date;

import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;

/**
 * shelke.
 * Created by rgaticav94 on 25-06-2017.
 */
public class ClienteDTO implements Cliente {

    private Long id;

    private String rut;

    private String nombre;

    private String apellido;

    private Date fechaNacimiento;

    public ClienteDTO(Cliente cliente) {
        this(cliente.getId(), cliente.getRut(), cliente.getNombre(), cliente.getApellido(), cliente.getFechaNacimiento());
    }

    public ClienteDTO(Long id, String rut, String nombre, String apellido, Date fechaNacimiento) {
        this.id = id;
        this.rut = rut;
        this.nombre = nombre;
        this.apellido = apellido;
        this.fechaNacimiento = fechaNacimiento;
    }

    @Override
    public Long getId() {
        return id;
    }

    @Override
    public String getRut() {
        return rut;
    }

    @Override
    public String getNombre() {
        return nombre;
    }

    @Override
    public String getApellido() {
        return apellido;
    }

    @Override
    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

}