text:
<?php

class Google_Service_DLP_StorageConfig extends Google_Model
{
  protected $cloudStorageOptionsType = 'Google_Service_DLP_CloudStorageOptions';
  protected $cloudStorageOptionsDataType = '';
  protected $datastoreOptionsType = 'Google_Service_DLP_DatastoreOptions';
  protected $datastoreOptionsDataType = '';

  public function setCloudStorageOptions(Google_Service_DLP_CloudStorageOptions $cloudStorageOptions)
  {
    $this->cloudStorageOptions = $cloudStorageOptions;
  }
  public function getCloudStorageOptions()
  {
    return $this->cloudStorageOptions;
  }
  public function setDatastoreOptions(Google_Service_DLP_DatastoreOptions $datastoreOptions)
  {
    $this->datastoreOptions = $datastoreOptions;
  }
  public function getDatastoreOptions()
  {
    return $this->datastoreOptions;
  }
}


text:
using System;
using System.IO;
using SharpDX;
using SharpDX.DXGI;
#if !NETFX_CORE
namespace HelixToolkit.Wpf.SharpDX
#else
#if CORE
namespace HelixToolkit.SharpDX.Core
#else
namespace HelixToolkit.UWP
#endif
#endif
{
    /// <summary>
    /// Used to cache texture models. Reuse existing texture model to avoid duplicate texture loading.
    /// </summary>
    public interface ITextureModelRepository
    {
        /// <summary>
        /// Creates texture model from a specified stream such as memory stream or file stream.
        /// <para>This is used for implicit conversion from a Stream to TextureModel</para>
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <returns></returns>
        TextureModel Create(Stream stream);
        /// <summary>
        /// Creates texture model from a specified texture path
        /// </summary>
        /// <param name="texturePath">The texture path.</param>
        /// <returns></returns>
        TextureModel Create(string texturePath);
    }

    /// <summary>
    /// Loads texture info and uploads texture to GPU on demand.
    /// </summary>
    public interface ITextureInfoLoader
    {
        /// <summary>
        /// Called before GPU texture resource creation.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        TextureInfo Load(Guid id);
        /// <summary>
        /// Called after GPU texture resource creation.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="info">The information.</param>
        /// <param name="succeeded">if set to <c>true</c> [succeeded].</param>
        void Complete(Guid id, TextureInfo info, bool succeeded);
    }
}

redpajama_set_name: RedPajamaGithub


text:
<?xml version="1.0" encoding="utf-8"?>
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:duration="@integer/fragment_anim_duration"
    android:fromXDelta="-100.0%"
   android:toXDelta="0.0%"
  xmlns:android="http://schemas.android.com/apk/res/android" />


text:
module MoreDakka.Controllers.Forum {
    export class LoginController {
        constructor(private $scope, private $rootScope, private $location: ng.ILocationService, private accountService: AccountService) {
            $scope.errorMessage = '';

            $scope.login = () => {
                accountService
                    .login($scope.username, $scope.password, $('input[name=__RequestVerificationToken]').val())
                    .then(result => {
                        if (result.data.Result) {
                            window.location.href = '/';
                        } else {
                            $scope.errorMessage = result.data.ErrorMessage.Value;
                            if (!$rootScope.$$phase) $rootScope.$apply();
                        }
                    });

            }
        }
    }

    moreDakka.controller('loginController', ['$scope', '$rootScope', '$location', 'accountService', LoginController]);
}


text:
/**
  * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3).
  *
  * @version v1.14.1
  * @homepage https://bootstrap-table.com
  * @author wenzhixin <wenzhixin2010@gmail.com> (http://wenzhixin.net.cn/)
  * @license MIT
  */

(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.bootstrapTableNaturalSorting={exports:{}}.exports}})(this,function(){"use strict"});


text:
from google.appengine.ext.webapp import util #@UnresolvedImport
from google.appengine.ext.webapp import template #@UnresolvedImport
from google.appengine.api import channel #@UnresolvedImport
from google.appengine.api import users #@UnresolvedImport
from google.appengine.ext import ndb as db #@UnresolvedImport
from django.utils import simplejson
from google.appengine.api import memcache
from google.appengine.ext.webapp.util import login_required
from google.appengine.api import urlfetch
import pdb, sys, logging, webapp2
from datetime import datetime
import settings
from xml.dom import minidom
import urllib
import base64
import cgi
import random

logging.getLogger().setLevel(logging.INFO)

class UserPrefs(db.Model):
	user = db.UserProperty()
	data = db.JsonProperty()
	registration_status = db.TextProperty(default="Unregistered")
	key = db.TextProperty()

	@staticmethod
	def current():
		user = users.get_current_user()
		try:
			nup = UserPrefs.gql("WHERE user = :1", user).get()
			return nup
		except KeyError:
			return None
			#nup = UserPrefs(user=user, data=d)

class Qtd(db.Model):
	current = 0
	text = db.TextProperty()
	@staticmethod
	def populate():
		filename = 'quotes.json'
		bigs = simplejson.load(file('%s' % (filename)))
		import datetime
		myitem = None
		for letter, stories in bigs.iteritems():
			for quote in stories:
				q = Qtd(parent=letter, text=quote)
				q.put()
			break
		#print self.get_stories(myitem)
	@staticmethod
	def get():
		return Qtd().text
		#n = Qtd.count  % Qtd.count()
		#letter = random.randint(0, )

		#Qtd.count += 1

class Card:
	hanzi = db.TextProperty()
	meaning = db.TextProperty()
	pinyin = db.TextProperty()
	#sound = db.TextProperty()
	#fields = db.JsonProperty()

#class WordList(db.Model):

class Item(db.Model):
	name = db.TextProperty(required=True)

class Story(db.Model):
	#id = db.TextProperty(required=True)
	user = db.TextProperty()
	text = db.TextProperty()
	#item = db.KeyProperty(Item)
	vote = db.IntegerProperty()
	rank = db.IntegerProperty()
	date = db.DateTimeProperty()

class VoteReg(db.Model):
	#id = db.TextProperty()
	#user = db.UserProperty()
	#item = db.KeyProperty(Item)
	vote = db.IntegerProperty() # 0 or 1

class FakeUsers(object):
	def get_current_user():
		class Lol:
			def nickname():
				import random
				return 'aoeu%d' % (random.random()*256)
		return Lol()
# users = FakeUsers()

class MainHandler(webapp2.RequestHandler):

	def handle(self, way, traced=False):
		#if way == 'get':
		#pdb.set_trace()

		if way == 'post':
			callfunc = db.transaction
			self.response.write('success')
			source = simplejson.loads(self.request.body)
		else:
			source = simplejson.loads(self.request.GET.keys()[0])
			def callfunc(f):
				self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
				self.response.write(simplejson.dumps(f()))
		logging.info('aoeu %s ' %(self.request.GET))
		#pdb.set_trace()
		def f():
			return getattr(self, source[u'function'])(*source[u'args'])

		callfunc(f)

	def get(self, what):
		#self.runtests()
		user = users.get_current_user()

		if user:
			logging.debug('headres%s'%self.request.headers)
			if 'X-Requested-With' in self.request.headers:
				#nup = UserPrefs.gql("WHERE user = :1", user).get()
				#self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
				#self.response.write(nup.data)
				self.handle('get')
			else:
				buttonname = 'newbutton.html'
				if settings.SANDBOX:
					merchantId, checkUrl, _ = settings.sandboxInfo
				else:
					merchantId, checkUrl, _ = settings.realInfo

				price = 40 # Make sure that the price changes, and that it has some coupon code or something.
				button = template.render(buttonname, {'price':price, 'merchantId':merchantId, 'checkoutUrl':checkUrl, 'url':self.request.url})

				qotd = Qtd.get()
				self.response.out.write(template.render('output.html', {'button':button, 'qotd':qotd}))

		else:
			self.redirect(users.create_login_url(self.request.uri))

	def get_save(self):
		user = users.get_current_user()
		nup = UserPrefs.gql("WHERE user = :1", user).get()
		self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
		self.response.write(nup.data)

	def post_save(self):
		user = users.get_current_user()
		logging.debug('body:%s' % self.request.body)
		logging.debug('post:%s' % self.request.POST['data'])
		d = self.request.POST['data']
		try:
			nup = UserPrefs.gql("WHERE user = :1", user).get()
			nup.data = d
		except KeyError:
			nup = UserPrefs(user=user, data=d)

		nup.put()

	def post_vote(self, ouser, item, v):
		#pdb.set_trace()
		story = Story.get_by_id(ouser, parent=db.Key(Item, item))
		story.vote += int(v)
		story.rank = story.vote*32 + (datetime.now() - story.date).days
		story.put()
		#votereg = VoteReg(user=ouser, parent=self.item(item), vote=v)

	#def item(name):

	def get_stories(self, item):
		#pdb.set_trace()
		stories = Story.query(ancestor=db.Key(Item, item))
		import time
		st = [[s.user, s.vote, s.text, time.mktime(datetime.timetuple(s.date))] for s in stories]
		return st

	#def get_vote(self, ouser, item):
	#	story = Story.gql('WHERE user = :1', ouser).get()
	#	return story.vote
	#	#self.response.write(story.vote)

	def post_story(self, itemn, text, username=None, date=None, vote=0):
		item = Item.get_by_id(itemn)
		if item is None:
			item = Item(id=itemn, name=itemn)
			item.put()
		if username is None:
			username = users.get_current_user().nickname()
		story = Story(id=username, user=username, text=text, parent=item.key, vote=vote, rank=0)
		if date is not None:
			story.date = date
		story.put()

	def populateStories(self):
		filename = 'chin3000'
		bigs = simplejson.load(file('%s' % (filename)))
		import datetime
		myitem = None
		for item, stories in bigs.iteritems():
			myitem = item
			for value in stories:
				d = [int(i) for i in value['lastmod'].split('-')]

				date = datetime.datetime(d[2], d[1], d[0])
				print date, d
				self.post_story(item, value['text'], value['author'], date, value['rating'])
			break
		print self.get_stories(myitem)

	def post(self, what):
		self.handle('post')
		#user = users.get_current_user()
		#logging.debug('body:%s' % self.request.body)
		#logging.debug('post:%s' % self.request.POST['data'])
		#d = self.request.POST['data']p
		#try:
		#	nup = UserPrefs.gql("WHERE user = :1", user).get()
		#	nup.data = d
		#except KeyError:
		#	nup = UserPrefs(user=user, data=d)

		#nup.put()
		#self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
		#self.response.write('%s' % (nup.data))
		#self.response.write('hi')

	#def runtests(self):
		#write = lambda s: sys.stdout.write(str(s))
		#pdb.set_trace()
		#self.post_story('lol', 'Die maggots')
		#self.post_story('lal', 'Die1 maggots')
		#self.post_story('lel', 'Dieu maggots')
		#self.post_story('lil', 'Die3 maggots')
		#pdb.set_trace()
		#self.post_vote(users.get_current_user().nickname(), 'lol', 1)
		#self.post_vote(users.get_current_user().nickname(), 'lal', -1)
		#write(self.get_stories('lol)'))
		#write(self.get_stories('lal'))
		#pdb.set_trace

class BuyHandler(webapp2.RequestHandler):
	@login_required
	def get(self):
		price  = 40
		if settings.SANDBOX:
			merchantId, checkUrl, key = settings.sandboxInfo
		else:
			merchantId, checkUrl, key = settings.realInfo

		import random
		key = '-'.join([''.join([str(random.randint(0, 9)) for i in range(4)]) for i in range(4)])
		redurl = self.request.host_url+'/register/'+''.join(key.split('-'))

		form_data = template.render('keyurl.xml', {'price':price, 'merchantId':merchantId, 'checkoutUrl':checkUrl, 'url':redurl, 'key':cgi.escape(key)})
		form_data = form_data.encode('utf-8', 'xmlcharrefreplace')
		#form_data = unicode(form_data)

		merid = '139786509611316'
		merkey = 'urUZ-4RVdtlVBW58c7VClQ'

		auth_string = 'Basic ' + base64.b64encode(merid + ':' + merkey)
		pref = UserPrefs.current()
		pref.key = key
		pref.put()
		url = settings.checkUrl+'/api/checkout/v2/merchantCheckout/Merchant/'+str(settings.merchantId)
		result = urlfetch.fetch(url=url,
								payload=form_data,
								method=urlfetch.POST,
								headers={'Content-Type': 'application/xml; charset=UTF-8', 'Authorization':auth_string, 'Accept':'application/xml; charset=UTF-8'})

		#log.debug(result.status_code)
		try:
			dom = minidom.parseString(result.content)
			redirect_url = dom.getElementsByTagName('redirect-url')[0].firstChild.data
			self.redirect(redirect_url)
		except:
			self.response.out.write('%s | %s' % (result.content, form_data))

class RegisterHandler(webapp2.RequestHandler):
	@login_required
	def get(self, id):
		logging.debug('id is ' + str(id))
		pref = UserPrefs.current()
		if ''.join(pref.key.split('-')) == id:
			pref.registration_status = 'registered'
			pref.put()
			self.redirect('/')
		else:
			self.response.out.write('The registration id is incorrect')
		self.response.out.write('Congratulations %s' % (self.request.__dict__))
		logging.debug(list(self.request.GET))
		logging.debug(self.request.body)
		logging.debug(self.request.headers)
		pdb.set_trace()

def main():
	application = webapp2.WSGIApplication([ ('/buy', BuyHandler),
											('/register/(.*)', RegisterHandler),
											('/(.*)', MainHandler)],
                                         debug=True)

	util.run_wsgi_app(application)

if __name__ == '__main__':
	main()


text:
[« Documentation Home](Documentation.md)

# Base Class

Both [Node](Node.md) and [Relationship](Relationship.md) classes inherit from this base class. In the documentation below, everywhere that `Base` is used as a type, it is implied to be either a Node or Relationship depending on the usage context.

**[Properties](#properties)**

* [data](#data)
* [id](#id)

**[Methods](#methods)**

* [deleteProperties](#deleteproperties)
* [index](#index)
* [refreshProperties](#refreshproperties)
* [removeFromIndex](#removefromindex)
* [replaceAllProperties](#replaceallproperties)
* [setProperties](#setproperties)
* [setProperty](#setproperty)
* [valueOf](#valueof)

## Constructor

Base objects are never directly instantiated. `Base` is essentially a virtual class.

## Properties

### data

```scala
(Object) Base.data
```

Represents the properties associated with this node/relationship. This object is frozen and cannot be edited.

### id

```scala
String Base.id
```

The ID of the node/relationship.

## Methods

### deleteProperties

```scala
Base.deleteProperties ( [Batch,] Function callback )
Base.deleteProperties ( [Batch,] String property, Function callback )
Base.deleteProperties ( [Batch,] Array properties, Function callback )
Base.deleteProperties ( [Batch,] Boolean updateData, Function callback )
Base.deleteProperties ( [Batch,] Boolean updateData, String property, Function callback )
Base.deleteProperties ( [Batch,] Boolean updateData, Array properties, Function callback )
```

Deletes some or all properties on this node/relationship.

`updateData`
* By default, a call to [refreshProperties](#refreshproperties) is automatically batched together with this method. To prevent this, set `updateData` to false.

`property`
* The name of the property to delete.

`properties`
* An array of strings representing the properties to delete.

> **Note:** If neither `property` nor `properties` arguments are provided, all properties will be deleted.

`callback`
* Signature: `Function (error, properties)`
    * `properties` The updated [Base.data](#data) object. Only provided when `updateData !== false`.

### index

```scala
Base.index ( [Batch,] String index, String key, Mixed value, Function callback )
Base.index ( [Batch,] String index, Object properties, Function callback )
```

Indexes one or more key/value pairs in relation to the node/relationship object.

> **Caution:** This does not overwrite previous entries. If you index the same key/value/item combination twice, two index entries are created. To do update-type operations, you need to [delete the old entry](#removefromindex) before adding a new one.
> *(Excerpt from http://docs.neo4j.org/chunked/stable/rest-api-indexes.html#rest-api-add-node-to-index)*

`index`
* The name of the index.

`key`
* The name of the key being indexed.

`value`
* The value to index.

`properties`
* Allows multiple key/value pairs to be indexed at once. `{ key1: 'value1', key2: 'value2', ... }`

`callback`
* Signature: `Function (error)`

### refreshProperties

```scala
Base.refreshProperties ( [Batch,] Function callback )
```

Updates [Base.data](#data) with the most current properties in neo4j.

`callback`
* Signature: `Function (error, properties)`
    * `properties` The updated [Base.data](#data) object.

### removeFromIndex

```scala
Base.removeFromIndex ( [Batch,] String index, Function callback )
Base.removeFromIndex ( [Batch,] String index, String key, Function callback )
Base.removeFromIndex ( [Batch,] String index, String key, Mixed value, Function callback )
Base.removeFromIndex ( [Batch,] String index, Array keys, Function callback )
Base.removeFromIndex ( [Batch,] String index, Object properties, Function callback )
```

Removes some, or all, index entries for a node/relationship.

`index`
* The name of the index to remove from.

`key`
* The name of the key to remove.

`value`
* If provided, only entries which match both the key and value will be removed.

`keys`
* An array of strings representing multiple keys which should be removed.

`properties`
* Allows multiple keys and values to be specified for removal. Since `null` is not a valid property value in neo4j, if the value of any key is `null`, it will be treated as if no value was provided (meaning that key is eligible for removal regardless of its value in the index).

> If `key`, `value`, `keys`, and `properties` are all omitted, then all key/value pairs associated with the node/relationship will be removed from `index`.

`callback`
* Signature: `Function (error)`

### replaceAllProperties

```scala
Base.replaceAllProperties ( [Batch,] Object properties, Function callback )
Base.replaceAllProperties ( [Batch,] String key, Mixed value, Function callback )
Base.replaceAllProperties ( [Batch,] Boolean updateData, Object properties, Function callback )
Base.replaceAllProperties ( [Batch,] Boolean updateData, String key, Mixed value, Function callback )
```

Replaces all the properties on this node/relationship.

`updateData`
* See description in [deleteProperties](#deleteproperties)

`properties`
* The new data/properties object.

`key`
* If you want to replace all properties with a single property, you can simply provide a single key/value pair as arguments.

`value`
* See `key` parameter above.

`callback`
* Signature: `Function (error, properties)`
    * `properties` The updated [Base.data](#data) object. Only provided when `updateData !== false`.

### setProperties

```scala
Base.setProperties ( [Batch,] Object properties, Function callback )
Base.setProperties ( [Batch,] Boolean updateData, Object properties, Function callback )
```

Sets individual properties on the node/relationship without erasing other properties.

`updateData`
* See description in [deleteProperties](#deleteproperties)

`properties`
* Key/values of the properties to set.

`callback`
* Signature: `Function (error, properties)`
    * `properties` The updated [Base.data](#data) object. Only provided when `updateData !== false`.

### setProperty

```scala
Base.setProperty ( [Batch,] String key, Mixed value, Function callback )
Base.setProperty ( [Batch,] Boolean updateData, String key, Mixed value, Function callback )
```

Sets a property on the node/relationship

`updateData`
* See description in [deleteProperties](#deleteproperties)

`key`
* The property name (key) to set.

`value`
* The value of the property to set.

`callback`
* Signature: `Function (error, properties)`
    * `properties` The updated [Base.data](#data) object. Only provided when `updateData !== false`.

> __Note:__ `setProperty` is actually just an alias for [setProperties](#setproperties) and can be used interchangeably, although it probably will make more sense to use them in the manners described above.

### valueOf

```scala
(String) Base.valueOf ( )
```

Overrides `Object.prototype.valueOf`. Returns [Base.id](#id).


text:
<?php
/**
 * The template for displaying posts in the Gallery Post Format on index and archive pages
 *
 * Learn more: http://codex.wordpress.org/Post_Formats
 *
 * @package WordPress
 * @subpackage Twenty_Eleven
 * @since Twenty Eleven 1.0
 */
?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

		<hgroup>

<a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?>

<?php _e( 'Gallery', 'twentyeleven' ); ?>

		</hgroup>

			<?php twentyeleven_posted_on(); ?>

	<?php if ( is_search() ) : // Only display Excerpts for search pages ?>

			<?php the_excerpt(); ?>

		<?php else : ?>

			<?php if ( post_password_required() ) : ?>
				<?php the_content( __( 'Continue reading →', 'twentyeleven' ) ); ?>

			<?php else : ?>
				<?php
					$images = get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
					if ( $images ) :
						$total_images = count( $images );
						$image = array_shift( $images );
						$image_img_tag = wp_get_attachment_image( $image->ID, 'thumbnail' );
				?>

					<a href="<?php the_permalink(); ?>"><?php echo $image_img_tag; ?>

<?php printf( _n( 'This gallery contains %2$s photo.', 'This gallery contains %2$s photos.', $total_images, 'twentyeleven' ),
						'href="' . esc_url( get_permalink() ) . '" title="' . sprintf( esc_attr__( 'Permalink to %s', 'twentyeleven' ), the_title_attribute( 'echo=0' ) ) . '" rel="bookmark"',
						number_format_i18n( $total_images )
					); ?>

			<?php endif; ?>
			<?php the_excerpt(); ?>
		<?php endif; ?>
		<?php wp_link_pages( array( 'before' => '
' . __( 'Pages:', 'twentyeleven' ) . '', 'after' => '
' ) ); ?>

	<?php endif; ?>

		<?php $show_sep = false; ?>
		<?php
			/* translators: used between list items, there is a space after the comma */
			$categories_list = get_the_category_list( __( ', ', 'twentyeleven' ) );
			if ( $categories_list ):
		?>

			<?php printf( __( 'Posted in %2$s', 'twentyeleven' ), 'entry-utility-prep entry-utility-prep-cat-links', $categories_list );
			$show_sep = true; ?>

		<?php endif; // End if categories ?>
		<?php
			/* translators: used between list items, there is a space after the comma */
			$tags_list = get_the_tag_list( '', __( ', ', 'twentyeleven' ) );
			if ( $tags_list ):
			if ( $show_sep ) : ?>
		 |
			<?php endif; // End if $show_sep ?>

			<?php printf( __( 'Tagged %2$s', 'twentyeleven' ), 'entry-utility-prep entry-utility-prep-tag-links', $tags_list );
			$show_sep = true; ?>

		<?php endif; // End if $tags_list ?>

		<?php if ( comments_open() ) : ?>
		<?php if ( $show_sep ) : ?>
		 |
		<?php endif; // End if $show_sep ?>
		<?php comments_popup_link( '' . __( 'Leave a reply', 'twentyeleven' ) . '', __( '1 Reply', 'twentyeleven' ), __( '% Replies', 'twentyeleven' ) ); ?>
		<?php endif; // End if comments_open() ?>

		<?php edit_post_link( __( 'Edit', 'twentyeleven' ), '', '' ); ?>


text:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView android:id="@+id/card_view"
                                    xmlns:android="http://schemas.android.com/apk/res/android"
                                    xmlns:app="http://schemas.android.com/apk/res-auto"
                                    android:layout_width="match_parent"
                                    android:layout_height="250dp"
                                    android:layout_gravity="center"
                                    android:layout_marginBottom="5dp"
                                    android:layout_marginEnd="3dp"
                                    android:layout_marginLeft="3dp"
                                    android:layout_marginRight="3dp"
                                    android:layout_marginStart="3dp"
                                    android:layout_marginTop="5dp"
                                    android:clickable="true"
                                    android:elevation="5dp"
                                    app:cardBackgroundColor="@color/white"
                                    app:cardCornerRadius="0dp">
    <RelativeLayout android:layout_width="match_parent"
                    android:layout_height="match_parent">
        <ImageView android:id="@+id/image_view_card_view"
                   android:layout_width="match_parent"
                   android:layout_height="170dp"
                   android:scaleType="centerCrop"/>
        <TableLayout android:id="@+id/tableLayout"
                     android:layout_width="match_parent"
                     android:layout_height="80dp"
                     android:layout_below="@id/image_view_card_view"/>
        <FrameLayout android:id="@+id/selection_scrim"
                     android:layout_width="match_parent"
                     android:layout_height="match_parent"
                     android:visibility="invisible"
                     android:alpha="0.3"
                     android:background="@drawable/selectionforcards"/>
        <ImageView android:id="@+id/selection_done"
                   android:layout_width="40dp"
                   android:layout_height="40dp"
                   android:visibility="invisible"
                   android:layout_centerHorizontal="true"
                   android:layout_marginTop="70dp"
                   android:src="@drawable/ic_done_white_24px"/>

    </RelativeLayout>

</android.support.v7.widget.CardView>


text:
![logo][logo]

> It's the colorscheme we set that defines us. *(Batman)*

[![main](https://github.com/whatyouhide/vim-gotham/workflows/main/badge.svg?branch=master)](https://github.com/whatyouhide/vim-gotham/actions?query=workflow%3Amain)

Gotham is a **very dark** vim colorscheme. It works on GUI vim (MacVim or gVim)
and on terminal vim. For terminal vim, there's support for a lot of terminal
emulators in the [gotham-contrib][gotham-contrib] repository.

![screenshot][screenshot]

## Installation

I moved to [vim-plug][vim-plug] a while ago and never looked back. Anyway, you
can install Gotham with whatever package manager you use. For example:

``` viml
" vim-plug
Plug 'whatyouhide/vim-gotham'
" NeoBundle
NeoBundle 'whatyouhide/vim-gotham'
" Vundle
Plugin 'whatyouhide/vim-gotham'
" dein.vim
call dein#add('whatyouhide/vim-gotham')
```

If you don't use a plugin manager just copy the content of `vim/colors/` to
`~/.vim/colors`.

When you have the plugin installed, you can set it in your `vimrc`:

``` viml
colorscheme gotham
```

#### Terminal vim and 256 colors version

If you want to use Gotham in terminal vim, you should consider setting Gotham as
the colorscheme of your terminal emulator too. See the [relevant
section](#other).

If you're fine with not-so-faithful colors, a 256 colors version of Gotham is
available. To use it, just replace `gotham` with `gotham256` in your `vimrc`:

``` viml
colorscheme gotham256
```

Using `gotham256` (given that your terminal supports 256 colors) ensures that
the colors in vim are fixed and don't depend on the colorscheme of the terminal
emulator.

**Please**, use the 256 colors version only if you know what you're doing since
it looks "rougher" than the regular version.

#### Airline

Gotham supports [vim-airline][vim-airline] out of the box. When you use the
Gotham colorscheme, Airline should be able to pick it up and use it. If you want
to set it manually, you can use the `AirlineTheme` command for both the regular
version and the 256 colors version:

    :AirlineTheme gotham
    :AirlineTheme gotham256

Gotham by default emphasises the usage of insert mode by using a distinctive bright yellow color in
the airline mode segment. To change the color used for insert mode to a darker less emphasised color
add the following to your vimrc:

```viml
let g:gotham_airline_emphasised_insert = 0
```

#### Lightline

Gotham supports [lightline.vim][lightline.vim] too. To enable the colorscheme,
add one of the following lines to your `.vimrc`:

``` viml
let g:lightline = { 'colorscheme': 'gotham' }
let g:lightline = { 'colorscheme': 'gotham256' }
```

### Other

Gotham is available for other platforms too. If you want terminal vim to look as
good as GUI vim, you have to install the Gotham colorscheme for your terminal
emulator too.

An up-to-date list of supported platforms as well as installation instructions
for each of those platforms are available at the
[gotham-contrib][gotham-contrib] repository.

There's an [Emacs version][emacs-version] too, but I don't maintain it.

### Color Palette

| Color Base    | Hex           | Other Colors  | Hex           |
| ------------- | ------------- | ------------- | ------------- |
| Base 0        | `#0c1014`     | Red           | `#c23127`     |
| Base 1        | `#11151c`     | Orange        | `#d26937`     |
| Base 2        | `#091f2e`     | Yellow        | `#edb443`     |
| Base 3        | `#0a3749`     | Magenta       | `#888ca6`     |
| Base 4        | `#245361`     | Violet        | `#4e5166`     |
| Base 5        | `#599cab`     | Blue          | `#195466`     |
| Base 6        | `#99d1ce`     | Cyan          | `#33859E`     |
| Base 7        | `#d3ebe9`     | Green         | `#2aa889`     |

## Contributing

All forms of contribution are welcome: bug reports, bug fixes, pull requests and
simple suggestions. Thanks!

### List of contributors

You can find the list of contributors [here][contributors].

## License

MIT © 2014 Andrea Leopardi, see [the license][license-file].

[logo]: http://i.imgur.com/FDLEzHC.png "Logo"
[screenshot]: http://i.imgur.com/NfRuHFN.png "A vim screenshot"
[license-file]: LICENSE.txt

[vim-plug]: https://github.com/junegunn/vim-plug
[gotham-contrib]: https://github.com/whatyouhide/gotham-contrib
[vim-airline]: https://github.com/bling/vim-airline
[lightline.vim]: https://github.com/itchyny/lightline.vim
[emacs-version]: https://github.com/wasamasa/gotham-theme
[contributors]: https://github.com/whatyouhide/vim-gotham/graphs/contributors